본문 바로가기
Paper review

[논문리뷰] BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding

by mssong92 2023. 1. 25.

Abstract

BERT는 최초의 bi-directional(or non-directional) 방법으로 사전 훈련된 언어 모델이다. BERT는 대용량 unlabeled data로 모델을 미리 학습 시킨 후, 특정 task의 labeled data로 transfer learning을 하는 모델로서 self-supervised learning을 사용하여 단어와 문맥의 깊은 의미를 학습한다. Pretrain 후 모델은 최소한의 조정으로 다양한 작업과 다양한 데이터 세트에 맞게 조정할 수 있다. BERT는 특정 task를 처리하기 위해 새로운 network를 붙일 필요 없이, BERT 모델 자체의 fine-tuning을 통해 해당 task의 SOTA를 달성했다고 한다.

Introduction

Language model pre-training은 여러 NLP task의 성능을 향상시키는데에 탁월한 효과가 있다고 알려져 있다.

이러한 NLP task는 token-level task인 Named Entity Recognition(NER)에서부터 SQuAD, KorQuAD와 같은 task까지 광범위한 부분을 커버한다

feature-based approach : 특정 task를 수행하는 network에 pre-trained language representation을 추가적인 feature로 제공. 즉, 두 개의 network를 붙여서 사용한다고 보면 된다. ex) ELMo(Peters et al., 2018)

fine-tuning approach : task-specific한 parameter를 최대한 줄이고, pre-trained된 parameter들을 downstream task 학습을 통해 조금만 바꿔주는(fine-tuning) 방식. ex) Generative Pre-trained Transformer(OpenAI GPT) (Radford et al., 2018)

앞에 소개한 ELMo, OpenAI GPT는 pre-training시에 동일한 objective funtion으로 학습을 수행한다, 하지만 BERT는 새로운 방식으로 pre-trained Language Representation을 학습했고 이것은 매우 효과적이었다고 얘기합니다.

Pre-training

그림1. BERT, OpenAI, ELMo

BERT pre-training의 새로운 방법론은 크게 2가지로 나눌 수 있다. 하나는 Masked Language Model(MLM), 또 다른 하나는 next sentence prediction이다.

 

Masked Language Model (MLM)

문장에서 단어 중의 일부를 [Mask] 토큰으로 바꾼 뒤, 가려진 단어를 예측하도록 학습한다. 이 과정에서 BERT는 문맥을 파악하는 능력을 기르게 된다.

ex) 원숭이는 과일이 맛있다고 생각한다 -> 원숭이는 [Mask] 맛있다고 생각한다.
ex) 원숭이는 과일이 맛있다고 생각한다 -> 원숭이는 과일이 맛있다고 생각한다.

ex) 원숭이는 과일이 맛있다고 생각한다 -> 원숭이는 바나나가 맛있다고 생각한다.

추가적으로 더욱 다양한 표현을 학습할 수 있도록 80%는 [Mask] 토큰으로 바꾸어 학습하지만, 나머지 10%는 token을 random word로 바꾸고, 마지막 10%는 원본 word 그대로를 사용하게 된다.

 

Next Sentence Prediction (NSP)

다음 문장이 올바른 문장인지 맞추는 문제이다. 이 문제를 통해 두 문장 사이의 관계를 학습하게 된다. 

문장 A와 B를 이어 붙이는데, B는 50% 확률로 관련 있는 문장(IsNext label) 또는 관련 없는 문장(NotNext label)을 사용한다. QA(Question Answering)나 NLI(Natural Language Inference) task의 성능 향상에 영향을 끼친다고 한다.

이런 방식으로 학습된 BERT를 fine-tuning할 때는 (Classification task) Image task에서의 fine-tuning과 비슷하게 class label 개수만큼의 output을 가지는 Dense Layer를 붙여서 사용한다.

BERT Architecture

BERT의 아키텍처는 Attention is all you need 논문에서 소개된 Transformer를 사용하지만, pre-training과 fine-tuning시의 아키텍처를 조금 다르게하여 Transfer Learning을 용이하게 만드는 것이 핵심이다.

Model Architecture

BERT transformer 중에서도 encoder 부분만을 사용한다. 이에 대한 자세한 내용은 Vaswani et al (2017) 또는 tensor2tensor를 참고

BERT는 모델의 크기에 따라 base 모델과 large 모델을 제공한다.

  • BERT base : L=12, H=768, A=12, Total Parameters = 110M
  • BERT large : L=24, H=1024, A=16, Total Parameters = 340M
  • L : transformer block의 layer 수, H : hidden size, A : self-attention heads 수, feed-forward/filter size = 4H

여기서 BERT base 모델의 경우, OpenAI GPT모델과 hyper parameter가 동일하다. 여기서 BERT의 저자가 의도한 바는, 모델의 하이퍼 파라미터가 동일하더라도, pre-training concept을 바꾸어 주는 것만으로 훨씬 높은 성능을 낼 수 있다는 것을 보여주고자 하는 것 같다.

 

OpenAI GPT모델의 경우 그림1에서 볼 수 있듯, next token 만을 맞추어내는 기본적인 language model 방식을 사용하였고, 그를 위해 transformer decoder를 사용했다. 하지만 BERT MLM NSP를 위해 self-attention을 수행하는 transformer encoder구조를 사용했음을 알 수 있다.

Input Representation

그림2 Bert Input Representation

BERT의 Input Representation은 위 그림2처럼 세 가지 임베딩(Token, Segment, Position)을 사용해서 문장을 표현한다.

