논문 링크: https://arxiv.org/abs/1907.11692
RoBERTa: A Robustly Optimized BERT Pretraining Approach
Language model pretraining has led to significant performance gains but careful comparison between different approaches is challenging. Training is computationally expensive, often done on private datasets of different sizes, and, as we will show, hyperpar
arxiv.org
한 줄 정리
- BERT 구조는 그대로 유지하면서 학습 방식만 개선하여 더 강력한 성능을 달성한 모델
- BERT의 사전 학습 방식을 최적화하여 성능 향상
- 더 많은 데이터와 더 긴 학습 시간 사용 (최대 500K step)
- 더 큰 배치 크기 적용 (8K 이상)
- 다음 문장 예측(NSP) 제거 → 성능 향상 확인
- 동적 마스킹(Dynamic Masking) 적용 → 학습 다양성 증가
- 더 긴 입력 시퀀스 활용 (최대 512 토큰 유지)
- Multi-task fine-tuning 없이도 최고 성능을 기록
Abstract
Language model pretraining은 성능을 향상시켰지만 서로 다른 접근 방식을 비교하는 것은 어려운 과제가 되었다. 특히 RoBERTa는 하이퍼파라미터 선택이 최종 결과에 큰 영향을 줌을 밝혔다.
본 논문에서는 BERT의 사전학습에 대한 복제 연구(replication study)를 수행해 여러 주요 하이퍼파라미터와 학습 데이터 크기가 미치는 영향을 측정했다. 그 결과 BERT는 상당히 과소 학습(undertrained) 되었으며 이후 발표된 모든 모델의 성능을 맞추거나 초과할 수 있음을 발견했다.
RoBERTa는 GLUE, RACE, SQuAD 벤치마크에서 최신(state-of-the-art, SOTA) 성능을 달성했다. 이러한 결과는 이전에 간과되었던 설계 선택(design choices)의 중요성을 강조하며 최근 보고된 성능 향상의 근원이 무엇인지에 대한 의문을 제기한다. 기존 발표되었던 AI 모델들이 성능을 개선했다고 하는데 이 향상의 원인이 정말 모델 구조의 발전 때문인지 아니면 단순히 하이퍼파라미터 조정이나 학습량 증가 때문인지 의문을 제기하는 것이다. 즉, 구조적으로 진짜 발전한 것인지 아니면 단순히 더 잘 학습시킨 것인지 따져봐야 한다는 것이다.
모델 성능을 평가할 때 단순히 새로운 모델이 나왔다는 이유로 더 뛰어나다고 생각하면 안 되고 학습 과정과 설정을 신중하게 비교해야 한다는 메세지를 담고 있다.
1. Introduction
자기 지도 학습(self-training) 방법인 ELMo, GPT, BERT, XLM, XLNet 등의 기존 모델들은 큰 성능 향상을 가져왔다. 하지만 어떤 요소가 성능 향상에 가장 크게 기여했는지를 파악하는 것은 어려울 수 있다. 왜 어려울까? 몇 가지 이유를 이야기하자면 모델을 학습시킬 때 여러 가지 요소가 동시에 영향을 미쳐 어떤 요소가 성능 향상에 가장 크게 기여했는지 어렵다는 점, 연산 비용이 너무 커서 모든 경우를 다 실험하기 어렵다는 점, 데이터셋이 다르고 비공개인 경우가 많다는 점 등이 있다.
💡 Self-training methods
라벨 (정답) 없이도 학습할 수 있는 방식을 의미한다. 즉, 사람이 직접 데이터를 라벨링하지 않고 데이터 자체에서 학습 신호를 생성하는 방법이다.
예를 들어보자면 BERT는 문장에서 일부 단어를 가려놓고 다음 단어를 예측하게 했다. 또한 GPT에서는 앞 문맥을 보고 다음 단어를 예측하게 한 것을 알 수 있다.
대규모 데이터셋에서 효과적으로 학습할 수 있다는 장점이 있어 NLP 모델에서 필수적인 학습 기법이 되었다.
본 논문에서는 BERT 사전학습에 대한 복제 연구(replication study)를 수행해 하이퍼파라미터 조정과 학습 데이터 크기의 영향을 면밀히 평가했다. 그 결과 BERT가 충분히 학습되지 않았음 (undertrained) 을 발견했고 이를 개선한 새로운 학습 방법을 제안했다. 이러한 개선 방법을 RoBERTa라고 이름 짓고 이를 통해 BERT보다 더 좋은 성능을 냈다.
RoBERTa가 개선한 변경 사항은 다음과 같다.
① 모델을 더 오래 학습하고 더 큰 배치(batch) 크기를 사용하며 더 많은 데이터를 활용
② 다음 문장 예측(Next Sentence Prediction, NSP) objective 를 제거
③ 더 긴 문장을 사용하여 학습
④ 학습 데이터에 적용되는 마스킹 패턴(masking pattern)을 동적으로 변경
또한 기존 연구에서 사용된 비공개 데이터셋과 크기가 유사한 새로운 대규모 데이터셋 CC-NEWS를 수집해 학습 데이터 크기가 미치는 영향을 보다 정확히 분석할 수 있도록 했다.
학습 데이터 크기를 통제한 상태에서 RoBERTa는 GLUE 및 SQuAD에서 기존 BERT보다 뛰어난 성능을 보였다. 추가 데이터와 더 긴 훈련 과정을 거친 모델은 GLUE 공개 리더보드에서 88.5 Score를 기록했다. GLUE 벤치마크 9개 과제 중 4개(MNLI, QNLI, RTE, STS-B)에서 새로운 최고 성능(state-of-the-art, SOTA)을 달성했으며 SQuAD와 RACE에서도 최신 성능과 동등한 결과를 냈다. 결론적으로 본 논문에서는 BERT의 마스킹 언어 모델(masked language model) 학습 방식이 기존 제안된 자동 회귀 언어 모델(perturbed autoregressive language modeling, Yang et al., 2019)과 경쟁할 수 있음을 재확인했다.
본 논문의 주요 기여는 다음과 같다.
① BERT의 설계 및 훈련 전략에서 중요한 선택지를 분석하고 더 나은 대안을 제안
② 새로운 데이터셋(CC-NEWS)을 사용해 Downstream task 성능이 향상됨을 검증
③ 적절한 설계 선택을 적용하면 BERT의 마스킹 언어 모델(MLM) 학습 방식이 기존의 최신 모델들과 경쟁할 수 있음을 입증
💡 자동 회귀 언어 모델(perturbed autoregressive language modeling, Yang et al., 2019)?
여기서 말하는 Perturbed autoregressive language modeling은 XLNet(Yang et al., 2019) 을 말한다. XLNet은 GPT와 함께 Autoregressive Language Model (ARLM)의 예시로 꼽힌다. 하지만 XLNet은 기존 GPT와 다르게 여러 순서의 단어 조합을 학습하는 기법을 추가하여 더 강력한 성능을 냈다.
Autoregressive Language Model은 이전 단어 (또는 토큰)들을 기반으로 다음 단어를 예측해 하나씩 생성하는 방식의 모델을 말한다.
2. Background
2.1 Setup
BERT는 입력으로 두 개의 토큰 시퀀스 (세그먼트) x_1, ..., x_N 과 y_1, ..., y_M을 연결해 받는다. 이 세그먼트는 일반적으로 하나 이상의 자연어 문장으로 구성된다. 두 개의 세그먼트는 [CLS], [SEP], [EOS] 와 같은 특수 토큰을 포함한 단일 입력 시퀀스로 BERT에 제공된다. M과 N은 M + N < T가 되도록 제한되는데 여기서 T는 학습 중 최대 시퀀스 길이를 제어하는 하이퍼파라미터다. 즉, 각 토큰 시퀀스가 너무 길어지지 않도록 T라는 하이퍼 파라미터를 통해 길이를 제한하는 것이다.
모델은 먼저 라벨이 없는 대규모 텍스트 코퍼스에서 사전 학습을 수행한 후 특정 Task의 라벨이 있는 데이터를 사용해 미세 조정된다.
2.2 Architecture
BERT는 Transformer 아키텍처를 기반으로 한다.
- L개의 층(layers)
- A개의 self-attention 헤드
- H 차원의 은닉(hidden) 벡터 크기
2.3 Training Objectives
사전 학습동안 BERT는 두 가지 학습 목표를 사용한다. 바로 MLM과 NSP인데 BERT에서 학습을 가능하게 하고 성능을 끌어올린 학습 방법이다.
Masked Language Model (MLM)
입력 시퀀스에서 무작위로 선택된 일부 토큰을 [MASK] 토큰으로 대체한다. 모델은 이 가려진 토큰을 예측하도록 학습된다. 전체 입력 토큰의 15%를 마스킹 대상으로 선택하며 선택된 토큰 중 80%는 [MASK]로 대체, 10%는 그대로 유지, 10%는 랜덤한 다른 단어로 대체한다. 초기 구현에서는 마스킹 및 대체 과정을 한 번 수행한 후 학습하는 동안 동일한 마스킹을 유지한다. 하지만 실험적으로 데이터를 중복 사용해 마스킹이 문장마다 다르게 적용될 수 있다.
MLM의 손실함수는 Cross-entropy loss를 사용한다.
Next Sentence Prediction (NSP)
NSP는 두 개의 문장이 원래 문서에서 연속된 문장인지 아닌지를 예측하는 이진 분류 (binary classification)이다. 원래 문서에서 연속된 문장에 정답으로 라벨링을 진행하고 서로 다른 문서에서 무작위로 선택된 문장을 짝지어 오답으로 라벨링한다. 정답과 오답을 동일한 확률로 (50:50) 샘플링해 학습한다.
NSP의 목적은 모델이 문장 간 관계를 이해하도록 하는 것이며 자연어 추론(Natural Language Inference, NLI)과 같은 Downstream task 성능을 개선하도록 설계되었다.
2.4 Optimization
BERT는 Adam Optimizer를 사용해 최적화된다. β_1 = 0.9, β_2 = 0.999, 𝜖 = 1e-6 으로 설정하며 L-2 정규화를 활용한다. 학습률은 점점 증가시키다가 최대 학습률 1e-4에서 선형적으로 감소시킨다. 기타 하이퍼 파라미터는 다음과 같다.
- 드롭아웃(dropout): 모든 레이어와 self-attention 가중치에 0.1 적용
- 활성 함수(activation function): GELU (Hendrycks and Gimpel, 2016)
- 훈련 스텝: 1,000,000 업데이트(S = 1,000,000)
- 미니배치 크기: 256개 문장(B = 256)
- 최대 시퀀스 길이: 512 토큰(T = 512)
2.5 Data
BERT는 BOOKCORPUS와 영어 위키피디아 데이터를 사용해 사전 학습되었으며 이 두 데이터셋을 합치면 총 16GB의 압축되지 않은 텍스트 데이터가 된다.
3. Experimental Setup
본 논문에서는 BERT의 복제 연구(replication study)를 하기 때문에 이에 관한 설정들을 설명한다.
3.1 Implementation
RoBERTa는 BERT를 FAIRSEQ 프레임워크를 사용해 다시 구현했다. 대부분의 최적화 하이퍼 파라미터는 위에서 설명한 원래 BERT의 설정을 따르지만 최대 학습률(peak learning rate)과 워밍업 단계 수(warmup steps)는 각 설정별로 별도로 조정했다고 설명한다.
💡 FAIRSEQ 프레임워크
Facebook AI Research(FAIR)에서 만든 NLP 모델 학습 라이브러리를 의미한다.
RoBERTa는 BERT의 원래 구현 (Google TensorFlow 기반)이 아니라 Facebook의 FAIRSEQ (PyTorch 기반) 를 사용하여 다시 만들었다는 뜻이다.
왜 FAIRSEQ를 사용했을까?
① PyTorch 기반이라 확장성이 높음 (원래 BERT는 TensorFlow로 구현)
② Facebook AI에서 NLP 연구를 위해 최적화된 라이브러리
③ 대규모 모델을 효율적으로 학습할 수 있도록 설계됨
또한 Adam Optimizer는 기울기 업데이트를 조절하는 epsilon(𝜖) 값을 사용한다. 이때 본 논문에서는 𝜖 값에 따라 학습이 매우 민감하게 반응하는 것을 발견했다고 한다. 때문에 이를 일부 설정에서 조정함으로써 더 안정적이고 나은 성능을 얻었다. 마찬가지로 BERT에선 β_2 = 0.999 로 설정된 것은 0.98로 설정하면 큰 배치 사이즈에서 안정성이 향상됨을 확인했다.
본 논문에서는 최대 512개의 토큰 (T = 512)의 시퀀스를 사용해 사전 학습을 수행했다.
BERT와 달리 ① 무작위로 짧은 시퀀스를 삽입하지 않았으며 ② BERT는 학습의 초반 90% 동안 짧은 시퀀스 (문장)로 학습하고 나중에 긴 문장 (전체 시퀀스)으로 학습하는 방식을 사용했지만 RoBERTa는 오직 전체 길이의 시퀀스(full-length sequences) 로만 훈련을 진행했다.
💡 BERT는 긴 문장을 처리할 수 있도록 만들어졌는데 왜 처음에는 짧은 문장을 학습했을까?
짧은 문장을 사용하면 메모리 사용량이 줄고 학습 속도가 빨라진다. 때문에 BERT에서는 학습 초기에는 짧은 문장을 사용해 모델을 훈련시킨 것이다. 하지만 긴 문장에서 더 정확한 학습이 가능하다. 그래서 RoBERTa 연구진은 처음부터 긴 문장만 학습하는 것이 더 효율적이라고 판단한 것이다.
그리고 혼합 정밀도 부동 소수점 연산(mixed precision floating point arithmetic)을 사용해 학습을 진행했다고 한다. 여기서 혼합 정밀도(Mixed Precision) 학습이란 일부 연산을 2비트(Float32) 가 아닌 16비트(Float16) 로 처리하는 기법이다. 계산 속도를 높이고 메모리 사용량을 줄여 더 큰 모델을 학습할 수 있게 된다.
RoBERTa는 DGX-1 머신(각각 8개의 32GB Nvidia V100 GPU와 Infiniband로 연결됨)에서 훈련되었다.
3.2 Data
BERT 스타일의 사전 학습은 대량의 텍스트 데이터에 의존한다. 데이터의 크기를 늘리면 최종 Task 성능이 향상될 수 있음이 입증된 것이다. 기존의 여러 연구들은 BERT보다 더 크고 다양한 데이터셋을 사용해 모델을 학습시켰다. 하지마니 이러한 추가 데이터셋 중 일부는 공개적으로 사용할 수 없다.
따라서 본 논문에서는 실험을 위해 가능한 한 많은 데이터를 수집하는 것에 초점을 맞췄으며 비교를 위해 데이터의 품질과 양을 최대한 일치시키는 것을 목표로 했다. 총 서로 다른 크기와 도메인을 가진 5개의 영어 코퍼스 (총 160GB 이상)를 사용했다.
① BOOKCORPUS (Zhu et al., 2015) + 영어 WIKIPEDIA: BERT의 원래 훈련 데이터 (16GB)
② CC-NEWS: 본 논문의 연구진이 CommonCrawl News(Nagel, 2016)의 영어 데이터를 수집해 만든 데이터셋 (76GB)
③ OPENWEBTEXT: Reddit에서 3개 이상의 추천(upvotes)을 받은 URL의 웹 콘텐츠를 추출한 텍스트 데이터셋 (38GB)
④ STORIES: CommonCrawl 데이터 중 이야기 스타일(story-like)의 텍스트만 필터링한 데이터셋 (31GB)
3.3 Evaluation
기존의 이전 연구들과 마찬가지로 본 논문에서는 사전 학습된 모델을 아래 세 가지 벤치 마크에서 평가했다.
GLUE (General Language Understanding Evaluation)
GLUE는 자연어 이해(NLU) 시스템을 평가하기 위한 9개의 데이터셋 모음으로 모든 Task는 단일 문장 분류(single-sentence classification) 또는 문장 쌍 분류(sentence-pair classification) 문제로 구성된다. BERT의 복제 연구는 밑에서 설명하며 단일 태스크(single-task) 학습 방식을 사용하여 사전 학습된 모델을 미세 조정한 후 개발 세트 성능을 낸다. 간단하게 이야기하면 다중 태스크 학습(multi-task training) 또는 앙상블(ensembling)은 사용하지 않고 Fine-tuning 방식은 원래 BERT와 동일한 방법을 사용했다고 한다.
SQuAD (Stanford Question Answering Dataset)
SQuAD는 주어진 문맥(문단)과 질문을 제공하고 질문에 대한 정답을 문맥 내에서 찾아 추출하는 Task이다. 모든 질문에 대해 정답이 포함된 문맥이 제공되는 SQuAD V1.1과 일부 질문은 주어진 문맥에서 정답이 존재하지 않는 SQuAD V2.0 모두에서 평가를 수행했다.
SQuAD V1.1에서는 기존 BERT와 동일한 스팬 (span) 예측 방법을 사용했으며 SQuAD V2.0에서는 이진 분류(binary classifier)를 추가해 질문이 답할 수 있는지 여부를 예측하게 했다. 이를 위해 분류 손실(classification loss)과 스팬 예측 손실(span loss)을 합산하여 학습하고 평가할 때 Answerable로 분류된 질문들만 스팬 예측을 수행했다.
RACE (ReAding Comprehension from Examinations)
RACE는 대규모 독해(reading comprehension) 데이터셋으로 Task의 구조는 다음과 같다. 각 지문에 여러 개의 질문이 주어졌을 때 각 질문에는 4개의 선택지가 있고 그중 하나를 정답으로 선택하는 것이다.
4. Training Procedure Analysis
BERT 모델을 사전 학습하는 데 중요한 요소들은 무엇일까? 본 모델에서는 이 요소들을 분석하고 정량적으로 평가한다. 모델 아키텍처는 고정된 상태에서 실험을 진행하며 BERTBASE 설정(L = 12, H = 768, A = 12, 110M 매개변수)과 동일한 구성으로 학습을 시작했다.
4.1 Static vs. Dynamic Masking
BERT는 무작위로 토큰을 마스킹하고 이를 예측하는 방식으로 학습된다. 이러한 기존의 BERT 방식은 정적(Static) 마스킹이라고 한다. 데이터 전처리(preprocessing) 단계에서 한 번만 마스킹을 수행하기 때문에 학습 중 각 문장은 항상 동일한 마스킹 패턴을 갖게 된다. 때문에 모델이 같은 문장을 여러 번 볼 때마다 동일한 마스킹 패턴을 학습하게 되고 다양한 맥락(context)에 대한 일반화 능력이 떨어질 가능성이 있다. 이를 보완하기 위해 훈련데이터를 10번 중복해 사용하고 학습하는 동안 다른 마스킹 패턴을 적용했다. 하지만 결국 전체 학습 40 에폭 동안 각 문장은 같은 마스킹 패턴으로 4번 학습된다.
RoBERTa는 새로운 방식인 동적(Dynamic) 마스킹을 제안했다. 매번 학습할 때마다 새로운 마스킹 패턴을 생성하는 방식이다. 즉, 같은 문장이라도 학습할 때마다 서로 다른 단어가 [MASK]로 가려지게 되는 것이다. 훈련 데이터 자체는 변하지 않지만 마스킹 패턴이 매번 다르게 적용된다. 이를 통해 모델은 다양한 맥락을 학습할 수 있으며 일반화 성능이 향상되고 훈련 데이터의 다양성이 증가하기 때문에 더 많은 학습 Step이나 더 큰 데이터셋에서 중요한 역할을 한다.
Results
실험 결과, 정적 마스킹(static masking)을 사용한 BERT 모델은 원래 BERT와 비슷한 성능을 보였지만 동적 마스킹(dynamic masking) 은 정적 마스킹과 비슷하거나 약간 더 나은 성능을 보였다. 추가적인 효율성 개선이 가능해지기 때문에 이후 실험에서는 동적 마스킹을 사용했다고 한다.
4.2 Model Input Format and Next Sentence Prediction
BERT에서는 입력으로 두 개의 문서 세그먼트를 연결해 사용하며 이들은 같은 문서에서 연속적으로 샘플링될 수도 있고 (50%의 확률) 서로 다른 문서에서 샘플링될 수도 있었다. 이를 모델이 NSP(Next Sentence Prediction) 손실을 사용하여 두 문장이 같은 문서에서 온 것인지 예측하도록 학습된다.
BERT의 기존 연구 결과에서는 NSP를 제거하면 QNLI, MNLI, SQuAD 1.1 성능이 저하됨을 관찰했다고 했다. 특히나 NSP는 문장 간 관계를 학습할 수 있어 자연어 추론(NLI), 문서 유사도 평가, 질의응답(QA) 같은 Task에서 도움이 될 것이라고 했다. 하지만 이후 NSP가 필요하지 않을 수도 있다고 주장하는 논문들이 생겨났다. NSP가 반드시 필요한 것이 아니고 NSP를 오히려 제거하면 모델이 더 긴 문맥을 학습하는 데 집중할 수 있다는 것이다.
본 논문에서는 NSP가 실제로 어떤 영향을 미치는지 명확히 이해하기 위해 비교 실험을 진행했다.
ⓐ SEGMENT-PAIR+NSP: 기존 BERT와 동일한 방식 / NSP 손실 사용 / 두 개의 세그먼트 입력 (총길이 <= 512 토큰)
ⓑ SENTENCE-PAIR+NSP: 각 입력이 자연어 문장 2개로 구성
문장들은 같은 문서에서 연속적으로 샘플링되거나 서로 다른 문서에서 샘플링되었으며 NSP 손실은 유지했다. 또한 문장의 길이가 짧아 배치 크기를 늘려 전체 토큰 수를 SEGMENT-PAIR+NSP와 유사하게 맞췄다.
ⓒ FULL-SENTENCES (NSP 제거): 하나 이상의 문서에서 연속적인 문장을 샘플링해 입력 생성
총 길이는 최대 512 토큰이며 NSP 손실을 제거했다. 여러 문서 사이에서 문장이 샘플링될 수 있다. (문서 경계를 넘을 수 있다는 의미)
ⓓ DOC-SENTENCES (NSP 제거): FULL-SENTENCES 방식과 유사하지만 문서 경계를 넘지 않음
문서 끝부분에서 샘플링될 경우 512 토큰보다 짧아질 수 있다. 이 경우 배치 크기를 동적으로 증가시켜 전체 토큰 수를 FULL-SENTENCES와 유사하게 유지시켰다.
Results
표 2에서 위 4가지 설정을 비교한 결과를 보여준다. 결과를 간단하게 요약하자면 다음과 같다.
① 개별 문장(sentence-pair)만을 사용하면 Downstream task 성능이 감소
모델이 긴 문맥(long-range dependencies)을 학습하는 능력이 저하되기 때문일 가능성이 높다고 언급한다.
② NSP를 제거하고 "DOC-SENTENCES" 방식으로 훈련하면 원래 BERT보다 더 좋은 성능을 보임
즉, NSP 손실이 꼭 필요하지 않거나 제거하는 것이 더 효과적일 수 있음을 의미한다.
③ DOC-SENTENCES vs. FULL-SENTENCES
DOC-SENTENCES 가 FULL-SENTENCES보다 약간 더 좋은 성능을 보였다. 하지만 DOC-SENTENCES의 경우 배치 크기가 변동하는 문제가 있어 실험 비교가 어려웠고 따라서 이후 실험에서는 FULL-SENTENCES 방식을 사용하기로 결정했다.
4.3 Training with large batches
기계 번역 (NMT)에서 대규모 미니배치 학습이 최적화 속도를 높이고 최종 성능을 향상시킬 수 있음을 입증한 기존 연구가 있었다. 또한 BERT도 대규모 배치 크기로 학습할 수 있음이 입증되었다.
때문에 본 논문에서는 배치 크기를 증가시키면서 모델의 Perplexity와 Downstream task 성능을 비교했다. 그 결과 배치 크기를 늘릴수록 MLM 손실이 감소하고 최종 Task 정확도가 증가함을 확인했다. 즉, 큰 배치 크기가 학습의 효율성을 높일 수 있음이 입증된 것이다. 하지만 배치 크기를 증가시키는 것은 단순히 성능 향상만의 문제가 아니다. 큰 배치를 사용할 때 GPU 여러 대를 활용하는 분산 학습(distributed training)이 더 쉬워진다는 장점도 존재한다. 때문에 배치 크기를 키우면 학습 속도를 높일 뿐만 아니라 분산 학습을 통해 더 효과적으로 처리할 수 있다. 대규모 데이터와 GPU 환경에서는 분산 학습이 중요하므로 배치 크기를 키우는 것이 효율적인 것이다.
이후 실험에서는 배치 크기 8K를 사용했다.
💡 퍼플렉서티(Perplexity, PPL)
Perplexity는 언어 모델의 성능을 측정하는 지표 중 하나로 모델이 얼마나 혼란스러워하는지(얼마나 확신을 가지고 있는지)를 나타내는 값이다. 이는 언어 모델이 주어진 문장에서 다음 단어를 얼마나 잘 예측하는지를 평가하는 데에 사용되고 이는 확률적 언어 모델에서 Cross-Entropy를 기반으로 계산된다.
낮은 Perplexity는 모델이 덜 혼란스러워하고 있고 정확하게 예측하고 있음을 뜻하고 높은 Perplexity는 모델이 혼란스러워하고 예측에 대해 불확실하다는 것을 나타낸다. 때문에 Perplexity는 낮을수록 좋다.
4.4 Text Encoding
모델 학습을 위해 데이터는 어떻게 변환했을까? BERT는 기본적으로 Byte-Pair Encoding (BPE)이라는 토큰화 방식을 사용한다. BPE는 전체 단어를 사용하는 것이 아니라 자주 등장하는 문자 조합(subword)을 분할하여 사용하는 방식이다. BERT는 30,000개의 서브워드(subword) 단위를 사용하는 BPE를 적용했다.
💡 BERT는 WordPiece를 사용했는데..?
가능성 1. 논문 작성자의 오류
가능성 2. WordPiece와 BPE를 같은 범주로 간주한 표현 (둘 다 서브워드 토큰화 기법이므로 광범위한 의미에서 BPE라고 부른 것일 수 있음)
뭘까...?
일단 정확한 정보는 BERT는 WordPiece를 사용했지만, RoBERTa에서는 50K BPE를 사용하여 비교 실험했다는 것이다!!
RoBERTa는 50K 바이트 단위 BPE를 제안했다. 기존의 30K BPE 대신 GPT 스타일의 50K 바이트(Byte) 단위 BPE를 실험적으로 사용한 것이다. 이 방식은 기존 BPE와 달리 유니코드(unicode) 기반 바이트를 서브워드 단위로 사용하는 방식이다.
이를 실험한 이유는 더 큰 어휘를 사용하면 성능이 달라질까를 검증하기 위해서 또, 기존 방식이 특정한 규칙에 의존했기 때문에 더 범용적인 인코딩 방식을 적용하면 성능이 향상될지 실험하기 위해서였다.
실험 결과 성능 차이는 거의 없었다. 오히려 50K BPE 방식이 일부 Task에서 약간 더 낮은 성능을 보였다. 하지만 본 논문에서는 50K 방식이 더 범용적으로 사용될 수 있는 장점이 있기 때문에 이후 실험에서 이를 사용하기로 결정했다.
💡 Byte-Pair Encoding(BPE)와 WordPiece 토큰화는 같은 것?
비슷하지만 완전히 동일한 알고리즘은 아니다. 둘 다 서브워드 단위(Subword Tokenization)를 사용하는 토큰화 기법이다.
하지만 BPE는 가장 자주 등장하는 문자열 쌍을 병합하는 토큰화 방식으로 빈도수(Frequency)를 기반으로 하지만 WordPiece는 가장 높은 확률을 가진 서브워드를 병합하는 토큰화 방식으로 우도(Likelihood, 확률)를 기반으로 한다.
또한 BPE는 명시적인 어휘 크기 제한이 없으며 전처리 과정도 단순한 문자 병합 방식으로 추가 규칙이 거의 없는 반면, WordPiece는 일반적으로 최대 어휘 크기 제한을 두고 특수 토큰 '##'을 붙여 서브워드인지 표시하는 전처리 과정을 거친다.
5. RoBERTa
BERT의 사전 학습 방식을 개선해 성능을 향상시키 방법을 연구하고 그 개선된 모델은 RoBERTa (Robustly optimized BERT approach) 라고 한다.
결국 어떻게 해서 BERT의 사전 학습 방식을 개선해 성능을 향상시켰을까?
구체적으로 RoBERTa는 다음과 같은 방식으로 학습된다.
- 동적 마스킹 (Section 4.1)
- NSP 없이 FULL-SENTENCES 입력 방식 (Section 4.2)
- 더 큰 미니배치 크기 (Section 4.3)
- 더 큰 바이트 단위 BPE (Section 4.4)
또한 이전 연구에서 과소평가된 두 가지 중요한 요소를 조사한다. 하나는 사전 학습에 사용된 데이터이며 다른 하나는 데이터를 반복 학습한 횟수이다.
예를 들어 XLNet의 경우 기존 BERT보다 거의 10배 많은 데이터로 사전 학습되었다. 또한 8배 더 큰 배치 크기로 절반의 최적화 Step을 사용해 학습되어 결과적으로 BERT보다 4배 더 많은 시퀀스를 학습할 수 있었다.
이러한 요소들이 사전 학습 목표(pretraining objective) 외의 다른 모델링 선택지들과 어떤 영향을 미치는지 구분하기 위해 본 논문에서는 BERTLARGE 아키텍처(L = 24, H = 1024, A = 16, 355M 파라미터)를 그대로 유지한 채 RoBERTa를 학습했다. 또한 BERT에서 사용한 BOOKCORPUS + WIKIPEDIA 데이터셋과 유사한 데이터로 100K 스텝 동안 사전 학습을 진행했으며 1024개의 V100 GPU를 사용하여 약 하루 동안 훈련했다.
Results
훈련 데이터를 동일하게 유지한 상태에서 실험한 결과 RoBERTa가 BERT보다 더 좋은 성능을 보였다. 즉, 동적 마스킹, 큰 배치 크기, NSP 제거 등이 효과적이었다는 것을 의미한다. 또한 데이터의 크기를 확장해 총 160GB 사용 (CC-NEWS, OpenWebText, STORIES 추가)했을 때 데이터가 많아질수록 성능이 더 좋아지는 것을 발견했고 더 많은 데이터로 학습하는 것이 중요하다는 것을 확인했다. 훈련 횟수 ( = Step 수) 도 성능에 영향을 주었다. 100K → 300K → 500K step까지 실험했을 때 500K step까지 학습해도 과적합이 발생하지 않고 성능이 올랐고 이를 통해 더 많은 훈련이 모델 성능을 개선할 가능성이 있음을 입증했다.
이러한 실험 결과를 통해 같은 구조를 사용했지만 훈련 방법을 바꾸기만 해도 성능이 크게 향상됨을 알 수 있다.
5.1 GLUE Results
GLUE task에서는 두 가지 Fine-tuning 설정을 고려해 실험을 진행했다.
① Single-Task fine-tuning (+ Dev Set 평가)각 GLUE task를 개별적으로 학습하고 하이퍼파라미터(배치 크기, 학습률 등) 조정 후 10번 반복 학습했다. 결과적으로 BERTLARGE, XLNet보다 높은 성능을 기록했다. ② 앙상블(Ensemble) 모델을 사용한 테스트 세트 평가 (Test Set, GLUE 리더보드 제출)
여러 모델을 결합(앙상블)해 진행한 실험으로 9개의 Task 중 4개에서 SOTA를 기록했고 평균 점수 기준으로도 가장 높은 성능을 달성했다.
기존 연구들은 Multi-task fine-tuning 을 적용했지만 RoBERTa는 Single-task fine-tuning 만으로도 더 높은 성능을 기록했다.
💡 Multi-task fine-tuning? Single-task fine-tuning?
Multi-task fine-tuning은 한 번에 여러 개의 Task를 함께 학습하는 방식으로 예를 들어 BERT나 XLNet을 미세 조정할 때 GLUE의 여러 태스크(QNLI, MNLI, SST-2 등)를 동시에 학습했다. 이렇게 하면 모델이 각 Task에서 공통도니 정보를 학습하면서 성능이 좋아지는 경우가 많다.
Single-task fine-tuning은 하나의 Task만 따로 학습하는 방식으로 위에선 GLUE task를 개별적으로 학습했다는 의미로 사용됨. 즉 GLUE task에서 MNLI를 학습할 때에는 MNLI 데이터만 사용하고 SST-2를 학습할 때는 SST-2 데이터만 사용하는 식이다.
Task-specific modifications
일부 GLUE Task에서는 경쟁력 있는 리더보드 성능을 달성하기 위해 특정한 Fine-tuning 기법이 필요했다.
특히 QNLI (Question Natural Language Inference task)의 경우 쌍(pairwise) 순위(rank) 방식을 채택하고 있었다. 즉, 훈련 세트에서 후보 정답을 수집하고 서로 비교한 후 (질문, 후보 정답) 쌍을 긍정(positive) 클래스로 분류하는 방식을 사용하는 것이다. 이 방식은 Task를 크게 단순화하지만 BERT와 직접 비교하기 어렵다는 단점이 있었다. 따라서 본 논문에서는 GLUE 테스트 제출에서 순위(rank) 방식을 사용하고 BERT와의 직접 비교를 위해 개발 세트(dev set)에서는 순수 분류(classification) 방식으로 평가했다.
WNLI (Winograd Natural Language Inference task)에서도 제공된 NLI 형식 데이터가 모델 학습에 어려움을 줬다. 따라서 SuperGLUE에서 변형된 WNLI 데이터를 사용했고 마진 순위 손실을 적용했지만, 훈련 데이터의 절반 이상을 활용할 수 없는 한계가 있었다.
Results
Single-Task fine-tuning (+ Dev Set 평가)은 GLUE의 9개 모든 Task에서 SOTA 성능을 달성했다. BERTLARGE 및 XLNetLARGE와 같은 아키텍처를 사용했지만 더 높은 성능을 보인 것이다. 즉, 모델 구조보다 데이터 크기와 학습 시간이 성능 향상에 더 중요한 요소일 수 있다는 것을 밝힌다.
앙상블 학습(Ensemble, Test Set 평가)은 GLUE 리더보드 제출 결과 9개 중 4개의 Task에서 SOA 달성 및 최고 평균 점수를 기록했다. 위에서 언급한 바와 같이 다른 상위 모델들은 Multi-task fine-tuning 을 적용했지만 RoBERTa는 Single-task fine-tuning 만으로도 더 높은 성능보인 것으로 보아 향후 Multi-task fine-tuning을 추가하면 성능 향상이 이루어질 것이라고 덧붙였다.
5.2 SQuAD Results
SQuAD에서는 추가적인 QA 데이터 없이 SQuAD만 사용해 Fine-tuning을 진행했다. 또한 XLNet은 층별(layer-wise) 학습률 스케줄을 적용했지만 RoBERTa는 균일한 학습률을 사용했다.
Results
결과는 다음과 같다. SQuAD v1.1에서 RoBERTa는 XLNet과 동급 성능을 보였으며 SQuAD v2.0에서 RoBERTa가 XLNet을 초월해 새롭게 SOTA 를 달성했다. (EM +0.4, F1 +0.6)
추가적인 데이터 없이도 기존 모델을 초월하는 성능을 보인 것이다.
5.3 RACE Results
RACE (ReAding Comprehension from Examinations)는 영어 독해 능력을 평가하는 대규모 데이터셋으로 RoBERTa는 RACE Middle & High School 평가에서 SOTA 성능 기록했으며 기존의 모든 모델을 초원하는 성능을 보였다.
6. Related Work
(생략)
7. Conclusion
본 논문에서는 BERT 모델을 사전 학습할 때 고려해야 할 여러 설계 선택지들을 평가하고 어떤 요소들이 모델 성능을 향상시킬 수 있는지 발견했다.
- 더 긴 시간 동안 학습(Longer training)
- 더 큰 배치 크기를 사용(Bigger batches)
- 더 많은 데이터를 활용(More data)
- 다음 문장 예측(NSP) 목표 제거(Removing NSP objective)
- 더 긴 시퀀스로 학습(Training on longer sequences)
- 훈련 데이터의 마스킹 패턴을 동적으로 변경(Dynamically changing the masking pattern)
이렇게 개선된 사전 학습 절차를 RoBERTa라고 부르며 RoBERTa는 GLUE, RACE, SQuAD 벤치마크에서 SOTA 성능을 달성했다. 특히 GLUE에선 Multi-task fine-tuning 없이도 최고 성능을 기록했으며 SQuAD에서는 추가적인 데이터 없이도 기존 모델을 뛰어넘었다.
이러한 결과는 기존 연구에서 간과되었던 것들이 실제로 중요한 영향을 미친다는 점을 강조하며 BERT의 사전 학습 목표(Masked Language Model, MLM)가 BERT 이후 제안된 방법들과도 여전히 경쟁력이 있음을 시사한다.