[ Paper Review ] BERT : Pre-training Deep Bidirectional Transformers for Language Understanding

치즈·2022년 3월 24일
0

[논문 스터디]

목록 보기
2/2

[주저자] Devlin, J., Chang, M. W., Lee, K., & Toutanova, K.

[기록] 22.03.15 - 22.03.25

[옮김] 22.03.25

0. Abstract

BERT란, Bidirectional Encoder Representations from Transformers를 의미하며, 본 논문은 새로운 언어 모델인 BERT를 소개한다. BERT는 모든 Layer에서, 좌측과 우측의 모든 내용을 학습한다.

결과적으로, pre-train(사전 학습)된 BERT 모델은 단 하나의 추가적인 output layer만으로도 fine-tune(전이 학습)되면서, 과제-특이적인 구조 변환 없이도, 광범위한 task를 해결할 수 있게 된다.

  • BERT는 GLUE score 80.5%(7.7% 향상), MultiNLI 성능 86.7%(4.6% 향상), SQuAD v1.1 question answeringTest F1 93.2 (1.5point 향상), SQuAD v2.0 Test F1 83.1 (5.1 point 향상)을 이뤄냈다!

1. Introduction

언어 모델에서 Pre-training은 NLP task 성능을 향상시키는데 크게 기여해왔다. 이 때의 NLP task는 Natural Language Inference, Paraphrasing 같은 문장 간 관계를 예측하는 ‘문장 단위’ task와, Named Entity Recognition, Question-Answerint과 같은 ‘토큰 단위’ task 등을 포함한다. 이 task들은 토큰 단위로 아주 정밀한 output을 반환해야 한다는 특징이 있다.

Pre-training을 downstream task에 적용하는 방법은 크게 2가지가 있다. 첫째는 feature-based이고, 둘째는 fine-tuning 방식이다.

1) feature-based

  • 사전 학습된 representation들을 추가적인 feature로 포함한 task-specific architecture.
  • ex) ELMo

2) fine-tuning

  • task-specific 패러미터를 최소화하고, 사전 학습된 모든 패러미터를 fine-tuning한다.
  • ex) GPT (Generative Pre-trained Transformer)
💡 두 방식 모두 사전 학습하는 동안 동일한 objective function을 공유한다.

그러나, 이런 선행 연구들에는 여러 한계가 있었는데, (특히 fine-tuning 방식) 위에서 소개된 일반적인 언어 모델들(ELMo, GPT)는 unidirectional (단방향)이어서 pre-training 시 사용할 수 있는 architecture에 대한 선택폭이 좁다. 이런 한계는, 양방향 문맥을 ‘통합’해야 하는 question-answering과 같은 토큰 단위 task를 수행할 시 fine-tuning 방식을 취하게 되면 매우 치명적이다.

따라서, 본 논문에서는, BERT를 제안해, fine-tuning 방식에 대한 개선을 하고자 한다.

✔️ BERT는 Mask Language Model(MLM) 방식으로 일부 토큰에 임의로 마스크를 씌우고, 원본 단어를 예측하는 방식으로 학습을 진행하여, deep bidirectional representation이 가능케 한다.

✔️ BERT는 문장 단위, 토큰 단위 task에 대해 좋은 성능을 보인 최초의 fine-tuning 방식의 모델이다.

✔️ BERT는 11개의 NLP task를 소화해냈다.

(생략)

3. BERT

BERT는 두 단계로 진행된다 : pre-training + fine-tuning

1) pre-training

  • pre-training 과정에서는 unlabeled 데이터를 학습한다.

2) fine-tuning

  • fine-tuning 과정에서, 모델은 pre-train된 패러미터로 초기화하고, labeled data로 fine-tuning한다. 이런 과정으로, 실제 task에서 실제로 사용하는 모델은 초기의 같은 패러미터로 시작하되, 결국엔 서로 다른 fine-tune된 모델을 보유한다.

BERT의 특별한 점은, 바로, pre-trained model과 final downstream model 간 구조적 차이가 거의 없다는 점이다.

[ BERT Model Architecture ]

BERT는 multi-layer bidirectional Transformer encoder 구조이다.

  • number of layers = Transformer blocks = LL
  • hidden size = HH
  • number of self-attention heads = AA

이 논문에서는 2가지 모델을 정의한다.

  • BERTBASE(L=12,H=768,A=12,Total  Parameter=110M)BERT_{BASE}(L=12, H=768, A=12, Total \ \ Parameter = 110M)
  • BERTLARGE(L=24,H=1024,A=16,Total  Parameter=340M)BERT_{LARGE}(L=24, H=1024, A= 16, Total \ \ Parameter = 340M)

BERTBASEBERT_{BASE}는 OpenAI GPT과 같은 모델 사이즈로 제작되었다. GPT는 현재 토큰 왼쪽의 문맥만 참조하는 반면, BERT는 bidirectional self-attention을 수행한다.

[ Input/Output Representations ]

  • 다양한 task에 별도의 큰 수정 없이 공통적으로 적용하기 위해, <Question, Answer> 쌍으로 표현한다.
  • “sentence” : 실제 언어학적 문장의 의미보다는, 연속적 text의 배열을 의미한다.
  • “sequence” : 입력으로 들어오는 토큰 집합으로, 1문장이나 2문장이 될 수 있다.
  • BERT는 WordPiece embeddings를 이용하며, 모든 sequence의 첫 토큰은 항상 classification 토큰인 [CLS]이다. 해당 토큰의 최종 hidden state값을 바탕으로, 그 sequence가 어떤 내용인지 인식하고, “classification”을 진행한다.
  • sentence pair가 하나의 sequence로 묶일 수도 있다. sentence를 2가지로 구분하는데, (1) 특별한 토큰인 [SEP]으로 구분하거나 (2) 해당 토큰이 문장 A에 속하는지 문장 B에 속하는지 구분가능하도록 각 토큰에 learned Embedding을 추가해준다.

