새소식

딥러닝(Deep Learning)/모델(Model)

RoBERTa : A Robustly Optimized BERT Pretraining Approach 정리 및 이해

  • -

1. RoBERTa란?

RoBERTa는 기존 BERT 모델의 성능을 더욱 높인 모델로써 BERT모델의 구조는 그대로 유지한 채 약간의 training objective와 hyperparameter를 수정하여 모델의 성능을 향상했습니다. RoBERTa 연구진들은 BERT 모델은 상당히 '덜' 훈련되었다고 언급하며 몇 가지 개선사항을 추가한 RoBERTa 모델을 제안하였습니다.

We find that BERT was significantly undertrained and propose an improved recipe for training BERT models, which we call RoBERTa, that can match or exceed the performance of all of the post-BERT methods.

 

RoBERTa는 BERT에서 수행한 GLUE task 외에도 SQuAD와 RACE task에서도 타 모델 대비 더욱 높은 성능을 내는 것으로 확인되었습니다. 

2. RoBERTa의 특징

 

RoBERTa는 기존 BERT에서 몇가지 수정사항을 포함한 모델로써 연구진들이 제시하는 방법은 다음과 같습니다.

 

  • Training the model longer, with bigger batches, more data
    - 더 많은 데이터와 함께 더욱 커진 배치로 더 오래 학습
  • Removing the next sentence prediction objective
    - NSP(Next sentence prediction) task를 삭제
  • Training on longer sequences
    더욱 긴 sequence로 학습
  • Dynamically changing the masking pattern applied to the training data
    -학습 데이터에 Dynamic masking을 적용

 

2.1. Training the model longer, with bigger batches, more data

 

신경망 기계 번역 분야의 과거 연구에서는 매우 큰 mini-batch로 훈련하는 것이 적절한 learning rate 조정과 함께 진행될 때 최적화 속도와 최종 작업 성능(end task performance)을 모두 향상할 수 있다는 것을 보여주었습니다. 기존 \(BERT_{BASE}\)는 batch size를 256으로 설정하고 pre-training step을 1M, 그리고 learning ratefmf 1e-4로 설정하였습니다.

We train with batch size of 256 sequences (256 sequences * 512 tokens = 128,000 tokens/batch) for 1,000,000 steps, which is approximately 40 epochs over the 3.3 billion word corp (BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, Devlin et al.)

 

이를 gradient accumulation을 통해 계산 비용 측면에서 계산하면 batch size = 2K, training step = 125K로 학습 한것과, batch size = 8K, training step =31K로 학습한 것과 거의 동일한 효과를 나타냅니다.

 

batch size 및 training step에 따른 PPL/performance

 

저자들은 batch_size를 늘려가면서 실험한 결과, batch size가 커질수록 모델이 더욱 높은 성능을 가짐을 확인하였습니다. RoBERTa 모델은 이러한 결과를 이용하여 batch size를 8K로 설정하여 pre-training을 진행했습니다.

2.2. Removing the next sentence prediction objective

 

NSP task는 모델 학습 시 2개의 입력 문장의 앞 뒤 순서를 맞추는 task로써, BERT 논문에서는 Ablation study를 통해 NSP를 사용하지 않으면 SQuAD 1.1. / MNIL 등의 task에서 모델의 성능을 실제로 저해시킨다고 설명합니다. 이를 통해 BERT 논문에서는 NSP가 문장의 앞 뒤 관계를 파악하는 것이 QA와 NLI에서 큰 이점이 있다고 주장합니다. 하지만 RoBERTa 연구진들은 NSP가 정말 모델에 필요한지 의문을 제기합니다. 저자들은 다음 4가지 형식의 학습을 정의하고 각각의 end-task performance를 측정하였습니다.

  1. SEGMENT-PAIR+NSP
    2개의 segment 쌍을 입력으로 넣은 경우(최대 입력 길이는 512 token 이하로 설정)
  2. SENTENCE-PAIR+NSP
    2개의 sentence 쌍을 입력으로 넣은 경우(최대 입력 길이는 512 token 이하로 설정)
  3. FULL-SENTENCES
    하나 혹은 둘 이상의 문서에서 샘플링한 하나의 완전한 문장
    단, 입력 시퀀스의 길이를 512로 맞추기 위해 문서를 넘어갈 수 있음
    NSP loss는 제외
  4. DOC-SENTENCES
    하나 혹은 둘 이상의 문서에서 샘플링한 하나의 완전한 문장
    단, 입력 시퀀스의 길이를 512로 맞추기 위해 문서를 넘어갈 수 없음
    문서의 끝쪽은 짧기 때문에 512로 못맞춤 -> batch size를 dynamically 하게 늘려서 실험을 진행
    NSP loss는 제외

