본 글은 https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf 내용을 기반으로 합니다.
혹시 잘못된 부분이나 수정할 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
자연어 이해는 textual entailment, question answering, semantic similarity assessment, 문서 분류 등 다양한 task로 이루어진다. Unlabeled text data는 풍부하지만 labeled text data는 적어서 훈련된 모델이 적절하게 수행하기 어렵다. 본 논문은 다양한 unlabeled text를 사용한 generative pre-training의 언어 모델과 각 task별로 차별적인 fine-tuning을 통해 큰 이득을 실현할 수 있음을 보여준다. 이는 각 task별로 제작하여 훈련된 모델보다 뛰어난 성능을 보이고 12 task 중에서 9개의 task에서 SOTA 성능을 달성한다.
1. Introduction
Raw text로부터 효과적으로 학습하는 능력은 NLP 분야에서 supervised learning에 대한 의존성을 완화하는데 중요하다. Labeled data가 많은 경우에도 unlabeled data로 학습하여 좋은 representation을 학습하면 상당한 성능 향상 역할을 한다. 하지만, unlabeled data에서 단어 수준 이상의 정보를 활용하는 것은 두 가지 문제점이 있다.
1. Transfer에 유용한 text representation을 학습하는데 어떤 유형의 optimization objective가 가장 효과적인지 불분명
2. 학습된 representation을 목표 task로 transfer하는 가장 효과적인 방법이 불분명
이러한 불확실성으로 인해 언어 처리를 위한 효과적인 semi-supervised learning 접근법을 개발하는 것이 어려워졌다.
본 논문에서는 unsupervised pre-training과 supervised fine-tuning을 조합한 semi-supervised approch를 제시한다. 이 연구의 목표는 다양한 task에 사용될 수 있으면서 약간의 변화로 transfer할 수 있는 보편적인 representation을 학습하는 것이다.
이를 위해 두 가지 과정을 거친다.
1. Unlabeled data에 language modeling objective를 사용하여 초기 파라미터들을 학습한다.
2. Labeled data를 사용하여 초기 파라미터들을 target task에 맞게 수정한다.
모델 아키텍처로는 다양한 task에 큰 효과로 수행할 수 있는 Transformer를 사용한다. Transfer 과정에서 구조화된 text input을 단일 연속 토큰 시퀀스로 처리하는 traversal-style approach에서 파생된 task 별 입력을 활용한다. 이를 통해, pre-trained 모델의 아키텍처를 최소환으로 변경하면서 fine-tuning을 효과적으로 할 수 있게 한다.
본 논문은 네 가지 유형의 자연어 이해 task(natural language inference, question answering, semantic similarity, and text classification)를 평가한다. 12개 task 중 9개 task에서 SOTA 성능을 달성하였다.
2. Related Work
Semi-supervised learning for NLP
NLP 분야에서의 Semi-supervised learning은 sequence labeling과 text classification 등 많은 관심을 끌고 있다. 초기 연구들은 unlabeled data를 사용하여 단어 수준이나 구문 수준을 계산하고 이를 supervised 모델에 feature로 사용하였다. 지난 몇 년동안 unlabeled corpora로 훈련된 word embedding을 사용하여 다양한 task에서 성능 향상을 보여주었다. 그러나 이러한 방식은 단어 수준의 정보를 transfer한다는 점에서 본 논문은 더 높은 수준의 정보를 trasfer하고자 한다.
Unsupervised pre-training
Unsupervised pre-training은 supervised learning objective를 수정하는 대신에 좋은 initialization point를 찾는 것이 목표이다. 최근 연구에서 pre-training 방법은 다양한 task에서 deep neural network의 학습을 도와주는 용도로 사용된다. Pre-training 단계는 일부 언어 정보를 capture하는데 도움이 되지만 LSTM과 같은 모델들의 예측 능력은 짧은 범위로 제한된다. 본 논문에서 사용한 transformer network는 긴 범위의 언어 구조를 capture할 수 있다. 그리고 다른 접근법들과 다르게, transfer 과정에서 모델 아키텍처에 대한 변화를 최소화한다.
Auxiliary training objectives
보조 unsupervised training objective를 추가하는 것은 semi-supervised learning의 대안이다. 본 논문에서도 보조 objective를 사용하지만 unsupervised pre-training에서 이미 target task에 관련된 여러 언어적 측면을 학습한다.
3. Framework
Training 절차는 두 단계로 구성된다.
첫 번째 단계는 large corpus of text에서 언어 모델을 학습한다.
두 번째 단계에서 labeled data를 이용하여 task에 맞게 fine-tuning을 한다.
3.1 Unsupervised pre-training
Unsupervised corpus of tokens u={u1,u2,...,un}이 주어지면 아래 식과 같이 우도를 최대화하는 방향으로 언어 모델링 목적 함수를 사용한다.
여기서 k는 context window의 크기이고 조건부확률 P는 Θ를 파라미터로 한 인공신경망을 사용한다.
본 논문의 실험에서 transformer의 변형인 multi-layer Transformer decoder를 언어 모델로 사용한다.
Transformer의 decoder 부분만 사용하고 cross self attention 부분을 제거한 것이다.
이 모델은 multi-headed self-attention을 input context token들에 적용한 후 position-wise feedforward layer를 거쳐 target token에 대한 출력 분포를 얻는다.
여기서 U는 토큰들의 context vector로 (u-k,...,u-1)이며, n은 layer의 개수이고 We는 토큰 embedding matrix이며 Wp는 position embedding matrix이다.
3.2 Supervised fine-tuning
3.1 section에서 pre-training을 한 모델은 각 task에 맞게 fine-tuning을 진행한다.
Fine-tuning은 labeled data를 이용하기 때문에 supervised learning이다.
Pre-trained 모델의 position-wise layer와 softmax layer 사이에 linear layer(Wy)를 추가하여 각 task마다 label y를 예측한다.
Labeled dataset을 C라 하고 dataset의 각 요소는 x1,...,xm으로 Input token의 시퀀스와 label인 y로 구성된다.
위와 같은 식을 이용하여 log likelihood를 최대화 하는 식으로 하면 다음과 같다.
Supervised model의 일반화 성능 향상과 수렴 속도 향상을 위해 보조 목적함수(auxiliary objective)를 추가한다.
그리고 unsupervised learning에 가중치를 곱하여 log likelihood를 최대화하면 최종 Loss 함수는 다음과 같다.
3.3 Task-specific input transformations
Figure 1과 같이 text classification과 같은 task들은 바로 fine-tuning이 가능하다.
그러나 pre-trained 모델은 연속적인 sequence로 훈련되었기 때문에 question answering과 textual entailment와 같은 다른 task들은 task에 맞는 input이 필요하다.
따라서 본 논문은 traversal-style approach를 사용하여 목표 task에 맞는 structured input을 pre-trained 모델이 사용할 수 있게 하여 정렬된 sequence로 변환한다.
Textual entailment
Entailment task에서는 전제 p와 가설 h를 구분 기호 토큰($)을 사용하여 연결한다.
Similarity
Similarity task에서는 두 문장의 고유한 순서가 없다.
이를 반영하기 위해 두 개의 입력 시퀀스를 독립적으로 모델에 넣은 후 두 개의 시퀀스 representation을 원소별로 더하여 linear output layer의 입력으로 넣는다.
Question Answering and Commonsense Reasoning
Context document z, 질문 q, 가능한 답변 {ak}가 주어지면 구분 기호 토큰 $을 추가하여 [z;q;$;ak]의 형태로 연결한다.
이러한 시퀀스들은 각각 독립적으로 모델에 입력된 후 softmax를 통해 정규화하고 가능한 답변들에 대한 출력 분포를 생성한다.
4. Experiments
4.1 Setup
Unsupervised pre-training
언어 모델 학습을 위해 다양한 장르의 출판되지 않은 7,000권 이상의 도서들로 구성된 BooksCorpus dataset을 사용한다.
이는 긴 지문의 텍스트가 포함되어 있어 생성 모델이 넓은 범위의 언어적 정보를 학습할 수 있다.
Model specifications
본 논문의 모델은 전반적으로 transformer 구조를 따른다.
- Layers : 12-layer decoder-only transformer with masked self-attention heads
- Dimensional states : 768
- Attention heads : 12
- Position-wise feed-forward networks dimensional states : 3072
- Optimization : Adam
- Learning rate : 2000 step까지 2.5e-4로 증가한 후 cosine schedule에 따라 0으로 감소
- Batch size : 64
- Epochs : 100
- Contiguous tokens : 512
- Weight intialization : N(0, 0.02)
- Subword sementation : BPE (40,000 merges)
- Dropout : 0.1
- Regularization : 변형된 L2(w=0.01)
- Activation function : Gaussian Error Linear Unit(GELU)
- Position embedding : learned position embeddings
- Preprocessing : fify library, spaCy tokenizer
Fine-tuning details
특별히 명시되지 않은 것들은 unsupervised pre-training의 하이퍼파라미터를 재사용한다.
- Dropout : 0.1
- Batch size : 32
- Epochs : 3
- Learning rate : 6.25e-5를 사용하고 λ는 0.5로 설정하여 linear learning rate decay schedule를 사용한다.
4.2 Supervised fine-tuning
자연어 추론, 질문 응답, 의미 유사성, 텍스트 분류 등 다양한 supervised task의 실험을 수행한다.
Natural Language Inference
Table 1은 다양한 NLI task에 대한 결과이며 RTE를 제외한 나머지 dataset에서 유의미한 성능 향상을 보여준다.
Question answering and commonsense reasoning
중학교와 고등학교 시험 문제들로 이루어진 RACE dataset과 올바른 엔딩을 선택하는 문제를 다루는 Story Cloze Test dataset을 이용한다.
Table 2는 해당 task 결과로 모든 dataset에서 기존 모델들보다 더 좋은 성능을 가진다.
Semantic Similarity
두 문장이 의미적으로 같은지 다른지 판단하는 task로 Microsoft Paraphrase corpus(MRPC), Quora Question Pairs(QQP), Semantic Textual Similarity benchmark(STS-B) dataset을 이용한다.
Table 3과 같이 semantic similarity에서 STSB와 QQP에서 SOTA 성능을 달성하였다.
Classification
Text classification task는 Corpus of Linguistic Acceptability(CoLA)와 Stanford Sentiment Treebank(SST-2) dataset을 이용한다.
Table 3을 보면 CoLA에서 큰 차이로 좋은 성능을 보여주고 SST2에서는 SOTA와 비슷한 성능을 보인다.
5. Analysis
Impact of number of layers transferred
Unsupervised pre-training에서 supervised target task로 transferred layer 개수에 따른 영향을 분석한다.
MultiNLI와 RACE dataset을 이용하였으며 Figure 2 좌측 그래프를 보면 transferring embedding들이 layer마다 최대 9%의 성능 향상을 미치는 것을 알 수 있다. 이는 transfer model의 각 layer가 유용한 기능을 포함한다는 것을 의미한다.
Zero-shot Behaviors
Figure 2 우측 그래프는 zero-shot 성능을 측정한 것이다.
x축은 pre-training 진행 정도를 의미하고 실선은 transformer, 점선은 LSTM을 사용한 성능을 나타낸다.
대부분의 task에서 pre-training을 많이 진행할수록 성능이 좋은 것을 통해 pre-training 과정이 대부분 downstream task에 적합함을 알 수 있다. 또한 transformer 구조가 LSTM보다 좋은 성능을 가진다.
Ablation studies
세 가지 ablation study를 진행한다.
첫 번째는 fine-tuning 과정에서 보조 LM 목적함수를 사용하지 않고 평가한다.
그 결과, 보조 목적함수가 NLI task와 QQP에 도움을 준다는 것을 발견하였다. 또한 전반적으로 큰 dataset은 보조 목적함수로부터 도움을 받지만 작은 dataset은 도움을 받지 못한다는 것도 확인하였다.
두 번째는 동일한 framework를 사용하면서 2048 unit의 LSTM과 비교하며 transformer의 효과를 분석한다.
그 결과, transformer 대신 LSTM을 사용하면 평균 약 5.6점이 떨어졌다.
마지막으로 논문에서 제시한 transformer 구조를 pre-training 없이 supervised target task에 바로 훈련한 결과를 분석한다.
Pre-training이 없는 모든 task에서 성능 저하를 보였다.
6. Conclusion
본 논문은 generative pre-training과 fine-tuning을 통해 자연어 이해에 강한 framework를 소개했다.
연속된 text로 이루어진 다양한 corpus로 pre-training 함으로써 long-range dependency를 처리하고 12개 dataset 중 9개에서 SOTA 성능을 달성하였다.