BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

2022. 2. 13. 15:36Naver BoostCamp AI Tech 3기

Abstract

이번 연구팀에서는 새로운 language representation 모델인 BERT에 대해 소개한다. 이 BERT는, Bidirectional Encoder Representations from Transformers를 의미한다. 최근의 language representation 모델들과는 다르게, BERT는 deep bidirectional representation들을 unlabeled한 텍스트로부터 모든 layer에서 left context와 right context에 대해 공동으로 조절하면서 사전 훈련하도록 디자인되어 있다. 결과적으로, 사전 훈련된 BERT 모델은 그저 하나의 추가적인 output layer를 통해서 fine-tuning을 할 수 있고, 이는 넓은 범위의 task들에 대한 모델들에 대해 state-of-the-art를 달성할 수 있게 해준다. 예시로, question answering(질의 응답)과 language inference(NLI, 자연어 추론을 의미함. 이는 상황을 설명하는 문장이 주어졌을 때, 그 상황에 대한 상식적인 추론을 의미하는 것이다.)등이 있고, 이때 상당한 task-specific한 아키텍처의 변경없이 가능하다. (task에 관계없이 general하고 광범위하게 사용 가능하다는 것 같다.)

BERT는 개념적으로는 간단하고 경험적으로 강력하다. BERT는 11개의 자연어 처리 task에 대해서 새로운 state-of-the-art를 얻어냈다. 상세히 말하자면 GLUE score가 7.7% 포인트 상승하여 80.5%가 되었고, MultiNLI 정확도는 4.6% 상승하여 86.7%를 달성하였고, SQuAD v1.1 question answering Test F1은 1.5 포인트 상승하여 93.2가 되고, SQuAD v2.0 Test F1은 5.1 포인트 상승하여 83.1을 달성하였다.

1 Introduction

Language model 사전 훈련은 많은 자연어 처리 task들의 성능을 향상시키는 데에 효과적이라는 것이 보여져 왔다. 이 task들에는 sentence-level의 task들인 natural language inference(NLI)와 paraphrasing(의역) 등이 있고, 이러한 task들은 문장들을 전체적으로 분석하여 문장들 사이의 관계를 예측하는 것을 목적으로 한다. 또한 token-level의 task들인 named entity recognition(개체명 인식을 의미함, 코퍼스로부터 어떤 단어가 사람, 장소, 조직 등을 의미하는 단어인지, 즉 개체의 유형을 인식하는 것을 학습한다.), question answering등이 있다. 이 task들에서 모델들은 token level의 fine-grained(소프트웨어공학에서 어떤 프로세스를 아주 잘게 쪼개는 것을 fine-grained라고 함. 반대로 뭉뚱그려 자르는 것을 coarse-grained라고 한다.)된 output을 생산하는 것이 요구된다.

사전 훈련 된 language representation들을 downstream task들에 적용하는 데에 2가지 전략이 존재한다. 하나는 feature-based이고, 나머지 하나는 fine-tuning이다. Feature-based 접근법으로는 ELMo등이 있는데, 이는 pre-trained된 representation들을 부가적인 feature로 활용하는 task-specific한 아키텍처를 이용하는 것이다. fine-tuning 접근법으로는 the Generative Pre-trained Transformer(OpenAI GPT)등이 있는데, 여기서는 task-specific한 파라미터들을 최소한으로 도입하고, 단순히 모든 pre-trained된 파라미터들을 fine-tuning하여서 downstream task들에 대해서 훈련되는 방식이다. 이 두가지 접근법들은 pre-training 동안에는 같은 목적 함수를 공유하며, 이 사전 훈련에서는 일반적인 language representation들을 학습하기 위해서 unidirectional language model들을 사용하게 된다.

이 연구팀에서는 pre-trained된 representation들의 위력을 제한하는 현재의 테크닉들에 대해 주장하고, 특히 fine-tuning 접근법들의 테크닉에 대해 언급한다. 주요 한계점은 바로 표준 language model들은 unidirectional하고, 이는 pre-training 동안에 사용될 수 있는 아키텍처들의 선택지를 제한하게 된다. 예를 들어서, OpenAI GPT의 저자들은 left-to-right 아키텍처를 사용하는데, 이 아키텍처중에서 Transformer(2017년 논문)에서 언급된 self-attention layer들에서 모든 token들이 오직 이전 토큰들에만 참여한다. 이러한 제한점은 sentence-level task들에 대해서 sub-optimal(최적화가 덜됨.)하게 되고, 이로 인해 question answering과 같은 token-level task들에 대해 fine-tuning 기반 접근법을 적용 시 매우 성능에 악영향이 갈 수 있다. question answering에서는 양방향으로부터 context들을 포함하는 것이 매우 중요해서이다.

이번 논문에서, 연구팀은 BERT를 제안함으로써 fine-tuning 기반 접근법의 성능을 향상시켰다. BERT는 이전에 언급된 unidirectionality 제약사항을 완화시키는데, 바로 “masked language model”(MLM) pre-training objective를 사용함으로써 완화시킨다. 이 masked language model은 input으로부터 token들의 일부를 random하게 mask를 씌우고, 여기서 objective는 오직 이 문장의 context에 기반하여 mask된 단어의 원래 vocabulary id를 예측하는 것이다. left-to-right language model pre-training과는 다르게, 이 MLM의 objective는 representation이 left context와 right context를 fuse(접착, 결합)하는 것을 가능하게 한다. 이로 인해 deep bidirectional Transformer를 pre-train하는 것을 가능하게 한다. 이 masked language model에 더하여, 연구팀에서는 또한 text-pair representation들을 결합하여 사전훈련 시키는 “next sentence prediction” task를 사용한다. 이 논문에 기여한 연구들은 다음과 같다.

