inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Học Transformer thông qua việc triển khai

Triển khai module Embedding đầu vào của BERT có áp dụng Positional Embedding

bert encoding input_ids.size(1)에 대하여

58

fkid009

20 câu hỏi đã được viết

0

안녕하세요 강사님.

BERT 관련 강의를 매우 유익하게 듣고 있습니다.

 

Embedding 파트를 학습하던 중 궁금한 점이 생겨 질문드립니다.
BERTEmbeddings 클래스 구현에서 초기화 시 max_len이 주어지는데, forward 단계에서는 input_ids.size(1)을 사용해 position embedding의 인덱스를 다시 정의하는 과정이 있습니다.

 

제가 이해한 바로는 이후 tokenizer에서 설정한 max_length와 실제 입력 길이가 달라질 수 있기 때문에 이러한 처리가 필요한 것으로 보였습니다. 혹시 강사님께서 강의 시 빠른 실행을 위해 tokenizer의 max_length를 모델의 max_len과 다르게 설정하셨기 때문에 해당 코드를 넣으신 것인지 궁금합니다.

 

일반적인 학습 환경에서는 tokenizer의 max_length와 모델의 max_len을 동일하게 맞추는 것이 자연스러울 것 같은데, 혹시 제가 놓친 부분이 있다면 설명해주시면 감사하겠습니다.

딥러닝 pytorch encoder-decoder bert transformer

Câu trả lời 2

0

dooleyz3525

안녕하십니까,

좋은 질문이군요.

BERT 모델의 Position Embedding의 max_len은 동적으로 입력되는 문장들의 최대 sequence length와는 다를 수 있는 상황을 고려해야 했기에 forward()에서 seq_len = input_ids.size(1) 적용한 것입니다.

예를 들어 시나리오와 같이, 짧은 대화형의 문장들은 BertTokenizer 적용할 때 padding='max_length', max_length=200를 설정할 수도 있고, 긴 연설문 문장들은 padding='max_length', max_length=1000 을 설정할 수도 있습니다. 또한 max_length를 적용하지 않고, padding='longest' 를 적용할 수도 있습니다.

그래서 일반적으로 Position Embedding의 max_len과 tokenizer의 max_length를 일치 시키지 않습니다.

Position Embedding의 max_len은 모든 경우에 대해서 할당할 수 있는 최대 position 값이라고 생각해 주시면 됩니다.

감사합니다.

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 임해빈님.

BERT 및 관련 트랜스포머 모델의 학습을 진행하시면서 이론적인 부분을 깊이 이해하고 계신 것 같습니다. 질문해 주신 내용은 BERT 모델의 포지션 임베딩 처리에 관한 부분인데요, 여기에 대해 제가 간단히 설명을 드리도록 하겠습니다.

BERT의 BERTEmbeddings 클래스에서는 실제 입력 input_ids의 길이, 즉 input_ids.size(1)을 기준으로 포지션 임베딩을 참조하여 모델 내에서 사용하도록 처리하고 있습니다. 이는 주로 입력 시퀀스 길이가 설정된 max_length보다 짧을 경우, 즉 실제 입력 데이터의 길이에 맞는 포지션 임베딩을 사용하도록 유연성을 제공하기 위함입니다.

일반적으로 학습 환경에서는 tokenizer의 max_length와 모델의 max_len을 일치시키는 것이 보편적이지만, 입력 데이터가 항상 동일한 길이를 가지진 않기 때문에 처리 단계에서 유연한 대응이 이루어지도록 이러한 설계가 사용됩니다. 이를 통해, 설정된 max_length보다 짧은 실제 데이터에 대해서도 효과적으로 대응할 수 있고, 이는 메모리 관리 측면에서의 효율성을 증대시켜 줄 수 있습니다.

이전에 비슷한 주제에 대한 질문이 있었는데 참고하시면 이해하는데 도움이 되실 것 같습니다:
- BERT 모델의 포지션 임베딩과 입력 토큰 길이의 관계

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

import torch가 안되는 경우는 어떻게 하나요?

0

16

1

소리가 겹쳐서 들려요

0

23

2

20강에서 파인튜닝 때 사용한 데이터가 없어졌습니다. LoRA Trainer 매개변수도 라이브러리 업그레이드로 수정되었습니다.

0

20

1

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드 먼저? 구현하며 배우는 Transformer 먼저?

0

30

1

수업자료

0

24

2

전 강의와 전혀 이어지지가 않음

0

30

1

pytorch local 설치 옵션에 conda 가 없습니다.

0

38

3

pc에서는 괜찮은데 탭으로 들으니 화면확대시 화면이 까맙니다

0

22

1

강의 환경설정 질문

0

40

2

모든 자료 다운로드 누를때마다 똑같은 excel파일이 다운로드 받아짐. 노션 주소 공유되나요?

0

32

2

오토인코더+ Knn, SVC 로 해석하는경우

0

45

3

강의 영상 오류

0

58

1

Embedding 모델 fine tuning 관련 질문

0

71

2

코드에 오타가 있는 것 같습니다

0

53

2

코드 오타가 있는것 같습니다.

0

68

2

트랜스포머 모델 구조에서 Encode-Decoder Attenttion에 대해서

0

68

2

트랜스포머 구조에서 블럭갯수에 대해서

0

61

2

RNN에서 출력 y에대해서..

0

58

1

embedding 값 시각화 해보기에서

0

52

1

length_penalty 부분이 없는 것 같습니다.

1

54

1

멀티 헤드 셀프 어텐션에서 Wq, Wk, Wv의 구조 관련 질문

0

79

3

MLM, NSP 구현 여부

0

70

2

트랜스포머 학습 강의

0

92

2

Q, K, V 초기 임베딩

0

69

1