RoBERTa: A Robustly Optimized BERT Pretraining Approach
subinium opened this issue · 3 comments
subinium commented
- https://arxiv.org/abs/1907.11692
- RoBERTa
subinium commented
Introduction
- 초록만 읽어도 짜릿하다.
- BERT는 Undertrain 되어있다!. 후속연구는 실험 시간/리소스 소요로 엄밀한 비교가 어려움
- Hyperparameter의 선택을 통해 성능을 높일 수 있음
- Hyperparameter의 영향을 분석!
BERT vs RoBERTa
- Peak Learning rate/ warm up step 조정
- Adam beta_2 : 0.999 -> 0.98 (stable at large batch)
- Sequence Length
- BERT : pretrain에서 90%(길이 128, 256) 마지막 10%(길이512)
- RoBERTa : 처음부터 길이 512 tokens
- Dataset Size : 16GB -> 160GB
- Dynamic Masking
- 기존 동일한 masking 대신 epoch마다 다른 mask
- 더 큰 데이터일수록 중요
- NSP 제거 (Next Sentence Prediction)
- 기존 실험은 segment pair를 사용하며 NSP loss 사용 여부로 NSP의 유용성을 증명
- NSP를 안쓰면 segment pair도 쓰면 안되는거지! 주장(다양한 입력을 쓰자)
- 4가지 Input
- Segment-Pair : BERT와 동일
- Sentence-Pair : Segment가 문장 단위, batch를 늘려 optimize 토큰 수 조정
- Full Sentences : 문서 이어 붙여서 사용
- Doc Sentences : 한 문서씩 사용. batch size를 dynamic하게 하여 길이 맞춤
- 입력 다양하게 해보니 NSP 제거 했을 때 더 좋음
- Doc 방식이 제일 좋았으나 batch size 조정이 까다로워 Full 방식 사용
- XLNet보다는 안좋은 성적이 나왔는데 이는 데이터셋 크기 차이.
- 기존 실험은 segment pair를 사용하며 NSP loss 사용 여부로 NSP의 유용성을 증명
- Batch Size 조정
- 256, 2K, 8K 시 2K에 가장 좋은 성능 (perplexity와 downstream task)
- 32k에서 한 논문도 있다.
- 이 논문의 핵심은 LAMB optimizer인데 (LARS와 유사)
- RoBERTa도 Large Batch에 대해 이를 사용했으면 더 좋은 성능이 나오지 않았을까?
- Text Encoding을 character-level BPE -> byte-level BPE
- 근데 사전 연구에서 byte BPE 사용하면 성능이 떨어지나 universal encoding을 위해 사용
subinium commented
ETC
- 최근 읽은 논문들은 연구의 매력이 느껴진다.
- 논문 목차가 뭔가 이상하다고 느낀다.
- (4. Training Procedure Analysis)로 다 이야기하고 (5. RoBERTa)라는 이름으로 그래서 우리가 만든게 RoBERTa야! 라고 하는데.
- RoBERTa가 우리가 만든거고, 이런 장점이 있어~ 가 일반적이지 않나
- Facebook 논문의 서술은 뭔가 묘하게 나랑 안맞는 것 같기도 (아직 내가 부족해서 그런걸로)
subinium commented