본문 바로가기

학부/논문 리뷰

[RoBERTa: A Robustly Optimized BERT Pretraining Approach] 논문 리뷰

728x90
반응형

RoBERT 논문 발표자로 선정되어 발표 준비를 하면서 리뷰한 내용들을 공유하고자 합니다.

논문 순서대로 읽을 예정이며, 원본 링크는 아래에 있습니다.

https://arxiv.org/pdf/1907.11692.pdf

Abstract
  • Language Model (LM)은 많은 Performance의 gain이 있었지만, 여전히 task에 맞는 approach에는 조심스럽게 접근해야 한다.
  • BERT는 훌륭한 pre-training 모델이지만 학습을 significantly undertraining했으며 그 영향이 각 모델에 어떻게 작용했는 지 알 수 없다. 
  • 따라서 우리는 hyperparamter를 조정하고 학습 방식을 발전시켜 SOTA를 달성했다.

 

 

Introduction
  • Self-Training methods들은 상당한 Performance gain을 얻을 수 있다. (ELMo, GPT, BERT 등)
    • 하지만 어떤 측면이 성능을 향상시켰는 지 알아내기 어렵다. 
    • 분석하는 cost가 상당히 높다는 것을 의미하며, 이는 모델의 크기가 크고 parameter가 많기 때문이다.
  • 따라서 기존 BERT의 크게 4가지의 modification을 주어 RoBERT를 만들고자 하였다.
    • Training the model longer, with bigger batches, over more data
      • 더 많은 데이터와 더 큰 batch로 더 오래 학습
    • Removing the next sentence prediction objective
      • NSP 기능을 삭제
    • Training on longer sequences
      • 더 긴 시퀀스들을 사용하여 학습
    • Dynamically changing the masking pattern applied to the training data
      • 훈련 데이터에 masking pattern을 dynamic하게 변화

  • 따라서, RoBERTa가 기여하는 바는 다음과 같이 요약할 수 있다.
    • BERT의 중요한 Design 요소와 training strategies (학습 전략)을 소개하고, downstream task에서 좋은 성능을 보여주는 대안을 제시한다.
    • 새로운 데이터셋인 ‘CC-NEWS’를 사용하고, 사전학습에 더 많은 데이터를 사용하는 것이 downstream task에서 더 좋은 성능을 가진다는 것을 확인했다.
    • Mased LM pre training이 최근 다른 방법들과 비교해도 경쟁력이 있을 만큼 유용하다는 것을 보여준다.

 

Background

 

Setup

하나 이상의 문장으로 구성된 segment 2개와 special token들을 결합한 형태를 input으로 사용한다. 이 때, 두 문장의 토큰 개수는 최대 시퀀스 길이보다 작아야 한다. (N+M <T)

 

Special Token에는 [CLS], [SEP], [EOS] 등이 있다.

 

모델은 라벨링되지 않은 large text corpus로 먼저 pretrain되고, 그 이후에 end-task에 맞는 labeling data로 fine-tuning하는 형태로 사용된다.

Architecture

L개의 layer와 A개의 self-attention head, 그리고 hidden dimension, H를 가진 transformer architecture를 사용했다.

 

Training Objectives

Pretraining동안에는 BERT는 2가지의 objectives를 사용한다.

  • Masked Language Modeling
  • Next Sentence Predictions (NSP)
Optimization

BERT는 optimizer로 ‘Adam’을 사용한다.

해당 paramter들은 다음과 같이 설정하며, 처음 10,000 step부터 1e-4까지 올라갔다가 선형적으로 줄어드는 형태를 가지고 있다. 활성함수로는 GELU를 사용하고 있다.

 

Data

BERT는 English WIKIPEDIA 와 BOOKCORPUS를 결합한 총 16GB의 uncompressed text를 사용한다.

 

 

Experimental Setup

Implementation

FAIRSEQ에 있는 BERT의 코드를 활용하여 진행

  • Optimization
    • Peak Learning rate / Warmup steps 조정
    • 큰 batch size로 학습할 때, 안정성을 부여하기 위해 Beta = 0.98로 설정
    • 그 외에 다른 parameter들은 BERT의 optimization과 동일하게 설정
  • 시퀀스 최대 길이 T는 512로 설정
    • BERT와 다른 점은, 기존의 BERT는 길이를 줄여서 학습시키기다가 시퀀스 최대 길이를 점차 늘려갔는데 RoBERTa는 처음부터 끝까지 full-length(512)로 학습 진행
Data

BERT에서 더 많은 pretraining을 할수록, 더 좋은 성능을 얻을 수 있다는 것을 발견했다. 그래서 가능한 많은 데이터들을 모으려고 했으며 quality, quantation 부분에서 모두 향상된 데이터셋을 사용하고자 했다.

총 5개의 다른 size와 domain을 가진 corpus들을 사용했으며 총 약 160GB의 uncompressed text를 사용했다.

  • BOOKCORPUS + ENGLISH WIKIPEDIA → 기존 BERT의 pretraining dataset
  • CC-NEWS : CommonCrawl News의 영문 데이터들 사용, 6300만 개의 영어 기사를 필터링하여 76GB의 데이터 획득
  • OPENWEBTEXT : GPT 논문에 설명된 데이터 → 38GB
  • STORIES : CommonCrawl data에서 story-like style of Winograd schemas를 포함하는 데이터들을 사용 → 31GB

 

Evaluation

3개의 벤치마크에 대해서 평가를 진행했다.

  • GLUE
  • SQuAD
  • RACE

 

Training Procedure Analysis

