BERT 논문 리뷰 : Pre-training of Deep Bidirectional Transformers for Language Unders

2022. 2. 11. 16:31NLP

오늘은 다양한 분야에서 활용되고 있는 BERT를 제시한 논문 Pre-training of Deep Bidirectional Transformers for Language Understanding을 리뷰하겠습니다. 2019년 Google은 Transformer의 인코더를 사용하는 새로운 language representation model인 BERT(Bidirectional Representations from Transformers)를 소개합니다. 이전의 언어 모델과 다르게 BERT는 모든 레이어에서 왼쪽과 오른쪽 문맥 모두를 고려함으로써 라벨링 되지 않은 텍스트에서 pre-train deep bidirectional representaions를 하도록 만들어졌습니다. 질의응답, 자연어추론 등의 다양한 task에서 SOTA를 달성했습니다.

Introduction

사전학습 (pre-training) 언어 모델은 많은 NLP task(sentence-level task, token-level task)에서 효과적인 것으로 나타났습니다. pre-trained language representation은 2가지 방법으로 적용됩니다.

  • feature-based : pre-trained representation을 추가 특성으로 포함한 task-specific 구조 (ex. ELMo)
  • fine-tuning : 최소한의 task-specific 모수를 사용하고, 사전학습된 모수를 fine-tuning해 하위 task에 대해 학습합니다. (ex. OpenAI GPT)


두 방법은 사전학습하는 동안 같은 목적함수를 사용합니다. 일반적인 language representaion을 학습하기 위해 단방향 언어모델을 사용합니다. 단방향 언어모델은 사전학습에 사용될 수 있는 아키텍쳐의 선택을 제한하기 때문에 한계가 있습니다. 예를 들어 OpenAI GPT는 left-to-right 구조로 모든 토큰은 self-attention layer에서 오직 이전의 토큰(previous token)만 접근할 수 있다는 한계가 있습니다. 이러한 한계는 sentence level task에 차선책이고 QA와 같이 양방향의 문맥을 이해해야하는 token-level task에 기반하는 사전학습을 적용할 때 치명적입니다.

본 논문은 양뱡향의 인코더를 가진 BERT를 제시하면서 사전학습에 기반하는 접근법을 개선합니다. BERT는 maked language model(MLM)를 사용해 성능을 개선했습니다. MLM은 랜덤하게 입력의 토큰을 mask하고, mask된 단어의 문맥만을 기반으로 mask된 단어의 원래의 vocabulary id를 예측하는 것이 목적입니다. left-to-right 구조와 다르게 masked 언어 모델 인 MLM은 왼쪽과 오른쪽 문맥을 융합해 나타낼수 있습니다. 또한 text-pair representaion을 결합적으로 사전학습하는 next sentence prdiction을 사용합니다.

이 모델을 통해 언어 모델에서 양방향 사전모델의 중요성을 보여줬습니다. 또한 사전학습은 heavily-engineered task 아키텍져의 필요성을 감소시켜주었습니다.

Related Work

사전학습(pre-training)의 가장 많이 사용되는 접근방법을 소개합니다.

(1) Unsupervised Feature-based Approaches

사전학습된 단어 임베딩은 큰 성능개선을 가능하게 한 NLP 시스템에 중요한 부분입니다. 단어 임베딩 벡터를 사전학습하기 위해, 또한 왼쪽과 오른쪽 문맥에서 correct를 incorrect 단어와 구별하기 위해 left-to-right 언어 모델이 사용되었습니다.
feature-based 방법의 대표적인 ELMo는 전통적인 단어 임베딩을 일반화해 새로운 차원으로 가져왔습니다. context-sensitive 특징을 left-to-right 그리고 right-to-left 언어모델에 각각 독립적으로 추출하고 결합합니다. 따라서 shallow bidirectional 합니다. ELMo는 다양한 NLP task에서 SOTA를 달성할 수 있었습니다.

(2) Unsupervised Fine-tuning Approaches

