일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- CommunicateWiththeWorld
- 강동구장어맛집
- #nlp
- Ringle
- 총각네장어
- 링글
- #영어공부
- 영어로전세계와소통하기
- 소통챌린지
- 뉴노멀챌린지
- 링글경험담
- 영어공부
- 영어공부법
- 스몰토크
- 해외취업컨퍼런스
- #링글
- #링글후기
- 성내동장어
- 링글커리어
- 오피스밋업
- #Ringle
- 영어회화
- #체험수업
- 화상영어
- #직장인영어
- 장어랑고기같이
- 링글리뷰
- #영어발음교정
- 영어시험
- 둔촌역장어
- Today
- Total
Soohyun’s Machine-learning
[NLP] RoBERTa : A Robustly Optimized BERT Pretraining Approach 본문
[NLP] RoBERTa : A Robustly Optimized BERT Pretraining Approach
Alex_Rose 2021. 10. 2. 02:17BERT가 충분하게 트레이닝되지 않았다-고 주장하고 시작한다.
RoBERTa의 contribution |
1) 더 나은 downstream task 성능을 낼 수 있는, BERT의 디자인 선택 (design choices), 그리고 트레이닝 전략 (training strategies)을 제시
2) CC-NEWS라는 새로운 데이터셋을 사용, 또한 사전학습(pretraining)에서 더 많은 데이터를 사용하는 것이 downstream tasks에서의 성능을 향상시키는 걸 확인
3) 트레이닝 향상은 masked language modeling이 올바르게 디자인 된 조건하에서, 최근에 발표된 방법들에 비견할만 함
RoBERTa (로베르타)의 특징 == 오리지널 BERT와의 차이점 |
1) dymanic masking (오리지널 BERT의 masking은 STATIC으로 분류) mask의 position이 다이나믹하게 변경
2) FULL-SENTENCES (Next Sentence Prediction 목적함수 삭제) 중간에 짧은 길이의 sequence가 들어가는 일 없이, 오로지 full max-length 512 tokens로만 학습을 진행
3) 큰 미니배치 (더 많은 데이터 (160BG)로, 더 큰 배치 사이즈로, 더 오랜 steps 동안 트레이닝)
4) 큰 byte-level Byte Pair Encoding
여기에 추가로 이전 작업들에서 덜 강조된 것 같은 팩터들을 체크했다.
1) pretraining을 위해서 사용된 데이터
2) 데이터를 지나는 training pass의 횟수
RoBERTa를 길게 트레이닝 시킨 (pretraining step을 100K에서 300K로, 더 나아가 500K로 트레이닝), 특히 300K와 500K 모델들은 XLNet(large)를 대부분의 태스크들에서 outperform했다. (그럼에도 160GB 데이터에 대해 overfit된 모습은 없었어서, 더 트레이닝하면 성능 향상이 더 있을 수도 있다)
BERT (base) |
1) BERT의 input : 두 개의 segments (a sequence of tokens)를 붙인 것을 입력으로 받음
[x1, ... ,xn]과 [y1, ... ,ym]의 concatenate. 연결이 완료된 input의 모습은 하단의 그림과 같다
[CLS] task-specific 정보
[SEP] 토큰 X와 Y를 구분함
[SEP] 토큰 X와 Y의 끝을 알려줌
[MASK] 모델이 예측할 마스크 토큰
여기서 앞의 X의 길이 N과 Y의 길이 M을 합한 것은 전체 길이 512 보다 작아야 한다. N + M < T
(T는 512)
2) L개의 트랜스포머 (Attention is all you need) 아키텍쳐를 사용했고, 각 트랜스포머 블록은 A개의 Selt-Attention 헤드와 H개의 Hidden dimension을 사용했다.
BERT base : L (layer) = 12, H (hidden dim) = 768, A (selt-attention head) = 12, Parameters = 110M
BERT large : L layer = 24, H (hidden dim) = 1024, A (selt-attention head) = 16, Parameters = 340M
3) BERT는 2개의 training objectives를 사용했다.
Masked Language Model (MLM)
- input으로 들어온 토큰 중 15%를 uniform하게 선택하고, 그 (15%의 선택된) 토큰 중에서 80%를 스페셜 토큰 [MASK]로 대체했다. 10%는 바꾸지 않고 그대로 두었으며, 나머지 10%는 vocab에서 랜덤하게 선택한 단어로 바꾸었다.
- MLM의 objective는 예측한 masked tokens의 cross-entropy loss이다.
Next Sentence Prediction (NSP)
- 두 개의 segments가 이어지는지 아닌지를 예측하기 위한 binary classification loss이다.
- positive samples는 동일한 문서에서 이어지는 문장들로 얻을 수 있고, negative samples는 서로 다른 문서에서 문장을 골라 페어링하는 것으로 얻을 수 있다. 각각 샘플은 0.5의 동일한 확률로 샘플링된다.
최적화 (Optimization) |
1) Adam Optimizer : β1 = 0.9 / β2 = 0.999 / ε = 1e-6
2) L2 weight decay : 0.01
3) learning rate는 10,000 스텝동안 피크값인 1e-4까지 갔다가, 그 다음에 선형으로 decay
4) 모든 레이어에 0.1의 dropout을 적용. attention weight도 씀
5) GELU 함수를 씀
6) 모델은 최대 길이 T = 512 토큰의, B = 256 미니배치로, S = 100만 업데이트로 pretraining 했다
+ Adam optim에서 epsilon tem에 트레이닝이 민감하게 반응했다.
큰 미니배치 사이즈로 트레이닝을 할 때, β2를 0.98로 하는 것이 안정성이 높았다.
데이터 (Data) |
1) BOOK CORPUS + 영어 위키피디아 (16GB) -- BERT
2) CC-News (common crawl news, 76GB)
3) Open Web Text (38GB)
4) Stories (31GB)
오리지널 BERT는 1)번만 사용했지만, RoBERTa는 160GB 가량의 데이터를 사용
Static vs. Dynamic masking |
오리지널 BERT는 전처리 단계에서 랜덤 마스킹을 1번만 했는데, 이를 static이라 부른다.
- 각 epoch마다 동일한 마스크를 사용하는 걸 피하려고, 트레이닝 데이터를 10배 복제한 다음, 다른 마스킹을 적용해서 트레이닝 40 epochs를 돌림
dynamic masking은 모델에 input을 feed 할 때마다, 매번 masking pattern을 생성한다.
Static과 Dynamic masking을 적용한 것을 3개의 데이터셋에 대해서 비교를 해봤다.
static은 오리지널 BERT와 비슷한 성능을 보였고, dynamic은 오리지널과 비슷하거나 약간 더 나은 성능을 보였다.
Model Input format and Next Sentence Prediction (NSP) |
오리지널 BERT의 pretraining 과정에서는 input으로 들어온 두 개의 segments가 같은 문서에서 샘플링된 것인지 아닌지를 판단한다. Masked Language Modeling은 이걸 확인하기 위해서 Next Sentence Prediction loss를 사용한다.
하지만 이 NSP가 퍼포먼스에 영향을 준다는 말들도 있어서, 이를 확인해 보았다.
With NSP
SEGMENTS-PAIR : 오리지널 BERT에서 쓴 것. 512 토큰보다 작은 사이즈의 문장을 input으로 한다.
SENTENCE-PAIR : 샘플은 하나의 문서에서 연속되는 문장이거나, 서로 다른 문서에서 온 것이다.
문장이 512보다 너무 짧아서, 배치 사이즈를 늘려서 SEGMENT-PAIR와 비슷한 토큰 개수를 유지
Without NSP
FULL-SENTENCES : input은 하나 또는 다른 문서에서 온 문장들이며, 하나의 문장이 그 문서의 마지막 문장일 경우, 다른 문서에서 샘플링을 했다.
DOC-SENTENCES : input이 이전의 FULL-SENTENCES와 비슷하지만, 오로지 하나의 문서에서만 두 개의 sentences를 샘플링 했다. 다만 문서 끝에 있는 샘플이 512보다 작을 수 있어서, 유동적으로 배치 사이즈를 늘려서 FULL-SENTENCES와 전체 토큰 개수를 비슷하게 유지함
위의 테이블 2에서 결과를 볼 수 있다.
- SENTENCE-PAIR는 개별 문장(single sentence)을 썼는데, 이게 다운스트림 태스크에서의 퍼포먼스를 떨어트림
(그 이유를, 모델이 long-dependencies를 못 배우기 때문이라고 생각)
- Next Sentence Prediction을 없애니 오리지널 BERT와 비슷하거나 약간 더 나은 성능을 낸다는 걸 볼 수 있다.
- DOC-SENTENCES가 FULL-SENTENCES보다 약간 더 나은 성능을 내고 있음도 볼 수 있다.
- 그럼에도, DOC-SENTENCES는 가변적인 배치사이즈를 요구하므로, 쉬운 비교를 위해서 이후 실험에서는 FULL-SENTENCES를 썼다
Large Batches로 트레이닝하기 |
오리지널 BERT(base)는 256 sequence의 배치 사이즈로 100만 스텝을 트레이닝했는데, 이는 gradient accumulation을 통해, 12만 5천 스텝을 2000 sequences의 배치 사이즈로 트레이닝 한 것, 또는 8000의 배치 사이즈로 31,000 스텝의 트레이닝을 한 것과 computational cost 측면에서 동일함.
(즉, batch size (bsz)는 늘렸지만, 전체적인 computational cost는 오리지널 BERT와 비슷하게 유지했다)
위의 테이블 3를 보면 배치 사이즈(bsz)를 크게 한 것이 MLM objective의 PPL과 end-task accuracy를 향상시킴을 알 수 있음
Text Encoding |
GPT2 논문에서 BPE (Byte Pair Encoding)을 유니코드 대신에 bytes를 사용했다.
오리지널 BERT에서는 character-level BPE vocab (30K)을 사용했지만,
우린 GPT2를 따라 BERT를 더 큰 byte-level BPE vocab (50K subword units)으로 트레이닝 시켰다.
(이 때문에 BERT(base)는 15M의, BERT(large)는 20M의 추가 파라미터가 생겼다)
BPE가 GPT2에서 약간 안 좋은 end-task performance를 보여주기도 했으나, universal encoding scheme으로 인한 이득이 퍼포먼스의 약간의 하락보다 낫다고 판단하여, 다른 실험에서 이 BPE를 사용했다.
결과 |
아래 테이블 5는 GLUE의 9개 데이터셋에 대한 성능 체크이다.
1) MNLI (Multi-Genre Natural Language Inference) : 이 문장 다음 문장이 이어지는 문장인지, 반대되는지, 서로 관련이 없는지를 체크
2) QNLI (Question Natural Language Inference) : 질의응답
3) QQP (Quora Question Pairs) : 두 질문이 의미상 같은지 다른지 분류
4) RTE (Recognizing Textual Entailment) : MNLI와 비슷하지만 양이 적음
5) SST (The Stanford Sentiment Treebank) : 영화 리뷰 감정 분류
6) MRPC (Microsoft Research Paraphrase Corpus) : 뉴스와 사람이 만든 문장이 같은 뜻인지 아닌지
7) CoLA (The Corpus of Linguistic Acceptability) : 문법이 맞는지 틀린지 분류
8) STS (The Semantic Textual Similarity Benchmark) : 뉴스 헤드라인과 사람이 쓴 패러프레이징 문장이 같은지 아닌지
9) WNLI (Winograd NLI) : 문장 분류
EM : Exact Match score
F1 : F1 score
'Review of Papers' 카테고리의 다른 글
[NLP] Character-Aware Neural Language Models (0) | 2021.12.05 |
---|---|
[NLP][GPT3] Language Models are Few-Shot Learners (0) | 2021.08.07 |
[Tabular] TabNet : Attentive Interpretable Tabular Learning (0) | 2021.06.02 |
[NLP] Character-Aware Neural Language Models (0) | 2019.10.29 |
[NLP] Convolutional Neural Networs for Sentence Classification (0) | 2019.07.05 |