BERT를 Robust 하게 최적화하는 방법에 대해서 논의해보려고 합니다. 정말 사랑받는 모델인 BERT이지만, 학습하는데 많은 시간과 돈이 들었는데, 정말 hyperparameter가 잘 최적화가 되었는가에 대한 의문으로부터 출발합니다.
1. RoBERTa vs BERT
- BERT보다 10배 이상 더 많은 데이터를 더 오래오래 학습시켰습니다.
- 안그래도 말 많은 NSP task, 불필요하다고 판단하여 제거를 하였습니다.
- 모든 샘플들에 대해 Max sequence length를 512로 맞춰서 구성하였습니다. 길게 길게 입력을 주었습니다.
- 기존 BERT에서는 Pretrain 데이터에 대해서 masking을 정적으로 해놓고 들어가는데(한번 빈칸 뚫고 그냥 쭈욱 진행했다는 점), RoBERTa는 동적으로 masking 하는 패턴을 바꾸어 학습을 시킵니다.
2. Results
- static보다 dynamic하게 masking 했을 때 성능이 크게 오른 건 아니지만 개선이 있었습니다.
- 미니배치 사이즈와 Step size도 크면 클수록 좋았다는 것을 알 수 있습니다.
- max sequence length를 512로 fix 하고 NSP가 있는지 없는지 비교를 해봤을 때, NSP 안 써도(2번째 without NSP loss) 성능이 비슷하거나 더 좋았다는 것을 알 수 있습니다. (with NSP loss에서 SEGMENT-PAIR 부분이 기존 BERT입니다.)
- 데이터 셋과 학습 기간에 대한 비교표입니다. BERT(18.10), XLNET(19.06) 보다 더 좋은 성능을 나타났음을 알 수 있습니다. BERT보다 훨씬 복잡한 XLNET보다 더 간단하고 좋은 방법이 RoBERTa임을 알 수 있습니다.
3. 정리
BERT이후에 여러 논문이 나왔지만, 기존 BERT는 Underfitting 된 모델이며 더 최적화가 필요하다 여겼습니다. 아래 방법을 고안을 한 것이 RoBERTa입니다.
① Masking을 Dynamic 하게 구성하여 MLM Task의 성능을 올린다.
② NSP Task 제거하고 더 긴 문장으로 학습한다.
③ 더 많은 데이터, 더 큰 배치, 길이 확장하면 성능이 오른다.
충분히 BERT 사상에서 방법을 조금 바꾸어서 좋은 성능을 낼 수 있다는 이야기입니다. 충분히 여러 다른 PLM모델들도 많이 있지만, 더 복잡하거나 더 많은 데이터를 부어서 나타난 결과이지만 가성비 측면에서는 좋지 않습니다. 가성비가 최고라고 할 수 있는 것이 RoBERTa라고 할 수 있습니다. 다음 시간에는 BART에 대해서 이야기해보겠습니다.
'AI > NLP' 카테고리의 다른 글
오프라인(인터넷이 안되는)환경에서 Pre-trained Language Model 모델 부르기 with PORORO (0) | 2022.04.02 |
---|---|
Pretrained Language Model - 14. BART (0) | 2021.11.11 |
Pretrained Language Model - 12. BERT (0) | 2021.11.02 |
Pretrained Language Model - 11. GPT (0) | 2021.10.31 |
Pretrained Language Model - 10. Tokenization (0) | 2021.10.31 |