subinium/Deep-Papers

RoBERTa: A Robustly Optimized BERT Pretraining Approach

subinium opened this issue · 3 comments

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보다는 안좋은 성적이 나왔는데 이는 데이터셋 크기 차이.
  • 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을 위해 사용

ETC

  • 최근 읽은 논문들은 연구의 매력이 느껴진다.
    • Google의 BERT(#4)에 대한 후속 연구를 Facebook에서 우리가 더 잘함!같은 경쟁
    • Transformer-XL을 리젝 당하고 보충해서 XLNet을 만드는 칠전팔기의 의지
    • 난 이런 연구자가 될 수 있을까.
  • 논문 목차가 뭔가 이상하다고 느낀다.
    • (4. Training Procedure Analysis)로 다 이야기하고 (5. RoBERTa)라는 이름으로 그래서 우리가 만든게 RoBERTa야! 라고 하는데.
    • RoBERTa가 우리가 만든거고, 이런 장점이 있어~ 가 일반적이지 않나
    • Facebook 논문의 서술은 뭔가 묘하게 나랑 안맞는 것 같기도 (아직 내가 부족해서 그런걸로)

도움되는 자료