1. Introduction
-
자연어처리에 효과적
- ex. sentence-level tasks(natural language inference, paraphrasing(predict the relationships between sentences)), token-level tasks(
named entity recognition and question answering)
-
pre-trained language representations을 적용하는 2가지 방법
-
- feature-based
- ex. ELMo
- 특정 태스크에 알맞는 구조 (task specific), pre-trained representations을 추가적 특성으로 추가
- 기존 word2vec의 문제점이었던 문맥 학습이 불가능한 점을 해결
-
- fine-tuning
- ex. Generative Pre-trained Transformer (GPT)
- 특정 태스크에 특화된 파라미터 최소화, 사전 학습된 파라미터 파인 튜닝
-
두 가지 모두 단방향 언어모델을 학습하여 일반화된 언어 표현 습득이 목표
~~ pre-trained 과정에서 동일 objective 사용, 단방향~~
-
문맥을 양쪽에서 파악해야하는 태스크(ex. QA 태스크) 같은 경우 단방향은 치명적
-
fine-tuning을 개선한 BERT
- 마스크드 언어 모델(MLM)을 사용해서 양방향에서 문맥을 학습해 성능 향상
- 다음 문장 예측도 함께
2.1 Unsupervised Feature-based Approaches
ELMo : biLM (left-to-right LM, right-to-left LM)을 이용해 문맥을 고려한 임베딩 제공
- 몇가지 NLP benchmark(QA, sentiment analysis, NER) 에서 SOTA
- ELMo도 양방향이긴 하지만 LTR과 RTL을 따로 따로 학습시켜 나온 값을 붙인 구조기 때문에 깊은 문맥 정보는 반영하지 못한다.
- 문맥 정보를 깊이 알아야 태스크 해결이 가능함
2.2 Unsupervised Fine-tuning Approaches
- 레이블링 하지 않은 텍스트를 통해 pre-trained된 contextual token representation을 생성하고, supervised downstream task에서 파인튜닝
- 장점: 시작~학습까지 적은 수의 파라미터 학습
2.3 Transfer Learning from Supervised Data
3. BERT
- BERT의 두가지 단계
- pre-training : 레이블링 하지 않은 데이터 기반 학습
- fine-tuning : 사전 훈련된 파라미터로 초기화되고 레이블링 된 데이터로 파인 튜닝
- 따라서 실제 태스크에 사용되는 모델들은 초기에 같은 파라미터로 시작해 최종적으로는 모두 달라진다
Model Architecture
- Multi-layer bidirectional Transformer encoder
Transformer block layers = L
hidden size = H
number of self-attention heads = A
BERTBASE: L=12,H=768,A=12,totalparameter=110M
BERTLARGE : L=24,H=1024,A=16,totalparameter=240M
OpenAI의 GPT(현재 토큰 기준 왼쪽만 참조)와 비교 목적으로 BERTBASE(bidirectional self attention) 를 동일 크기로 제작
- sequence : 단일 문장 또는 쌍으로 이루어진 문장
- input representation : 단어 임베딩
- WordPiece embedding : sequence의 첫 토큰으로 [CLS]가 들어가고 두 문장은 [SEP]토큰으로 구분한다. [CLS]문장1[SEP]문장2[SEP]
- token segment, position embedding을 더해서 input representation 생성
- 단순 합 -> token embedding + segment embedding + position embedding
3.1 Pre-training BERT
- 두 개의 unsupervised task 를 통해 학습
Task #1: Masked LM
- Deep Bidirectional Model 학습
- [MASK] 토큰에 해당되는 final hidden vector가 모델의 vocabulary로 매핑되는 최종 소프트맥스 레이어에 들어가 출력
- 일정 비율(15%)의 토큰을 마스킹
- pre-train 과정에서는 효과적일지 몰라도 실제 태스크를 수행할 때 문제가 발생할 수 있음
- fine-tuning 과정에서 [MASK]라는 토큰을 사용하지 않기 때문
- 15%를 모두 [MASK]로 치환하지 않고 15%의 80%(전체의 12%)를 [MASK]로 치환, 10%(전체의 1.5%)는 랜덤한 토큰으로 치환, 10%(전체의 1.5%)는 기존의 토큰을 그대로 사용하여 완화
- 이렇게 해야 성능이 가장 높다는데...overfitting 방지/.>..?
- 최종적으로 크로스 엔프로피 손실함수를 통해 토큰 예측을 학습
Task #2: Next Sentence Prediction (NSP)
- 두 문장 사이의 관계를 이해해야하는 태스크 (QA, NLI)
- sentence-level의 태스크
- 언어모델을 통해 학습이 쉽지 않음 -> NSP라는 태스크에 대해서도 함께 학습
- 두 문장을 입력으로 받는데 50:50 비율로 실제 다음 문장인 경우 / 임의의 문장인 경우로 제공
Pre-training data
- pre-training corpus
- BooksCorpus (800M words)
- English Wikipedia (2,500M words) : text passage만 사용, 목록 표 제외
3.2 Fine-tuning BERT
- 기존의 두문장 처리 : 각각의 문장을 인코딩, 두 문장 사이의 bidirectional cross attention
- BERT에서는 이것을 한번에(하나의 sequence로) 처리
- 입력된 문장을 하나의 sequence로 생성하여 모델에 입력
- fine-tuning : 태스크에 알맞는 입출력을 모델의 입력으로 제공하여 파라미터들을 end-to-end 업데이트
- 입력 : text pair과 유사하게 구성
- 출력 : token representation들은 토큰 레벨의 태스크에 대한 output layer로, [CLS]representation들은 분류에 대한 output layer로
- pre-training 과 비교해 fine-tuning은 적은 비용으로 가능
4. Experiments
4.1 GLUE
- GLUE(General Language Understanding Evaluation)
- 사람이 쉽게 풀 수 있는 자연어 문제 8 종류를 모아둔 벤치마크
- 대부분 분류 문제, 두 문장 간 유사도를 수치로 나타내는 태스크인 회귀 문제 하나 잇음
4.2 SQuAD v1.1
- SQuAD 1.1(Stanford Question Answering Dataset)
- 위키피디아에서 추출한 QA 벤치마크, 질문과 지문이 입력으로 주어지면 지문 안에서 답을 찾음
4.3 SQuAD v2.0
4.4 SWAG
- SWAG(Situations With Adversarial Generation)
- miltiple choice 태스크. 어떤 문장이 주어지면 그 뒤에 올 자연스러운 문장을 고름
5. Ablation Studies
- 일정부분을 제거하면서 결과 비교를 통해 역할 파악
5.1 Effect of Pre-training Tasks
- MLM과 관계 없이 NSP 학습이 효과가 있다
- NSP 없는 모델
- NSP 없고 LTR인 모델 (NSP, MLM 둘다 없는 경우)
5.2 Effect of Model Size
- 모델이 커질수록 정확도 상승
- 데이터가 충분하지 않은 경우 모델이 크면 과적합이 일어날 수 있지만 BERT의 경우 이런 사황에서도 성능이 좋았다.
- pre-training 할 때 충분히 많은 데이터를 주었기 때문에 이 데이터들로 큰 모델에 대한 좋은 representation을 만들어주기 때문
5.3 Feature-based Approach with BERT
- Feature-based Approach로 사용할 경우
6. Conclusion