실험 및 결과
GLUE (General Language Understanding Evaluation)
Dataset
Training Details
- batch size: 32
- epoch: 3
- learning rate: [5e-5, 4e-5, 3e-5, 2e-5] 중 Dev 데이터 셋에서 가장 성능이 좋은 것으로 선택
- BERT_LARGE에서 fine-tuning을 진행할 때, 작은 데이터 셋으로 학습하는 경우 불안정한 경우가 확인되어, 몇 차례 random restart 후 Dev 데이터 셋 기준 가장 성능이 좋은 모델로 선택
Result
BERT_BASE와 BERT_LARGE 모두 이전 SOTA 모델이었던 OpenAI GPT를 평균 정확도 측면에서 4.5%와 7.0% 능가하는 결과를 보여주었다. 또한, 각각의 모든 task에서도 BERT가 이전 모델들과 비교했을 때 더 나은 성능을 보이는 것을 확인할 수 있다.
Analysis
BERT_LARGE가 BERT_BASE와 비교했을 때 모든 task에서 성능이 더 좋았고, 특히 학습 데이터가 적은 task에서 더욱 부각되었다. 이를 통해, 모델의 크기가 커질수록 모델의 성능이 증가한다는 것을 알 수 있다.
SQuAD (Stanford Question Answering Dataset) v1.1
Dataset
- SQuAD v1.1
- 질문과 정답이 포함된 Wikipedia 출처의 passage가 주어졌을 때, 정답이 passage의 어느 범위에 위치하는지 예측하는 task이다.
Training Details
- j ≥ i 일 때, 아래 수식의 값이 최대인 영역을 정답 영역으로 예측한다.
$$ S \cdot T_i + E \cdot T_j $$
S : start vector
E: end vector
T_i: i번째 입력 토큰의 최종 hidden vector
- training objective: 정답 시작 위치와 마지막 위치의 로그 가능도의 합
- batch size: 32
- epoch: 3
- learning rate: 5e-5
- SQuAD 데이터 셋으로 fine-tuning하기 전, 먼저 TriviaQA 데이터 셋으로 fine-tuning 진행
- 앙상블 기법은 서로 다른 사전 학습 checkpoint와 fine-tuning seed를 갖는 7개의 모델을 앙상블
Result
앙상블 기법을 적용한 모델에서 이전 SOTA 모델과 비교했을 때, F1 점수가 1.5점 향상되었다. 또한, 단일 모델에서도 F1 점수에서 이전 모델들보다 높은 점수를 얻은 것을 확인할 수 있다.
SQuAD v2.0
Dataset
- SQuAD v2.0
- SQuAD v1.1에서 passage에 정답이 포함되어 있지 않은 경우를 포함하여 문제를 더욱 현실성 있게 발전시킨 task이다.
Training Details
- 정답이 없다고 판단되는 경우, 정답의 시작 위치와 마지막 위치를 [CLS] 토큰으로 선택한다.
- 정답 없음 영역의 점수와 정답 있음 영역의 점수를 비교해서 정답 위치를 예측한다.
- 정답 없음 영역의 점수
$$ S_{null} = S \cdot C + E \cdot C $$
C: [CLS] 토큰의 최종 hidden vector
- 정답 있음 영역의 점수
$$ S_{\hat{i}, j} = max_{j \geq i} S \cdot T_i + E \cdot T _i $$
- 정답이 있다고 예측하는 경우
$$ S_{\hat{i}, j} > S_{null} + \tau $$
threshold 값인 $ \tau $는 Dev 데이터 셋에서 F1 점수가 가장 잘 나오는 값으로 선택한다.
- batch size: 48
- epoch: 2
- learning rate: 5e-5
Result
이전까지 SOTA 모델보다 F1 점수 기준 5.1점을 향상시켰다.
SWAG (Situations With Adversarial Generations)
Dataset
- SWAG 데이터 셋
- 일반 상식 추론을 평가하는 데이터 셋으로, 하나의 문장이 주어지고 4개의 선택지 문장 중 다음 문장으로 가장 적절한 문장을 선택하는 task이다.
Training Details
- 하나의 주어진 문장의 4개의 선택지 문장을 각각 이어붙여 총 4개의 입력 sequence를 만든다.
- task-specific한 벡터를 도입하여, 이 벡터를 [CLS] 토큰의 representation과 내적해서 각 선택지의 점수를 계산한다.
- batch size: 16
- epoch: 3
- learning rate: 2e-5
Result
BERT_LARGE가 OpenAI GPT보다 8.3% 높은 정확도를 보이는 것을 확인할 수 있다.
Ablation Study
Effect of Pre-training Tasks
사전 학습 데이터, fine-tuning 전략, 하이퍼파라미터를 고정한 채 사전 학습 방식에 변화를 주었다.
- BERT_BASE: Baseline model로, Masked LM과 next sentence prediction을 통해 사전학습시킨 모델이다.
- No NSP: next sentence prediction(NSP) 없이 Masked LM으로만 사전학습을 진행한 모델이다.
- LTR & No NSP: next sentence prediction 없이 Masked LM 대신 Left-to-Right(LTR) LM 방식으로 사전학습을 진행한 모델이다.
- LTR & No NSP + BiLSTM: Right to Left의 문맥 정보를 얻기 위해 Masked LM이 아닌, BiLSTM을 추가한 모델이다.
NSP를 제거한 모델에서 QNLI, MNLI, SQuAD와 같은 task에서 점수가 떨어진 것을 확인할 수 있다.
No NSP 모델과 LTR & No NSP 모델을 비교하여 bidirectional representation 학습의 효과를 확인할 수 있다. LTR 모델은 MLM 모델과 비교했을 때 MRPC와 SQuAD task에서 점수가 크게 하락했다.
LTR & No NSP 모델에 BiLSTM을 추가한 모델의 경우, BiLSTM을 추가하기 이전보다 SQuAD task에서는 성능이 향상되었지만, 그 외의 task들에서는 오히려 성능이 하락했다.
Effect of Model Size
모델 크기가 fine-tuning task의 정확도에 미치는 영향을 분석하기 위한 실험이다. layer의 수, hidden layer의 차원 수, attention head의 수를 제외한 나머지 요소들은 동일하도록 통제했다.
실험 결과를 살펴보면, 모델의 크기가 커질수록 성능이 향상되는 것을 확인할 수 있다.
특히, MRPC의 경우, 학습 데이터가 3600개로 상당히 적고 사전 학습 task와 차이가 큰 task임에도 불구하고 모델의 크기가 커질수록 성능이 좋아졌다.
기계 번역과 language modeling과 같은 큰 규모의 task에서는 모델 크기가 커짐에 따라 성능이 향상된다는 것이 오래 전부터 알려진 사실이지만, 모델이 충분한 사전학습을 받게 되면 작은 규모의 task에서도 마찬가지로 모델의 크기를 키우는 것이 성능 향상에 기여한다는 사실을 이 실험을 통해 입증할 수 있었다.
Feature-based Approach with BERT
지금까지 살펴본 BERT는 모두 사전학습 모델에 분류 layer를 추가한 뒤, downstream task에서 모든 파라미터를 미세조정하는 fine-tuning 방식을 사용했다. 그러나, feature-based 방식만이 갖는 이점도 존재한다.
첫번째로, Transformer의 encoder 구조로는 해결할 수 없는 task가 존재한다. 따라서 task에 특화된 구조가 추가되어야 할 필요가 있다.
두번째로, 큰 크기의 사전학습 모델의 경우, 사전학습된 파라미터를 수정하지 않고 고정된 값을 사용함으로써 연산에 드는 비용을 크게 줄일 수 있다.
이 실험에서는 CoNLL-2003 데이터 셋을 활용한 Named Entity Recognition task에 대해 fine-tuning 방식과 feature-based 방식을 비교할 것이다.
BERT에 feature-based 방식을 적용하는 방법은 하나 또는 다수의 layer에서 추출된 contextual embedding을 768 차원의 2층 BiLSTM의 입력으로 사용한 뒤, 분류 layer를 통과시켜 결과값을 얻는다.
결과를 살펴보면, 마지막 4개의 hidden layer에서 contextual embedding을 추출한 BERT_BASE 모델이 fine-tuning 방식의 BERT_BASE 모델과 단 0.3점 차이가 나는 것을 확인할 수 있다. 이를 통해 BERT는 fine-tuning 방식과 feature-based 방식 모두에 효과적인 모델임을 입증할 수 있었다.
Effect of Number of Training Steps
사전학습 training step 수의 변화에 따른 MNLI task의 Dev 데이터 셋에 대한 정확도가 어떻게 달라지는지 분석한 실험이다.
이 결과를 통해 1M step을 학습시켰을 때 500K step 학습시킨 모델보다 약 1.0% 나은 정확도를 보이는 것을 확인할 수 있다.
또한, MLM 모델은 LTR 모델보다 사전학습 단계에서 더 느리게 수렴하기 때문에 초반에는 더 성능이 안 좋은 것처럼 보이지만, 약 100K step부터는 MLM 모델이 훨씬 더 좋은 성능을 보인다.
Ablation for Different Masking Procedures
마스킹 비율을 바꿔가며 어떤 마스킹 전략이 가장 효과적인지 분석한 실험이다.
이 실험에서는 MNLI와 NER task에 대한 성능을 비교했다. NER task의 경우, fine-tuning 방식과 feature-based 방식을 함께 진행하였는데, feature-based 방식에서 [MASK] 토큰의 부재로 인한 사전학습과 fine-tuning 시점의 간극이 더욱 증폭될 것이라고 예상했기 때문이다. 왜냐하면 feature-based 방식에서는 사전학습 시점에서 학습된 representation을 조정할 기회가 없기 때문이다.
MASK: [MASK] 토큰으로 치환
SAME: 같은 토큰으로 유지
RND: 임의의 다른 토큰으로 치환
결과를 살펴보면, [MASK] 토큰으로 100% 치환하는 마스킹 전략의 경우, NER task의 feature-based 방식에서 성능이 매우 떨어지는 것을 확인할 수 있다. 이를 통해 앞서 예상했던 것처럼 [MASK] 토큰으로만 치환할 경우, 사전학습과 fine-tuning의 간극이 발생한다는 것을 입증할 수 있었다.
*본 템플릿은 DSBA 연구실 이유경 박사과정의 템플릿을 토대로 하고 있습니다.