- 연구팀은 language representation을 위한 bidirectional pre-training의 중요성을 증명한다. pre-training을 위해서 unidirectional language model을 사용하는 Radford et al.(2018)과는 달리, BERT는 pre-trained된 deep bidirectional representation을 가능하게 하기 위해 masked language model들을 사용한다. 이는 또한 Peters et al.(2018a)와는 대조적으로, Peters et al.에서는 독립적으로 훈련된 left-to-right language model과 right-to-left language model을 shallow concatenate한 것을 사용한다.

- 연구팀은 pre-trained된 representation들이 많은 heavily-engineered한 task-specific한 아키텍처들에 대한 필요성을 줄여준다는 것을 보여준다. BERT는 sentence-level의 task와 token-level의 task들을 결합한 많은 task들에 대해서 state-of-the-art 성능을 기록한 첫번째 fine-tuning 기반 representation model이다. 이는 많은 task-specific한 아키텍처들의 성능을 압도하는 결과이다.

- BERT는 11개의 NLP task들에 대해 state-of-the-art를 얻었다. 코드와 pre-trained된 model들은 다음 주소에 있다.

[주소] : https://github.com/ google-research/bert

2 Related Work

general한 language representation들을 pre-training하는 것에는 긴 역사가 있다. 그리고 연구팀에서는 이번 섹션에서 가장 널리 사용된 접근법들에 대해 간략하게 리뷰해보는 시간을 갖는다.

2.1 Unsupervised Feature-based Approaches

넓게 적용 가능한 단어들의 representation들을 학습하는 것은 지난 수십년 간 활동적인 연구 영역이었다. 이런 연구 들에는 신경망을 사용하지 않는 방식과 신경망을 사용한 방식들이 있었다. 사전 훈련된 word embedding들은 현대 NLP 시스템들의 중요한 부분이며, scratch로부터 학습되어 왔던 embedding들에 대해서 상당한 발전을 이룩하게 해주었다. word embedding 벡터들을 사전 훈련시키기 위해서, left-to-right language modeling objective들이 사용되어 왔고, 또한 left context와 right context에서 틀린 단어들 로부터 올바른 단어를 구분하기 위한 objective들도 사용되어 왔다.

이러한 접근법들은 coarser한 granularity들에게 보편화되었고, 예시로 sentence embedding이나 paragraph embedding등이 있다. sentence representation들을 훈련시키기 위해서, 이전의 연구들은 다음과 같은 이유들로 objective들을 사용하여 왔다. 다음 후보 문장들을 rank하기 위해서, 이전 문장의 representation이 주어진 상황에서 다음 문장의 단어들의 left-to-right generation을 rank하기 위해서, 또는 auto-encoder derived objective들을 denoising을 rank하기 위해서 등등이다.

ELMo와 그 전의 모델은 기존의 다른 차원 사이의 word embedding 연구를 일반화한다. 그들은 context-sensitive한 feature들을 left-to-right language model과 right-to-left language model로부터 추출해낸다. 각 토큰의 contextual representation은 left-to-right representation과 right-to-left representation의 결합이다. contextual word embedding들을 이미 존재하는 task-specific한 아키텍처들과 결합할 때, ELMo는 여러 주요 NLP 벤치마크(프로그래밍에서 여러 번 테스트하여 오브젝트에 대한 상대적인 성능 측정을 목적으로 프로그램을 실행하는 행위를 의미)에 대한 state-of-the-art를 달성하였다. 여기에는 question answering, sentiment analysis, named entity recognition을 포함한다. Melamud et al. (2016)은 LSTM들을 사용하여 left context와 right context 양쪽으로부터 단일 단어를 예측하는 task를 통해서 contextual representation들을 학습하는 방식을 제안하였다. ELMo와 비슷하게, 그들의 모델은 feature-based하고 deeply bidirectional하지 않다. Fedus et al. (2018)은 cloze task(NLP에서 단어 등 language item이 빈 곳을 채우도록 하는 테스트를 의미)가 text generation 모델들의 강건함을 향상시키기 위해 사용될 수 있음을 보인다.

2.2 Unsupervised Fine-tuning Approaches

feature-based 접근법 에서와 같이, 이 방향으로의 첫 연구들은 unlabeled text로부터 오직 word embedding 파라미터들만 사전 훈련 하였었다.

더 최근에 들어서, contextual token representation들을 만드는 sentence 또는 document encoder들이 unlabeled text로부터 사전 훈련 되어왔고, supervised downstream task에 대해 fine-tuned 되었다. 이 접근법들의 장점은 scratch로부터 학습되어야 하는 파라미터가 거의 없다는 것이다. 최소한 이런 장점들 때문에, OpenAI GPT (Radford et al., 2018)은 GLUE benchmark로부터의 많은 sentence-level task들에 대해서 이전의 state-of-the-art 결과들을 달성하였다. Left-to-right language modeling과 auto-encoder objective들은 이러한 모델들을 사전 훈련하기 위해 사용되어 왔다.

2.3 Transfer Learning from Supervised Data

거대한 데이터셋이 있는 supervised task(natural language inference나 machine translation같은 task)로부터 효율적인 transfer를 보이는 연구들 또한 존재해왔다. Computer vision 연구는 거대한 pre-trained 모델들로부터 transfer learning의 중요성을 입증해왔다. 여기서 사용된 효율적인 방식은 바로 ImageNet으로 pre-trained 된 모델들을 fine-tune하는 방식이다.

3 BERT

이번 섹션에서는 BERT와 BERT의 자세한 구현을 소개한다. 이 연구팀의 framework에는 두 가지 단계가 있다. 하나는 pre-training, 나머지 하나는 fine-tuning이다. pre-training 동안에, 이 모델은 다른 pre-training task들에 대해 unlabeled data으로 훈련이 된다. fine-tuning에서는, BERT 모델은 처음에 pre-trained가 된 파라미터들로 초기화가 되고, 그리고 모든 파라미터들이 downstream task들로부터의 labeled data를 사용하여 fine-tuned 된다. 각각의 downstream task는 분리된 fine-tuned model들을 가지고, 이는 비록 같은 pre-trained 파라미터들로 초기화 되었을 지라도 말이다. Figure 1에서의 question-answering 예시는 이번 섹션에서의 running example(실행 예제, 현재 논문에서 다시 활용이 될 예제를 의미함)의 역할을 할 것이다.