먼저 Token Embedding에서는 두 가지 특수 토큰(CLS, SEP)을 사용하여 문장을 구별하는데, Special Classification token(CLS)은 모든 문장의 가장 첫 번째(문장의 시작) 토큰으로 삽입된다. 이 토큰은 Classification task에서는 사용되지만, 그렇지 않을 경우엔 무시된다. 
또, Special Separator token(SEP)을 사용하여 첫 번째 문장과 두 번째 문장을 구별한다. 여기에 segment Embedding을 더해서 앞뒤 문장을 더욱 쉽게 구별할 수 있도록 도와준다. 이 토큰은 각 문장의 끝에 삽입된다.

Position Embedding은 transformer 구조에서도 사용된 방법으로 그림고 같이 각 토큰의 위치를 알려주는 임베딩이다.
최종적으로 세 가지 임베딩을 더한 임베딩을 input으로 사용하게 된다.

 

Fine-tuning

  • BERT 논문은 11개의 NLP tasks에 대한 BERT fine-tuning을 수행함.

그림3 BERT Fine-Tuning

BERT의 fine-tuning 과정은 앞선 방법들에 비해 상대적으로 매우 간단하다.

Transformer의 Self-Attention을 사용하기 때문에  down-stream task가 하나 혹은 두개의 문장을 사용할때에 관계 없이 자유롭게 input을 구성할 수 있으며, 보통의 경우 하나의 output layer만을 추가하여 end-to-end fine-tuning이 가능하다.

 

그림4 BERT Fine-Tuning Task

Sequence tagging(d)과 QA(c) 같은 토큰 단위의 down-stream task는 토큰의 representation을 output layer로 넘겨주는 형태로 학습이 가능하다. 또한, 감성분석(b), entailment(a)와 같은 classification task는 NSP 방법 그대로 [CLS] 토큰의 representation을 output layer로 넘겨주어 학습하면 된다.

 

그림5 GLUE Benchmark dataset Result

첫번째 실험은 GLUE benchmark dataset에서 평가한 결과이다.

GLUE는 General Language Understanding Evaluation의 약자로 다양한 general language understanding task를 포함하고 있습니다. 실험 결과 BERT Base,Large 모두 기존의 방법보다 좋은 성능을 보였음을 알 수 있다.

특히 BERT-Large는 다른 어떤 모델보다 특히 우수한 성능을 보였다.

 

그림6 SQuAD dataset Result

두번째 실험은 QA dataset인 SQuAD에서 실험한 결과이다.

본 데이터셋은 답을 포함하는 Wikipedia의 context 지문을 통해 QA 작업을 학습하는 데이터셋이다.

역시 BERT 모델들이 기존의 모델보다 우수한 성능을 보였다.

가장 좋은 성능을 보인 모델은 BERT-Large 모델을 앙상블하고 TriviaQA dataset을 통해 먼저 fine-tuning한 모델로, 인간보다도 좋은 판단 능력을 보여줬다.

 

그림7 SQuAD 2.0 dataset Result

세번째 실험은 SQuAD 2.0 dataset에서 진행하였습니다. SQuAD 2.0은 답이 지문에 없는 경우를 포함하고 있다.

인간의 능력에는 미치지 못하였지만, 기존의 baseline에 비해서는 매우 우수한 성능을 확인할 수 있다.

 

그림8 SWAG dataset Result

네번째 실험은 SWAG(Situations With Adversarial Generation) 데이터셋으로 이어지는 문장을 고르는 sentence pair inference task입니다. 역시 BERT 모델이 기존의 모델보다 우수한 성능을 보였으며, BERT_Large는 전문가에 필적하는 결과를 보여주었습니다.

 

그림9 Ablation study dataset Result

다섯번째 실험은 Ablation study입니다. 제안한 방법의 유무(Ablation)를 통해 효과를 검증하였다.

  1. BERT-Base는 MLM과 NSP를 모두 사용한 일반적인 BERT 모델이다.
  2. No NSP는 MLM만을 사용하여 학습한 모델이다.
  3. LTR & No NSP는 BERT가 아닌 Left-To-Right 의 단방향 모델을 학습한 결과이다.

2,3의 비교를 통해 MLM의 효과를 확인할 수 있으며, 1,2의 비교를 통해 NSP의 효과 또한 확인할 수 있다.

 

그림10 Model Size Result

그림10을 보면 모델 크기에 따라 성능이 증가한다는 것을 확인할 수 있다.

 

그림11 BERT ELMo 비교 Result

마지막 실험은 BERT를 기존의 방법대로 Fine-tuning Approach로 사용했을때와 

ELMo와 같은 Feature-based approach로 사용하였을 때의 결과를 비교한 결과이다.

Conclusion

BERT가 발표 되었을 당시, GPT-2와 비교를 많이 했는데, 두 모델 모두 파인튜닝(fine-tuning) 방식을 사용하지만, GPT-2는 단방향(unidirectional) 언어 모델인 반면, BERT는 양방향(bidirectional) 언어 모델로서 차이가 있었다. 향후 GPT를 개발한 OpenAI에서는 BERT처럼 양방향 언어 모델인 GPT-3를 내놓게 된다. 양방향 언어 모델의 장점은 fill-in-the-blanks와 같이 앞뒤 문맥에 맞게 빈칸에 알맞은 단어를 추측하는 작업에 아주 높은 성능을 보여주고 있다.

댓글