BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova
https://arxiv.org/abs/1810.04805
1. Introduction
자연어 처리 작업의 성능을 향상시키기 위해 언어 모델 사전 학습이 효과적이다!
💡 자연어 처리 작업?
- 문장 간 관계 예측
- 이전에 썼던 단어와 다른 단어를 사용하여 표현하는 방식(paraphrasing)
- 개체명 인식 및 질의응답 방식
사전 학습된 언어표현을 자연어 처리에 적용하는 기존의 2가지 방식
- feature-based
- 임베딩은 기존 방식으로 이용하되 그외 나머지 부분(레이어)을 학습
- 특정 task에 맞는 architecture를 구성하고 사전학습된 레이어를 추가적인 피쳐로 활 ex) ELMo
- fine-tuning
- 기존 모델을 기반으로 architecture를 목적에 맞게 변형
- 모델 전체적인 부분에서 조금씩 업데이트 하는 방식
→ 위의 두 가지 방식은 사전 훈련 시 같은 목표(원하는 task)를 공유 및 일반적인 언어 표현 학습을 위해 단방향 LM을 사용한다. 이에 따라 본 연구에서는 현재 기술이 fine-tuning 접근 방식에서 사전 훈련 능력을 제한한다고 주장 하였다.
2. Related Work
2.1 Unsupervised Feature-based Approaches
단어의 폭넓게 적용 가능한 표현을 학습하는 것은 오랜 연구 목표였으며 이에 관해 비신경망 기반 방법과 신경망 기반 방법 모두 존재한다.
사전 학습된 단어 임베딩은 현대 NLP 시스템에서 기존 단어 임베딩보다 성능을 크게 개선 → 단어 임베딩 벡터를 사전 학습하기 위해, 좌측에서 우측으로의 언어 모델링 목표와 좌우 문맥에서 올바른 단어를 구별하는 목표가 사용 → 이러한 접근법은 문장 임베딩을 더 큰 단위로 일반화
ELMo는 좌에서 우 그리고 우에서 좌로의 LM에서 문맥에 민감한 특징을 추출 → 질문 응답, 감정 분석, 명명된 개체 인식 등 여러 주요 NLP에 활용
→ LSTM을 사용해 좌우 문맥을 통해 단어를 예측하는 과제를 통해 문맥적 표현을 학습하는 방법 제안(ELMo와 비슷한 방식)
2.2 Unsupervised Fine-tuning Approache
초기 연구들은 레이블이 없는 텍스트에서 단어 임베딩 파라미터만을 사전 학습하였다.
BUT 최근에는 문맥적 토큰 표현을 생성하는 문장 또는 문서 인코더들이 레이블이 없는 텍스트에서 사전 학습 및 지도 학습을 통해 다운스트림 작업(특정 작업에 맞게 학습하는 과정)에서 미세 조정을 진
이 접근법의 장점은 학습해야 하는 매개변수(파라미터)의 수가 적다는 것이다. → 여러 문장 수준 작업에서 이전의 최첨단 성능을 달성 → 좌측에서 우측으로의 언어 모델링과 오토인코더 목표 사용
특히나 사전 학습된 아키텍처와 최종 다운스트림 아키텍처 사이에 최소한의 차이만 있다는 점에서 큰 이점을 가진다.
2.3 Transfer Learning from Supervised Data
대규모 데이터셋을 사용하는 지도 학습 작업에서의 효과적인 전이 학습을 보여주는 연구 또한 존재한다.
자연어 추론이나 기계 번역 분야에서 뿐만 아니라 ImageNet으로 사전 학습된 모델을 미세 조정(fine-tuning)하는 것이 효과적인 방법임을 입증하였다.
3. BERT

