본문 바로가기
NLP

BERT (2018) 논문 리뷰

by 아르카눔 2024. 6. 25.

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding는 가장 유명한 Encoder only 모델 중 하나다. (링크)

 

해당 논문의 저자는 Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova다.

 

 

Abstract

BERT는 Bidirectional Encoder Representations from Transformers의 약자다. 양방향의 왼쪽에서 오른쪽 방향의 컨텍스트와 오른쪽에서 왼쪽 방향의 컨텍스트를 동시에 활용한다. 마지막 output layer만 추가함으로써 다양한 태스크에 대해서 SOTA를 달성한다. GLUE의 MultiNLI에서 accuracy 87.6%으로 4.6%가 증가했으며, SQuAD v1.1의 QA에서는 Test F1 score가 93.2로 1.5 pint 상승했다. SQuAD v2.0의 Test F1에서는 83.1로 5.1 포인트 상승했다.

 

1. Introduction

Pre-trained 언어 모델을 downstream tasks에 활용하는 방법은 크게 두 가지다. Feature-based와 fing-tuning이다.

Feature-based로는 ELMo가 있으며 task-specific 구조와 추가적인 features를 사용한다. GPT는 최소한의 task-specific 파라미터를 소개하며 모든 pre-trained 파라미터를 fine-tuning함으로써 downstream tasks를 해결한다. 

GPT는 unidirectional이므로 해당 논문에서는 fine-tuning based의 bidirectional 방법을 제안한다.

 

 

3. BERT

 

 

BERT는 pre-training 단계와 fine-tuning 단계로 나뉜다.

 

Model Architecture

 

Transformer의 아키텍쳐를 따라왔으며 GPT와 다르게 bidirectional self-attention을 사용한다.

이 말은 encoder 구조를 사용했다는 뜻이다.

 

저자들은 2가지 BERT 모델을 제시한다. 

레이어의 수는 L, hidden size 즉 model의 dimension은 H, self-attention의 head의 수는 A로 표기한다. 

Base는 L = 12, H = 768, A = 12로 총 파라미터 수는 110M이다.

Large는 L = 24, H = 1024, A = 16으로 총 파라미터 수는 340M이다.  

 

Base는 GPT와 같은 사이즈가 되도록 설정했다.

 

Input / Output Representations

 

Input은 하나의 문장이거나 <Question, Answer>과 같은 문장의 페어다.

WordPiece embeddings를 사용했으며 30,000개의 vocabulary를 가지고 있다.

 

모든 시퀀스에는 [CLS]라는 special classification token이 온다.

이는 최종 hidden state에서 sequence representation classification tasks에 사용된다.

서로 다른 문장의 경우 [SEP]라는 스페셜 토큰으로 구별한다. 

추가적으로 문장 A에 속하는지 B에 속하는지 표기한다.

아래의 Fig 2에 나온 바와 같다. 

 

 

 

3.1. Pre-training BERT

 

Task #1. Masekd LM (MLM)

Input sequence의 15%를 랜덤하게 마스킹하고 이를 예측하는 작업을 수행한다.

마스킹된 토큰은 [MASK] 토큰으로 수행한다.

이는 pre-training에서만 사용하고 fine-tuning에서는 사용하지 않는다. 

 

구체적인 마스킹 과정은 다음과 같다.

  1. 15%의 확률로 어떤 토큰의 자리 (position)을 정한다.
  2. 80% 확률로 [MASK] 토큰으로 변경한다
  3. 10%의 확률로 랜덤한 다른 토큰으로 변경한다. 
  4. 10%의 확률로 토큰을 변경하지 않는다. 

 

Task #2. Next Sentence Prediction (NSP)

QA (Question-Answering)이나 NLI (Natural Language Inferece)와 같은 dwonstream tasks는 두 문장 사이의 관계를 학습한다.

Language model 자체가 직접적으로 이 관계를 파악하지 못한다.

따라서 next sentence prediction을 설정한다. 문장 A와 B를 선택한다.

50%는 문장 B가 문장 A의 뒤에 오고 이를 IsNext로 라벨링한다.

문장 B가 A의 뒤에 오지 않는 경우는 NotNext로 라벨링한다.

Fig 1의 C를 nsp에 사용한다.

NSP를 활용한 pre-training은 QA와 NLI에 유리하다.

 

Pre-training Data

BookCorpus (800M words)와 English Wikipedia (2,500M words)

 

 

3.2. Fine-tuning BERT

 

파인튜닝은 간단하다.

BERT 모델에 바로 input을 넣은 다음에 CLS를 output layer에 넣어서 classification,

entailment, sentiment analysis 등에 사용했다.

 

4. Experiments

GLUE

Batch size 32, 3 epochs로 모든 GLUE tasks 데이터에 대해서 파인튜닝했다.

자세한 개별 태스크의 내용은 여기에 정리했다.

learning rate는 5e-5, 4e-5, 3e-5, 2e-5를 선택했다. 

 

SQuAD v1.1

Batch size 32, 3 epochs, learnin rate 5e-5

 

SQuAD v2.0

Batch size 48, 2 epochs, learnin rate 5e-5

 

SWAG

Batch size 16, 3 epochs, learnin rate 2e-5

 

위 내용들에 대해서 학습한다.

 

 

 

 

 

 

ELMo나 GPT 보다 좋은 성능임을 확인할 수 있다.

 

 

'NLP' 카테고리의 다른 글

LLM 개인용 유료 구독 가격 비용 정리  (0) 2024.08.02
GPT (2018) 논문 리뷰  (0) 2024.07.22
Transformer (2017) 논문 리뷰  (0) 2024.06.25
GRU 모델 설명  (0) 2024.04.11
LSTM 모델 설명과 PyTorch Implementation  (0) 2024.04.09