본문 바로가기
Paper Review/Natural Language Processing

[Paper Review] BERT: Pre-training of Deep Bidirectional transformers for Language Understanding(2019)

by BangGeuk 2024. 1. 11.

본 글은 https://arxiv.org/abs/1810.04805 내용을 기반으로 합니다.

혹시 잘못된 부분이나 수정할 부분이 있다면 댓글로 알려주시면 감사하겠습니다.


본 논문은 새로운 언어 표현 모델인 Bidirectional Encoder Representations from Transformers(BERT)를 소개한다.

BERT는 모든 레이어에서 왼쪽과 오른쪽 문맥을 조정하여 레이블이 없는 텍스트에서 깊은 양방향 표현을 사전훈련하도록 설계되었다.

 

BERT 모델이 등장하기 전 모델들은 문장을 학습할 때 순차적으로(Left to Right) 읽을 수 밖에 없었다.

Word embedding의 경우 Transformer를 사용하여 관계성을 잘 파악할 수 있으나 예측을 할 때는 단방향으로 읽어서 예측해야하기에 이전 토큰들만 참조한다는 단점이 있다.

 

이러한 단점을 해결하는 것이 BERT의 MLM 방식을 통해 Bidirectional Transformer 이용이 가능하였다.

이는 11가지 자연어 처리 task에서 SOTA 성능을 달성하였다.

1. Introduction

Language model pre-training은 BERT 이전부터 연구되었고 이는 많은 자연어 처리 task에서 좋은 성능을 달성하였다.

 

Pre-trained language model을 적용하는 방법은 feature-based와 fine-tuning으로 크게 2가지로 구분된다.

ELMo와 같은 feature-based 방식은 task 별 아키텍처를 사용하여 pre-trained representations을 추가적인 feature로 포함한다.

GPT와 같은 fine-tuning 방식은 task 별 파라미터 수를 최소화하고 모든 pre-trained 파라미터를 조금씩 바꿔 downstream task를 학습한다.

두 가지 방식은 pre-training 과정에서 모두 동일한 목적 함수를 사용하고 language representation을 학습하기 위해 unidirectional 언어 모델을 사용한다.

 

특히, fine-tuning 방식에서 pre-trained representation의 성능이 제한된다.

예를 들어 OpenAI GPT는 left-to-right 아키텍쳐를 사용하는데 이는 이전 토큰들에 대해서만 attend할 수 있다.

이러한 단점은 문맥을 양쪽에서 이해해야하는 question answering과 같은 task에서 안좋다.

 

본 논문은 BERT라는 모델을 제안하여 fine-tuning 기반 방식을 개선한다.

BERT는 Masked Language Model(MLM)을 사용하여 단방향성 제약을 완화한다.

MLM은 임의로 몇 개의 토큰을 mask하고 mask된 토큰을 예측하는 것을 목표로 한다.

이러한 방식은 기존의 left-to-right 구조와 다르게 왼쪽 문맥과 오른쪽 문맥을 모두 학습할 수 있도록 한다.

추가적으로 text 쌍 표현을 사전 훈련하는 next sentence prediction task도 함께 사용한다.

2. Related Work

Pre-training language representation은 긴 역사를 가지고 있어 가장 널리 사용되는 방식을 간략하게 다룬다.

2.1 Unsupervised Feature-based Approaches

단어의 표현 학습은 크게 non-neural 방식과 neural 방식(word2vec, GloVe)으로 구분된다.

Pre-trained word embedding은 NLP 분야에서 필수적인 부분이다.

 

Word embedding은 sentence embedding과 paragraph embedding 같이 더 세분화된 단위로 일반화 되었다.

Sentence representation 학습은 다음 문장 후보들을 순위 메기는 방법, 이전 문장이 주어졌을 때 다음 문장의 left-to-right generation 방법, denoising auto-encoder에서 파생된 방법이 있다.

 

ELMo는 left-to-right와 right-to-left 언어 모델로부터 context-sensitive 특징들을 추출한다.

이렇게 추출한 각 토큰별 context-sensitive 특징들은 left-to-right, right-to-left representation을 연결한 것이다.

이러한 ELMo는 NLP benchmarks(question answering, 감정 분석, 개체 인식 등)에서 SOTA를 달성하였다.