BERT의 독특한 특징은 다른 task들 사이에서의 통일된 아키텍처이다. pre-trained 아키텍처와 최종 downstream 아키텍처 사이에는 최소한의 차이점만 존재한다.

Model Architecture

BERT의 모델 아키텍처는 Vaswani et al. (2017)에서 묘사된 original한 구현에 기반한 multi-layer bidirectional Transformer encoder이다. 그리고 tensor2tensor 라이브러리에 release 되어 있다. Transformers의 사용이 보편화 되었고 이 연구팀의 구현이 원본과 거의 동일하기 때문에, 이번 논문에서는 모델 아키텍처의 철저한 background 묘사는 생략할 것이고, 독자들에게는 앞에서 언급한 Vaswani et al. (2017)의 Transformer 논문을 읽어볼 것을 추천하고, 또한 “The Annotated Transformer”와 같은 훌륭한 가이드 역시 추천한다.

이 연구에서, 연구팀은 다음과 같이 표기하기로 하였다. Transformer block과 같은 layer들의 개수를 L이라 하고, hidden size를 H라 하고, self-attention의 head 숫자를 A라고 한다. 연구팀에서는 우선적으로 2개의 모델 사이즈에 대한 결과를 발표한다. 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와 같은 모델 사이즈를 갖도록 선택되었다. 그러나, 중요한 것은, BERT Transformer는 bidirectional self-attention을 사용한다는 것이고, 반면에 GPT Transformer는 모든 토큰이 오직 자신의 왼쪽의 context에만 참여할 수 있는 제한사항이 있는 self-attention을 사용한다는 것이다.

Input/Output Representations

BERT를 다양한 종류의 downstream task들을 제어하게 만들기 위해서는, input representation은 분명하게 single sentence와 sentence들의 쌍(Question, Answer 같은 쌍)을 하나의 토큰 sequence에서 둘 다 표현할 수 있다. 이 연구에서는 내내, “sentence”는 실제 언어 문장이라는 것보다는, 인접한 text의 임의의 span(영역)이 될 수 있다. “sequence”는 BERT에 들어가는 input token sequence를 의미하고, 이는 single sentence 또는 두 개의 sentence가 함께 묶인 형태일 수 있다.

연구팀에서는 WordPiece embedding(Wu et al., 2016)을 30000개의 token vocabulary와 함께 사용한다. 모든 sequence의 처음 토큰은 [CLS] 토큰이다. 이 토큰에 대응하는 마지막 hidden state는 classification task들에 대해 aggregate sequence representation으로 사용된다. Sentence pair들은 단일 sequence로 함께 묶이게 된다. 연구팀에서는 다음의 2가지 방식으로 문장들을 구분한다. 첫번째로, 스페셜 토큰인 [SEP]를 사용하여 분리한다. 두번째로, 이 문장이 문장 A에 속하는지, 문장 B에 속하는지를 나타내는 모든 토큰에 대한 학습된 embedding들을 추가한다. Figure 1에 묘사된 것처럼, input embedding을 E라고 표기하고, 스페셜 [CLS] 토큰의 최종 hidden vector를 C라고 표기하고, i번째 input 토큰에 대한 최종 hidden vector를 Ti라고 표기한다.

주어진 토큰에 대해서, 토큰의 input representation은 일치하는 토큰과 segment, 그리고 position embedding들을 합함으로써 만들어진다. 이렇게 만들어지는 과정을 시각화한 것이 Figure 2에 묘사된다.

 

3.1 Pre-training BERT

Peters et al. (2018a)와 Radford et al. (2018)와는 다르게, 기존의 left-to-right language model 또는 right-to-left language model들을 BERT를 사전 훈련하는 데에 사용하지는 않는다. 대신에, 연구팀에서는 이번 section에서 묘사된 2개의 unsupervised task들을 사용하여 BERT를 사전 훈련시킨다. 이번 단계는 Figure 1의 왼쪽 부분에 묘사된 부분이다.

Task #1: Masked LM

직관적으로, deep bidirectional model이 left-to-right model 또는 left-to-right model과 right-to-left model을 shallow하게 concatenate한 것보다는 더 강력할 것이라고 생각하는 것은 합리적이다. 불행히도, 표준적인 conditional language model들은 오직 left-to-right 또는 right-to-left로만 훈련될 수 있다. 왜냐하면 bidirectional conditioning은 각각의 단어들이 간접적으로 “자기 자신을 보는 것”을 허락할 수 있기 때문이고, 이 모델은 multi-layered context에서 target word를 자명하게 예측할 수 있을 것이다.

deep bidirectional representation을 훈련시키기 위해서, 연구팀에서는 단순하게 랜덤으로 input 토큰들 중 일부를 mask를 하고, 이 mask된 token들을 예측한다. 연구팀은 이 과정을 “masked LM(MLM)”이라 언급하고, 이는 이전 연구 (Taylor, 1953)에서의 Cloze task라 종종 언급된 것이다. 이 경우에, mask 토큰에 해당하는 최종 hidden 벡터들은 vocabulary에 대한 output softmax로 투입이 되고, 이는 standard LM에서와 같다. 모든 실험에서, 이 연구팀은 각 sequence의 모든 WordPiece 토큰의 15%를 랜덤하게 mask한다. auto-encoder들을 denoising(Vincent et al., 2008)하는 것과는 대조적으로, 연구팀은 전체 input을 재건축하는 것이 아니라 오직 masked된 단어들 만을 예측한다.

