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의 인코더를 다중으로 양방향으로 쌓은 구조.
- 논문에서는 모델의 크기에 따라서 BERTBASE, BERTLARGE로 구분하고 각 모델의 결과를 보여줌
- L : number of layers(i.e., Transformer blocks)
- A : number of self-attention heads → base:(L=12,H=768,A=12, total params = 110M) → large:(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 참고).