⚠️ BERT 논문 리뷰를 먼저 보시는 것을 추천 드립니다 ⚠️
Reference
https://arxiv.org/pdf/1907.11692.pdf
1. Introduction
- 최근 ELMO, GPT, BERT, XLM, XLNet 등의 self-training method는 상당한 성능 개선을 보였지만, 제안된 방식 중 어떤 전략이 성능 개선에 가장 큰 영향을 주었는지 판단하는 것에 어려움이 있다.
- 이러한 방식은 pre-training에서 많은 시간과 비용이 소요되고, 각각의 방법들이 다양한 크기의 private 데이터를 이용하여 학습이 되었기 때문에 비교하는 것이 어렵다.
- 논문에서는 BERT는 아직 학습이 덜 되어 있고(undertrain), 이를 보완할 방법을 아래와 같이 제안했다.
(1) 모델을 더 많은 데이터와 더 큰 배치 사이즈로 더 오래 학습시킴
(2) Next Sentence Prediction(NSP) 방법론을 제외
(3) 더 긴 시퀀스를 이용하여 학습
(4) dynamic masking 적용
+ 학습 데이터 셋 크기에 따른 효과를 확인하기 위해서 새로운 데이터셋 수집(CC-News) ➡️ BERT 성능 향상을 위한 방법을 RoBERTa라고 부르기로 함.
- RoBERTa가 기여한 점
(1) BERT design choices와 학습 전력을 제시하여 downstream task(GLUE, SQuAD) 성능을 높임
(2) 새로운 데이터셋 CCNews를 사용하고, pretraining 단계에서 더 큰 데이터셋을 사용하면 모델의 성능 향상에 영향을 준다는 것을 보임
(3) Masked Language Model(MLM) pretraining의 경쟁력을 보임
2. Background
이 섹션에서는 BERT의 pretraining 방식에 대해 간단하게 소개. 더욱 자세한 내용은 BERT 논문 리뷰를 참고.
2.1 Setup
- BERT는 두 개의 segment를 연결하여 입력으로 사용한다.(x1,...,xN과 y1,...,yN).
- 하나의 segment는 주로 한 개 이상의 자연어 문장으로 구성
- 두 개의 segment는 아래와 같이 special tokens를 포함하여 BERT의 하나의 입력 시퀀스로 사용됨
[CLS],x1,...,xN,[SEP],y1,...,yM,[EOS]
- M과 N은 M+N<T.
- 이 때, T는 학습 시에 사용할 최대 시퀀스 길이를 결정하는 파라미터
- 모델은 처음에 large unlabeled 텍스트 데이터셋을 이용하여 사전 학습을 진행하고, 각 태스크에 맞는 labeled 데이터를 이용하여 파인 튜닝을 진행한다.
2.2 Architecture
- transformer의 encoder로 이루어진 구조
- L개 층의 transformer 블록을 이용했고, 각각의 블록은 A개의 self-attention heads와 hidden dimension H으로 구성됨.
2.3 Training Objectives
Masked Language Model(MLM)
- pretraining 단계에서 입력 시퀀스의 토큰 중 일부를 랜덤으로 선택하여 special token [MASK]로 교체
- 마스킹된 토큰을 예측하고, cross-entropy loss를 이용하여 학습
- BERT는 전체 입력 시퀀스의 토큰 중 15%를 랜덤으로 선택하여 마스킹하고, 선택된 토큰의 80%는 [MASK]로 교체 / 10%는 그대로 유지 / 10%는 vocabulary token 내의 랜덤 토큰을 선택하여 교체
Next Sentence Prediction(NSP)
- 두 개의 segment가 원 텍스트에서 이어지는 문장인지 아닌지를 판단하는 binary classification이다.
- Positive examples : 데이터셋 내에서 연속된 두 문장을 선택
- Negative examples : 서로 다른 문서 내의 두 개의 문장을 선택
2.4 Optimization
- BERT는 아래와 같은 파라미터를 이용하여 Adam optimization 사용
- β1=0.9
- β2=0.999
- ϵ=1e−6
- L2 weight decay =0.01
- warmup steps =10,000
- peak learning rate =1e−4
- dropout rate =0.1
- GELU activation function
- Pretraining 단계에서 총 1,000,000 스텝을 학습
- 미니 배치는 256개의 시퀀스 단위이고, 최대 길이는 512
2.5 Data
- BookCorpus + English Wikipedia를 학습
- 총 16GB의 압축되지 않은 텍스트 데이터
3. Experimental Setup
3.1 Implementation
fairseq의 BERT 코드를 활용하여 RoBERTa를 구현
peak learning rate와 warmup steps를 제외하고, 대부분은 Section 2.4 Optimization에서 소개한 BERT의 하이퍼파라미터를 따름
- 큰 배치 사이즈로 학습할 때, 안정성을 위하여 β2=0.98으로 설정
- 시퀀스의 최대 길이는 T=512 토큰으로 설정하여 사전 학습을 진행.
- BERT와는 다르게 처음 90%의 업데이트에 대해 시퀀스 길이를 줄여서 학습하지도 않았음.(BERT에서는 처음 pretraining의 90%에서는 짧은 길이 128, 256으로 줄여서 학습하고, 남은 10%에 대해서만 full length 512를 이용하도록 권장)
- RoBERTa는 pretraining의 시작부터 끝까지 full-length로만 학습 진행
3.2 Data
- 총 160GB의 텍스트 데이터를 이용하여 사전 학습. 사용한 말뭉치는 아래와 같다.
- BookCorpus + Wikipedia : BERT에서 사용한 데이터(16GB)
- CC-News : CommonCrawl News 데이터셋의 영문 데이터를 사용. (2016.09~2019.02 사이에 수집된 총 63 million 영어 기사, 필터링 후에 76GB)
- OpenWebText : GPT 논문에 설명된 데이터 (38GB)
- Stories : CommonCrawl에서 story-like style of Winograd schema와 일치하는 데이터만을 필터링(31GB)
3.3 Evaluation
이전 논문들을 따라서 pretrained 모델을 3개의 벤치마크에 대해서 평가를 진행
GLUE
- General Language Understanding Evaluation(GLUE) benchmark
- natural language understanding system을 평가하는 9개의 태스크로 구성된 벤치마크
SQuAD
- Stanford Question Answering Dataset(SQuAD)
- 본문과 질문으로 구성된 데이터셋
- 주어진 본문 내에서 질문에 대한 답을 찾는 태스크
- v1.1 : 본문에 항상 정답을 포함
- v2.0 : 본문에 정답이 없는 경우도 존재
RACE
- ReAding Comprehension from Examinations
- 대규모 질문-답변 데이터셋으로 28,000개의 passage와 거의 100,000개의 질문으로 구성.