비록 이 MLM은 bidirectional pre-trained model을 얻을 수 있게 허락하지만, 연구팀에서 만드는 downside는 pre-training과 fine-tuning 사이의 mismatch가 존재한다. 왜냐하면 [MASK] 토큰은 fine-tuning 동안에는 존재하지 않기 때문이다. 이를 완화하기 위해서, 연구팀에서는 항상 masked 단어들을 실제 [MASK] 토큰으로 교체하는 것은 아니다. training data generator는 예측을 위해 토큰 position들 중 15%를 랜덤하게 선택한다. 만약, i번째 토큰이 선택되면, 연구팀에서는 i번째 토큰을 (1) 80%는 [MASK] 토큰으로 교체하고, (2) 10%는 랜덤한 토큰으로 교체한다. 그러면 Ti는 cross entropy loss와 함께 원래 토큰을 예측하는 데에 사용될 것이다. 연구팀에서는 이 과정의 variation들을 Appendix C.2에서 비교하고 있다.

Task #2: Next Sentence Prediction (NSP)

Question Answering(QA)와 Natural Language Inference(NLI) 같은 많은 중요한 downstream task들은 두 문장 사이의 관계를 이해하는 것이 기반이 되고, 이는 language modeling에 의해 directly하게 capture되지 않는다. 문장들의 관계를 이해하는 모델을 훈련시키기 위해서, 연구팀은 어떤 단일 언어 코퍼스로부터 자명하게 생성될 수 있는 binarized(이진화)된 next sentence prediction task를 사전 훈련시킨다. 구체적으로, 문장 A와 B를 각각의 pre-training 예시로 선택할 때, 50%는 B가 A 다음에 오는 실제 문장이며(label이 IsNext), 나머지 50%는 코퍼스로부터의 랜덤한 문장이다.(label이 NotNext) Figure 1에서 보이다시피, C는 next sentence prediction (NSP)을 위해 사용된다. 이 간단함에도 불구하고, 이 연구팀은 Section 5.1에서 이런 task들을 향한 pre-training이 QA와 NLI 둘 다에 매우 유용하다는 것을 증명하고 있다. NSP task는 Jernite et al. (2017)과 Logeswaran and Lee (2018)에서 사용된 representation learning objective들과 밀접하게 연관되어 있다. 그러나, 이전의 연구에서, 오직 sentence embedding들 만이 down-stream task들로 전이되었고, 이 task들에서 BERT는 end-task 모델 파라미터들을 초기화하기 위해서 모든 파라미터들을 전이한다.

Pre-training data

pre-training 과정은 language model pre-training에 대한 존재하는 literature를 따른다. pre-training 코퍼스에 대해서는, 연구팀에서는 BooksCorpus (800M 단어들)을 사용하고, English Wikipedia (2500M 단어들)을 사용한다. Wikipedia에서는 오직 텍스트 문구들만 추출하고, 리스트나 테이블, 헤더들은 무시한다. 이때 shuffled된 sentence-level 코퍼스보다는 document-level corpus를 사용하는 것이 중요하다. 이는 긴 인접한 sequence들을 추출하기 위해서이다.

3.2 Fine-tuning BERT

Fine-tuning은 직관적이다. 이는 Transformer 내의 self-attention 메커니즘이 BERT가 많은 downstream task들을 모델링하도록 허가하기 때문이다. 이들이 single-text를 포함하든 혹은 text pair들을 포함하든지 상관없이 적절한 input, output들을 교환함으로써 가능하다. text pair들을 포함하는 application들에 대해서, 공통적인 패턴은 bidirectional cross attention을 적용하기 전에 text pair들을 독립적으로 encode하는 것이다. BERT는 대신에 이 2개의 단계들을 통일화하기 위해서 self-attention 메커니즘을 사용하며, 이는 concatenated된 text를 self-attention을 사용하여 encoding하는 것이 2개의 문장 사이의 bidirectional cross attention을 효율적으로 포함하기 때문이다.

각각의 task에 대해서, 연구팀에서는 단순히 task-specific한 input과 output들을 BERT 내로 plug-in하고 end-to-end로 모든 파라미터들을 fine-tune한다. input에서는 pre-training으로부터의 문장 A와 문장 B는 (1) paraphrasing에서의 sentence pair들과 유사하고, (2) entailment(언어적 함의)에서의 hypothesis-premise pair들과 유사하고, (3) question answering에서의 question-passage pair들과 유사하며, (4) text classification 혹은 sequence tagging에서의 text-∅ pair를 degenerate하는 것과 유사하다. output에서는 토큰 representation들은 sequence tagging 또는 question answering과 같은 token-level task들을 위한 output layer로 들어가게 되고, [CLS] representation은 entailment나 sentiment analysis와 같은 classification을 위한 output layer로 들어가게 된다.

pre-training과 비교하여, fine-tuning은 비교적 덜 비용이 든다. 이번 논문에서의 모든 결과는 단일 Cloud TPU로 최대 1시간 또는 단일 GPU로 몇 시간 안에 재현될 수 있으며, 이는 이들이 정확히 같은 pre-trained 모델로부터 출발하기 때문이다. 연구팀에서는 task-specific한 detail들은 Section 4의 subsection들에서 묘사한다. 더 자세한 사항은 Appendix A.5에서 묘사된다.

4 Experiments

생략함

5 Ablation Studies

이번 Section에서는, 연구팀은 BERT의 수많은 facet들에 대한 ablation 실험(모델에서 특정 부분을 빼서 실험함으로써, 그 특정 부분이 모델에서 얼마나 중요한지를 판단함)을 수행한다. 이는 이 facet들의 상대적 중요성을 더 잘 이해하기 위해서이다. 추가적인 ablation 연구는 Appendix C에서 확인할 수 있다.

5.1 Effect of Pre-training Tasks

연구팀은 BERT의 deep bidirectionality의 중요성을 2개의 pre-training objective들을 평가함(BERT_BASE 기준으로 정확히 같은 pre-training data와 fine-tuning scheme와 하이퍼파라미터들을 사용함)으로써 증명한다.

No NSP