Development set results for base models pretrained over BOOKCORPUS and WIKIPEDIA.

 

 

1. SEGMENT-PAIR+NSP vs SENTENCE-PAIR+NSP

SEGMENT-PAIR과 SENTENCE-PAIR는 둘 다 NSP loss를 사용하지만, SENTENCE-PAIR+NSP의 경우가 성능이 낮음을 알 수 있습니다. 이는 SENTENCE-PAIR+NSP의 경우, 입력으로 들어가는 문장 쌍이 완전한 하나의 문장으로 들어가기 때문에 BERT 모델이 장거리 의존성을 학습하지 못했다고 생각합니다.

 

2. FULL-SENTENCES vs DOC-SENTENCES

다음으로 NSP를 사용하지 않는 FULL-SENTENCE와 DOC-SENTENCES를 살펴보면, 기존 \(BERT_{BASE}\) 보다 end-task performance가 약간 더 높음을 볼 수 있습니다. 이 결과로 NSP를 제거하는 것이 모델의 downstream performance에 긍정적인 영향을 끼친다고 볼 수 있으며 기존 BERT연구진들이 수행했던 결과와는 상반됩니다. 저자들은 BERT연구진들이 Ablation study 중 NSP loss를 없앨 때 입력을 그대로 SEGMENT-PAIR로 그대로 유지하고 실험했기 때문에 그와 같은 결과가 나왔을 거라고 추측합니다. 

 

3. 결론

FULL-SENTENCES와 DOC-SENTENCES를 살펴보면 DOC-SENTENCES의 성능이 조금 더 높게 나오지만, DOC-SENTENC는 batch size가 변하기 때문에 연구의 비교를 위해 FULL-SENTENCES를 사용합니다.

 

2.3. Training on longer sequences(Text Encoding)

Bype Pair Encoding(BPE)는 거대한 코퍼스를 처리할 수 있는 방법입니다. GPT에서 사용한 것과 마찬가지로 Unknown token을 사용하지 않고 모든 문자를 표현할 수 있습니다. BERT에서 사용한 WordPiece와는 다르게 BPE를 사용하였기 때문에 추가적인 vocab으로 \(BERT_{BASE}\)와 \(BERT_{LARGE}\)를 학습하였습니다. 실제로 Wordpiece를 사용하였을 때보다 성능이 약간 낮아졌지만, Unknown Token을 따로 처리하지 않아도 된다는 점과 함께 일반적인 인코딩의 장점들이 성능을 더욱 높게 평가하여 RoBERTa에서는 BPE를 사용합니다.

2.4. Dynamically changing the masking pattern applied to the training data

BERT의 특징 중 하나는 MaskedLM task를 수행한다는 점입니다. MaskedLM은 일부 토큰을 [MASK] token으로 가리거나 다른 토큰으로 바꾸는 작업입니다. BERT의 pre-training 단계의 각 epoch에서 매번 같은 mask를 보여주지 않기 위해 훈련데이터를 10배로 복사하여 각 데이터마다 다른 마스킹을 적용하였습니다. 40 epoch 동안 10가지의 서로 다른 마스킹을 학습하였으므로, 동일한 mask를 4번 학습했다고 볼 수 있습니다.

RoBERTa는 이와는 다르게 모델에 시퀀스를 입력할 때마다 새로운 masking pattern을 적용하는 방식을 채택하였습니다. 저자들은 이러한 방식을 Dynamic masking이라고 부릅니다.