BERT base와 동일하게 진행한다.

  • Layer = 12
  • Attention self head = 12
  • Hidden dimension = 768
  • 110M parameters
4.1 Static vs Dynamic Masking

BERT 는 randomly masking 방법을 사용한다. 이는 ‘single static mask’ 방법이며, 학습 과정에서 같은 mask를 여러번 볼 수 있다는 것을 의미한다.

Dynamic mask는 각 시퀀스를 입력할 때마다 마스킹 패턴을 생성하는 방법으로, 더 많은 step을 학습하거나 큰 데이터셋을 사용할 때 중요하다.

static한 masking method보다 dynamic masking method를 사용했을 때, 성능이 조금 더 향상한 모습을 확인할 수 있다.

 

4.2 Model Input Format and Next Sentence Prediction

BERT는 NSP를 활용하여 학습 과정을 진행했으나, 최근 논문들에서 NSP의 필요성에 대해 논란이 제기되고 있다. 따라서 NSP가 필요한지에 대한 타당성을 검증하기 위해 학습 데이터셋을 구성했다.

  • SEGMENT-PAIR : NSP 사용하며, 기존 BERT와 동일한 설정
  • SENTENCE-PAIR : NSP 사용하며, segment 쌍으로 구성된다.
  • FULL-SENTENCES : NSP 사용하지 않으며, 하나 이상의 문서에서 인접하게 샘플링된 full sentence로 1개의 문서에서 샘플링이 끝나면 그 다음 문서에서 다시 샘플링이 시작되는 방식이다.
  • DOC-SENTENCES : NSP를 사용하지 않으며, doc간의 boundary를 넘지 않는다는 점을 제외하면 Full-sentences와 똑같은 설정이다.

가장 먼저, NSP를 사용한 경우와 사용하지 않은 경우를 보면 사용하지 않았을 때 성능이 더 좋다는 것을 알 수 있다.

 

SENTENCE-PAIR와 SEGMENT-PAIR를 비교해보면, SEGMENT-PAIR가 더 성능이 좋다는 것을 알 수 있는데, 그 이유는 sentence-pair는 single sentence를 사용하여 long-range dependency를 capture할 수 없기 때문이다.

NSP를 사용하지 않을 때, 성능이 비슷하거나 조금 더 개선되었다는 것을 확인할 수 있다. 이 논문에서는 full-sentences 방법을 채택했다. 그 이유는 doc-sentences가 더 좋은 성능을 보이더라도 variable batch size를 사용해야 하기 때문에 실험을 더 쉽게 진행할 수 있도록 하기 위함이다.

 

4.3 Traning with large batches

BERT의 최근 연구에 따르면, 큰 Batch size로 학습하는 것이 성능 향상에 도움이 된다고 한다.

 

batch size를 256 → 2K로 늘렸을 때, 더 좋은 성능을 보여준다. ppl (perplexity)도 개선되었으며 해당 데이터셋들에 대한 정확도도 상승한 것을 확인할 수 있다.

 

4.4 Text Encoding (BPE : Byte Pair Encoding)

기존의 BERT와 동일하게 Byte-level BPE를 사용한다. 기존의 BERT는 Character-level의 BPE를 사용했으며 RoBERTa는 Large-Byte-level의 BPE를 사용한다.

  • BPE : 기존의 단어를 더 작은 단어로 분할하여 효과적으로 처리할 수 있도록 돕는 알고리즘

RoBERTa (Robustly optimized BERT approach)

기존 BERT와의 차이점은 다음과 같다.

  • Dynamic Masking
  • NSP 사용하지 않는 Full-Sentences 방법 채택
  • large mini-batch
  • Larger byte-level BPE

결과 분석은 다음과 같다.

가장 먼저, data 크기가 증가되는 것만으로도 성능이 좋아졌음을 확인할 수 있다.


그리고 사전학습 시간을 늘렸을 때도 성능이 더 좋아진 것을 확인할 수 있다. 


심지어 그보다 시간을 더 늘렸을 때도 성능이 좋아졌음을 확인할 수 있다.

그래서 결론적으로, 벤치마크에 대한 성능이 기존의 BERT Large 모델과 XLNet Large 모델보다 훨씬 향상했음을 확인할 수 있다. 

 

Conclusion

BERT 모델 사전 학습에 대한 design 요소들에 대해서 평가를 했으며, 더 나은 성능을 위한 전략들을 소개했다.

 

 

나의 생각

BERT에 대해 공부하기 시작한 지, 얼마 되지 않았으며 NLP의 기초를 이제 막 배우던 시기라 해당 논문이 잘 이해가 될 지 의문이었는데, 읽다보니 생각보다 술술 읽혀서 좋았다.

BERT가 등장하고, BERT에 대한 modification들을 바탕으로 SOTA들을 달성한 다른 모델들도 살펴보았을 때, 대부분

모델 자체의 변화보다는 pre-training과 fine-tuning에서의 변화가 많다는 것을 알게 되었다.

현재, NLP에서 추구하는 방향이 어떤지는 몰라도, ChatGPT에 사용되는 GPT 모델의 버전이 업그레이드 되면서 달라지는 부분들도 pre-training의 data 수가 늘어난다던지, layer가 늘어난다던지와 같이 모델의 크기를 키우는 것들이 변화의 대부분이라고 하는 것을 보면, NLP에서 데이터로만 성능을 향상시킬 수 있는 것인지,, 조금 더 획기적인 방법은 없는건지 궁금해졌다.

 

추후에 Byte pair encoding과 dynamic masking method, 그리고 학습 과정에서 사용되는 다양한 design 요소에 대해 공부를 하면 더 좋을 것 같다.

728x90
반응형