하지만 이러한 모델들은 deep bidirectional이 아니다.

2.2 Unsupervised Fine-tuning Approaches

초기 feature-based 방식에 대한 연구는 unlabeled text로부터 word embedding parameter를 pre-train 하는 방향으로 진행되었다.

최근에는 상황별 token representation을 생성하는 인코더가 pre-train되고 supervised downstream task에 맞춰 fine-tuning 된다.

이러한 방식은 scratch로부터 학습하는데 적은 파라미터로도 충분하다는 장점이 있다.

OpenAI GPT가 이러한 장점덕분에 다양한 문장단위 task에서 SOTA 성능을 달성하였다.

2.3 Transfer Learning from Supervised Data

자연어 추론과 기계번역과 같은 대규모 데이터셋을 사용하여 supervised task에서 효과적인 전이학습을 보여주는 연구도 있다.

Computer Vision 분야에서도 전이학습의 중요성을 증명해왔고 실제로 ImageNet으로 pre-train된 모델이 성능이 좋다.

3. BERT

BERT는 pre-training 과정과 fine-tuning 과정으로 두 가지 스텝을 가진다.

Pre-training 과정에서 다양한 pre-training task의 unlabeled data로 훈련하여 초기 파라미터를 설정한다.

이를 바탕으로 Fine-tuning 과정에서 downstream task의 labeled data를 이용해 fine-tuning을 한다.

 

Figure 1과 같이 동일한 pre-trained model의 파라미터를 활용해 각 downstream task에서 fine-tuning을 한다.

Pre-training 과정과 fine-tuning 과정 아키텍처는 동일하다.

Figure 1. Overall pre-training and fine-tuning procedures for BERT.

 

Model Architecture

Bert의 모델 아키텍처는 multi-layer bidirectional Transformer encoder이다.

기존의 Transformer와 거의 유사한 구조를 사용하기 때문에 해당 구조에 대한 설명은 본 논문에서 생략한다.

  • Transformer block layer = L
  • hidden size = H
  • number of self-attention heads = A

본 논문은 크기를 기준으로 크게 두 가지 종류의 모델을 보여준다.

  • BERT base : L = 12, H = 768, A = 12, Total Parameters = 110M
  • BERT large : L = 24, H = 1024, A = 16, Total Parameters = 340M

BERT base 모델은 OpenAI의 GPT와의 비교를 위해 동일한 파라미터 수를 가지게 했다.

BERT는 현재 토큰의 왼쪽, 오른쪽을 모두 참조할 수 있는 bidirectional self-attention을 사용하고 GPT는 현재 토큰의 왼쪽에 있는 문맥만 참조할 수 있다.

 

Input/Output Representations

다양한 down-stream task에 잘 적용되기 위해선 input representation을 하나의 문장 혹은 한 쌍의 문장을 하나의 토큰 시퀀스로 명확하게 표현해야한다.

Figure 2. BERT input representation.

BERT에서 사용하는 tokenizer는 30,000개의 토큰을 가진 WordPiece embedding 방식이다.

모든 문장의 첫 번째 토큰은 [CLS]이다.

[CLS] 토큰과 대응되는 final hidden state는 분류 task를 해결하기 위해 sequence representation을 종합한다.

또한, Input 시퀀스는 문장의 한 쌍으로 구성된다.

문장 쌍의 각 문장들은 [SEP] 토큰으로 분리한다.

그리고 각 문장이 A 문장인지 B 문장인지 구분하기 위해 모든 토큰에 학습된 임베딩을 추가한다.

 

결론적으로 BERT는 총 3개의 embedding 층을 사용한다.

Token Embedding : 30,000개의 토큰을 가진 WordPiece embedding

Segment Embedding : 두 개의 문장을 구분하기 위한 임베딩

Position Embedding : 위치 정보를 학습하기 위한 임베딩

3.1 Pre-training BERT

BERT는 기존의 방식들과 달리 두 가지 unsupervised task를 사용해 pre-train 하였다.

 

Task #1: Masked LM

MLM은 input token들의 15% 비율로 랜덤하게 마스킹하고 마스킹 된 토큰들을 예측하는 과정이다.

이러한 MLM 과정을 통해 bidirectional pre-trained model을 얻을 수 있으나 pre-training과 fine-tuning 사이에서 mismatch가 발생한다.

