OpenAI 에서 발표한 GPT에 대한 논문이다.
해당 논문의 원본은 여기에서 볼 수 있다.
# Introduction
다양한 딥러닝 모델을은 레이블링 된 데이터를 이용해서 학습을 진행하지만, 레이블된 데이터를 구하기 힘들다는 문제가 존재한다. 그렇기 때문에, 레이블링 하지 않은 데이터를 이용해서 다양한 특성들을 학습할 수 있다. 이렇게 학습한 결과를 추가적인 supervision을 통해 성능을 향상시킬 수 있다. 대표적인 pre-trained word embedding으로는 word2vec, GloVe 등이 있다. Unlabeled text를 통해서 단어 단위의 정보를 학습하는 것은 크게 2가지 이유로 도전적이다.
- 어떠한 objective 를 이용해야 결과로 제공된 데이터를 transfer 해서 사용했을 때 효과적일지 명확하지 않다. 최근 다양한 연구들이 이러한 objective를 찾아내기 위해 이루어졌고, language modeling (GloVe), machine translation (CoVe), discource coherence 등이 제안되었다.
- 학습된 representation을 target task에 어떠한 방식으로 transfer할지 명확한 방식이 정의되어 있지 않다. 최근에는 task-specific changes 를 모델 구조에 적용하는 방식 (TagLM, ELMo 등), 복잡한 learning scheme 을 사용하는 방식, 보조적인 learning objective를 추가하는 방식 등이 제안되었다. 이러한 불확실성이 semi-supervised learning 방식을 더 어렵게 한다.
이번 논문에서는 unsupervised pre-training과 supervised fine-tuning을 합친 semi-supervised 방식을 제안한다. 최종적인 목표는 다양한 task에 대해 작은 변화만으로 적용시킬 수 있는 representation을 학습하는 것이다. 큰 규모의 레이블링 되지 않은 데이터와 task에 알맞는 레이블링된 데이터가 있다고 가정한다. 크게 두 단계로 구성된다.
- 레이블링 되지 않은 데이터로 모델의 초기 파라미터를 학습한다.
- 이렇게 최기화된 파라미터를 target task에 알맞게, 알맞는 objective에 맞게 추가적으로 학습한다.
모델 구조로는 Transformer를 사용한다. Transformer는 RNN과 비교했을 때, 멀리 떨어진 요소들 사이의 의존성을 학습하기에 적합하다. 모델을 transfer 해서 사용할 때 task-specific 한 입력을 생성해서 사용하게 된다. 이러한 방식은 다양한 task에 해당 모델을 최소한의 변화로 fine-tuning 할 수 있게 한다.
해당 모델을 4개의 서로 다른 language understanding task에 적용시켜본다 : natural language inference, question-answering, semantic similarity, text classification.
# Related Works
# Semi-supervised learning for NLP
이번 논문도 semi-supervised learning의 일종이라고 할 수 있다. 과거에는 레이블링 되지 않는 데이터를 기반으로 학습한 word-level 또는 phrase-level statistics를 사용해서 supervised model에 사용하는 방식이 존재했다. 이후에는 레이블링 되지 않은 데이터로 학습한 단어 임베딩을 사용하는 방식 (word2vec, GloVe 등) 들이 제안되었다. 이러한 방식은 대부분 단어 단위의 정보를 전달하는 반면, 이번 논문에서는 더 높은 수준의 의미를 학습하려고 한다.
# Unsupervised pre-training
Unsupervised pre-training은 semi-supervised learning의 한 종류다. Unsupervised pre-training의 목적은 좋은 초기 환경을 제공하는 것에 있다. 이번 논문과 가장 유사한 방식으로는 laguage modeling objective로 pre-training을 진행하고 target task로 fine-tuning 하는 방식이 있다. 해당 방식은 LSTM을 사용하게 되는데, 이러한 구조가 short range의 예측 성능을 제한하게 된다. 반면에, 이번 논문에서는 LSTM 대신 transformer를 사용함으로서 더 긴 의존성을 학습할 수 있다.
그 외에도 hidden representation을 사용하는 방식 (TagLM, ELMo, CoVe 등) 이 있다. 이렇게 생성한 representation을 보고 feature로 함께 사용하게 된다. 이러한 방식은 다양한 task에 대해서 서로 다른 많은 파라미터를 사용하고 학습해야 한다는 단점이 있다.
# Auxiliary training objective
보조적인 unsupervised training objective를 추가하는 것도 semi-supervised learning 의 변형 중 하나라고 할 수 있다. 과거에는 POS tagging, chunking, NER, LM 등을 이용해서 semantic role labeling의 성능을 향상시킨 사례가 있다. 이번 논문에서도 보조적인 objective를 사용한다.
# Framework
학습은 크게 2 단계로 구성된다. 첫 번째 단계는 큰 규모의 텍스트를 기반으로 language model 을 학습하는 것이다. 두 번째 단계는 fine-tuning 단계로, 레이블 된 데이터를 기반으로 학습을 진행한다.
# Unsupervised pre-training
레이블링 되지 않은 데이터 $ U = {u_1, u_2, ..., u_n} $ 에 대해서 다음과 같은 likelihood를 최대화 하는 방향으로 학습을 진행한다.
$ k $ 는 윈도우 크기고, condidional probability 는 파라미터 $ \theta $ 에 대해서 계산된다. 모든 파라미터는 stochastic gradient descent 방식으로 학습된다.
이번 논문에서는 transformer의 변형 중 하나인 multi-layer transformer decoder를 사용한다. 해당 모델은 multi-headed self-attention 연산을 모든 입력 토큰에 대해서 수행하고, 해당 결과를 position-wise feedforward layer의 입력으로 제공한다. [식-2] 에서 $ U $ 는 토큰의 context vector를 나타내고, $ W_e $ 는 토큰을 임베딩하는 matrix, $ W_p $ 는 position embedding matrix 이다.
# Unsupervised fine-tuning
[식-1]을 통해서 pre-training을 완료했다면, 학습된 파라미터는 target task에 맞게 fine-tuning 하게 된다. 해당 과정에서는 레이블링 된 데이터셋 $ C $ 를 사용한다고 가정한다. 데이터셋은 입력 $x^1, x^2, ..., x^m $ 과 레이블 $ y $ 로 구성된다고 한다. 입력들은 pre-trained 된 모델의 입력으로 제공되고 마지막 transformer block의 출력인 $ h^m_l $ 으로 출력된다. 해당 출력은 $ W_y $ 를 파라미터로 하는 linear output layer의 입력으로 제공되어 레이블인 $ y $ 를 예측하게 된다.
최종적으로 [식-4]를 최소화하도록 학습된다.
Language modeling을 fine-tuning 과정에서 보조 objective로 사용했을 때 supervised model의 generalization을 향상시킴과 동시에 빠르게 수렴할 수 있도록 하는 장점이 있었다. 또한, [식-5]와 같은 방식으로 optimization을 진행한다.
Fine-tuning 과정에서 추가적으로 필요한 파라미터는 linear output layer를 구성하는 $ W_y $ 와 delimiter를 위한 임베딩 뿐이다.
# Task-specific input transformation
특정 task의 경우, 구조화된 입력을 제공해야 하는 경우가 있다. (question answering, textual entailment 등) Task의 입력 구조가 pre-training을 진행했을 때의 입력 구조와 다르기 때문에 task-specific customization이 필요하다. 구조화된 입력을 ordered sequence로 변환해서 pre-trained 된 모델이 처리할 수 있도록 한다. 모든 변환에서는 시작과 끝 토큰인 $ <s>, <e> $ 를 사용하게 된다.이렇게 하면 task에 따라서 모델의 구조를 바꿀 필요가 없어진다.
- Textual entailment : premise $ p $ 와 hypothesis $ h $ 를 delimiter token인 $ \$ $ 로 구분하게 된다.
- Similarity : similarity task의 경우, 두 입력 문장의 순서에 의미가 업기 때문에 모든 경우의 수를 고려하게 된다. 그러므로 $ A \$ B $ 의 입력과 $ B \$ A $ 의 입력으로 생성된 두 결과를 elemebt-wise addition을 통해 최종 representation을 생성한다.
- Question-answering, Commonsense reasoning : context document $ z $ 와 question $ q $ , 답의 집합 $ { a_k } $ 를 입력으로 제공해야 한다. 모든 가능한 답변 $ a_k $ 를 본문, 질문과 함께 하나씩 연결해서 $ [z ; q ; a_k] $ 의 representation을 생성하게 된다. 각 representation은 독립적으로 모델의 입력으로 제공되고 softmax 함수를 통해서 결과를 예측하게 된다.
# Experiments
# Unsupervised pre-training
BooksCorpus dataset 을 이용해서 language model을 학습했다. 7,000개가 넘는 발행하지 않은 책들이 포함되어 있다. 상대적으로 길 문장들이 포함되어 있기 떄문에, long-range information을 학습하는데 적합하다. 또 다른 데이터셋으로는 ELMo와 유사하게 1B Word Benchmark 를 사용했다. 비슷한 크기의 데이터셋이지만, 문장 단위로 섞여져 있기 때문에 long-range 구조를 파괴한다. GPT 모델을 해당 데이터셋에서 18.4 라는 매우 늦은 perplexity를 달성했다.
# Model specification
GPT 모델을 기본적인 transformer의 구조를 따른다. 12-layer decoder-only transformer 를 masked self-attention head 를 이용해서 구현했다. Adam optimization을 사용했고, 2.5e-4 의 max learning rate 를 지정했다. learning rate는 처음 2,000 update 동안 증가시키다가 cosine schedule 에 따라서 서서히 0으로 수렴하도록 한다. 100 에포크 동안 학습했고, 랜덤하게 생성된 64개의 sample 로 mini-batch 를 생성했다. BPE(Byte Pair Encoding)을 상용했고, L2 regularization을 사용했다. Activation funtion으로는 GELU(Gaussian Error Linear Unit)를 사용했다.
# Fine-tuning details
별도로 명시하지 않는 이상, 모두동일한 하이퍼파라미터를 사용한다. 0.1의 drop out 을 적용하고, 6.25e-5 의 learning rate과 32 크기의 batch를 사용했다. Target task에 대해서 3번의 에포크를 통해서 빠르게 학습을 진행한다.
# Supervised fine-tuning
# Natural Language Inference (NLI)
NLI는 두 쌍의 문장에 대해서, 두 문장의 관계가 entailment, contradiction, neutral 인지 판단하는 task이다. 해당 task는 lexical entailment, coreference, lexial/semantic ambiguity 등의 해결하기 어려운 요소들이 있기 때문에 더욱 어렵다고 할 수 있다. 이번 논문에서는 총 5개의 데이터셋에 대해서 성능을 측정했다. (SNLI, MNLI, QNLI, SciTail, RTE) [표-2]는 5개의 데이터셋에 대한 성능을 비교한다. GPT 가 모든 데이터셋에 대해서 모든 baseline의 성능을 뛰어넘는 다는 것을 알 수 있다.
# Question answering and commonsense reasoning
Question answering task에 대해서는 RACE dataset (영어로 구성된 중/고등학교 시험 문제) 을 이용한다. 해당 데이터셋은 CNN과 SQuAD에 비해서 더 많은 reasoning type question을 보유하고 있다고 판단했다. 이러한 질문들은 long-range context를 필요로 하기 때문에 더 적합하다고 판단했다. 추가적으로 Story Cloze Test 를 통해서 검증을 진행했다. 결과적으로 GPT는 기존의 모든 모델들보다 좋은 성능을 제공한다는 것을 확인할 수 있었다.
# Semantic similarity
Semantic similarity는 두 문장이 의미적으로 유사한지 판단하는 task이다. 해당 task는 rephrasing, negation, syntactic ambiguity 등을 인지하는 능력을 필요로 한다. 총 3개의 데이터셋을 사용했다. (MRPC, QQP, STS-B) GPT는 3개의 데이터셋에서 모두 최고의 성능을 제공할 수 있었다.
# Classification
두 종류의 text classification task를 수행한다 : Corpus of Linguistic Acceptatbility (CoLA), Stanford Sentiment Treebank(SST-2) CoLA 에 대해서는 이전 최고 성능의 모델을 뛰어넘는 성능을 제공했고, SST-2 에 대해서는 최고 성능에 가까운 뛰어난 성능을 제공할 수 있었다.
결과적으로 총 12개의 데이터셋 중 9개의 데이터셋에서 state-of-the-art 성능을 제공할 수 있었다. 이러한 결과는 다양한 크기의 데이터셋에 대해서 비슷하게 좋은 성능을 제공할 수 있다는 것을 알 수 있다.
# Analysis
# Impact of number of layers transferred
해당 논문은 다양한 개수의 layer를 unsupervised pre-training 에서 supervised target task로 transfer 할 때의 성능을 분석했다. [그림-2]의 왼쪽 그래프는 MutliNLI와 RACE 에서의 성능을 확인할 수 있다. Transfer 하는 층의 개수가 많을수록 성능이 더 좋아진다는 것을 확인할 수 있었다. 이를 통해 pre-trained model의 각 층이 target task를 해결하기 위한 다양한 특성들을 각각 학습한다는 것을 알 수 있다.
# Zero-shot Behaviors
Language model pre-training이 효과적인 이유에 대해서 살펴본다. 한 가설은, language model의 성능을 향상시키기 위해서 다양한 nlp task를 학습한다는 것이다. [그림-2]의 오른쪽 표에서 Supervised fine-tuning을 하지 않고, pre-training 만의 성능을 확인할 수 있다. Pre-training을 더 많이 할수록 다양한 task의 성능이 함께 증가하는 것으로 미루어 보아, language modeling을 수행하면서 다양한 nlp task 를 위한 특성들을 함게 학습한다는 것을 알 수 있다.
# Ablation studies
동일한 모델에 대해서 다양한 실험들을 진행했다. ([표-5] 참고)
- Fine-tuning 과정에서 보조적인 LM task를 제외해서 성능을 확인했다. 데이터셋이 큰 경우 이런 보조적인 objective의 영향을 많이 받지만, 작은 데이터셋의 경우는 영향을 적게 받는다는 것을 알 수 있었다.
- Transformer의 성능을 확인하기 위해서 transformer 대신 2048개의 unit으로 구성된 한 개의 LSTM 층을 추가했다. 평균적으로 5.6 점 정도의 점수 하락을 확인할 수 있었다. (MRPC 데이터셋에 대해서는 LSTM이 더 좋은 성능을 제공했다.)
- 기존의 모델을 바로 supervised target task에 학습시킨 경우 성능을 확인했다. Pre-training을 진행하지 않은 경우, 모든 task에 대해서 성능이 떨어진다는 것을 확인할 수 있었다.
# 관련 논문
- Supervised learning of universal sentence representations from natural language inference data. : pre-trained word embedding (1)
- Distributed representations of words and phrases and their compositionality : pre-trained word embedding(2) (word2vec)
- Glove: Global vectors for word representation : pre-trained word embedding (3) (GloVe, 링크)
- Learned in translation: Contextualized word vectors. : (CoVe, 리뷰)
- Discourse-based objectives for fast unsupervised sentence representation learning. : discource coherence 를 objective로 학습하는 방식
- Semi-supervised sequence tagging with bidirectional language models. : (TagLM, 리뷰)
- Deep contextualized word representations. : (ELMo, 링크)
- Semi-supervised multitask learning for sequence labeling. : auxiliary learning objective 를 사용하는 방식
- Attention is all you need. : Transformer에 대한 논문 (링크)
댓글