BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
0. Abstract
- `BERT(Bidirectional Encoder Representations from Transformer)`라는 새로운 language representation model을 제시
- 당시에 나온 language represtation model들과는 다르게 BERT는 모든 layer에서 left/right context를 동시에 고려하는 방식으로 unlabeled text로부터Deep Bidirectional Representation을 pre-train 하도록 설계
- BERT는 추가적인 1개의 output layer를 통해 fine-tuning할 수 있으며, 이를 통해 `question answering`, `language inference`와 같은 넓은 범위의 task들에서 실질적인 task-specific architecture에 대한 수정 없이 SOTA 달성
- 11개의 NLP task에서 SOTA를 달성
- GLUE score : 80.5% → 7.7 % improvement
- MultiNLI accuracy : 86.7% → 4.6% improvement
- SQuAD v1.1 Test F1 : 93.2 → 1.5 point improvement
- SQuAD v2.0 Test F1 : 83.1 → 5.1 point improvement
1. Introduction
- language model을 pre-training시키는 것이 다양한 NLP task에서 효과적인 사실이 다양한 연구를 통해 입증
- pre-trained language representation을 downstream task에 적용하기 위한 방법은 2가지
- `feature-based` : 특정 task를 수행하는 network에 pre-trained representation을 하나의 feature처럼 추가, 즉 2개의 network을 붙여서 사용 → `ELMo`
- `fine-tuning` : task-specific한 parameter는 줄이고, pre-trained된 parameter들을 downstream task 학습을 통해 조금씩 바꿔주는 fine-tuning 방식 → `Generative Pre-trained Transformer(OpenAI GPT)`
- 두 방식 모두 `unidirectional language model`을 사용하여 general language representation을 학습하는 pre-training 동안 같은 objective function을 공유
💡 여기서 ELMo의 경우 forward, backward LM을 모두 사용하기 때문에 bidirecitonal LM이라고 생각할 수 있지만, ELMo는 forward와 backward 각각의 unidirectional language model을 사용해 이를 concate하기 때문에 모델 자체는 단반향이어서 pre-train 과정에서 bidirectional language model을 사용한다 볼 수 없음
- 지금의 방법론들, 특히 fine-tuning approach에 관한 기술은 `unidirectional` 때문에 pre-trained representation의 효과를 제한
- 단방향으로 학습하기 때문에 architecture가 pre-training 동안 선택할 수 있는 부분을 제한
- OpenAI GPT의 경우에도 `left-to-right architecture`이기 때문에 Transformer 내 self-attention layer에서 모든 토큰들이 이전의 토큰에만 attend 할 수 있음(Decoder의 Masked Self-Attention)
- sentence-level의 task에서 최선의 선택지가 아니며, 양방향에서의 context를 통합해야 하는 question answering과 같은 token-level task에서는 이러한 fine-tuning에 기반한 방법은 매우 위험
- BERT에서는 이러한 unidirectionality에 대한 문제점을 `Masked Language Model(MLM)`을 통해 완화
- 랜덤으로 input token의 일부를 masking하고, 오로지 context만을 기반으로 masked된 단어의 original vocabulary id를 예측하는 것이 목적
- MLM은 left-to-right language model을 활용한 pre-training 방식과 다르게 left와 right context를 융합하여 representation을 생성하여 `Deep Bidirectional Transformer`을 pre-train 가능
- masked language model에 더해 `Next Sentence Prediction(NSP)`을 사용해 text-pair representation을 pre-train
- BERT의 contribution
- masked language model을 활용한 deep bidirectional representation을 통해 language model의 pre-training에 있어 bidirectional pre-training의 중요성을 입증
- pre-trained representation을 사용하면 고도로 엔지니어링된 task-specific architecture의 필요성을 줄임
- BERT는 대규모 sentence-level 및 token-level task에서 task-specific architecture들보다 좋은 성능으로 SOTA를 달성한 첫 fine-tuning based representation model
- BERT는 총 11개의 NLP task에서 SOTA 달성
💡 BERT, ELMo, OpenAI GPT 비교
BERT는 기존에 유명한 representation learning model인 ELMo, OpenAI GPT와 비교했을 때 다음과 같은 특징이 있다. 참고로, fine-tuning approach인 GPT와 비교했으며 구체적인 내용은 뒤에 포함되어 있다.
- GPT는 BookCorpus(800M words), BERT는 BookCorpus(800M) + Wikipedia(2,500M words)로 pre-training
- GPT는 sentence separator([SEP])와 classification token([CLS])를 오직 fine-tuning에만 사용했지만, BERT는 [SEP], [CLS], sentence A/B embedding을 pre-training에도 사용
- GPT는 1M step(with a batch size of 32,000 words)으로 훈련되었으며, BERT는 1M step(with a batch size of 128,000 words)로 훈련
- GPT는 5e-5에 해당하는 동일한 learning rate을 모든 fine-tuning experiment에 사용했으며, BERT는 development set에서 가장 성능이 좋았던 task-specific한 learning rate를 사용
그러나 가장 핵심적인 차이점은 ELMo는 독립적으로 훈련된 left-to-right과 right-to-left LSTM을 concate하여 downstrea task에 사용할 feature를 생성했으며, GPT는 Transformer Decoder block을 통해 left-to-right Transformer를 사용한 것에 비해 BERT는 Transformer Encoder를 통해 bidirectional Transformer를 사용했다는 점이다.
2. Related Work
2.1 Unsupervised Feature-based Approaches
- wide하게 적용이 가능한 representation을 학습하는 것은 non-neural 및 neural method를 포함해 주요 연구 분야
- ELMo와 그 후속 연구들은 left-to-right과 right-to-left LM을 concate하여 context-sensitive feature를 추출하여 전통적이 word embedding 방식을 발전시킴
2.2 Unsupervised Fine-tuning Approaches
- 초기 feature-based approach 연구는 unlabeled text로부터 workd embedding parameter만을 pre-train
- 최근에는 contextual token representation을 생성하는 sentence 혹은 document의 encoder가 pre-training되고, supervised downstream task에 대해 fine-tuning 수행
- 이러한 방법의 장점은 처음부터 적은 파라미터만을 학습해도 된다는 점이며, OpenAI의 GPT가 SOTA를 달성
2.3 Transfer Learning from Supervised Data
- `Natural Language Inference(NLI)`와 `Machine translation`와 같은 대규모 데이터셋이 있는 supervised task에서 transfer learning의 중요성을 보여주는 연구 존재
- Computer Vision 분야에서도 `ImageNet` 데이터셋을 통해 pre-trained된 모델을 활용한 transfer learning의 중요성 입증
3. BERT
- BERT는 `pre-training`과 `fine-tuning` 2단계를 거침
- pre-training : 다양한 pre-training task를 통해 unlabeled data로부터 학습 및 초기 parameter 설정
- fine-tuning : 처음엔 pre-trained parameter들로 초기화되며 downstream task로부터의 labeled data를 사용하여 모든 parameter들을 fine-tuning
- 각 downstream task는 동일한 pre-trained parameter들로 초기화되어도 분리된 fine-tuned model를 가짐
- 본 논문에선 `question-answering`에 해당하는 예시(Figure 1)를 통해 모델을 설명
- BERT는 다양한 task들에 대해 통합된 아키텍쳐이며, 최종 downstream architecture와 pre-trained architecture 사이에는 미세한 차이점이 존재
Model Architecture
- BERT의 architecture는 `multi-layer bidirectional Transformer Encoder` 구조
- Denotation
- L : number of layers(Transformer blocks)
- H : hidden size
- A : number of self-attention head
- BERT_BASE : L = 12, H = 768, A = 12, Total Parameters = 110M
- BERT_LARGE : L = 24, H = 1024, A = 16, Total Parameters = 340M
- BERT_BASE 모델은 OPenAi GPT와의 비교를 위해 동일한 model size를 선택
- GPT Transformer : 모든 token이 그 이전 time step의 token에만 attend 하는 제한된 self-attention 사용
- BERT Transformer : bidirectional self-attention을 사용
Input/Output Representations
- BERT가 다양한 downstream task를 다룰 수 있게 하나의 문장, 혹은 한 쌍의 문장(< Question, Answer > 등)은모두 하나의 token sequence로 표현되어 분명하게 input representation을 표현
- 본 논문에서의 'sentence'는 실제 언어적으로 사용하는 문장뿐만 아니라 단어의 연속적인 집합(완벽한 언어학적 문장이 아니어도 됨)도 포함
- 30,000 token vocabulary를 활용해 `WordPiece Embedding` 적용
💡 WordPiece Embedding
단어를 Embedding하는 과정에서 가장 큰 문제점은 데이터가 많이 없는 단어는 토큰화시키기 어렵고, 이로 인해 모델의 `OOV(Out of Vocabulary)`가 발생하는 것이다. `Subword segmentation`이란 하나의 단어가 더 작은 단위의 의미 있는 여러 subword들의 조합으로 구성되는 경우가 많아 하나의 단어를 여러 subword로 분리해서 단어를 Encoding 및 Embedding하는 것을 말한다.(ex> Birthday = Birth + day) 이러한 subword segmentation의 대표적인 방법론이 바로 `BPE(Byte Pair Encoding)`이다. BPE는 기본적으로 연속적으로 가장 많이 등장한 글자의 쌍을 찾아 하나의 글자로 병합하는 방식을 말한다. 즉, 단어를 쪼갤 수 있는 가장 작은 단위로 분리(영어의 경우 알파벳)한 후, 가장 많이 반복하는 쌍을 찾아 이를 vocab set에 추가한다.
`WordPiece Tokenizer`는 BPE의 변형 알고리즘으로, 먼저 단어를 가장 작은 단위로 분리한 후 빈도수에 기반하는 것이 아닌 병합되었을 때 Corpus의 우도(Likelihood)를 가장 높이는 쌍을 병합한다. 이후 모든 단어의 맨 앞에 언더바(_)를 붙이고 단어는 subword로 통계에 기반하여 띄어쓰기로 분리하여 subword의 구분자 역할을 한다. 기존에 있던 띄어쓰기와 subword를 분리하는 데 사용한 띄어쓰기는 언더바(_)를 통해 구별하며, 결과를 다시 돌릴 경우 모든 띄어쓰기를 제거하고 언더바를 띄어쓰기로 변경한다.
- 모든 sequence의 첫 번째 token은 항상 `classification token([CLS])`으로, CLS 토큰에 대응하는 최종 hidden state는 classification task의 aggregate sequence representation
- sentence pair는 single sequence로 들어가며 이를 2개의 sentence로 나눔(sentence A, sentence B)
- special token [SEP]을 통해 구분
- sentence A 혹은 sentence B 중 어느 곳에 포함되는지를 나타내는 `Segmentation Embedding` 추가
- Denotation(in Figure 1)
- E : input embdding
- C : [CLS] token에 대한 최종 hidden state
- T_i : i번째 token의 최종 hidden vector
- Input representation은 Token Embedding(Wordpiece Embedding), Segmentation Embedding, Position Embedding의 합으로 형성(Figure 2)
- position embedding은 Transformer에서 수행한 방식과 동일
3.1 pre-training BERT
- ELMo, GPT와는 다르게 전통적인 left-to-right 혹은 right-to-left의 LM이 아닌 `Maksed-Language Model(MLM)` 및 `Next Sentence Prediction(NSP)` 2가지의 unsupervised task을 사용
💡 Language Model
`Language Model`이란 단어 sequence에 확률을 할당하여 가장 자연스러운 단어 sequence를 찾아내는 모델을 말한다. 여기서 확률을 할당하는 데에는 이전 단어들이 주어졌을 때 단어를 예측하도록 하는 방법이 보편적으로 사용된다. Language Modeling이란 결국 주어진 단어들로부터 아직 모르는 단어를 예측하는 작업을 의미한다. BERT에서는 Masked Language Model을 활용하여 deep bidirectional representation을 pre-train한다.
Task #1 : Masekd LM
- 표준적인 conditional language model은 left-to-right 혹은 right-to-left 방식으로만 훈련이 가능한데, 이는 bidirectional conditioning 방식에서 각 단어들이 간접적으로 자기 자신에 대한 정보를 알 수 있기 때문
- 이로 인해 모델이 multi-layered context에서 쉽게 예측을 수행하여 제대로 학습이 안됨
- deep bidirectional representation을 훈련하기 위해 input token의 일부(15%)를 랜덤으로 가리고, masked token에 대한 예측을 수행
- Denoising auto-encoder와 달리 전체 input에 대해 재구성하는 것이 아닌 오직 masked word에 대해서만 예측
- Multi-layered Transformer Encoder는 Masking된 토큰을 포함하여 실제 input sentence와 동일한 output을 예측하기 위해 학습
- 나머지 non-masked 단어들의 context를 기반으로 오로지 masked token에 대한 예측 값 W'4 실제 토큰 값 W4 이 일치하게끔 학습 진행
- MLM을 통해 bidirectional pre-trained model을 얻을 수 있지만, fine-tuning 과정에선 [MASK] token이 없기 때문에 pre-trainng과 fine-tuning 사이에 mismatch가 발생한다는 단점 존재
- 즉, input sentence에 [MASK] token이 있어야만 예측을 수행하여 실제 상황에서는 모델 활용이 불가
- 이를 완화하기 위해 training generator가 15%에 해당하는 token position을 선택하면 i-th 번째 token을 다음과 같이 대체
- 80%의 경우 [MASK] token으로 변경
- 10%의 경우 random token으로 변경
- 10%의 경우 바꾸지 않고 그대로 사용
💡 10%에 해당하는 token을 random하게 바꾸는 것이 모델의 성능을 저하시킬 수 있다고 생각할 수 있지만, 실제 비율은 전체 데이터의 약 1.5%에 해당하는 데이터이기 때문에 실제 성능에는 크게 영향을 미치지 않는다.
💡 또한 10% token을 바꾸지 않는 것은 representation을 실제 단어에 편향되게 하기 위함이다.
- 이러한 방식의 장점은 Transformer의 Encoder가 어떤 단어를 예측해야 하는지, 어떤 단어가 random word로 대체되었는지 알 수 없기 때문에 모든 input token에 대해 distributional contextual representation을 유지하도록 강제하는 것
- MLM은 batch마다 전체 input sequence의 약 15%에 해당하는 token에 대해서만 예측을 수행하기 때문에 추가적인 pre-training step이 필요할 것이라 생각할 수 있음
- 그러나 MLM이 모든 input sequence를 활용하는 left-to-right LM보다 수렴 속도는 약간 느리지만, training cost를 증가하는 것보다 MLM의 개선 효과가 이를 훨씬 능가하는 것을 확인
💡 GELU Activation function
GELU 함수는 RELU, Zoneout, dropout의 특징을 조합하여 유도한 활성화 함수이다. 여기서 표준정규분포의 CDF가 사용되기 때문에 x의 값이 작아질수록 dropped될 가능성이 높아진다.
Task #2: Next Sentence Prediction(NSP)
- Question Answering(QA), Natural Language Inference(NLI) 등의 주요한 downstream task들은 두 문장의 relationship을 이해하는 데에 기반하며 이는 language modeling에서 직접적으로 확인하지 못함
- 모델이 sentence relationship을 학습하기 위해 모든 monolingual corpus를 통해 간단하게 생성이 가능한 이진화된 `next sentence prediction` task를 통해 pre-train
- pre-training example로 sentence A와 B를 골랐을 때 두 가지의 경우로 sentence B를 구성
- 50%의 경우 실제 next sentence인 B를 활용 → IsNext
- 50%의 경우는 corpus에서의 random sentence → NotNext
- Figure 1에 나타난 것처럼 C는 next sentence prediction(NSP)에 사용되는 토큰
- BERT는 C token을 통하여 input으로 들어온 두 문장이 실제 corpus에서 연속적인 문장인지(IsNext), 아닌지(NotNext)를 학습
💡 S1, S2, ... , S10까지의 token이 연속적으로 구성된 document가 있을 때, 다음과 같이 50%의 비율로 구성한다.
[CLS] S1 [SEP] S2 → IsNext
[CLS] S2 [SEP] S10 → NotNext
[CLS] S5 [SEP] S8 → NotNext
[CLS] S9 [SEP] S10 → IsNext
- 이러한 방식을 통한 pre-training 과정은 QA와 NLI 모두에서 매우 효과적
- vector C는 NSP를 위해 훈련되기 때문에 fine-tuning 없이는 의미가 없는 sentence representation
- 이전에는 sentence embedding만이 downstream task에 transfer되었지만, BERT는 모든 파라미터를 transfer하여 end-task model parameter를 초기화
💡 Pre-training Hyper Parameter Setting
- Maximum token legnth : 512
- Batch size : 256(256 sequences * 512 tokens = 128,000 tokens/batch) for 1,000,000 steps으로 이는 약 33억 개의 word corpus에 대해 약 40 epochs 해당하는 양
- Adam with learning rate : 1e-4, beta1 = 0.9, beta2 = 0.999
- L2 weight decay : 0.01
- learning rate warmup over the first 10,000 steps, linear decay of the learning rate
- Dropout : 0.1(all layers)
- GeLU activation function
- Pre-train the model with sequence length of 128 for 90% of the steps, and the rest 10% of the steps are trained with sequence length of 512(to speed up pre-training)
- 결론적으로 BERT의 Pre-training 과정에선 BERT가 Transformer를 활용해 두 가지의 학습이 발생
- [Mask] 혹은 replace된 토큰에 대해서도 실제 Input-sentence와 동일하게 예측하게끔 학습
- Sentence B가 실제 Next Sentence인지를 확인하기 위해 IsNext인지 NotNext인지를 학습
Pre-training data
- BooksCorpus(800M words)와 English Wikipedia(2,500M words)를 사용하여 pre-training
- Wikipedia에선 text passgage만을 추출하며 lists, tables, headers는 무시
- 긴 연속 sequence를 추출하기 위해선, document-level corpus를 사용하는 것이 shuffled sentence-level corpus(ex> Billion Word Benchmark 등)를 사용하는 것보다 중요
3.2 Fine-tuning BERT
- Transformer의 self-attention mechanism를 통해 BERT는 적절한 input과 output을 교체하여 single text 혹은 text pair을 포함하는 다양한 downstream task에 모델링할 수 있어 Fine-tuning은 간단함
- 기존에 방식들은 text pair를 독립적으로 encode한 후 bidirectional cross attention에 적용했지만, BERT는 self-attention mechanism을 통해 concated text pair를 bidirectional cross attention을 수행하여 이 두 단계를 합침
- 각 작업에 대해 task-specific한 input과 output을 간단하게 BERT에 연결하고, 모든 parameter를 end-to-end로 fine-tune
- pre-training에서의 sentence A와 sentence B는 다음과 유사
- paraphrasing의 sentence pairs
- entailment의 hypothesis-premise pairs
- Question-Answering의 question-passage pairs
- text classification 혹은 sequence tagging의 degenerate text pairs
- output 중 token representation은 `sequence tagging`, `question answering`과 같은 token-level task에, [CLS] representation은 `entailment`, `sentiment analysis`와 같은 classification output layer에 입력
- Figure 4와 같이 BERT의 task-specific model은 pre-trained된 BERT 모델에 하나의 output layer만 추가하여 구성
- 이를 통해 처음부터 학습되어야 하는 파라미터의 개수를 최소화
- (a)와 (b)는 sequence-level task이며, (c)와 (d)는 token-level task
- E : representation of Input Embedding
- T_i : contextual representation of token i
- [CLS] : classification output을 위한 special symbol
- [SEP] : 비연속적인 token sequence를 구별하기 위한 special symbol
💡 Fine-tuning Hyperparameter
- batch_size, learning rate, training epochs를 제외하곤 pre-training 과정과 동일하며, downstream task마다 hyperparameter의 값은 변화하지만 모든 task에 해당하는 일정한 범위가 있는 것을 확인
- Batch size : 16, 32
- learning rate(Adam) : 5e-5, 3e-5, 2e-5
- Number of epochs : 2, 3, 4
4. Experiments
- BERT의 11가지 NLP task에 대한 fine-tuning result
4.1 GLUE
- `The General Language Undersanding Evaluation(GLUE)` bechmark는 다양한 natural language understanding task의 모음
- CoLA : 문법
- SST : 감정 분석
- STS, MRPC, QQP : 문장 유사성
- MNLI, RTE : 전제로부터 가설의 참, 거짓을 판별하는 추론(법률 및 회계감사에 적용)
- WNLI : it과 같은 대명사가 무엇을 가르키는지 등의 언급 대상 추론
- GLUE에 대한 fine-tuning을 위해 input sequence에 대해서 앞서 설명한 내용과 동일하게 representation을 생성하고, 첫번째 input token([CLS])에 대응하는 최종 hidden vector C만 aggregate representation으로 활용
- classification layer의 가중치 W ∈ R^(KxH) 만이 유일한 새로운 파라미터
- K 는 label의 개수
- C 와 W 를 활용하여 classification loss를 계산 → log(softmax(CW^T))
- batch size는 32이며, 3 epochs을 통해 fine-tune
- 각 GLUE task에 대해서 best fine-tuning learning rate 설정(5e-5, 4e-5, 3e-5, 2e-5)
- BERT_Large 모델은 종종 작은 데이터셋에서 불안정한 것을 확인했고, 몇 개의 random restarts을 학습시켜 최적의 모델을 선택
- random restart는 동일한 pre-trained checkpoint를 사용하지만, 다른 fine-tuning data를 섞고 classifier layer를 초기화
- GLUE dataset은 test label이 없기 때문에 BERT_BASE 와 BERT_LARGE 를 위한 하나의 single GLUE evaluation server를 생성
- BERT_BASE 와 BERT_LARGE 모두 모든 task에서 기존 SOTA 모델보다 average accuracy가 각각 4.5%와 7.0% 개선
- OpenAI GPT와 BERT_BASE 는 attention masking을 제외하곤 모두 동일한 아키텍쳐
- BERT_LARGE 모델이 BERT_BASE 와 비교했을 때 모든 task에서 성능이 앞섰으며, 특히 작은 크기의 training data에서도 성능이 앞섬
4.2 SQuAD v1.1
- SQuAD v1.1은 100k개의 crowd-sourced question/answer pair의 Qeustion Answering Dataset
- 질문과 답변이 포함된 Wikipedia의 구절이 주어지면 이 구절 속에서 answer text를 예측하는 task
- 앞서 확인한 것처럼 input question과 passage를 하나의 sequence에 포함시키고, question에는 A embedding을, passage는 B embedding을 사용
- fine-tuning 단계에선 오직 start vector S(∈ R^H)와 end vector E(∈ R^H)만을 도입
- 단어 i가 answer span의 시작이 될 가능성은 모든 word에 대한 T_i와 S의 내적 값의 softmax 값을 활용
- 위치 i부터 j까지의 candidate span의 점수는 S·T_i + E·T_j 로 계산(where j ≥ i)
- 손실 함수는 start 및 end position이 맞는지에 대한 log-likelihood의 합
- 3 epochs로 fine-tune(learning rate은 5e-5, batch size는 32)
- SQuAD 데이터셋을 활용한 leaderboard에서는 공개 데이터셋을 활용할 수 있어, TriviaQA를 통해 처음 fine-tuning한 후 SQuAD를 통해 fine-tuning해 약간의 data augmentation
- BERT_LARGE single model로도 기존에 가장 성능이 좋았던 Ensemble 모델보다 높은 F1을 기록
4.3 SQuAD v2.0
- SQuAD v2.0은 주어진 paragraph에 short answer가 포함되지 않아 대답하지 못할 가능성도 허락하여 좀 더 현실적인 문제를 만들어 SQuAD v1.1을 확장
- 이는 기존에 SQuAD v1.1 BERT 모델에서 answer span의 start와 end가 [CLS] token에 있는 경우를 대답을 모르는 경우로 간주하여 start와 end answer span의 포지션을 [CLS] token을 포함하는 것으로 확장
- TriviaQA data는 이 경우 사용하지 않음
- 2 epochs 동안 fine-tuning하고, learning rate는 5e-5, batch size는 48
4.4 SWAG
- The Situations With Adversarial Generations(SWAG) dataset은 113k sentence-pair로 구성되어 sentence가 주어지면, 4개의 선택지 중에 가장 그럴듯한 결론을 선택하는 문제
- SWAG dataset을 통해 fine-tuning할 때 주어진 sentence(sentence A)와 가능한 선택지(sentence B)를 concate한 4개의 input sequence를 구성
- task-specific parameter는 [CLS] token에 대한 representation인 C vector로 각 선택지에 대한 score를 나타내며, softmax layer로 normalize
- 3 epochs을 통해 fine-tuning(learning rate of 2e-5, batch size of 16)
- BERT_LARGE 모델이 가장 좋은 성능을 보임
5. Ablation Studies
5.1 Effect of Pre-training Tasks
- No-NSP : MLM을 통해 학습했지만 NSP는 수행하지 않은 bidirectoinal model
- LTR & No NSP : MLM 대신 LTR(Left-To-Right) 모델을 통해 훈련
- fine-tuning 과정에서도 pre-training과의 mismatch를 방지하기 위해 동일하게 LTR constraint 유지
- NSP task 또한 따로 pre-train하지 않음
- 이는 OpenAI GPT와 모델 구조는 비슷하지만 기존에 OpenAI GPT와 다르게 BERT에서 사용한 larger training dataset과 input representation, fine-tuning scheme를 활용
- NSP를 사용하지 않은 결과 QNLI, MNLI, SQuAD v1.1에서 확실한 성능 하락을 발견
- 모든 task에서 LTR 모델이 MLM 모델보다 낮은 성능을 보임(NRPC와 SQuAD v1.1에서는 성능이 대폭 하락)
- SQuAD task에선 LTR 모델의 token-level hidden state에 right-side context가 포함되어 있지 않아 token prediction에서 좋지 않은 성능을 보일 것이 명백함
- 이를 개선시키기 위해 랜덤으로 초기화한 BiLSTM 모델을 추가시켰지만 SQuAD에서의 성능 향상은 있었으나 MLM에 비해선 낮은 성능이었으며, GLUE task에선 오히려 성능이 하락
- ELMo처럼 LTR, RTL 모델을 분리시켜 훈련시키고, 이를 concate할 수 있었지만
- single bidirectiona model보다 2배 expensive
- QA 같은 task에선 RTL 모델이 question에 대한 answer를 확인할 수 없어 비직관적
- deep bidirectional model은 모든 layer에서 left와 right context를 모두 사용할 수 있기 때문에 명백하게 powerful하지 않음
5.2 Effect of Model Size
- 여러 BERT 모델을 다른 개수의 layer, hidden unit, attention head로 훈련하여 model size가 fine-tuning task의 accuracy에 얼마나 관여하는지를 확인
- 5번의 fine-tuning random restarts에서의 평균 Dev Set accuracy
- 모든 dataset에서 model size가 큰 경우 더 좋은 성능을 나타냄
- machine translation, language modeling 등의 large-scale task에서 model size를 증가시키는 것이 계속해서 성능의 향상을 이뤄낼 것이라는 것은 이미 많이 알려진 부분이고, 이 또한 LM(ppl)을 통해 입증됨
5.3 Feature-based Approach with BERT
- 지금까지의 BERT 모델의 결과들은 pre-trained model에 간단한 classification layer를 추가해 모든 파라미터가 downstream task에 대해 fine-tuned되는 `fine-tuning approach`에 기반
- 그러나 pre-trained model에서 고정된 feature를 추출해내는 `feature-based approach`도 분명한 장점을 가짐
- 모든 taks가 Transformer Encoder를 통해 쉽게 represented되진 않기 때문에 task-specific한 model architecture가 추가될 필요가 있음
- training data로부터 expensive representation을 한번 미리 계산한 후 해당 representation 위에 cheaper한 모델들을 통해 여러가지 task를 수행하면 computational benefit이 존재
- 따라서 BERT를 두 가지 approach를 통해 `Named Entity Recognition(NER)` task에 적용
- feature-based approach를 적용하기 위해 BERT에서 fine-tuning을 수행하지 않은 하나 혹은 그 이상의 layer에서의 activation을 추출
- 이러한 contextual embedding은 classficiation layer 이전에 랜덤하게 초기화된 2개의 layer와 768차원으로 구성된 BiLSTM의 input으로 사용
- 결과적으로 BERT_LARGE 모델이 SOTA를 달성
- token representation을 concate한 방법 중 가장 좋은 성능을 나타낸 것은 pre-trained Transformer의 최상단 4개의 hidden layer를 추출한 방법
- 이를 통해 BERT가 fine-tuning 및 feature-based approach 모두에서 효과적임을 입증
6. Conclusion
- 최근(그 당시) language model의 `transfer learning`으로 인한 improvement는 수많은 unlabeled data를 활용한 unsupervised pre-training 방식이 language understanding system의 필수적인 부분이라는 것을 입증
- resource가 적은 task에서도 deep unidirectional architecture의 장점을 누릴 수 있음
- 이러한 결과를 `deep bidirctional architecture`로 일반화하여 동일한 pre-trained model이 광범위한 NLP task을 성공적으로 처리할 수 있도록 하는 것이 주요한 기여
Comment
💡 BERT, ELMo, GPT의 비교
BERT는 기존에 pre-training 및 fine-tuning 과정으로 NLP task를 수행하는 ELMo와 OpenAI GPT에서 개선을 이루어낸 모델이다. 가장 중요한 개선점은 바로 deep bidirectional representation을 통해 pre-train을 진행한다는 점이다. Transformer Encoder를 여러 층으로 쌓은 BERT 구조에서, bidirectional representation을 생산하기 위해 추가적으로 MLM과 NSP를 도입하여 pre-train을 진행한다. MLM이란 input sequence의 일부(15%)를 Masking 처리 한 후 Transformer Encoder가 해당 token을 original token과 동일하게 예측하게끔 학습하는 것을 의미하며, NSP는 input sentence pair에서 뒤에 나오는 sentence B가 실제 연속적인 문장인지, random하게 선택된 문장인지를 분류하는 것을 [CLS] 토큰의 final hidden vector C에 학습한다. 이러한 방식들을 통해 Masked token에 대한 예측에 모든 token을 활용하며 deep bidirectional representation을 생성할 수 있게 되었고, 여러 fine-tuning 과정에서의 downstream task에도 손쉽게 layer만을 추가해 수행할 수 있게 되었다.
💡 BERT 모델에 대한 생각
본 논문을 읽으며 BERT 모델에 대해 여러 생각을 하게 되었다. 첫 번째는, MLM을 수행하는 과정에서 random하게 Masking을 한다는 것에 대한 개선이다. 아직 BERT를 개선시킨 모델들에 대한 논문을 읽어보지 못해 어떻게 개선되었는지는 확인할 수 없지만, 이 randomness를 더욱 개선시킬 수 있을 것이라는 생각이 든다. 예를 들어, Masking 과정에서 input sentence에서 중요한 token을 계산할 수 있는 방법을 찾아 해당 token에 대한 masking을 수행한 후 학습을 진행할 수 있을 것 같다.
다음은 BERT라는 모델은 sentence가 pair 형태로 input으로 들어갈 경우에 가장 성능이 좋다는 생각이 드는데, 본 논문에서 예시로 들었던 Question-Answer 같은 task가 아닌 single sentence를 활용하는 task에서도 하나의 single sentence를 2개로 seperate할 수 있는 기준점을 찾아서 2개의 sentence로 나눠 pre-train하는 방법도 생각이 들었다. 물론 해당 경우 NSP에 대한 학습 효과는 모두 연속적인 sentence이기 때문에 떨어질 수 있다.
Reference
[4] https://wikidocs.net/21668
[5] https://youtu.be/IwtexRHoWG0?si=sPS0BjH8XyMCkxQH
[6] https://hongl.tistory.com/236
[7] https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270