Paper: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Language Model의 Pre-training 방식은 NLP 성능 향상에 매우 효과적임.
이렇게 Pre-trained Language representations를 downstream tasks에 적용하기 위한 두 가지 방법이 있음
이 방법들은
pre-training 중에 object function 공유하고, unidirectional language models임(단방향 언어 모델)
하지만 이러한 unidirectional model은 pre-training 시에 사용 가능한 모델 아키텍처가 제한적임. (ex. 좌→우, 우→좌)
이렇게 되면, 좌우 context 정보를 충분히 활용할 수가 없게 되는 것. 따라서 모델 아키텍처가 제한적이라는 것.
따라서 본 논문에서는,
앞서 언급된 fine-tuning 기반의 접근을 개선하기 위해서, BERT(Bidirectional
Encoder Representations from Transformers)라는 모델을 제안함.
기존 unidirectionality의 한계를 개선하고자, MLM(Masked Language Model)이라는 pre-training objective를 사용함.
MLM 방식에서는, input 문장에서 몇몇 token을 random하게 가리고(mask), context만을 통해서 masked word를 예측하게끔 함.
이를 통해, 좌-우 context를 모두 활용해서(bidirectional) 학습할 수 있게 됨.
또한, NSP(Next Sentence Prediction)방식도 사용하여, pre-trains text-pair(텍스트 쌍) representations도 학습함.
BERT의 contributions
(1) language representations에서의 bidirectional pre-training의 중요성을 입증함.
(2) pre-trained representations는 heavily-engineered task
specific architectures(고도로 설계된 복잡한 task별 아키텍처)가 필요하지 않음
Pre-trained word embeddings는 NLP의 필수 요소임.
word embedding vectors를 pre-train 하기 위해, left-to-right(좌→우) language modeling objectives이 주요한 방법으로 활용되었음.
sentence embeddings/paragraph embeddings에서는 후보 문장 랭킹해서 다음 sentences 예측하거나, 다음 sentences를 left-to-right으로 생성하거나, denoising auto encoder 방식(일부 데이터 가리고, 원래 데이터 복원하는 방식. 이게 발전되어서 BERT)을 사용함.
ELMo의 경우, left-to-right or right-to-left language model을 학습해서 context-sensitive features을 추출해냄. 여러 task에서 좋은 성능을 보였으나, deeply bidirectional방식이 아니고, 단순한 feature based concatenation 방식이라 한계가 존재.
위 feature-based 방식과 동일하게, 처음에는 word embedding parameters만 pre-train했다가, 이후 sentence/document 기반 encoder가 개발됨. 따라서, contextual token representations 학습 가능해짐.
unlabeled text(비지도 학습)로 pre-train → supervised downstream task(지도 학습)로 fine-tuning 되는 방식.
이러한 방식은 처음부터 학습해야 하는 prameters 수가 적다는 장점 존재.
large datasets을 활용한 supervised learning 기반 전이 학습인데, 이것도 효과적인 방법임.
natural language inference(자연어 추론)/machine translation(기계 번역) 분야에서 많이 쓰이고, Computer Vision 쪽에서도 쓰이는 중요한 방식임.
본 논문에서 소개하고자 하는 모델 BERT.
이는 framework가 2단계로 구성됨.
(1) Pre-training
unlabeled data를 활용해서 다양한 pre-training tasks를 진행.
(2) Fine-tuning
pre-trained parameters 기반으로 초기화 한 후, 모든 파라미터를 downstream tasks의 labeled data를 사용해서 fine-tuning.
각 downstream task는 각각의 fine-tuned models을 가지지만, pre-trained parameters는 모두 같음.

