2020년 9월 24일 목요일

논문 설명 - RoBERTa : A Robustly Optimized BERT Pretraining Approach



논문 정보

Introduction
  • 이 논문은 BERT에 대한 replication study - 재현 연구 - 의 결과를 정리한 논문입니다.
  • 각 하이퍼 파라미터나 훈련 데이터의 크기 등이 성능에 어떤 영향을 미치는지를 평가했습니다.
  • 아직 BERT는 매우 undertrained 되어 있으며, 성능을 향상시킬 수 있는 법을 제안합니다.
    1. 더 오래, 배치 사이즈를 더 크게, 더 많은 데이터로 학습시킨다.
    2. Next Sentence Prediction loss를 없앤다.
    3. 더 긴 sequence로 학습한다.
    4. Masking을 매 번 바꾼다.
  • 이렇게 학습한 결과, GLUE와 SQuAD에서 더 좋은 성능을 얻었다고 합니다.

Experimental Setup

  1. Implementation
    • 대부분의 하이퍼 파라미터는 original BERT와 같게 했지만, peak learning rate과 warmup step 수를 변경하면서 실험했습니다.
    • 그리고 학습 결과가 Adam의 epsilon term에 굉장히 민감하며, 어떤 경우엔 더 좋은 성능을 얻거나 안정성이 향상됐습니다.
    • 그리고 배치 사이즈를 크게 할 때 beta2를 0.98로 하면 안정성이 늘어났습니다.
    • 또한 short sequence를 섞어서 학습하지 않았습니다.
    • Original BERT는 처음 90%의 학습을 짧은 sequence로 한 후에 긴 sequence로 학습했는데, 이와는 다르게 처음부터 끝까지 계속 full-length sequence로 학습했습니다.
  2. Data
    • BERT 형식의 모델들은 텍스트 데이터의 양이 많을 때 더 좋은 성능을 보였습니다.
    • 그래서 가능한 많은 데이터를 모으는 데 주력했습니다.
    • 사용한 데이터는 BookCorpus + Wikipedia - Original BERT에 사용된 데이터셋 2개, CC-News, OpenWebText, Stories로 총 160GB정도 입니다.
  3. Evaluation
    • GLUE, SQuAD, RACE task를 기준으로 평가했습니다.

Training Procedure Analysis

  1. Static vs. Dynamic Masking
    • 기존의 BERT는 preprocessing 단계에서 masking을 수행하여, 학습 단계에서 계속 같은 masking 데이터를 보게 됩니다.
    • 그래서 데이터를 10배로 복제해 매번 다른 masking을 갖도록 보완했습니다. 이 학습은 40 epoch만큼 수행됐습니다(Static masking 방법).
    • 또다른 방법으로 매번 데이터를 학습할 때마다 masking을 다르게 했습니다(Dynamic masking 방법).
    • 실험 결과 Dynamic이 조금... 더 좋다고 불 수 있습니다.
  2. Model Input Format and Next Sentence Prediction
    • 기존 BERT에서는 50%의 확률로 같은 문서에 속하지 않은 2 개의 입력이 들어왔고, 그것을 판별하는 Next Sentence Prediction loss가 있었습니다.
    • 하지만 이 loss의 효과에 대해 의문이 제기되었고,여러 방식으로 실험했습니다.
    • Segment-pair : 기존 BERT와 동일
    • Sentence-pair : segment가 아닌 sentence 단위. Sentence가 segment보다 짧으므로 배치 사이즈를 늘립니다.
    • Full-sentences : 항상 여러 개의 연속된 full sentence들을 입력으로 사용하여 document가 넘어가는 경우도 있습니다. 이 경우 중간에 separator token을 넣는다. 입력 데이터에서 알 수 있듯이 NSP가 없습니다.
    • Doc-sentences : Full-sentences와 거의 동일하지만 document를 넘어가는 경우가 없으며 이 때 입력이 짧아지는 만큼 배치 사이즈를 늘립니다. 역시 NSP가 없습니다.
    • Sentence-pair는 긴 상관관계를 찾지 못해 결과가 나빠진 것으로 보입니다. Full-sentence 결과를 보면 NSP가 없이 연속된 문장으로 학습하는 게 좋아 보입니다. 아마 BERT에서는 두개의 segment를 입력한 상태에서 NSP를 없앤 것 같습니다. 최종적으로 Doc-sentence의 결과가 가장 좋습니다. 하지만 배치 사이즈가 유동적이기에 앞으로 실험은 Full-sentence 방식으로 진행합니다.
  3. Training with large batches
    • 배치 사이즈가 크면 더 좋다(고 하는데, 8k가 2k보다 좋지는 않은 것 같습니다).
  4. Text encoding
    • GPT 방식인 byte 단위 subword vocabulary를 사용하여 BERT를 학습했습니다.
    • 그 결과 vocabulary 사이즈가 30k(BERT)에서 50k로 커졌으며, "unknown" 토큰 없이 인코딩이 가능해졌습니다.
    • 그만큼 파라미터는 15M개 늘어납니다(BERT-base).

RoBERTa
  • 같은 양의 데이터(3G 차이 나긴 하는데...)로 실험했을 때, 배치 사이즈가 커야 성능이 더 좋았습니다.
  • 그 외에, 더 많은 데이터로, 더 오래 학습했을 때 결과가 계속 좋아졌습니다.


끄읕...

댓글 없음:

댓글 쓰기