왜냐하면 [MASK] 토큰은 fine-tuning 과정에서 나타나지 않기 때문이다.

 

이를 해결하기 위해 훈련 데이터를 생성할 때 무작위로 토큰 포지션의 15%를 선택한다.

만약 i번째 토큰이 선택된다면 i번째 토큰을

(1) 80%는 [MASK] 토큰으로 교체하거나

(2) 10%는 다른 토큰으로 교체하거나

(3) 10%는 변경되지 않은 i번째 토큰을 사용한다.

 

위와 같은 방법으로 [MASK] 토큰이 cross entropy loss를 통해 원래 token을 예측한다.

 

Task #2: Next Sentence Prediction (NSP)

QA와 NLI와 같은 중요한 downstream task들은 두 문장 사이의 관계를 이해하는 것이 중요하다.

문장간의 관계를 이해하기 위해 BERT는 이진화된Next Sentence Prediction(NSP) task에 대해 pre-train한다.

구체적으로 문장 A와 B를 선택할 때, B의 50%는 실제 A의 다음 문장(IsNext로 표시)이고 나머지 50%는 무작위 문장(NotNext로 표시)이다.

 

Figure 1에서 볼 수 있듯이 C 토큰은 next sentence prediction을 위한 토큰이다.

BERT는 이 토큰 C를 이용해 input으로 들어온 두 문장이 IsNext인지 NotNext인지 맞춰가며 훈련한다.

 

Pre-training data

Pre-training 과정에서 corpus 구축을 위해 BooksCorpus(약 8억개의 단어)와 English Wikipedia(약 25억개의 단어)를 사용한다.

긴 인접 시퀀스를 추출하기 위해 문장 단위의 corpus를 사용하는 것보다 문서 단위의 corpus를 사용하는 것이 중요하다.

3.2 Fine-tuning BERT

BERT는 Transformer의 self-attention 메커니즘 덕분에 다양한 downstream task에 fine-tuning하는 것은 간단하다.

각 task에 맞는 입력과 출력을 모델에 제공하여 모든 파라미터들을 end-to-end로 fine-tuning한다.

 

task 별 input은 다음과 같다.

1. Sentence pairs in paraphrasing

2. Hypothesis-premise pairs in entailment

3. Question-passage pairs in question answering

4. Degenerate text none pair in text classification or sequence tagging

 

task 별 output은 다음과 같다.

1. Token representation in sequence tagging or question answering

2. [CLS] representation in classification(entailment or sentiment analysis)

 

Fine-tuning은 pre-training에 비해 비용이 덜 든다.

논문에서의 모든 결과는 TPU에서 최대 1시간, GPU에서는 몇시간정도 소요된다.

4. Experiments

이 section에서는 11가지 NLP task에서 BERT fine-tuning 한 결과를 보여준다.

4.1 GLUE

General Language Understanding Evaluation(GLUE) 벤치마크는 자연어 이해 모델에서 범용적으로 사용되는 성능지표이다.

모든 GLUE task에 대해 32개의 batch size와 3 epoch을 통해 fine-tuning을 진행하였다.

learning rate는 5e-5, 4e-5,3e-5, and 2e-5에서 선택하였다.

Table 1과 같이 BERT base와 BERT large 모델 모두 기존의 방법보다 좋은 성능을 보여준다.

Table 1. GLUE Test results, scored by the evaluation server.

4.2 SQuAD v1.1

Stanford Question Answering Dataset(SQuAD v1.1)은 약 100,000개의 질문과 대답 쌍으로 이루어져있는 데이터셋이다.

Input representation을 A embedding을 이용한 question과 B embedding을 이용한 passage를 이용한다.

Fine-tuning 과정에서는 [START] 토큰과 [END] 토큰을 사용한다.

32개의 batch size, 5e-5의 learning rate와 3 epoch을 통해 fine-tuning을 진행하였다.

Table 2에서 볼 수 있듯이 좋은 성능을 보여준다.

Table 2. SQuAD 1.1 results.

4.3 SQuAD v2.0

SQuAD v2.0은 질문에 대한 답이 passage에 없는 경우도 고려하여 SQuAD v1.1 문제 정의를 확장한 task이다.

답변이 없는 질문은 [START], [END] 토큰을 모두 [CLS] 토큰으로 처리한다.

