일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dp
- OS
- kick start
- 킥스타트
- 알고리즘
- 운영체제
- 리눅스
- linux
- 딥러닝
- google coding competition
- 구글 킥스타트
- CSS
- 네트워크
- nlp
- 코딩테스트
- 파이썬
- 백준
- 프로그래밍
- AI
- 코딩
- BFS
- 코딩 테스트
- PYTHON
- 순열
- 그래프
- DFS
- 프로그래머스
- 브루트포스
- 동적 프로그래밍
- 동적프로그래밍
- Today
- Total
오뚝이개발자
BERT(NAACL-HLT 2019) 논문 리뷰 본문
What is BERT?
- Bidirectional Encoder Representations from Transformers
- Can be fine-tuned with jus one additional output layer for a wide range of task
- Don't need task-specific architecture
Motive
- BERT는 left to right LM이 sentence level task에서 sub-optimal이라는 점을 지적
- 기존 LTR LM은 주로 양방향으로부터의 문맥정보를 incorporate하는 것이 중요한 경우 취약(e.g. question answering)
Transformer에서 착안한 BERT
- Encoder Attention을 사용
- Encoder attention은 양방향에서의 context를 incorporate하는데 반해 decoder attention은 left side(left to right)로부터의 context만을 사용
- BERT가 기존 LM과의 가장 큰 차이점은 "양방향"이라는 점
Model Architecture
BERT는 pre-training, fine-tuning의 두 단계로 나뉜다.
- pre-training : 서로 다른 두 개의 task(NSP, MLM)으로 trained
- find-tuning : pre-training parameter로 initialized되고, downstream task 학습을 통해 parameter fine-tuning
BERT는 위 과정을 통해 unified architecture로 각기 다른 여러 task를 수행하는 것이 가능하다. BERT는 구조적으로 multi-layer bidirectional Transformer encoder이다. 논문에선 두 가지 크기의 모델로 실험을 진행해 성능평가를 한다.(L : layers #, H : hidden size, A : self-attention heads#)
- BERT BASE : (L, H, A) = (12, 768, 12)
- BERT LARGE : (L, H, A) = (24, 1024, 16)
Input, Output representation
- CLS 토큰 : 모든 시퀀스의 시작 토큰으로 CLS토큰에 매치되는 final state는 NSP의 classification 결과값이 된다.
- SEP 토큰 : 시퀀스를 구분하는 토큰
BERT는 크게 3개의 enbedding과정을 거친다.
- Token embedding
- Segement embedding : 시퀀스를 구분하기 위한 embedding
- Position embedding
Pre-training
BERT는 2개의 unsupervised task를 사용해 pre-train을 한다.
Task #1 : MLM(Masked Language Model)
BERT의 bidirectional한 condition은 모델이 trivial하게 target word를 predict하도록 만든다. 이를 방지하기 위해 masked LM을 사용한다. 각 시퀀스에서 15%의 토큰을 랜덤하게 [MASK] 시킨다. 그런데 이렇게 [MASK]된 토큰은 fine-tuning에선 등장하지 않으므로 pre-training과의 미스매치가 발생한다. 이를 해결하기 위해 BERT는 다음과 같은 비율로 [MASK]를 진행한다.(e.g. my dog is cute)
- 80% → [MASK] → my dog is [MASK]
- 10% → random token으로 change → my dog is apple
- 10% → unchaged → my dog is cute
Task #2 : NSP(Next Sentence Prediction)
BERT는 NSP task도 함께 pre-train시켜 둘 이상의 문장 간의 관계(문맥 정보)를 기반으로 수행해야 하는 task에 강점을 보인다.(e.g. QA, NLI)
두 개의 sentence pair A, B가 주어지는데, 50%의 경우엔 B가 A의 next sentence(labeled as IsNext)고, 나머지 50%의 경우는 B가 corpus로부터 가져온 random sentence(labeled as NotNext)이다. model architecture 그림에서 C가 NSP를 위해 사용된다.
Data
논문에선 BooksCorpus(800M words)과 English Wikipedia(2500M words)를 pre-training을 위해 사용하였다.
BERT fine-tuning result
Find-tuing result #1 : GLUE
- BERT가 모든 task에서 기존 모델들을 outperform
- BERT LARGE가 BERT BASE를 모든 task에서 outperform
Fine-tuning result #2 : SQuAD v1.1
SQuAD는 Question, Answer pair data set이다. Question과 Wikipedia에서 해당 question에 대한 answer를 담고 있는 passage가 함께 주어진다. 이 때, 모델이 수행하는 task는 passage에서 question에 대한 answer text span을 찾는 것이다.
- BERT single model이 top ensemble model 능가
- BERT ensemble model이 top leaderboard model 능가
Find-tuning result #3 : SQuAD v2.0
- SQuAD v2.0은 v1.1의 확장판으로 paragraph에 short answer이 없는 경우도 포함시켜서 좀 더 realistic한 학습을 할 수 있다.
- +5.1 F1 score improvement over the previous best model
Fine-tunining result #4 : SWAG
- Situations With Adversarial Generations dataset(113K sentence-pair)
- Task : 4개의 선택지 중 주어진 sentence의 다음 상황으로 가장 알맞은(the most plausible) sentence 고르기
Ablation Study
ablation study란 특정 요소를 제거해보고 전체 성능에 미치는 효과에 대한 insight를 얻기 위한 실험이다. 논문에선 pre-training과 model size에 대한 실험을 진행하였다.
Study #1 : Effect of pre-training task
BERT vs. No NSP
- pre-training에서 NSP의 효과 관찰
- NSP를 제거한 모델은 QNLI, MNLI, SQuAD task에서 성능이 크게 저하
No NSP vs. LTR&No NSP
- Bidirectionality의 효과 관찰
- LTR 모델은 MRPC, SQuAD에서 성능이 크게 저하
Stud #2 : Effect of model size
- large model은 4개의 dataset에서 모두 더 좋은 accuracy를 보임
- 특이점은 MRPC와 같이 small dataset에서도 large model이 더 좋은 accuracy를 보인다는 것이다(보통 small dataset의 경우 모델 크기가 커지면 오버피팅으로 인해 accuracy가 저하되는 경우가 많은 것을 고려하면 이례적이다)
BERT의 개선 버전 최근 모델
최근 아래와 같은 BERT를 적용한 개선 모델이 많이 나와 benchmark에서 기본 BERT는 순위권 안에는 들지 못한다.
- XLNet
- ALBERT(Google)
- RoBERTa(Facebook AI)
'AI > Deep Learning Paper Review' 카테고리의 다른 글
Towards a Human-like Open-Domain Chatbot(Meena) 리뷰 (0) | 2021.11.04 |
---|---|
ELECTRA(ICLR 2020) 논문 리뷰 (1) | 2021.10.27 |
Attention is all you need(NIPS 2017) 논문 리뷰 (0) | 2021.09.17 |
NLG(Natural Language Generation)에 대하여 (0) | 2021.09.12 |
RealFormer : Transformer Likes Residual Attention 논문 리뷰 (0) | 2021.09.12 |