본문 바로가기
논문 리뷰

[NLP] BERT 논문 리뷰, 개념 정리

by jjjaeunn 2023. 9. 12.

👩🏻‍💻 본 포스팅은 개인적 공부를 위해 BERT를 정리한 포스팅으로, 오류가 있을 수 있습니다.


1. Introduction

  • 이전에 언어 모델 pre-training 연구들이 많이 되어 옴.
  • pre-trained 언어 모델을 적용하는 데에는 총 두 가지 방법이 존재했음.
    • feature-based
      1. ELMo는 pre-trained representation을 추가적 피처로 사용하는 task-specific 모델들을 다룸.
    • fine-tuning
      1. GPT는 최소한의 task-specific 파라미터를 사용하는 대신, 모든 pre-trained 파라미터를 “전부”를 파인튜닝하여 사용하였음.
  • 두 모델은 전부 pre-training 단계에서 단방향 언어 모델이 사용하는 동일한 함수를 사용함.
  • 특히 파인튜닝을 요구하는 기술은 pre-trained representation이 발전할 수 있는 데에 한계점을 만듦.
    • 기준이 되는 언어 모델들은 전부 단방향이고, pre-training 단계에서 사용될 수 있는 아키텍처의 선택 폭을 좁힌다는 단점 존재함.
    • GPT의 경우, 모든 토큰은 self-attention layer에서 본인의 이전 토큰만 참조할 수 있다는 한계점이 존재함.
    • 이러한 한계점은 ‘QA’ 항목에서 취약점을 보이는데, 바로 양쪽 방향 토큰을 전부 참조해야만 정확한 해석이 필요하기 때문임.

BERT가 제시하는 바

  • MLM 사용 → 일방향으로 사용될 때의 한계점을 극복하게 됨.
    • maksed language model ⇒ input 토큰 중 랜덤하게 mask시킴 → mask된 토큰의 id를 예측하는 방향성으로 발전함
    • MLM objective 는 양방향 Transformer를 통해 pretrain이 진행됨.
     
  • “next sentence prediction” 태스크 추가 → text-pair representation을 통해 발전시킴

contribution 3가지

  1. 양방향 pre-training을 채택하여 더 높은 성능을 보임
  2. 최초의 파인튜닝 기반 모델이며, task-specific model에 비해서도 넓은 범위의 sentence-level과 token-level 성능을 보임
  3. 11가지 NLP 태스크에서 SOTA 달성

2. BERT

  • BERT는 pre-training과 fine-tuning, 두가지 단계로 이루어짐.
  • pre-training 단계
    • 라벨링되지 않은 데이터를 바탕으로 학습됨.
  • fine-tuning 단계
    • 라벨링된 데이터들을 바탕으로 파인튜닝이 진행됨.
    • downstream task들은 각각 파인튠 된 모델들을 가지고 있으며, 동일한 pre-trained 파라미터들을 가지고 있더라도 다수의 모델들을 가짐.

Model Architecture

  • BERT는 멀티레이어 양방향 트랜스포머 인코더를 사용함.
  • 파라미터 수가 적은 모델이 BERT-base이고, 파라미터 수가 많은 모델이 BERT-large이다.
  • BERT가 다수의 down-stream 태스크를 처리할 수 있게끔 하기 위해서 하나의 token sequence에서 단일 문장과 다수의 문장들을 명백하게 나타낼 수 있게끔 함. (문장 == 임의로 이어지는 텍스트) (시퀀스 == input token, 즉 하나 혹은 둘 이상의 문장 모음)
    • classification 태스크를 수행할 때에는 input의 첫번째 토큰으로 [CLS] 를 사용함
    • 하나의 시퀀스에 다수의 문장들이 들어가고, 이 문장들은 특별한 토큰 [SEP] 를 사용해서 분리함.
    • 모든 토큰에 문장 A인지 B인지 구분할 수 있게끔 학습된 임베딩을 씌움

Pre-training BERT

  • BERT는 두 가지 비지도학습 태스크를 통해 pre-training을 진행함

Task #1. Maksed LM

  • 타 모델들과 다르게 left-to-right, right-to-left 두가지 태스크에서 양방향 conditioning을 진행하므로 각 단어가 자기 자신을 가리키는 경우가 발생할 수 있음
    • 위의 상황에는, 멀티레이어에서 필요없는 예측을 하는 경우의 수들이 발생함.
  • 양방향 학습을 진행하기 위해서는 input token의 일부에 masking을 진행한다.
  • WordPiece의 15%에 마스킹을 진행하여 input 전체를 다시 확인하기보다는 masked words를 예측하는 방향으로 진행함.
  • fine-tuning 과정에서는 [MASK] 토큰을 포함하여 학습하지 않기 때문에, 15% 전체에 마스크를 진행하지 않음.
    1. 80%의 경우에는 [MASK] 토큰으로 덮어씌움
    2. 10%의 경우에는 랜덤한 단어로 바꿈
    3. 10%의 경우에는 마스킹 없이 원본 단어를 사용함

Task #2. Next Sentence Prediction(NSP)

  • QA, NLI와 같은 태스크들은 두 문장 사이의 관계성을 기반으로 돌아가기 때문에 next sentence prediction 태스크의 pre-train 과정이 필요함.
  • pre-training 예시로 문장 A, B를 고르는 경우를 생각해보자.
    • 50%의 확률로 B가 A를 뒤따르는 실제 문장임
    • 50%의 확률로 상관 없는 랜덤한 문장임 (말뭉치 중에서 고름)

Fine-tuning BERT

  • BERT는 다양한 태스크에서 사용되기 때문에 파인튜닝을 하는 경우가 많음.
  • text pair를 인풋으로 사용하는 경우, 이전에는 양방향 cross attention 이전에 text pairs마다 각각 인코딩을 하는 것이 일반적이었음.
    • BERT는 self-attention 메커니즘을 이용해 각각 인코딩하는 대신 concat 된 텍스트를 한 번에 양방향 cross attention 시킴.
  • task-specific 인풋/아웃풋을 BERT에 적용시킨 후 파인튜닝을 진행함.
    1. sentence pairs in paraphrasing
    2. hypothesis-premise pairs in entailment
    3. question-passage pairs in question answering
    4. degenerate text-()[쌍이 없는 text] pair in text classification/sequence tagging
  • [CLS] 토큰들은 전부 output 레이어에 classification을 위해 적용됨
    • ex. entailment, sentiment analysis

Conclusion

  • 가장 큰 contribution : 이전의 연구들을 일반화 시킴과 동시에 양방향 아키텍처를 채택함.
  • 동일한 pre-trained 모델이 여러 NLP 태스크에 적용될 수 있도록 함.