강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của fkid009
fkid009

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

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)에 대하여

Viết

·

51

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을 동일하게 맞추는 것이 자연스러울 것 같은데, 혹시 제가 놓친 부분이 있다면 설명해주시면 감사하겠습니다.

딥러닝pytorchencoder-decoderberttransformer

Câu trả lời 2

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Người chia sẻ kiến thức

안녕하십니까,

좋은 질문이군요.

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

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

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

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

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

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

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

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

Hình ảnh hồ sơ của fkid009
fkid009

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

Đặt câu hỏi