3.1 Pre-training BERT

ELMo와 GPT는 left-to-right 혹은 right-to-left 언어 모델로 pre-training을 수행한다. 반면, BERT는 2가지 unsupervised task로 pre-training을 수행한다.

1) Masked LM

양방향 학습을 위해서, input token 중 랜덤하게 mask하고, 이를 학습해 masked token들을 예측한다.

  • bidirectional pre-trained model을 얻을 수 있지만, 단점은 pre-training과 fine-tuning 간에 차이가 생긴다는 것이다. 이를 극복하기 위해 다음과 같이 수행한다.
  • 각 문장에서 랜덤하게 15% 비율로 [MASK] 토큰으로 바꾸어준다.
    • 80% : token을 [MASK]로 바꿈.
    • 10% : token을 random token으로 바꾼다.
    • 10% : token을 바꾸지 않고 그대로 둔다.

2) Next Sentence Prediction (NSP)

Question-Answerint(QA)이나 Natural Language Inference (NLI)와 같은 중요한 downstream task들은 두 문장 간의 관계를 이해하는 것이 중요하다. sentence relationship을 이해하기 위해서 binarized next sentence prediction task (NSP)를 수행한다.

학습 과정에서 두 문장 A, B를 입력받는데, 50%는 B가 A 뒤에 있는 문장(IsNext), 50%는 전혀 관계 없는 문장 (NotNext)으로 제공된다. QA와 NLI 업무 성능 향상에 큰 도움이 되었음을 보인다.

3.2. Fine-tuning BERT

Fine-tuning은 task에 맞는 입출력을 모델에 입력으로 제공해, end-to-end로 모든 패러미터를 fine-tune한다. pre-training에 비해서 fine-tuning은 상대적으로 비용이 적게 들 뿐만 아니라 훨씬 빠르다.

4. Experiments

BERT fine-tuning을 이용한 11개의 NLP task의 결과를 제공한다.
(생략)

5. Ablation Studies

5.1. Effect of Pre-training Tasks

[No NSP]

masked LM (MLM)으로만 학습하고, NSP를 사용하지 않으면, SST-2, SQuAD1.1, MRPC, QNLI, MNLI 순으로 성능이 좋았다.

[LTR & No NSP]

left-context-only model을 사용하고 NSP를 사용하지 않는 경우. 즉, MLM 대신 LTR를 사용한 경우이다. 이와 같은 경우 OpenAI GPT 모델과 거의 동일하지만 더 많은 training data를 사용한다.

  • 이 경우 , SQuADv1.1과 MRPC에서 성능 저하가 컸다.
  • 양방향성 제거로 인한 성능 저하인지 확인하기 위해 BiLSTM을 추가했을 경우, SQuAD는 다시 성능이 향상되었고, MRPC는 큰 차이가 없었음을 보인다.
  • LTR 성능이 전반적으로 MLM보다 성능이 낮은 것을 보아, MLM task가 더 deep bidirectional하다고 볼 수 있다.

LTR와 RTL을 분리해서 학습시킬 수 있기는 하다. 그러나 3가지 단점이 존재한다.

1) 두 모델을 훈련시키기 위한 비용이 하나의 bidirectional model보다 2배 든다.

2) RTL이 문제에 대한 답을 유지하기 어려우므로 QA와 같은 non-intuitive한 task들을 해결하기 어렵다.

3) 모든 층에서 left/right 문맥을 모두 사용해야 하기 때문에 deep directional model보다 덜 효과적이다.

5.2. Effect of Model Size

Table6를 참고하면, 모두 모델이 클수록 정확도가 증가함(성능이 좋음)을 확인할 수 있다. 즉, 모델의 크기가 모델의 성능에 직접적으로 영향을 준다. 물론 매우 작은 규모의 업무에서도 모델 사이즈를 크게 만드는 것으로 성능의 향상을 야기함을 알 수 있었다. hidden size를 200에서 600까지 증가시켰을 때 성능이 향상되었지만, 1000 이상으로 늘리면 그 이상의 눈에 띄는 향상이 보이지 않았다.

1) fine-tuning된 모델이며, 2) 매우 적은 양의 랜덤으로 초기화된 추가 패러미터를 사용할 경우, 과제특이적인 모델은 downstream task 데이터가 매우 적더라도, larger, more expressive pre-trained representation일수록 좋은 성능을 보였다.

5.3. Feature-based Approach with BERT

BERT는 pre-trained 모델에 단순한 classification layer가 추가되어 모든 패러미터가 downstream task에 공통적으로 전이학습되는 fine-tuning approach로 사용할 수 있었다. 그러나, BERT는 pre-trained model에서 fixed feature들을 뽑아낸 feature-based approach로 사용할 수도 있다. 이 경우 2가지 장점이 있다.

[장점]

1) 모든 task가 Transformer의 encoder 구조로 쉽게 표현이 안된다. 그러므로, task-specific 구조가 추가되어야 한다.

2) 훈련 데이터는 한 번 pre-compute하는 것이 비용이 비싸다. 그런데 Pre-computing으로 representation을 생성하고, 비용이 적은 모델로 그 representation으로 학습하면 비용이 절감되며 많은 experiment를 수행할 수 있게 된다. 즉, 컴퓨팅 비용을 절감할 수 있다.

6. Conclusion

가장 중요한 점은! NLP 업무들을 성공적으로 해결해내는 deep bidirectional architecture를 발견해냈다는 점이다.

profile
차근차근 배워나가요

0개의 댓글