Comparison between static and dynamic masking

기존 BERT에서 사용한 static masking과 저자들이 제안한 dynamic masking을 적용한 결과, 저자들이 제안하는 dynamic masking을 사용하였을 때 모델의 성능이 BERT와 거의 비슷하거나 소폭 상승하는 모습을 확인할 수 있습니다. 따라서 저자들은 RoBERTa에  dynamic masking을 적용합니다.

3. Performance of RoBERTa model

연구진들은 이전 연구에서 덜 강조된 2가지 중요한 요소들에 대해서도 조사했습니다.

1. 얼마나 많은 데이터를  사전학습에 사용해야 하는가?

2. 데이터를 이용하여 얼마나 학습해야 하는가?

 

연구진들은 비교 대상으로 BERT와 XLNET을 선정하였습니다. XLNET은 BERT보다 거의 10배 많은 데이터를 사전학습에 사용하였으며, batch size도 거의 8배로 크며, 반면 trainging step은 절반밖에 줄지 않았으므로 기존 BERT 대비 4배 더 많은 시퀀스를 학습했습니다. 결국 XLNET은 기존 BERT보다 더욱 많이 학습해서 성능이 좋다고 결론을 낼 수 있습니다. 

RoBERTa도 이러한 부분에 초점을 맞추어서 더 많은 data, 더 커진 batch size로 학습을 진행하였습니다.

Development set results for RoBERTa as we pretrain over more data (16GB → 160GB of text) and pretrain for longer (100K → 300K → 500K steps)

 

비교를 위해 더 많은 데이터를 추가하고, training step을 늘려가면서 실험을 진행하였습니다. 실험 결과 데이터를 추가한 경우가 성능이 더 좋았음을 확인하였습니다. 또한 타 모델과 같이 training step을 더 늘렸을 때 성능이 계속 올라가는 모습을 확인하였습니다. 따라서 pretraining시 다양하면서 많은 데이터의 중요성을 강조하였으며, 더욱 오래 학습하는 것이 성능 향상에 이점이 있음을 확인하였습니다. 또한 RoBERTa는 training step이 500K인 경우에서도 성능이 계속 올라갔으므로 아직 overfitting 되지 않았다고 주장합니다.

이후 GLUE task 및 SQuAD 그리고 RACE task에 비교로 사용하는 모델은 training step 500K 모델을 기준으로 비교합니다.

Results on GLUE

 

GLUE task에서도 타 모델 대비 RoBERTa가 대부분의 task에서 가장 좋은 모습을 보여주었습니다.

SQuAD / RACE task

 

마찬가지로 SQuAD와 RACE task에서도 RoBERTa 모델이 가장 좋은 performance를 보여주었습니다.

 

4. 후기

RoBERTa 모델은 BERT모델이 추가적인 모델의 구조 변화 없이 데이터의 추가 및 더욱 오래 학습하는 것이 모델의 성능을 올릴 수 있음을 증명하였습니다. XLNET은 BERT와는 좀 다르지만, RoBERTa와 마찬가지로 많은 양의 데이터와 더욱 큰 batchsize 그리고 더욱 오래 학습을 진행하였습니다. 최근 많은 논문들이 대량의 데이터와 더욱 오래 학습하는것이 모델 성능과 관련이 있다는 것을 보여주고 있습니다. 하지만, 모델이 너무 크게 되면 실제로 활용할 때 상당한 제약이 따르게 됩니다. 이를 해결하기 위해 많은 연구가 또 진행되었으며 대표적인 모델이라고 생각하는 모델은 ALBERT와 DistilBERT라고 생각합니다. 두 모델은 BERT 모델의 경량화 버전으로써 더욱 적은 Computation cost를 자랑합니다. 다음 포스트에서는 이 두 가지 모델에 대해 정리해보려고 합니다.

Contents

포스팅 주소를 복사했습니다!

이 글이 도움이 되었다면 공감 부탁드립니다!