“masked LM”(MLM)을 사용하고 “next sentence prediction”(NSP) task는 사용하지 않고 훈련된 bidirectional model을 의미한다.

LTR & No NSP

MLM이 아닌 Standard Left-to-Right(LTR) LM을 사용하여 훈련된 left-context-only model을 의미한다. left-only 제약사항은 또한 fine-tuning에서도 적용되고, 왜냐하면 이 제약사항을 제거하게 되면 pre-train과 fine-tune 사이의 mismatch가 들어가게 되고, 이로 인해 downstream의 성능이 낮아지게 된다. 추가적으로, 이 모델은 NSP task없이 사전 훈련된다. 이것은 직접적으로 OpenAI GPT와 비교 가능하지만, 연구팀의 더 거대한 훈련 데이터셋과 input representation, 그리고 fine-tuning scheme을 사용한다.

연구팀은 처음에 NSP task로 인한 영향을 조사한다. Table 5에서, 연구팀은 NSP를 제거하는 것이 QNLI, MNLI, SQuAD 1.1의 성능에 엄청난 저해를 일으키는 것을 보였다.

다음으로, 연구팀은 bidirectional representation을 “No NSP”와 “LTR & No NSP”를 비교함으로써 평가한다. LTR 모델은 모든 task에 대해서 MLM 모델보다 안좋은 성능을 보였으며, 특히 MRPC와 SQuAD에 있어서는 크게 떨어졌다.

SQuAD에 있어서는, LTR 모델이 토큰 예측에 대해 낮은 성능을 보일 것이란 건 직관적으로 명확하다. 왜냐하면 token-level hidden state들은 right-side context가 없기 때문이다. LTR 시스템을 강화하기 위한 시도를 하기 위해서, 연구팀은 랜덤하게 초기화된 BiLSTM을 맨 위에 쌓았다. 이는 SQuAD에 있어서 결과를 눈에 띄게 상승시켰지만, 여전히 결과는 pre-trained bidirectional model들보다는 확실히 밀렸다. 이 BiLSTM은 GLUE task들에 대해 성능에 저하를 일으켰다.

연구팀은 분리된 LTR 모델과 RTL 모델들을 훈련시키는 것이 아마 가능할 것이라 생각하고, 각 토큰을 2개의 모델의 concatenation으로 나타낼 수 있다고 본다. (마치 ELMo의 방식과 같다) 그러나, (a) 이것은 single bidirectional model보다 2배 정도 expensive하고, (b) 이것은 QA와 같은 task들에 대해서는 비직관적이다. 왜냐하면 RTL 모델은 질문에 대한 답을 조건화 할 수 없기 때문이다. (c) 그리고 이것은 deep bidirectional model보다 덜 강력하다, 왜냐하면 deep bidirectional model은 모든 층에서 left context와 right context를 사용할 수 있기 때문이다.

5.2 Effect of Model Size

이번 Section에서, 연구팀은 fine-tuning task 정확도에 대해서 model size의 영향에 대해 알아본다. 연구팀은 layer, hidden units, attention heads의 개수를 다르게 하면서 수많은 BERT 모델들을 훈련시켰다. 반면에, 하이퍼파라미터와 훈련과정은 이전에 묘사된 것과 같은 방식을 사용하였다.

GLUE task들에 대한 결과는 Table 6에 묘사되었다.

이 table에서, 연구팀은 랜덤한 5번의 fine-tuning으로부터의 평균적인 Dev Set 정확도를 나타내었다. 연구팀은 더 거대한 모델들이 전체 4개의 데이터셋들에서 엄청난 정확도 상승을 볼 수 있었다.  심지어 이 데이터셋은 MRPC를 위한 데이터셋으로, 훈련 데이터셋에서 label이 된 것은 3600개밖에 없고, pre-training task들과는 상당히 다르지만 이런 결과가 나왔다. 또한 기존 구조에 비해 이미 상당히 큰 모델에 더하여 이런 의미있는 향상을 얻을 수 있다는 것이 놀랍다. 예를 들면, Vaswani et al. (2017)에서 발견된 가장 큰 Transformer는 (L=6, H=1024, A=16)에 encoder에 대한 파라미터 개수는 100M이고, 이 연구팀에서 문헌인 (Al-Rfou et al., 2018)에서 찾은 (L=64, H=512, A=2)에는 파라미터가 235M개이다. 대조적으로, BERT_BASE는 파라미터가 110M개, BERT_LARGE는 파라미터가 340M개이다.

오랫동안, 모델의 크기를 늘리는 것은 machine translation이나 language modeling과 같은 커다란 규모의 task들에 대해 지속적인 성능 향상으로 이어질 것이라고 알려져 있다. 이는 Table 6에서 보여진 training data의 LM perplexity에 의해 증명되었다. 그러나, 연구팀에서는 이번 연구는, 이렇게 모델 사이즈를 크게 늘리는 것이 또한 매우 작은 규모의 task들에 대해서도 커다란 성능 향상으로 이어질 수 있다는 것을 설득력 있게 증명하는 첫번째 연구라고 생각한다. 여기서 model은 충분히 pre-trained 되었다는 상황이 들어간다. Peters et al. (2018b)은 사전 훈련이 된 bi-LM의 크기를 layer 2개에서 4개로 증가시키는 downstream task의 영향에 대한 혼합 결과를 제시하였고, Melamud et al. (2016)은 hidden dimension size를 200에서 600으로 증가시킨 것이 도움이 되었다고 언급했다. 그러나 1000 이상으로 늘리는 것은 커다란 도움이 되지 않았다고 한다. 이 2개의 이전 연구들은 feature-based 접근법을 사용하였고, 연구팀에서는 모델이 downstream task들에 대해 fine-tuned되고 오직 매우 작은 개수의 랜덤하게 초기화된 추가적인 파라미터들을 사용할 때, task-specific한 모델들이 더 크고 더 표현이 풍부한 pre-trained representation들로부터 혜택을 받을 수 있을 것이라고 가정한다. (심지어 downstream task의 데이터가 매우 작을 때에도 말이다)

