[논문 리뷰] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, 2018
https://arxiv.org/pdf/1810.04805.pdf
Abstract
이 논문에서는 Bidirecitonal Encoder Representations form Transformers의 BERT 모델을 새롭게 제시한다.
다른 language representation model들과는 달리, BERT는 left, right context 모두 고려하는 unlabeled text를 이용하여 pre-train을 진행하도록 구현되어있다.
pre-trained BERT model은 output layer 하나만을 추가함으로써 fine-tuning이 가능하고, task에 따른 추가적인 model 수정 없이 QA와 language inference 와 같은 NLP task에서 SOTA의 성능을 내었다고 한다.
Introduction
Language model pre-training은 많은 NLP task에서 좋은 성능을 보여주고 있었다.
downstream task에 pre-trained language representation들을 적용시킬 수 있는 두가지 방법이 있는데
1) feature-based (such as ELMo)
이 방법은 추가적인 feature와 같은 pre-trained representation들을 포함한 task-specific architecture를 사용한다.
2) fine-tuning (such as OpenAI GPT)
이 방법은 minimal task-specific parameter를 제안하고, 모든 pre-trained된 parameter들을 fine-tuning 함으로써 downstream task에 대해 훈련을 진행한다.
위 두가지 방법은 unidirectional language model을 사용하기 때문에 pre-training하는 동안 같은 objective function을 공유한다.
저자는 이러한 방법이 pre-trained representation의 (특히 fine-tuning approaches에 대해) power를 제한한다고 한다.
가장 주요한 limitation은 unidirectional하다는 것이고, 이는 architecture들을 고르는데 제약이 발생하게 된다.
예를들어 GPT 모델의 경우, 해당 저자는 left-to-right 아키텍쳐를 사용하였고, 이 방법은 모든 token들이 오로지 이전 token에 대해서만 attend된다.
이러한 제한은 sentence-level task에 대해 sub-optimal하고, QA와 같은 token-level task들에대해 fine-tuning을 적용하기에는 매우 harmful하다.(both direction으로부터 context들을 결합하는 것이 중요하기 때문)
이 논문에서는 BERT 모델을 제안하여 fine-tuning based approach를 개선하였다.
BERT는"Masked Language Model(MLM)" pre-training objective를 사용함으로써
앞에서 언급하였던 inidirectionality constraint를 완화시켰다.
MLM은 random하게 input으로 들어온 token들 중 일부를 masking하고, objective는 context만을 이용하여 mask된 word를 original vocabulary id로 예측하도록 한다.
left-to-right language model pre-training과는 달리 MLM objective는 left, right context를 혼합하는 것이 가능하고, 이는 deep bidirectional Transformer를 pre-train하는게 가능하도록 한다.
추가적으로 "Next Sentence Prediction" task를 사용하여, text-pair representation들에 대해서도 pre-train 할 수 있도록 한다.
BERT
BERT는 두가지 단계로 구성되어있다. : pre-training and fine-tuning
pre-training 과정에서, 모델은 서로 다른 pre-training task에서 unlabeld data를 training 한다.
fine-tuning 과정에서는 BERT 모델이 동일한 pre-trained parameter들로 처음 initialized되고, 모든 parameter들은 downstream task에서의 labeled data를 사용하여 downstream task에 맞도록 fine-tuned된다.
각각의 downstream task들은 같은 pre-trained parameter들로 initialized되어 있을지라도, 각 task에 맞는 fine-tuned model을 가지고 있다.
BERT의 distinctive feature는 서로 다른 task에 대해 unified된 architecture이다.
Model Architecture
BERT는 multi-layer bidirectional Transformer를 사용한다.
이는 trasformer의 사용이 보편화 되었고, 여기서의 구현도 original과 거의 동일하기 때문에, 모델 아키텍쳐에 대한 exhaustive background description은 이 논문에서 제외하였다.
이 논문에서 L : the number of layers(i.e., Transformer blocks), H : hidden size, A : the number of self-attention heads
또한 model size에 따른 BERT_base (L=12, H=768, A=12, total parameter=110M), BERT_large (L=24, H=1024, A=16, total parameter=340M)를 제안한다.
BERT_base는 OpenAI GPT와 같은 model size를 가지고 있지만, BERT Transformer는 bidirectional self-attention를 사용하는 반면 GPT Transformer는 모든 token이 only left context에만 attend될 수 있는 constrained self-attention을 사용한다.
Input/Output Representations
BERT model이 다양한 downstream task를 다룰 수 있도록 하기 위해, input representation들이 명확해야한다. (e.g., <Question, Answer>
여기서 말하는 "sentence"는 언어적으로 정확한 문장이 아닌, 임의의 연속적인 단어들을 의미한다.
모든 문장의 첫번째 token은 항상 special Classification token ([CLS])이다.
이 token과 대응하는 최종 hidden state는 classification task를 위한 sequence representation으로 사용된다.
Sentence pair는 하나의 single sequence에 같이 packed 되는데, 이때 두가지 방법으로 sentence들을 구분할 수 있다.
1) special token ([SEP])을 사용하여 구별한다.
2) 문장 A인지 문장 B인지를 가리키는 trainable한 embedding을 추가한다.
주어진 token들에 대해,
input representation은 "corresponding token", "segment", "position embeddings"들을 더해서 구성한다.
Pre-training BERT
Task #1: Masked LM
"Masked LM"은
deep bidirectional representation을 train 하기 위해, 저자는 input token중 일부를 random하게 mask하고, 해당 masked token들을 예측하도록 하는 과정을 의미한다.
여기서 masked token에 대응하는 final hidden vectors들은 output softmax에 들어간다.
이 논문에서의 실험은 15% random masking을 해주었고,
이전 모델들은 전체 input을 예측하도록 하였지만, 여기서는 only masked word만 예측하도록 설계하였다.
하지만 이러한 방식을 통해 bidirectional pre-trained model을 얻을 순 있지만, pre-training과 fine-tuning사이의 mismatch를 발생시킬 수 있다는 문제점이 발생한다.
이 문제를 피하기 위해, 저자는 항상 "masked" words를 [MASK] token 그대로 치환하지 않도록 하였다.
training data generator는 15% 정도의 token position을 random하게 정한다.
만약 i-th token이 정해지면, i번째 token을 다음과 같이 바꿔줄 수 있다.
(1) 80% 확률로 [MASK] token을 사용한다.
(2) 10% 확률로 다른 random token으로 바꾸어준다.
(3) 10% 확률로 바꾸지 않는다.
T_i는 cross entropy loss를 이용하여 original token을 예측한다.
Task #2: Next Sentence Prediction (NSP)
QA나 Natural Language Inference(NLI)와 같은 중요한 downstream task는 두 문장 사이의 relationship을 이해하는 것을 기본으로 한다. 하지만 이는 language modeling으로는 직접적으로 포착되지 않는다.
문장들 사이의 관계를 학습하기 위해, 여기서는 binarized next sentence prediction을 위해 pre-train하고, 이는 monolingual corpus에서 생성될 수 있다.
예를들어 pre-training example에서 문장 A와 문장 B를 선택하고자 할 때, 50%의 확률로 A 문장의 실제 next 문장인 B를 사용하고 (IsNext label 사용), 50%의 확률로 A 문장의 가짜 next 문장인 random 문장을 사용한다.(NotNext label 사용)
Fig 1.의 C token이 NSP를 위한 token이다.
이러한 simplicity에도 불구하고, 여기서는 QA와 NLI task에서 매우 beneficial하다는 것을 확인하였다.
Fine-tuning BERT
BERT에 사용된 self-attention 매커니즘은 BERT가 많은 downstream task를 model할 수 있도록 돕기 때문에 Fine-tuning 과정이 간단하다.
이전 방법들에서는 text pair들을 involve하기 위해, 각각 독립적으로 text pair들은 encode 했던 반면, BERT에서는 self-attention을 사용하여 효과적으로 concatenated text pair를 encoding 하였다.
각각의 task에 대해 저자는 task-specific한 input과 output을 받아 BERT에 집어넣고, 모든 parameter들을 fine-tune한다.
input에서 pre-training 과정에 있는 문장 A와 문장 B가 어떤 task에 specific한지 확인한다.
(1) sentence pair in paraphrasing
(2) hypothesis-premise pairs in entailment
(3) question-passage pairs in question answering
(4) degenerate text-'None' pair in text classification or sequence tagging
output에서
token representation은 sequence tagging이나 QA와 같은 token level task들을 위한 output layer에 집어넣는다.
그리고 [CLS] representation은 entailment나 sentiment analysis와 같은 classification을 위한 output layer에 집어넣는다.
Pre-training 과정과 비교해보았을 때, fine-tuning 과정은 inexpensive하였다.