BERT의 학습 프레임워크는 두 단계로 구성된다.
- 사전 학습(pre-training) 모델이 다양한 사전 학습 작업을 통해 레이블이 없는 데이터를 학습
- Fine-tuning 사전 학습이된 매개변수로 초기화된 후, 다운스트림 작업(특정 작업)에 대한 레이블이 있는 데이터를 사용해 모든 매개변수가 Fine-tuning
⇒ BERT의 독특한 특징은 다양한 작업에 걸쳐 통일된 아키텍처를 사용하는 점이다.
Model Architecture
Multi-layer bidirectional Transformer encoder 구조
- layer 수 (Transformer block) → $L$
- hiddens size → $H$
- self-attention head 수 → $A$
$BERT_{base}$ ($L = 12,\; H = 768,\; A = 12,\; parameter = 110M$)
→ 본 연구와 비교를 위해 GPT와 동일한 모델 크기를 선택하였다.
→ BERT의 Transformer는 양방향 self-attention을 사용하는 반면, GPT의 Transformer는 제한된 self-attention을 사용한다. 따라서 GPT에서는 각 토큰이 자신보다 왼쪽에 있는 문맥만 참조할 수 있다.
$BERT_{LARGE}$ ($L = 24,\; H = 1024,\; A = 16,\; parameter = 340M$)
Input/Output Representations

BERT가 다양한 다운스트림 작업 처리를 위해 입력은 단일 문장과 문장 쌍을 하나의 토큰 시퀀스에서 명확하게 나타낼 수 있다. 본 연구에서는 "문장"연속적인 텍스트의 임의의 범위를 의미할 수 있음을 주의하여야 하며 "시퀀스"는 BERT에 대한 입력 토큰 시퀀스를 나타내며, 단일 문장일 수도 있고, 두 문장이 함께 묶인 것일 수도 있다.
BERT는 WordPiece 임베딩과 30,000개의 토큰으로 이루어진 어휘를 사용한다.
모든 시퀀스의 첫번째 토큰은 ( [CLS] ) → 이 토큰에 해당하는 최종 히든 상태는 분류 작업에서 시퀀스 전체를 대표하는 표현으로 사용
문장 쌍은 하나의 시퀀스로 묶이며, 두 가지 방법으로 문장을 구분
- 특수 토큰([SEP])으로 문장들을 분리
- 각 토큰에 학습된 임베딩을 추가해 그 토큰이 문장 A에 속하는지, 문장 B에 속하는지를 나타냄
⇒ 입력 임베딩을 $E$, 특수 [CLS] 토큰의 최종 hidden vector를 $C \in \mathbb{R}^H$, i번째 입력 토큰의 최종 hidden vector를 $T_i \in \mathbb{R}^H$로 표시한다.
⇒ 각 토큰의 입력 표현은 해당 토큰(token), 세그먼트(segment), 위치 임베딩(position embedding)을 합산하여 구성
3.1 Pre-training BERT
BERT를 사전학습하기 위해 두 가지 비지도 학습 방식을 활용
Task #1: Masked LM
좌에서 우 또는 우에서 좌로 진행하는 모델을 단순히 연결한 모델보다 더 강력하며 표준 조건부 언어 모델은 좌에서 우로 또는 우에서 좌로만 학습할 수 있다.
BUT 심층 양방향 모델이 더 강력하다, → 다층적 문맥에서 목표 단어를 쉽게 예측할 수 있기 때문에..
심층 양방향 표현을 학습하기 위해, 본 연구에는 단순히 입력 토큰의 일부를 무작위로 마스킹하고, 그 마스킹된 토큰을 예측하는 방법을 사용하는 방식을 따른다. → MLM (마스킹된 언어 모델)
마스킹된 토큰에 해당하는 최종 히든 벡터를 어휘에 대한 출력 소프트맥스에 전달하여 표준 언어 모델처럼 예측 수행
위의 방식을 활용한다면 양방향 사전 학습 모델을 얻을 수 있지만 문제는 사전 학습과 미세 조정 간의 불일치를 초래한다는 점에서 문제가 발생할 수 있다. → [MASK] 토큰은 미세 조정 중에는 등장하지 않기 때문에..
이를 완화하기 위해
- "마스킹된" 단어를 항상 실제 [MASK] 토큰으로 대체하지 않는다.
- 학습 데이터 생성기는 예측을 위해 토큰 위치의 15%를 무작위로 선택하게 된다.
- i번째 토큰이 선택된다면 ..해당 토큰을
- 해당 토큰을 80% 확률로 [MASK] 토큰으로,
- 해당 토큰을 10% 확률로 무작위 토큰으로
- 10% 확률로 그대로 유지
- 가 원래의 토큰을 교차 엔트로피 손실로 예측하는 데 사용