feature-based와 같이 fine-tuning도 라벨링 되지 않은 텍스트에 대해서 단어임베딩을 합니다. 최근에는 라벨되지 않은 텍스트에 사전학습하고 지도학습 task에 fine-tuning하는데 이는 초기에 학습되어야할 모수가 거의없다는 장점이 있습니다. 따라서 OpenAI GPT는 sentence level task에서 SOTA를 달성했습니다. 이러한 모델에는 Left-to-right 언어모델 즉, 단방향 구조와 auto-encoder이 사전학습에 사용되었습니다.

(3) Transfer Learning from Supervised Data

지도학습 task인 언어 추론(language inference), 기계번역에도 효과적인 전이(transfer)를 보여주는 연구도 있었습니다. 또한 CV 연구도 큰 사전 학습 모델에 기반한 transfer learning이 중요하게 사용되고 있습니다.(ex. ImageNet)

BERT

BERT와 그 세부적인 시행에 대해서 소개하겠습니다. 프레임워크에는 pre-training과 fine-tuning, 두가지 과정이 있습니다. pre-training 과정에서 모델은 라벨링 되지 않은 데이터에 학습됩니다. fine-tuning 과정에서 BERT는 사전학습된 모수로 처음 초기화됩니다. 그 다음 모든 모수는 라벨링된 데이터로 fine-tuned 됩니다. 각 하위의 task는 각각의 fine-tuned 모델이 있습니다. BERT의 독특한 특징은 다른 task에 대해서도 통일된 구조를 사용하는데 있습니다.

Model Architecture

BERT 모델의 아키텍쳐는 이전에 포스팅한 "Attention is all you need"에 기반하는 multi-layer bidirectional Transformer encoder입니다.

L : 레이어의 수
H : hidden size
A : 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)가 있습니다.

Input/Output Representations

BERT가 다양한 하위 task에 적용될 수 있도록 하기 위해서 input representation은 하나의 sentence와 sentence 쌍을 모두 represent할 수 있어야합니다. 여기서 "sentence"는 보통 우리가 생각하는 한 문장을 의미하는 것이 아니라 근접한 text의 묶음을 의미합니다. "sequence"는 입력 토큰을 의미합니다.
WordPiece 임베딩을 사용합니다. sequence의 첫번째 토큰은 항상 특별 분류 토큰인 [CLS]입니다. 이 토큰에 대응되는 final hidden state은 분류(aggregate sequence representation for classification)에 사용됩니다. sentence 쌍이 합처져 single sequence가 되면 두가지 방법으로 두 sentence를 구분합니다. 먼저 특별 토큰인 [SEP]으로 두 sentence를 분리합니다. 그리고 이것이 sentence A에 속하는지 또는 B인지 구분하기 위해 모든 토큰에 학습된 임베딩을 추가합니다.

E : input embedding
C : the final hidden vector of the special [CLS] token
T : the final hidden vector

주어진 토큰에서 input representation은 대응하는 토큰(token), segment 그리고 position embedding의 합으로 구성됩니다.

Pre-training BERT

left-to-right 나 right-to-left 언어 모델을 사용하는 대신 BERT는 두 개의 unsupervised task를 사용합니다. 먼저 사전학습(Pre-training)에 대해서 설명하겠습니다.

Pre-training 구조

(1) Task #1 : Masked LM

직관적으로 deep 양방향모델이 단방향 모델 또는 shallow 양방향모델보다 더 강력하다는 것을 알 수 있습니다. 하지만 표준 언어 모델은 오직 단방향으로만 학습될 수 있습니다. 양방향은 각 단어가 간접적으로 "see itself" 즉 예측하려는 단어(target word)를 참조할 수 있고 모델은 다층 구조의 해당 단어를 예측할 수 있기 때문입니다.
deep 양방향 모델은 학습하기 위해 연구진은 랜덤하게 입력 토큰의 일정 비율을 mask 했습니다. 이 과정을 "masked LM" (MLM)이라고 합니다. 이 경우에 mask된 토큰에 대응하는 final hidden vector는 output sofrmax로 결과를 예측합니다. 각 sequence 에서 WordPiece의 15%를 mask했습니다. 다른 위치의 단어는 예측에 사용되지 않고 오직 mask된 단어만 예측합니다. 그리고 Cross entropy loss로 기존의 토큰을 예측합니다.
사전 학습 모델에서 양방향으로 학습가능하게 하지만 fine-tuning 과정에서 [MASK] 토큰은 나타나지 않는다는 문제가 있습니다. 이 문제를 완화시키기 위해서 항상 "masked" 단어를 [MASK] 토큰으로 만들지는 않았습니다.

