본문 바로가기

딥러닝/nlp 논문

BERT(Bidirectional Encoder Representation from Transformer)

https://www.youtube.com/watch?v=IwtexRHoWG0&t=318s 

위 동영상을 참고하여 작성했습니다.


BERT

Bert는 transformer의 encoder 파트로만 이루어진 모델이다.

  • Pre - training
    • Masked Language Model (MLM): 단어에 random하게 mask를 부여하여 학습
    • Next Sentence Prediction (NSP): corpus에서 sentence와 sentence가 연속된 문장인 지 학습
  • Fine tuning: Bert에 NLP task의 목적에 맞게 맨 마지막 layer을 쌓는 과정 

 

Input / Output Representation

  • Bert의 input으로 sentence를 하나 또는 여러 개 넣을 수 있다. Pre-training 과정에서 masked languaged model 형성 과정이 있는데, sentence의 token들 중 일부를 random 하게 mask 처리한다.
  • 그 중 special 한 token이 있는데, [CLS]는 sequence의 입력의 시작을 알려주고, [SEP]은 sequence와 sequence 사이에서 구분하는 역할을 한다. 
  • token들이 Bert 모델 안의 여러 layer을 거치고 난 뒤 final hidden vector을 거친다. 그 중 CLS의 final hidden vectorbinary classification (감정 분류 등)에 이용된다.
  • fine tuning 과정에서 NLP task에 맞는 모델을 생성할 수 있다.
    • NSP: 두 sentence가 corpus 내에서 연속인지 여부를 0/1로 알려주는 classification model
    • Mask LM: masking 된 단어를 예측하는 model

 

Input Representation

Input representation에는 3개의 embedding이 addition 되어 input으로 들어간다.

Token Embeddings

  • input으로 들어오는 단어들의 embedding vectors
  • Word Piece 임베딩 방식 사용
  • sub-word 단위로 단어를 분절
  • 자주 등장하는 sub-word은 그 자체가 단위가 되고, 자주 등장하지 않는 단어(rare word)는 sub-word로 쪼개짐
  • Out-of-vocabulary (OOV) 문제를 어느 정도 해결

Segment Embeddings

  • segmentation 여부에 대한 embedding vectors
  • [CLS] ~ [SEP]까지 하나의 sentence로 본다.
  • 입력 길이의 제한으로 두 문장은 합쳐서 512 subword 이하로 제한

Position Embeddings

  • Transformer에서 positional encodding에 해당하는 vectors

 

Pre-Training Bert > (1) Masked Language Model (MLM)

  • sequence의 15%의 token이 mask 된 채로 input으로 들어간다.
  • masking 된 token의 정답을 맞추는 식으로 학습이 진행된다.
  • masking은 Pre-training 과정에서만 일어나고, Pre training, fine tuning 과정 모두에서 mismatch가 발생한다. 
  • mismatch에 대한 해결 방안으로, 학습 과정의 80%는 masking을, 10%는 random token(noise)을, 10%는 정답으로 학습한다. 
    • (80%) My dog is hairy -> My dog is [MASK]
    • (10%) My dog is hairy -> My dog is apple
    • (10%) My dog is hairy -> My dog is hairy

 

Pre-Training Bert > (2) Next Sentence Prediction (NSP)

  • QA(Question-Answering), NLI(Natural Language Inference)와 같은 NLP task에선 하나의 sentence만으로는 풀지 못하는 문제들이 있다.
  • 여러 sentence 사이의 관계를 알아야 할 땐, 여러 sentence를 input으로 넣어 함께 학습해야 한다.
  • corpus의 sentence들의 순서가 연속적인 경우는 1로 (50%), 연속적이지 않은 경우는 0으로 하여 (50%) 모델을 학습하면 QA, NLI같은 task의 성능이 향상될 수 있다.
    • ex) document의 corpus에 S1, S2,  ... S10의 sentence가 있을 때, [CLS] S1 [SEP] S2는 y = 1(IsNext)로, [CLS] S3 [SEP] S7은 y = 0(NotNext)으로 지도학습하여 문장들의 순서를 파악할 수 있다.