5.3 Feature-based Approach with BERT

지금까지 나타낸 BERT의 모든 결과들은 fine-tuning 접근법을 사용하였고, 이 fine-tuning 접근법에서는 pre-trained model에다가 간단한 classification layer가 추가된 것이고 모든 파라미터들이 같이 downstream task에서 fine-tuned 된다. 그러나, feature-based 접근법은, pre-trained model에서 고정된 feature들이 추출되는데, 확실한 강점들을 가지고 있다. 첫 번째로, 모든 task들이 Transformer encoder 아키텍처로 쉽게 표현될 수는 없다, 그러므로 추가 되어야만 하는 task-specific한 모델 아키텍처가 요구된다. 두 번째로, training data의 expensive한 representation을 미리 계산하고, 이 representation 위에 cheaper한 모델들로 많은 실험을 진행할 수 있는, 많은 계산적 이득이 있다.

이번 Section에서, 연구팀은 BERT를 CoNLL-2003 Named Entity Recognition (NER) task에 적용함으로써 2가지 접근법을 비교해본다. BERT의 input에서, 연구팀은 case-preserving WordPiece model을 사용하고, data에 의해 제공된 최대한의 document context를 포함한다. 표준적인 practice를 따라서, 연구팀에서는 이것을 tagging task로 공식화하지만, output에 CRF layer를 사용하지는 않는다. 연구팀은 NER label set에서 첫번째 sub-token의 representation을 token-level classifier의 input으로 사용한다.

fine-tuning 접근법을 ablate하기 위해서, 연구팀에서는 feature-based 접근법을 BERT의 어떤 파라미터도 fine-tuning하지 않은 상태의 1개 혹은 그 이상의 layer로부터 activation들을 추출함으로써 적용하였다. 이 contextual embedding들은 classification layer 이전에 랜덤하게 초기화 된 768차원의 BiLSTM 2개의 layer의 input으로 사용된다.

결과들은 Table 7에 나타났다.

BERT_LARGE는 state-of-the-art 방법들과 경쟁적으로 수행하였다. (비슷한 성능을 보인다) 가장 성능이 좋은 방법은 pre-trained 된 Transformer의 맨 위의 4개의 hidden layer들로부터의 token representation들을 concatenate하는 방식이며, 이는 전체 모델을 fine-tuning하는 것보다 고작 0.3 F1 score 정도 밀리는 수준이다. 이는 BERT가 fine-tuning 접근법과 feature-based 접근법 둘 다 효율적이라는 것을 증명한다.

6 Conclusion

최근의 language model들과 함께 transfer learning으로 인한 경험적인 성능 상승으로 인해 다음과 같은 사실을 증명하였다. 풍부하고, unsupervised한 사전 학습은 많은 language understanding 시스템들의 중요 부분이 되었다는 것이다. 특히, 이 결과들은 심지어 자원이 적은 task들 마저도 deep unidirectional 아키텍처로부터 이익을 얻을 수 있다는 것을 알려준다. 이번 논문으로 인한 기여는, 이러한 발견들을 deep bidirectional 아키텍처로 일반화 시키는 것이며, 같은 pre-trained 모델이 넓은 범위의 NLP task들에 대해 성공적으로 다룰 수 있다는 것을 의미한다.

References

생략함

Appendix for “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”

appendix를 3개의 section으로 구성한다.

∙ Appendix A에는 BERT의 구현에 대한 추가적인 세부사항이 나온다.

∙ Appendix B에는 실험에 대한 추가적인 세부사항이 나온다.

∙ Appendix C에는 추가적인 ablation 연구가 나온다. 여기서 Training Steps의 숫자의 영향과, 다른 Masking 과정들에 대한 ablation이 포함된다.

A Additional Details for BERT

A.1 Illustration of the Pre-training Tasks

여기서는 pre-training task들의 예시를 제공해준다.

Masked LM and the Masking Procedure

unlabeled한 문장 하나를 “my dog is hairy”라고 가정해보고, random masking 과정 동안에, 연구팀에서는 4번째 토큰(hairy)을 선택하였고, masking 과정은 다음과 같이 진행된다.

∙ 80%의 빈도로는, 해당 단어를 [MASK] 토큰으로 교체한다. 즉, “my dog is hairy” -> “my dog is [MASK]”가 된다.

∙ 10%의 빈도로는, 해당 단어를 랜덤한 단어로 교체한다. 즉, “my dog is hairy” -> “my dog is apple”가 된다.

∙ 10%의 빈도로는, 해당 단어를 교체하지 않는다. 즉, “my dog is hairy” -> “my dog is hairy”가 된다. 이렇게 하는 목적은 실제 관측되는 단어에 대한 representation에 bias를 가하기 위함이다.

이 과정의 장점은 바로 Transformer encoder가 “어떤 단어가 예측하도록 요청받을지, 또는 어떤 단어가 랜덤한 단어로 교체되었는 지” 모른다는 것으로, 그래서 encoder는 모든 input token의 distributional contextual representation을 보존하도록 강제받는다. 추가적으로, 랜덤 교체는 전체 토큰 중 오직 1.5%에서만 발생하므로, 이 랜덤 교체가 모델의 language understanding 능력에 해를 끼치는 것처럼 보이지는 않는다. Section C.2에서는, 이 과정의 영향에 대해 평가한다.

표준적인 language model 훈련과 비교하여서, masked LM은 오직 각 batch 내의 15%의 토큰에 대한 예측만 만들어낸다. 이는 모델이 수렴하기 위해서는 더 많은 pre-training step이 필요할 지도 모른다는 것을 제시한다. Section C.1에서는, 연구팀은 MLM이 left-to-right model(모든 토큰을 예측함)보다 약간 더 느리게 수렴하지만, MLM model의 경험적인 성능 상승이 이 증가된 training cost의 중요도를 압도한다는 것을 증명할 것이다.