→ Maksed LM을 활용했을 시 성능이 더 개선되었음을 확인할 수 있었다.
Task #2: Next Sentence Prediction (NSP)
질문 응답(QA)과 자연어 추론(NLI) 같은 중요한 다운스트림 작업은 두 문장 간의 관계를 이해하는 것에 기반, BUT 이는 단순한 언어 모델링으로는 직접적으로 다뤄지지 않는다.
→ 문장 관계를 이해하는 모델 학습을 위해, 본 연구에서는 어떤 단일 언어 코퍼스에서도 쉽게 생성할 수 있는 이진화된 다음 문장 예측(NSP) 작업을 사전 학습 진행
ex) 두 문장 A와 B로 구성
- 50%의 경우, B는 실제로 A 뒤에 오는 다음 문장(‘IsNext’ 레이블)
- 나머지 50%의 경우, B는 코퍼스에서 무작위로 선택된 문장(‘NotNext’ 레이블)
⇒ NSP 작업은 QA와 NLI 같은 다운스트림 작업의 성능을 크게 향상시킨다.
특히 BERT에서는 모든 매개변수가 최종 작업 모델의 매개변수를 초기화하는 데 사용된다.
Pre-training data
pre-training corpus로는 BooksCorpus(800M words) + English Wikipedia 에서 텍스트 문단만 추출(2500M words)
⇒ 길고 연속적인 시퀀스를 추출하기 위해 문장 수준이 아닌 문서 수준의 corpus를 사용이 중요
3.2 Fine-tuning BERT
Transformer의 셀프 어텐션 메커니즘 활용→ BERT는 많은 다운스트림 작업을 처리 가능
이전에는 텍스트 쌍을 처리 작업에서 텍스트 쌍을 독립적으로 인코딩 후 양방향 교차 어텐션을 적용하는 방식이 사용
→ BUT BERT는 셀프 어텐션 메커니즘을 사용하여 이러한 두 단계를 통합
작업별 입출력을 BERT에 연결하고 모든 매개변수(파라미터)를 끝까지 fine-tuning
입력 단계에서 사전 학습 시의 문장 A와 문장 B
- 패러프레이징에서의 문장 쌍
- 함의 관계의 가설-전제 쌍
- 질문 응답에서의 질문-지문 쌍
- 텍스트 분류 또는 시퀀스 태깅에서의 텍스트-∅ 쌍과 유사
출력 단계에서
- 토큰 표현이 시퀀스 태깅이나 질문 응답 같은 토큰 수준 작업의 출력 층에 전달
- [CLS] 표현은 함의 관계나 감정 분석 같은 분류 작업의 출력 층에 전달
⇒ pre-training에 비해, fine-tuning은 상대적으로 저비용
4.1 GLUE
BERT를 GLUE에서 fine-tuning하기 위해 입력 시퀀스(단일 문장 또는 문장 쌍)를 앞서 설명한 방식으로 구성한다.
첫 번째 입력 토큰인 [CLS]에 해당하는 최종 hidden vector C를 집합적 표현으로 사용하며, C ∈ RH로 정의한다.
fine-tuning 과정에서 새롭게 도입되는 매개변수는 분류 레이어 가중치 W ∈ RK×H이며, 여기서 K는 label의 개수를 의미한다.
이에 따라 C와 W를 활용해 표준 분류 손실을 계산하며, 손실 함수는 아래와 같다.
본 연구에서는 batch size 32로 GLUE 실험에서 3 epoch 동안 fine-tuning을 수행했으며, Dev set에서 최적의 학습률(5e-5, 4e-5, 3e-5, 2e-5 중)을 선택하였다. 또한 BERTLARGE의 경우 학습이 다소 불안정하여 Dev set 기준으로 최적 모델을 선정하였다.
결과적으로 모든 task에서 BERTLARGE가 BERTBASE보다 더 높은 성능을 보였으며, 특히 작은 데이터셋에서 더욱 효과적이었다.
4.2 SQuAD v1.1
Table 2. SQuAD v1.1의 실험 결과
SQuAD (Stanford Question Answering Dataset)
SQuAD v1.1은 약 10만 개의 crowd-sourced question-answer 쌍으로 이루어진 데이터셋이다.
이 데이터셋에서는 질문과 정답이 포함된 Wikipedia 단락이 주어졌을 때, 해당 단락 내에서 정답 텍스트의 범위를 예측한다.
fine-tuning 단계에서는 start vector S ∈ RH와 end vector E ∈ RH만 새롭게 도입한다.
정답이 시작되는 단어 i의 확률은 Ti와 S의 내적을 계산한 뒤, 단락의 모든 단어에 대해 softmax를 적용하여 계산한다.
이후 위치 i에서 j까지 후보 범위의 점수는 S · Ti + E · Tj로 정의되며, j ≥ i를 만족하는 최대 점수 범위가 최종 예측으로 사용된다.
학습 목표는 올바른 start position과 end position의 log-likelihood 합을 최대화하는 것이다.
본 연구에서는 learning rate 5e-5, batch size 32, 3 epoch를 사용하였다.
4.3 SQuAD v2.0
SQuAD v2.0은 짧은 답변이 존재하지 않을 가능성을 허용함으로써 SQuAD v1.1의 문제 정의를 확장한 보다 현실적인 QA task이다.
Table 2. SQuAD v2.0의 실험 결과
답변이 없는 질문은 시작과 끝이 모두 [CLS] 토큰인 답변 범위를 갖는 것으로 처리한다. 즉, 답변 범위 확률 공간을 [CLS] 위치까지 확장한다.
예측 시에는 무답변 범위 점수와 최고 비무답 범위 점수를 비교한다.
최종적으로 아래 조건을 만족하면 응답이 존재한다고 예측한다.
여기서 τ는 dev set에서 F1 score를 최대화하도록 선택된 임계값이다.
본 연구에서는 TriviaQA 데이터셋은 사용하지 않았으며, learning rate 5e-5, batch size 48, 2 epoch를 사용하였다.
4.4 SWAG
Table 3. SWAG Dev와 Test의 성능
SWAG 데이터셋은 113,000개의 문장 쌍 완성 예제를 포함하며, 상식 기반 추론 능력을 평가하기 위해 사용된다. 주어진 문장을 바탕으로 네 가지 선택지 중 가장 자연스러운 후속 문장을 선택하는 task이다.
SWAG 데이터셋으로 fine-tuning할 때는 주어진 문장 A와 가능한 후속 문장 B를 연결해 총 4개의 입력 시퀀스를 구성한다.
과제 특화 파라미터는 [CLS] 토큰 표현 C와의 내적을 통해 각 선택지의 점수를 계산하는 벡터이며, 이 점수는 softmax layer를 통해 정규화된다.
본 연구에서는 learning rate 2e-5, batch size 16, 3 epoch를 사용하였다.
참고문헌
[논문 리뷰] BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding (NAACL 2019)
벤치마크 (GLUE, SuperGLUE, SQuAD) 설명