[논문 리뷰] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

Seoyeon·2022년 8월 17일
1

NLP 논문 리뷰

목록 보기
2/3

1. Introduction

  • 언어 모델의 사전 학습은 많은 자연어처리 분야에서 효과적임을 보였음
  • 언어 모델의 사전 학습에는 크게 두 가지 학습 전략이 있음. 두 가지 전략은 모두 general language representation을 학습하기 위해서 단방향의 언어 모델을 사용함.
    • feature-based : ELMO
      • 임베딩은 그대로 두고 그 위의 레이어만을 학습하는 방식
      • 사전 학습 단계에서부터 특정 task에 맞게 학습된 모델을 feature로 사용
    • fine-tuning : Generative Pre-trained Transformer(GPT)
      • 모든 파라미터를 미세하게 업데이트하는 방식(임베딩 포함)
      • 범용적으로 task-specific하지 않게 학습된 모델을 이용. 이후에 downstream task에서 특정 task에 맞게 파라미터를 미세하게 조정하는 방식.
  • 논문에서는 현재의 학습 전략이(특히 fine-tuning) 한계점이 있다고 주장.
    • 가장 큰 문제는 사용하는 모델이 단방향이라는 것이고, 이는 양방향에서의 문맥 정보가 모두 중요한 token-level task(ex. Named Entity Recognition, Question Answering)에서 높은 성능을 보이지 못 하는 원인이라고 함. → Bidirectional Encoder Representations from Transformers(BERT) 제안
  • BERT는 Masked Language Model(MLM)을 사용하여 양방향의 문맥을 학습할 수 있도록 함.
    • MLM은 문장 내의 토큰 중 랜덤하게 단어를 선택하여 마스킹하고, 모델이 양방향의 문맥을 통하여 해당 위치의 단어를 예측하는 방식

2. BERT

  • BERT에는 두 가지 단계가 존재 : pre-training, fine-tuning pre-training
    • 레이블이 없는 데이터를 이용하여 학습

      fine-tuning

    • pre-training 단계에서 학습한 파라미터를 이용하여 초기화를 하고, 레이블이 있는 데이터를 이용하여 task에 맞게 하이퍼파라미터를 조정.

    • 같은 pre-trained 모델을 사용하더라도 task에 따라서 각각의 모델을 가지게 됨.

  • Model Architecture
    • BERT는 Transformer의 인코더를 다중으로 양방향으로 쌓은 구조.
    • 논문에서는 모델의 크기에 따라서 BERTBASEBERT_{BASE}, BERTLARGEBERT_{LARGE}로 구분하고 각 모델의 결과를 보여줌
      • LL : number of layers(i.e., Transformer blocks)
      • AA : number of self-attention heads → base:(L=12,H=768,A=12base : (L=12, H=768, A=12, total params = 110M) → large:(L=24,H=1024,A=16large : (L=24, H=1024, A=16, total params = 340M)

  • Input/Output Representations
    • 단일 문장이 아닌 문장의 쌍(e.g., <Question, Answer>)을 학습해야 하는 태스크를 위해서 하나의 입력 문장 시퀀스에서 두 개의 문장을 표현할 수 있도록 함.
    • WordPiece embedding을 사용하여 30,000개의 단어를 학습.
    • 입력의 첫 토큰은 항상 classification token([CLS])로 시작.
      • 마지막 hidden state에서의 이 토큰은 입력 전체의 정보를 모두 가지게 되고, classification task에서 이용.
    • 문장 쌍은 하나의 입력 시퀀스로 합쳐서 사용하는데, 이 두 개의 문장을 구분할 때는 아래 두 가지 방법을 활용함.
      • [SEP] 토큰을 두 개의 문장 사이에 추가하여 구분.
      • 임베딩 레이어에서 현재의 토큰이 어떤 문장에 속하는지(A or B)를 추가함(= segment embeddings - Figure 2 참고).

3.1 Pre-training BERT

BERT는 기존 방식과는 다르게 Masked Language Model(MLM), Next Sentence Prediction(NSP)라는 2가지 Unsupervised task를 사용하여 사전 학습을 진행함.

Task #1: Masked LM

  • 기존 방식에서는 left-to-right와 right-to-left 모델을 단순하게 concat하여 사용했다는 점에서 양방향 문맥을 제대로 학습할 수 없었음 → MLM 방식 사용
  • 기존 방식을 보완하기 위해서 일정 비율의 토큰을 랜덤으로 마스킹하고, 마스킹한 토큰을 예측하도록 학습을 함. 이를 논문에서는 “masked LM(MLM)”이라고 표현.
    • 이 경우에는 마스킹된 토큰에 대응되는 마지막 hidden vector에 softmax를 적용하여 어떤 토큰인지 예측하는 방식으로 학습이 됨.
    • 논문에서는 각 입력 시퀀스의 WordPiece 단위의 토큰 중에서 15%를 랜덤으로 선택하여 마스킹하여 실험을 진행함.
  • 마스킹 적용 방식
    • i 번째 토큰이 마스킹할 토큰으로 선택되었을 때,
      • 80%는 [MASK] 토큰으로 교체
      • 10%는 다른 토큰으로 교체
      • 10%는 현재 토큰(i번째 토큰)을 그대로 유지

Task #2 : Next Sentence Prediction(NSP)

  • Question Answering(QA)와 Natural Language Inference(NLI)와 같은 task에서는 두 개의 문장 간의 관계를 파악하는 것이 중요함. → NSP 적용
    • 두 개의 문장이 이어지는 문장인지 아닌지를 구분하는 방식으로 학습
  • 학습 코퍼스에서 문장 A와 B를 선택하고, 이 중 50%는 실제로 B가 A의 다음 문장(labeled as IsNext)이고, 50%는 랜덤으로 선택된 문장(labeled as NotNext)임.
    • 이 때, 앞서 설명했던 [CLS] 토큰의 마지막 hidden state를 이용하여 문장 A와 B가 IsNext인지 NotNext인지 예측하게 됨.

Pre-training data

  • BooksCorpus(800M words) + English Wikipedia(2,500M words)를 이용하여 사전학습.
    • 위키피디아에서는 텍스트만을 추출하여 리스트, 표, 헤더 등은 무시.
    • 연속된 긴 시퀀스를 추출하기 위해서는 Billion Word Benchmark와 같은 문장 단위의 코퍼스보다는 문서 단위의 코퍼스를 사용하는 것이 중요함.

3.2 Fine-tuning BERT

  • 이미 BERT는 사전 학습 단계에서 Transformer의 self-attention mechanism으로 입력이 단일 문장이던 문장 쌍이던 이를 잘 모델링할 수 있기 때문에 fine-tuning 단계는 간단하게 이루어짐.
  • 특정 task에 따라서 fine-tuning 방식에 약간의 차이가 있기 때문에 논문에서는 4개의 task에 따른 학습 방식을 보여줌(Figure 4 참고).
      
profile
ML Engineer @Wrtn Technologies Inc.

0개의 댓글