본문 바로가기
강의

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

by 사향낭 2022. 11. 17.

강의 항목에 들어갈 내용은 아니지만.. 졸논을 위한 BERT 복습

 

 

BERT는 무엇인가?

  • Bidirectional Encoder Representations from Transformers (BERT)
  • Task-specific parameter를 최소한으로 하여 pre-trained parameter를 fine-tuning만 해서 사용할 수 있는 representation model (fine-tuning approach) (이는 trained model의 output representation을 사용하는 feature-based approach와 대조된다.)
  • 따라서 BERT를 거의 건드릴 필요 없이 layer 하나만 BERT위에 얹어주어 필요한 task에 맞게 fine-tuning만 조금 해주면 된다.
  • As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to creae state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications.
  • 기존 모델들과의 차이점은 Masked Language Model (MLM)을 이용하여 앞 뒤 문맥을 모두 살핀다는 것이다. (Bidirectional Transformer) (Transformer architecture가 이를 가능하게 했다)
  • 많은 task에서 SOTA 찍었다.

 

 

 

BERT input representation

  • 처음은 [CLS], 마지막은 [SEP] 토큰 사용.
  • Sentence pair가 들어올 경우 사이에 [SEP]를 넣어준다.
  • 각 단어들은 WordPiece로 tokenization 된다.
  • 각 sentence의 segment embedding은 다르다. (segment A or segment B)
  • 고정된 position embeddings 사용

 

 

Pre-training BERT

  • 두 가지 unsupervised tasks로 BERT를 학습시켰다.
  • Task #1: Masked LM
    • 각 sequence의 Wordpiece token 15%를 골라 이를 가리고 ([MASK] token으로 대체) 그 단어를 추측하도록 만든다.
    • 엄밀히 말해 선택된 15%의 token은 80% 확률로 가려지고 10%는 다른 단어로, 10%는 본래의 단어 그대로를 사용한다.
  • Task #2: Next Sentence Prediction (NSP)
    • Question Answering (QA), Natural Language Inference (NLI) 같은 task들을 위해 두 문장 사이의 관계를 이해하는 것이 중요하다.
    • 따라서 문장 A, B가 주어지고 문장 A 다음으로 문장 B가 오는지를 추측하는 task를 진행하였다.
    • 여기서 실제 이어지는 문장 쌍이 전체 training data의 50%, 그렇지 않은 문장 쌍이 50%이다.

 

Fine-tuning BERT

  • 해결하기 원하는 task에 적합한 output layer 하나를 BERT 위에 올려 열심히 학습시키면 된다.

 

 

Practical Part

  • Transformers package로 classification head가 달린 BERT를 가져왔는데 head부분의 parameter가 가져올 때마다 random initialization 된다. seed로 고정이 불가능해서 처음 모델을 사용할 때에만 모델을 불러와 저장시켰고 그 다음부터 저장시킨 모델을 불러오도록 하였다.
  • BERT 안에 dropout이 있어서 torch seed 설정해줘야 한다.

댓글