본문 바로가기
Deep Learning/NLP

BERT (Pre-training of Deep Bidirectional Transformers for Language Understanding)

BigJoo 2024. 3. 15.

논문 링크 - https://arxiv.org/abs/1810.04805

 

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

We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unla

arxiv.org


 

 

0. Abstract

  • Bidirectional Encoder Representations from Transformer의 약자인 BERT 모델을 소개
  • BERT는 Unlabeled data로부터 deep bidirectional representation을 사전학습하도록 설계
  • Pre-trained BERT는 output Layer를 추가하는 fine-tuning을 통해 다양한 task의 sota를 달성

 

 

 

 

1. Introduction

Language Model pre-training은 많은 NLP task의 성능을 개선하는데 효과적입니다.
Pre-trained Language representation을 적용하는 접근 방식은 두가지가 있습니다.

 

  1. Feature-based approach
    • 특정 task를 수행하는 Network에 pre-trained Language representation을 추가적인 feature로 제공하는 방법
    • 즉, 2개의 Network를 붙여서 사용함
  2. Fine-tuning approach
    • task-specific parameters를 최소화
    • pre-trained parameter를 간단하게 fine-tuning하여 down-stream task에 대한 학습을 진행

 

위와같은 기존 방식들은 모든 token이 self-attention layer의 이전 token에만 관심을 가지는 standard language model의 undirectional 때문에 pre-training중에 사용할 수 있는 architecture의 선택이 제한되고, 이러한 제약은 질문-답변과 같은 task에서 양방향 context를 통합하는 것이 중요한 token 수준의 작업에 있어 안좋습니다.

 

 

 

본 논문에서는 BERT를 제안하며, fine-tuning 접근 방식을 개선하였습니다. BERT는 Masked Language Model(MLM)next sentence prediction을 진행하여 undirectionality를 완화하였습니다.

  1. Masked Language Model(MLM)
    • input에서 무작위하게 몇 개의 token을 mask시키고, 이를 transformer 구조에 넣어서 주변 단어의 context만을 보고 mask된 단어를 예측하는 모델입니다.
    • BERT에서는 input 전체와 mask된 token을 한번에 transformer의 encoder에 넣고, 원래 token을 예측하므로 deep bidirectional한 pretraining이 가능하다고 주장합니다.
  2. next sentence prediction
    • 두 문장을 pre-training시에 같이 넣어주어 두 문장이 이어지는 문장인지 아닌지 맞추는 것을 말합니다.
    • 이러한 작업들이 실제 Natural Language Inference와 같은 task를 수행할 때 도움이 된다고 합니다.

 

 

 

 

3. BERT

BERT는 unlabel 데이터에 대해 모델이 학습을 진행하는 Pre-train 단계, Pre-train parameter를 이용하여 모델을 초기화하고, Downstream Task의 label 데이터를 이용하여 Finetuning을 진행하는 단계로 이루어져 있습니다. BERT의  Model Architecture는 Transformer의 multi-layer bidirectional Encoder를 사용합니다.

 

 

 

3-1. Input/Output Representations

BERT의 Input은 위의 그림과 같이 3개의 Embedding을 이용합니다.

 

 

1. Token Embeddings

BERT는 WordPiece embedding방식을 사용합니다. WordPiece embedding방식은 자주 나오는 단어를 그 자체로 하나의 단위로 취급하고, 자주 등장하지 않는 단어는 sub-word로 쪼개어 취급하는 방식을 말합니다. WordPiece embedding방식으로 인해 희귀한 단어에 대한 학습에 어려움을 나타내는 OOV(Out of Vocabularary)문제를 효과적으로 해결하였고, 정확도 상승효과가 있다고 합니다.

 

 

2.  Segment Embeddings

BERT는 문장 구분자[SEP]를 사용하여 2개의 문장을 1개의 문장으로 사용합니다. 이때 두개의 문장을 구분하기 위해 E_A, E_B와 더해주는 Segment Embedding방식을 사용합니다. 

 

 

3. Position Embeddings

BERT는 Transformer의 Encoder구조를 기반으로 두고 있기에, Transformer에서도 사용했던 입력 토큰의 위치정보를 알려주는Position Embedding을 사용합니다.

 

 

 

 

3-2. Pre-training BERT