Ablation over different masking strategies.

위 표를 통해서 Masking Rates 가 80%, 10%, 10% 일때 가장 높은 정확도를 보여준다는 것을 볼 수 있습니다. 우선 학습데이터의 토큰 15% 를 랜덤하게 선택합니다.

- 이 선택된 토큰의 80% : [MASK] 토큰으로 바꾼다.
ex. my dog is hairy -> my dog is [MASK]
- 이 선택된 토큰의 10% => 랜덤단어로 바꾼다.
ex. my dog is hairy -> my dog is apple
- 이 선택된 토큰의 10% => 바꾸지 않는다. (원래단어)
ex. my dog is hairy -> my dog is hairy

(2) Task #2 : Next Sentence Prediction(NSP)

Question Answering(QA)나 Natural Language Inference (NLI)같은 하위 task는 두 문장간의 관계에 기반하고 있습니다. 문장의 관계를 이해하기 위해 next sentence prediction task를 사전학습을 합니다. 구체적으로 사전학습에서 sentence A와 B를 선택했을 때 B의 50%는 진짜 A의 다음 문장이고(IsNext), 나머지 50%는 랜덤문장으로 제공됩니다(NotNext). pre-training 구조에서 볼 수 있듯이 C가 NSP로 사용됩니다. 매우 단순하지만 이는 QA와 NLI 모두에 성능향상을 가져왔습니다. 이전의 NSP task는 오직 문장 임베딩만 하위 task로 이동되었다면, BERT는 end-task 모델의 모수를 초기화하기 위해 모든 모수를 이동합니다.

Fine-tuning BERT

Fine-Tuning 구조

입력과 출력을 연결해 Transformer의 self-attention mechanism은 BERT가 다양한 하위 task에 사용되게 합니다. 이전에는 텍스트 쌍에 적용하기 위해서 양방향 cross attention을 사용하기 전, 각각 텍스트 쌍을 인코드했습니다. 하지만 BERT는 self-attention을 사용해 두단계를 통합해 인코드합니다. 이 Fine-tuning 단계에서 사전학습된 BERT에 하위 task 데이터를 추가로 학습시켜 테스트합니다.
각 task에서 task specific 한 입력과 출력을 BERT에 대입하고 모든 모수를 end-to-end로 바꿔줍니다. 입력에서 사전학습된 sentence A와 B는 Paraphrasing, Inference, QA, classification, tagging에 사용됩니다. 출력에서, 토큰은 tonken-level task인 tagging과 QA을 위한 출력 레이어에 들어가고, [CLS]는 classification을 위한 출력 레이어에 들어갑니다.
pre-training과 비교했을 때, fine-tuning은 상대적으로 빠릅니다. 위 그림에서 (a), (b)는 sequence-level task이고 (c), (d)sms token-level task입니다.

Fine-tuning BERT on Different Tasks.

Conclusion

최근의 실증적인 개선은 비지도 사전학습이 language understanding 시스템에 중요한 부분이라는 것을 보여줍니다. 특히 이 결과는 심지어 low-resource tasks도 심층 단방향(deep unidirectional) 구조를 통해 이득을 볼 수 있습니다. 본 논문의 가장 중요한 기여는 이러한 발견을 심층 양방향(deep bidirectional) 구조로 일반화한 것으로 따라서 사전학습 모델이 다양한 NLP task에 좋은 성능을 가질 수 있었습니다.