Next Sentence Prediction

next sentence prediction task는 다음과 같은 예시로 묘사될 수 있다.

A.2 Pre-training Procedure

각각의 훈련 input sequence를 생성하기 위해서, 연구팀에서는 코퍼스로부터 text의 2개의 span(범위, 길이를 의미함)을 샘플링 한다. 연구팀에서는 이 span을 “sentences”라고 언급한다. (단일 문장보다 훨씬 길수도 있고 짧을 수도 있다) 첫 번째 sentence는 A embedding을 받고 두 번째 sentence는 B embedding을 받는다. 50%의 빈도로 B는 A 다음에 오는 실제 문장이며, 나머지 50%의 빈도로는 랜덤한 문장이 온다. 이것이 “next sentence prediction” task를 위해 발생하는 과정이다. 이 sentence들은 결합한 길이가 512 토큰 이하가 되도록 샘플링 된다. LM 마스킹은 15% 비율의 균일한 마스킹과 WordPiece 토큰화 이후에 적용되며, 부분적인 word piece들에 대해 특별한 고려사항은 없다.

연구팀은 256개의 sequence의 batch size로 훈련을 시킨다. (256 sequences * 512 tokens = 128,000 tokens/batch) 이를 1,000,000 step만큼 훈련시키며, 이는 33억 단어 코퍼스를 대략 40번 정도의 epoch만큼 훈련시키는 것이다. 연구팀에서는 Adam optimizer를 학습률은 1e-4, beta1은 0.9, beta2는 0.999, L2 weight decay는 0.01, 학습률 warmup(특정 step만큼은 학습률을 선형적으로 증가시키고, 그 이후에는 scheduler에 따라 학습률을 조정함)은 첫 10,000 step만큼 적용하며, 그 후에는 학습률 linear decay를 적용한다. 연구팀에서는 모든 layer에 대해 확률 0.1의 dropout을 적용한다. 그리고 표준적인 relu보다는 gelu 활성화함수를 적용하고, 이는 OpenAI GPT를 따라하였다. Training loss는 masked LM likelihood의 평균과 next sentence likelihood의 평균의 합이다.

BERT_BASE의 훈련은 Pod configuration(쿠버네티스 컴퓨팅 단위)에서 4개의 클라우드 TPU들로(총 16개 TPU chip) 수행되었다. BERT_LARGE는 16개의 Cloud TPU들로(총 64개 TPU chip) 수행되었다. 각 훈련은 4일이 걸렸다.

더 긴 sequence들은 불균형적으로 expensive하다. 왜냐하면 attention은 sequence length에 quadratic(이차적, 제곱)이기 때문이다. 실험에서 사전 훈련 속도를 높이기 위해서, 연구팀에서는 step의 90%에는 128 sequence length로 모델을 사전 훈련 시켰다. 그리고, 나머지 10%의 step은 positional embedding을 학습하기 위해서 512 sequence length로 훈련시켰다.

A.3 Fine-tuning Procedure

fine-tuning을 위해서, 대부분의 모델 하이퍼파라미터들은 pre-training에서와 같다. 예외는 batch_size, 학습률, 그리고 training epoch의 숫자이다. Dropout 확률은 항상 0.1로 유지되었다. 최적의 하이퍼파라미터 값은 task-specific하지만, 모든 task에 대해 잘 동작하는 가능한 값들의 범위를 찾아내었다.

∙ Batch size : 16, 32

∙ Learning rate (Adam) : 5e-5, 3e-5, 2e-5

∙ Number of epochs : 2, 3, 4

연구팀에서는 또한 거대한 데이터셋(예시로는 10만개가 넘어가는 labeled 훈련 샘플)이 작은 데이터셋보다는 하이퍼파라미터의 선택지에 훨씬 덜 민감하다는 것을 관찰했다. Fine-tuning은 전형적으로 매우 빠르므로, 단순하게 위에서 언급한 파라미터들에 대해 완전탐색을 하고 development set에 대해 가장 잘 성능이 나오는 모델을 선택하는 것이 합리적이다.

A.4 Comparsion of BERT, ELMo, and OpenAI GPT

이번 Section에서는 최근 인기있는 representation 학습 모델들(ELMo, OpenAI GPT, BERT를 포함해서)의 차이점에 대해 알아본다. 이 모델 아키텍처들 사이의 비교는 Figure 3에 시각적으로 묘사되어 있다.

명심해야 할 것은, 아키텍처의 차이점 뿐만이 아니라, BERT와 OpenAI GPT는 fine-tuning 접근법이며, 반면에 ELMo는 feature-based 접근법이라는 것이다.

존재하는 pre-training 방법 중 가장 BERT와 유사한 것은 OpenAI GPT로, 거대한 텍스트 코퍼스를 사용해 left-to-right Transformer LM을 학습시킨다. 사실, BERT 내의 많은 design 결정은 의도적으로 가능한 GPT와 가깝게 만들어진 것으로, 이는 2가지 방법이 최소한으로 비교되도록 하기 위해서이다. 이번 연구의 주요 논쟁은 바로 Section 3.1에서 묘사된 bi-directionality와 2개의 pre-training task들이 대부분의 경험적인 성능 향상을 설명한다는 것이다. 그러나 연구팀에서는 BERT와 GPT가 어떻게 훈련되었는지에 대해 여러 차이점들이 존재하는 것을 중요하게 본다.

∙ GPT는 BooksCorpus(800M 단어들)로 훈련되며, BERT는 BooksCorpus(800M 단어들)과 Wikipedia(2500M 단어들)로 훈련된다.

∙ GPT는 문장 분리자로 [SEP]를 쓰고, classifier 토큰으로 [CLS]를 사용한다. 이들은 fine-tuning 시에만 도입된다. BERT는 [SEP], [CLS], 그리고 문장 A/B embedding들을 pre-training 동안 학습한다.