48개의 batch size, 5e-5의 learning rate와 2 epoch을 통해 fine-tuning을 진행하였다.

Table 3과 같이 최고 시스템에 비해 F1 점수가 5.1 개선된 것을 알 수 있다.

Table 3. SQuAD 2.0 results.

4.4 SWAG

Situations With Adversarial Generations(SWAG)는 주어진 문장에서 네 가지 선택지 중 다음 상황으로 가장 일어날 수 있는 문장을 고르는 task이다. 근거 있는 상식 추론을 평가하는 113,000개의 문장 쌍이 포함되어 있다.

16개의 batch size, 2e-5의 learning rate와 3 epoch을 통해 fine-tuning을 진행하였다.

Table 4와 같이 ESIM+ELMo과 OpenAI GPT의 성능보다 좋은 성능을 달성했다.

Table 4. SWAG Dev and Test accuracies.

5. Ablation Studies

머신러닝 분야에서 ablation은 학습이 사용되는데 AI 시스템의 일부를 제거한다는 의미로 BERT의 pre-training을 하나씩 제거하면서 성능을 확인하여 해당 task의 영향력을 확인한다.

5.1 Effect of Pre-training Tasks

BERT base와 동일한 사전 훈련 데이터, fine-tuning 구조와 하이퍼파라미터를 사용하여 두 가지 pre-training 목표를 평가함으로써 deep bidirectionality의 중요성을 입증한다.

 

No NSP: NSP task 없이 MLM만 사용한 bidirectional 모델

=> BERT 모델과 No NSP 모델의 차이를 통해 NSP pre-training 효과를 확인할 수 있다.

LTR & No NSP: NSP task 없이 Left-context-only model을 사용한 모델

=> No NSP 모델과 LTR & No NSP 모델의 차이를 통해 MLM pre-training의 효과를 확인할 수 있다.

 

Table 5와 같이 LTR & No NSP < No NSP < BERT base 순으로 성능이 향상된다.

Table 5. Efficiency results from pre-training tasks.

5.2 Effect of Model Size

모델의 크기가 fine-tuning 정확도에 얼마나 영향을 주는지 파악한다.

모델 크기가 증가하면 기계 번역과 language modeling과 같은 large-scale task에서 좋은 성능을 달성한다는 것은 오랫동안 알려져있었다.

 

Table 6과 같이 모델의 크기가 클수록 모델의 성능에 영향을 미친다.

또한, 모델의 크기가 클수록 small scale task에서도 성능 향상에 영향을 미친다.

Table 6. Ablation over BERT model size.

5.3 Feature-based Approach with BERT

지금까지 소개한 모든 BERT 모델에 대한 결과는 pre-trained 모델에 간단한 classification layer를 추가하여 fine-tuning하는 접근 방식을 사용하였다.

Feature-based approach는 두 가지 장점을 가진다.

첫 번째, Transformer encoder는 모든 task에 적용하지 못하여 task별 모델 아키텍쳐를 추가해야한다.

두 번째, 훈련 데이터의 값비싼 representation을 미리 계산하여 computational 이점이 있다.

 

Table 7은 CoNLL-2003 Named Entity Recognition task에 대한 결과이다.

BERT의 fine-tuning approach와 Feature-based approach의 성능 차이를 알 수 있다.

Feature-based approach는 다음과 같이 실험을 진행한다.

1. Embedding만 사용

2. 두 번째부터 마지막 hidden만 사용

3. 마지막 hidden만 사용

4. 마지막 4개의 hidden 가중합

5. 마지막 4개의 hidden을 concat

6. 모든 12개 층의 가중합

결과적으로, 마지막 4개의 layer만 concatenate하는 방법이 feature-based approach에서 가장 성능이 좋았다.

 

Table 7. CoNLL-2003 Named Entity Recognition results.

6. Conclusion

언어 모델을 사용한 transfer learning에서 unsupervised pre-training이 언어 이해 시스템의 중요한 부분이라는 것을 알았다.

특히, 자원이 적은 task에서도 deep unidirectional architecture의 이점을 얻을 수 있었다.

본 논문의 주요 contribution은 이러한 결과를 deep bidirectional architecture로 일반화하여 동일한 pre-trained model이 광범위한 NLP task에 성공적으로 처리할 수 있도록 한 것이다.