BERT는 ELMo나 GPT가 사용했던 Left to Right, Right to Left Language Model을 사용한 Pre-training방식을 사용하는 것이 아닌 Masked LM과 Next Sentence Prediction을 사용하여 Pre-training을 진행합니다.

 

 

 

1. Masked LM(MLM)

위의 그림에서 Input값을 보면 W4가 Mask처리된 것을 알 수 있을 것이다. 이처럼 MLM방식은 Input값을 무작위로 Mask토큰으로 변경하고, 문장 전체를 Encoder에 넣어 Mask토큰의 값을 예측하는 Pre-training을 진행합니다. Masking과정에서는 Mask할 토큰의 80%는 [Mask]토큰으로 바꾸고, 10%의 토큰은 무작위 토큰으로, 나머지 10%는 변경되지 않은 토큰으로 대체하는 방식을 사용합니다. 이러한 과정을 통해 BERT모델은 문맥을 파악하는 능력을 키운다고 합니다. 

 

 

 

2. Next Sentence Prediction(NSP)

NSP는 NLP Task의 QA나 Natural Language Inference(NLI)와 같이 문장 사이의 관계를 파악하는 것이 중요한 Task이기에 수행한다고 합니다. NSP는 Pre-training data에서 문장A와 문장B를 선택할 때, 50%는 실제로 문장A 다음에 오는 문장을 선택하고, 나머지 50%는 무작위로 추출한 문장을 선택하여 Binarized Next Sentence Prediction작업을 수행합니다. 

 

 

 

 

3-3. Fine-tuning BERT

BERT는 Transformer의 self-attention 매커니즘으로 인해 많은 Downstream Task으로 Fine-tuning을 하는 과정이 매우 직관적이라고 합니다. 또한 Text-pair를 처리하는 경우, self-attention으로 인해 두 문장간의 bidirectional cross attention을 한번에 Encoding할 수 있습니다.

 

BERT는 Task별 input값과 output값을 모델에 연결하고, 모든 파라미터를 end-to-end로 fine-tuning하기만 하면 됩니다. 위 그림을 통해 알 수 있듯 (a)는 문장 pair를 분류하는 문제, (b)는 하나의 input문장을 통해 문장의 종류를 분류하는 문제, (c)는 문장이나 문단에서 원하는 정답 위치의 시작과 끝을 구하는 문제, (d)는 input문장의 Token들의 품사를 구하는 Task입니다. 

 

 

 

 

4. Experiments

4-1. GLUE

다양한 NLP Task들을 모은 GLUE 벤치마크 결과입니다. 8개의 데이터셋에 대한 성능을 나타내고 있습니다. BERT_BASE모델은 기존 SOTA 모델들보다 모든 것이 우수한 성능을 보였고, 파라미터수가 많은 BERT_LARGE모델은 그것을 훨씬 뛰어넘은 압도적인 성능을 보여줍니다. 

 

 

 

 

4-2. Effect of Pre-training Tasks

이번에는 BERT의 pre-training 방식인 NSP와 MLM을 없애보면서 성능의 차이를 확인하였습니다. BERT_BASE는 NSP와 MLM을 사용한 모델이고, NO NSP는 말그대로 NSP를 사용하지 않은 모델, LTR & NO NSP는 NSP를 사용하지 않고, MLM대신 Left-to-Right를 사용한 모델을 말합니다. 결과를 보면 BERT_BASE과의 성능차이를 확인할 수 있고, NLI의 Task에서 NSP의 유무에 따른 ACC차이가 큰 것을 확인할 수 있는데, 이는 NSP가 문장간의 논리적인 구조 파악에 중요한 역할을 하고 있음을 시사합니다. MLM대신 LTR을 사용한 모델은 더 큰 성능 차이를 확인할 수 있는데, 이는 MLM방식이 더 Deep Bidirectional한 것임을 시사합니다.

 

 

 

 

5. Conclusion

MLM과 NSP같은 pre-training방식을 생각해낸다는 것도 대단하고, 이를 통해 모든 task에서 SOTA를 달성한다는 것이 정말 멋지다. 이제는 정말 GPU와 DATA의 싸움인데, MS나 Google이 압도적으로 치고 나갈 수 밖에 없는 환경을 만들어 나가는 것이 대단하다.

댓글