BERT는 각각 다른tasks에서 unified architecture(통합된 아키텍처)를 사용한다는 것임.
이렇게 되면, pre-trained architecture와 final downstream architecture의 차이가 아주 적어지게 됨.
BERT는 multi-layer bidirectional Transformer encoder(다층 양방향 transformer encoder)로, 기존 transformer 모델 기반으로 하고 있음.
본 논문에서의 BERT 주요 하이퍼 파라미터는 다음과 같음.
BERT_BASE 모델
: L=12/H=768/A=12/Total Param
eters=110M(1억 1천만 개)
BERT_LARGE 모델
: L=24/H=1024/A=16/Total Parameters=340M(3억 4천만 개)
BERT: bidirectional self-attention 사용
GPT: constrained self-attention 사용
input representation은 single sentence/sentence pair 표현을 잘 해야 함.(down-stream task를 잘 수행할 수 있어야 하기 때문)
모든 sequence에서 첫 token은 classification(CLS) token으로 설정되고, 최종 hidden state는 전체 시퀀스를 대표하는 vector로 사용되고, classification task에서 사용됨.
sentence pairs(문장 쌍)를 구분하는 방법으로는 2가지가 존재하는데,
SEP(separation) token을 문장 사이에 추가
ex. [CLS]+할 게 많네+[SEP]+언제 다하지?+[SEP]
→ 위처럼 문장 구분을 하기 위해서 각 문장 사이에 sep token을 넣는다는 것.
각 token에 learned embedding(학습된 임베딩)을 추가해서 그 token이 문장 A와 B 중 어디에 속하는지 나타냄
↑
[SEP] 토큰을 활용해서 문장을 구분하는 것 확인 가능/각 토큰에 segment embedding 추가하는 것 확인 가능(문장 A/B구분-E_A or E_B)/입력 벡터 = Token Embedding + Segment Embedding + Position Embedding 임을 확인 가능
BERT는 기존의 left-to-right or right-to-left 방식의 language models를 사용하지 않음.
대신, unsupervised tasks를 통해 pre-train 됨.
MLM(Masked Language Model).
BERT는 MLM 방식으로 bidirectional 학습이 가능하게끔 함.
input token에서 특정 %를 random으로 masking 하고, 그 token을 예측하는 방식으로 진행됨.
final hidden vectors(최종 은닉 벡터)는 masking된 token을 예측하는 softmax layer로 입력됨.
본 모든 실험에서, masking %는 15%로 설정되었음.
앞서 초반에 살짝 언급된 Denoising Autoencoder에 비해, 전체 input을 복원하는 구조가 아니라, 오직 masked words만 예측하는 방식임.
다만, 해당 MLM 방식은 fine-tuning 과정에서 [MASK] token이 없음.
따라서, pre-training과 fine-tuning 사이에 일치하지 않는 문제가 생길 수 있음.
이러한 문제 해결을 위해서, 다양한 변주를 줌.
masking된 단어를 항상 [mask]로 대체하는 것이 아닌, 80%는 [MASK], 10%는 랜덤 단어, 10%는 original 단어로 유지하도록 적용한다는 것임.
Question Answering(QA) 또는 Natural Language Inference(NLI) 분야의 task에서는 두 문장 간 relationship을 이해하는 거이 중요함.
따라서, binarized Next Sentence Prediction(이진화된 다음 문장 예측) task를 추가함.
NSP tasks에서는 50% 확률로 '진짜 다음 문장', 50% 확률로 random 문장 배치.
과정이 단순해 보이지만, 이를 통해 실제로 성능 향상이 일어났음.
pre-training corpus로 하단 데이터셋 사용.
기존 연구에서는 text pairs를 독립적으로 인코딩하고, bidirectional cross attention(양방향 교차 어텐션)을 진행하였음.
다만, BERT는 Self-Attention 메커니즘을 통해 위 두 단계를 합쳤기에, 더 효율적인 학습 가능.
input 단계에서는 Pre-training에서의 Sentence A/B 구조 활용하여 다양한 downstream task에 적용.
output 단계에서는 task 종류(Token/Sentence level task)에 따라 출력됨.
pre-trained 아키텍처를 유지하면서, 다양한 task에 적용된다는 것.
본 실험을 통해 BERT 모델의 fine-tuning 결과를 11개의 NLP tasks에서 도출했음.
↑ GLUE(General Language Understanding Evaluation) task 결과
BERT 모델은 GLUE task에서 기존 모델들에 비해 평균 4.5~7.0% 성능 향상을 보여줬음.
초반에 언급되었듯, BERT_BASE 모델과, BERT_LARGE 모델을 사용했는데, 전체적으로 BERT_LARGE 모델이 BASE 모델보다 높은 성능을 보였으며, 특히, training data가 아주 적은 task에서 더 높은 성능을 도출함.
↑
SQuAD1.1 결과
SQuAD v1.1 (Stanford Question Answering Dataset v1.1)은 10만 개 이상의 crowd-sourced 질문/답변 쌍으로 구성됨.
주어진 질문/위키피디아 문서를 받아서, 그 안에서 정답 text를 span하는 task.
BERT는 전반적으로 높은 성능을 냈고,
단일 모델이, 기존 앙상블 모델보다 높은 성능을 냄.
↑
SQuAD2.0 결과
SQuAD v2.0 (Stanford Question Answering Dataset v2.0)은 기존 v1.1의 확장 버전으로, 좀 더 현실적인 문제를 다룸.
(정답이 문서 내에 없을 수도 있음)
정답이 없다면, 정답 span을 [CLS] token으로 설정해서 예측했음.
이러한 task에서도, BERT는 기존 성능 대비 높은 score를 기록함.
↑
SWAG 결과
SWAG(Situations With Adversarial Generations) 데이터셋은 11만 3천 개의 sentence-pair completion 문제로 구성.
상식적인 context 이해를 할 수 있는지 평가하는 task.
특히 BERT_LARGE는 기존 모델 대비 엄청난 성능 향상을 도출함.
BERT의 각 요소에 대해 ablation(제거)하는 실험도 수행함.
No NSP 모델은 NSP를 제거하고 MLM만 사용했고,
LTR & No NSP 모델은 MLM, NSP 제거하고 LTR LM만 사용함.

결과적으로 NSP를 제거하니까, 성능 저하가 발생함.
NSP task가 문장 간 relationship 학습에 중요함을 확인.
모델 size가 fine-tuning 성능에 어떤 영향을 미치는지 확인하고자, BERT 모델 size(L, H, A) 변경을 통해 결과를 확인해 봄.

결과적으로 모델 size가 클수록, accuracy(정확도) 또한 높아짐.
BERT는 모델 size가 커질수록, 더 expressive한 표현이 가능하며, 아주 작은 task data에서도 성능 향상을 이뤄냄.
BERT의 Feature-based approach를 실험해 봄.

BERT_LARGE는 Feature-base Approach에서도 아주 높은 성능을 보임.
Transfer Learning을 활용한 language model은 자연어 이해 system에서 중요한 역할을 한다는 것을 확인할 수 있음.
BERT는 기존의 Uni-directional으로만 진행되었던 연구 방식을 bidirectional 아키텍처로 확장해서 다양한 task에 적용할 수 있도록 했음.
Pre-train된 동일한 모델이 다양한 NLP task에 적용되어 높은 성능을 기록함.