∙ GPT는 32000개 단어의 batch size로 1M step동안 훈련되었고, BERT는 128,000개 단어의 batch size로 1M step동안 훈련되었다.

∙ GPT는 모든 fine-tuning 실험 동안 같은 학습률인 5e-5를 사용하였고, BERT는 development set에 대해 가장 잘 동작하는 task-specific한 fine-tuning 학습률을 선택하였다.

이 차이점들의 영향을 배제하기 위해서, Section 5.1에서 ablation 실험들을 수행하였고, 이는 성능 향상의 대부분은 사실 2개의 pre-training task와 이들이 가능하게 한 bidirectionality로부터 온 것이라는 걸 증명하였다.

A.5 Illustrations of Fine-tuning on Different Tasks

BERT의 각각 다른 task들에 대한 fine-tuning의 묘사는 Figure 4에서 확인할 수 있다.

연구팀의 task-specific한 모델들은 BERT를 1개의 추가적인 output layer를 붙이면서 형성된다. 그래서 최소한의 파라미터들만 scratch로부터 학습이 필요하게 된다. Task들 중에서, (a)와 (b)는 sequence-level task이며, 반면에 (c)와 (d)는 token-level task들이다. 그림에서, E는 입력 embedding, Ti는 토큰 i의 contextual representation, [CLS]는 classification output을 위한 특별한 심볼, [SEP]는 연이은 토큰 sequence들을 분리하기 위한 특별한 심볼을 의미한다.

 

 

요약

- BERT는 pre-training을 통해 얻어낸 language representation 모델이다.

- BERT는 Transformer의 encoder 구조를 이용해 만들어졌으며, unlabeled text로부터 deep bidirectional representation을 학습하도록 만들어졌다.

- BERT는 크게 pre-training과 fine-tuning, 이렇게 2가지로 나눌 수 있다.

- BERT 이전의 연구들에서는, pre-training에서 주로 left-to-right 아키텍처인 unidirectional 아키텍처를 사용하였다. 이유는 bidirectional 아키텍처를 사용하게 되면 표준적인  language model 학습 시 간접적으로 자기 자신을 학습하게 되며, 이를 통해 target word를 예측하는 것은 자명한 결과로 나오기 때문이다. (즉, contextual embedding이 큰 의미를 갖지 못할 것이다)

- 이를 극복하기 위해서, BERT는 기존의 language model이 아닌 "masked language model(MLM)"과 "next sentence prediction(NSP)" 이 2가지 task를 bidirectional 아키텍처로 훈련시킴으로써, 기존에 있던 contextual embedding보다 더 뛰어난 embedding을 얻을 수 있게 된다.

- Masked Language Model(MLM)은 각 batch 내에서 전체 토큰 중 15%를 mask한다. 이때, mask하는 방식이 3가지 경우의 수가 있는데, 80%는 [MASK] 토큰으로 교체, 10%는 vocabulary 중 랜덤한 토큰으로 교체, 나머지 10%는 그대로 납둔다. 이렇게 mask가 되고 나면, BERT의 맨 마지막 hidden layer(맨 위)에서 mask된 토큰들 만 classification을 진행하여 원래 단어를 맞추는 훈련을 하게 된다. 이 방식을 사용하면, 위에서 언급된 "자기 자신을 간접적으로 바라보아서 자명한 결과를 낳는다."는 단점을 보완하게 된다. (mask되었으므로 자신이 무슨 단어인지 모른다)

- Next Sentence Prediction(NSP)은 NLP task들 중 단순한 문장이 아닌 문장의 쌍을 입력으로 받는 task들(QA, NLI 등등)을 위해서 훈련한다. 이 NSP task를 통해서 문장 사이의 관계를 학습할 수 있게 된다.

- NSP는 텍스트 입력 시 2개의 문장을 붙히게 된다. 이때, 50%의 확률로는 실제 다음 문장을 붙이고, 나머지 50%의 확률로는 랜덤한 문장을 붙인다. 이때, 실제 다음 문장이면 label은 IsNext, 랜덤한 문장이라면 label은 NotNext로 붙여서 이진 분류를 하게 된다. 이 문장 분류는 문장 맨 앞에 붙는 [CLS] 토큰의 마지막 hidden state(맨 위)를 classification layer로 보내서 훈련을 진행한다.

- 문장을 입력할 때, [CLS] 토큰은 맨 앞에, [SEP] 토큰은 한 문장이 끝날 때마다 붙인다.

- 이렇게 Pre-training을 하게 되면, 이 훈련된 아키텍처(훈련된 파라미터들)를 downstream task들에 대해 공통적으로 사용할 수 있다. 각 task에 맞게 task-specific한 추가적인 아키텍처를 위에 붙인 후에, task-specific한 data들로 전체 파라미터들을 훈련시킨다. (pre-training된 파라미터 + 새로 추가한 파라미터) 이것을 fine-tuning이라 한다.

- 반면에, feature-based 접근법 또한 존재하는데, pre-training은 동일하지만 이 경우에는 task-specific한 data를 훈련시킬 때, 새로 추가된 파라미터들만 훈련시킨다고 볼 수 있다. (미리 훈련된 파라미터(feature)들은 고정이다) 장점으로는 새로 추가된 파라미터들만 훈련하므로, fine-tuning보다는 좀 더 task-specific한 아키텍처를 만들어 올려도 훈련 cost가 그렇게 크지 않다고 볼 수 있을 것이다.

- 결론적으로, BERT는 현재 NLP task들의 기본적이면서도 중요한 부분, 코어의 역할을 한다고 볼 수 있다. 예전의 단어만 embedding을 하여 문장의 문맥(context)을 반영하지 못하던 시절에서 발전하여서, BERT에 와서는 문장의 문맥을 반영할 뿐 아니라, 뒤에 붙는 문장의 관계까지도 반영하여 embedding이 되면서 NLP task들에 대해 혁신적인 결과를 얻을 수 있게 된 기념비적인 논문이라 생각한다.