산 넘어 산 개발일지

[논문 리뷰] GPT-1 : Improving Language Understanding by Generative Pre-Training (OpenAI) 본문

논문 리뷰/NLP

[논문 리뷰] GPT-1 : Improving Language Understanding by Generative Pre-Training (OpenAI)

Mountain96 2022. 3. 6. 22:05

Abstract

Natural language understanding은 두 문장간의 추론 문제, 두 문장의 의미적 동일성, QA, 문서 분류 등 다방면으로 구성된다. 그러나 unlabeled 된 텍스트 데이터는 많은 반면, labeled된 텍스트 데이터는 적기 때문에 모델 훈련에 어려움이 있다. 따라서 본 논문에서는 다양한 unlabeled 텍스트를 사용한 generative pre-training 인 language model을 제시하며, 이는 discriminative fine-tuning을 사용하여 각 특수한 작업에 사용될 수 있다. 이를 통해 완성한 모델은 기존 특수한 작업을 위해 만들어진 모델들보다 뛰어난 성능을 보였으며, 12개의 작업 중 9개의 작업에서 그 성능이 우수했다는 결과가 이를 증명한다. 

  • 적은 labeled 텍스트많은 unlabeled 텍스트로 인한 어려움을 해결하기 위해 등장
  • 다양한 unlabeled 텍스트로 language model을 generative하게 pretraining하고, 각 작업에 맞게 fine-tuning시킨다.
  • 실제로 많은 작업에서 기존 작업에 특화된 모델보다 더 좋은 성능을 보였다.

Introduction

  raw text에서 효과적으로 학습하는 것은 NLP에서 중요한 문제인데, 왜냐하면 이는 지도학습에 의존하는 방식을 완화해줄 수 있기 때문에다. 많은 딥러닝 방법들에서 labeled된 데이터를 사용하여 학습하는데, 실제 도메인에서는 labeled 된 데이터가 적기 때문에 실용성이 떨어진다. 이런 상황에서, unlabeled data에서 언어적 정보를 이용할 수 있는 모델은 많은 시간과 비용을 들이는 annotation 작업을 대체할 수 있고, 만약 지도학습이 가능한 환경일지라도 unlabeled data에서 좋은 표현을 학습하는 것은 상당한 성능적 이점을 더할 수 있다.

  그러나 unlabeld text에서 단어 수준의 정보 이상을 이용하는 것은 두 가지 이유에서 어렵다. 첫 번째는 transfer에 유용한 text 표현을 배우는 것에 어떤 형태의 최적화 목적(Optimization Objective)이 가장 좋은지 불분명하기 때문이다. 최근에는 language modeling, machine translation, discourse coherence와 같은 다양한 objective들이 연구되었는데, 다양한 작업들에서 어느 한쪽이 항상 우위를 점하지 않고 작업마다 우위를 점하는 objective가 달랐다. 두 번째는 이렇게 학습된 표현들을 목표 작업(target task)으로 transfer시키는 가장 효과적인 방법이 불분명하기 때문이다. 현재로써는 복잡한 학습 방법과 보조 learning objective를 조합하여 사용하는 기술 정도가 있다. 이런 불분명성은 NLP에서의 준지도학습(semi-supervised learning)을 더 어렵게 만들었다.

  본 논문에서는 비지도(unsuperivsed) pre-training지도(supervised) 미세조정(fine-tuning)을 조합한 NLP에 대한 준지도학습을 제시한다. 이 연구의 목표는 다양한 작업에 사용될 수 있으면서도 약간의 변화(adaptation)로 transfer할 수 있는 보편적인 표현들을 학습하는 것이다. 즉 이를 위해서는 대량의 unlabeled text corpus와 목표 작업을 위한 labeled 데이터셋이 필요하다. 중요한 것은 unlabeled data와 labeld data가 꼭 같은 도메인에 속할 필요가 없다는 것이다. 이를 위해 두 가지 과정을 만들었다. 첫째는 unlabeled data에 language modeling objective를 사용하여 초기 파라미터들을 학습하는 것이다. 두번째는 labeled data를 사용하여 이 초기 파라미터들을 주어진 목표 작업에 맞게 조금씩 수정하는 것이다.

  모델 구조로는 Transformer를 사용했는데, 이는 기계 번역, 문서 생성, 구분 분석에 큰 효과를 발휘한다고 알려져있다. 또한 이는 긴(long-term) 데이터에 대해서도 기존 RNN이나 LSTM과 같은 모델들보다 훨씬 robust하게 작동한다. transfer시에는 traversal-style approaches에서 사용된 task에 특정적인 input adaptation을 사용한다. 이는 뒤에서 설명되겠지만, task마다 요구하는 input text가 다양한데, 이를 연속적인 싱글 시퀀스로 변환하는 것이다. 즉 task에 맞는 미세조정을 위해서 pre-trained 모델의 출력을 변형시킨 것이라 보면 되겠다. 이 때문에 pre-trained 모델의 출력만 바꿔도 다양한 작업에 미세조정이 가능하다.

  본 논문에서 제시한 모델은 4가지 작업에서 검증하였다 - 자연어 추론, QA, 두 문장간의 의미적 동일성, 텍스트 분류. 그리고 총 12개의 작업 중 9개 작업에서 작업에 특화된 기존 모델들보다 높은 성능을 보였다.

  • unlabeled data에서 학습하는 것은 실용적인 측면과 성능적인 측면에서 모두 중요하다.
  • 그러나 이는 유용한 text 표현을 배우기 위한 최고의 Optimization Objective와 목표 작업으로 transfer시키는 최고의 효과적인 방법이 불분명하기 때문에 어렵다.
  • 본 논문에서는 Unsupervised pre-training과 Supervised fine-tuning을 사용하는데, 이는 unlabeled data로 language model을 만들고, 이를 통해 얻은 결과물을 각 작업에 맞는 labeld data를 사용하여 fine-tuning한다. 
  • 모델 구조로는 Transformer를 사용하며, language model 에서 fine-tuning으로 넘어가는 시점에서 language model의 출력을 원하는 작업에 맞는 input으로 변형하여 넘겨준다.

 

Related Work

  NLP 준지도학습(Semi-supervised learning for NLP) : NLP에 대한 준지도학습은 시퀀스 라벨링이나 텍스트 분류에 대한 적용으로 많은 관심을 받았는데, 초기 연구에서는 unlabeled data를 사용해서 단어 수준(word-level)이나 문맥 수준(phrase-level)을 계산하고 이를 feature로 사용하여 지도학습에 적용시켰다. 지난 몇 년간의 연구들에서는 unlabeled corpora로 훈련된 단어 임베딩을 사용하여 다양한 작업에 성능적 발전을 가져다주었다. 그러나 이런 접근 방식들은 주로 단어 수준의 정보를 transfer한다는 점에서 한계가 있으며, 본 논문은 이보다 더 높은 수준의 정보를 transfer하고자 한다. 최근 연구들에서는 unlabeled data에서 단어 수준의 의미를 넘어서 더 고차원적인 문맥 수준(phrase-level)이나 문장 수준(sentence-level)의 임베딩을 시도하기 시작했다.

 

  비지도 사전학습(Unsupervised pre-training) : 비지도 사전학습은 지도 학습 objective를 조절하는 것이 목표가 아니라 좋은 시작점(initialization point)를 찾는 것이 목표라는 점에서 준지도학습의 특별한 유형이라 할 수 있다. 초기 연구들에서는 이를 이미지 분류와 회귀 문제에 사용했다. 그 다음의 연구들에서는 사전학습이 우수한 정규화(regularization)로 작용한다는 것을 증명하였으며, 이는 DNN에서의 일반성을 높여주었다. 최근 연구에서는 이 사전학습이 이미지 분류, 음성 인식, 다의어 명확화, 기계 번역에서 사용되는 DNN의 학습을 도와주는 용도로 사용된다.

  본 논문과 비슷한 연구로는 언어 모델 objective를 사용하여 사전학습을 진행하고, 이를 목표 작업을 위해 미세조정하는 연구가 있었다. 그러나 이 연구에서는 사전학습을 할 때 언어적 정보를 얻기 위해 LSTM을 사용했는데, 이 때문에 짧은 범위의 데이터에서만 모델이 유효했다. 그러나 본 논문에서는 transformer를 사용하여 긴 범위의 데이터에서도 유효하도록 했다. 또한 더 큰 범위의 작업에서도 유용한데, 이는 자연어 추론, paraphrase 감지, 그리고 story completion를 포함한다. 또한 다른 연구들에서는 목표 작업을 위한 지도학습을 진행할 때 사전학습이나 기계 번역 모델에서 가져온  은닉 표현(hidden representation)을 보조 feature로써 활용하는데,  이는 각 작업을 위한 상당한 양의 새로운 파라미터를 요구한다. 이에 비해 본 논문의 모델은 transfer 시 모델 구조에 대해 최소한의 변화만을 요구한다

 

  보조 학습 목적함수(auxiliary training objectives) : 보조 비지도 학습 목적함수를 추가하는 것은 준지도학습의 대안에 가깝다. 초기 연구에서는 POS tagging과 같은 보조 NLP 작업을 사용하여 sementic role labeling을 개선하였으며, 최근에는 보조 언어 모델링 목적함수를 target task의 목적함수에 사용하여 시퀀스 라벨링에서의 성능적 개선을 증명했다. 본 논문의 실험에서도 보조 목적함수를 사용하는데, 비지도 사전학습 자체가 이미 목표 작업과 연관된 언어적 정보를 학습한다.

 

  • 단어 수준보다 더 고차원적인 수준의 정보를 transfer하고자 한다(문맥 수준, 문장 수준 등)
  • 비지도 사전학습의 목표는 좋은 시작점을 찾는 것이다.
  • Transformer를 사용하여 긴 범위의 데이터에서도 유효하다.
  • Transfer시 최소한의 변화만을 요구한다.
  • 보조 목적함수를 사욯하지만, 비지도 사전학습 자체가 이미 목표 작업과 연관된 언어적 정보를 학습한다.

 

Framework

  본 모델의 학습은 두 가지 단계(stage)로 진행된다.

  1. 대량의 말뭉치(corpus of text)로 대용량의 언어모델을 학습
  2. labeled data를 사용하여 목표 작업에 맞게 미세조정

비지도 사전학습(Unsupervised pre-training)

  비지도 말뭉치의 토큰들 u={u_1, u_2, ... ,u_n} 이 주어졌을 때, 아래 우도를 최대화하는 방향으로 표준 언어 모델링 목적함수를 사용한다.

  이 때 k는 context window의 크기이고, 조건부확률 P는 세타를 파라미터로 사용한 신경망을 이용한다. 이 파라미터는 SGD로 학습된다.

  본 논문의 실험에선, Transforemr의 변형인 multi-layer Transformer decoder를 언어 모델로 사용한다. 이 모델은 multi-headed self-attention을 input context token들에 적용하며, 이후 position-wise feedforward layer를 거쳐 목표 토큰에 대한 출력 분포를 얻는다.

  여기서 U는 U = (u_-k, ..., u_-1)에 해당하는 토큰의 context vector이며, n은 layer 개수이고, W_e는 토큰 embedding matrix, W_p는 position embeddign matrix이다. 

  (이 때 ∀i는 ∀l을 의미한다. 즉 오타이다)

지도 미세조정(Supervised fine-tuning)

  비지도 사전학습으로 모델을 훈련한 뒤에, 사용된 파라미터들을 목표 작업에 맞게 미세조정한다. 이 때 작업에 맞는 labeled 데이터셋 C가 있다고 가정하며, 이 데이터셋의 각 요소는 x^1, x^2, ..., x^m으로 이루어진 input token의 시퀀스와 label인 y로 구성된다. 이 input들을 사전 학습된 모델에 통과시켜 transformer의 최종 출력물인  h_l^m을 얻게 되고, W_y와 y로 이루어진 선형 출력 layer(linear output layer)에 입력된다.

 이를 사용하여 다음 우도를 최대화한다.

  또한 언어 모델을 보조 목적함수로써 미세조정에 포함시키는 것이 일반화를 향상시키고 수렴을 가속화한다는 점에서 미세조정의 학습을 돕는다는 것을 알아냈다. 이는 다른 이전 연구에서도 보조 목적함수로 성능을 향상시킨 바가 있다. 

  구체적으로, 다음 목적함수를 최적화한다.

  종합적으로, 미세조정 시에 이 모델에서 요구하는 추가 파라미터는 오직 Wy와 구분자 토큰을 위한 embedding이다.

Task-specific input transformations

  텍스트 분류와 같은 작업에서는 위 그림에서 볼 수 있듯이 이 모델을 사용해서 바로 미세조정이 가능하다. 그러나 다른 작업들에서는 특별하게 구조화된 input이 필요하다. 우리의 사전학습 모델은 연속적인 텍스트 시퀀스로 훈련되었기 때문에, 해당 작업에 적용하기 위해서는 약간의 수정이 필요하다. 이전 연구에서는 transfer된 표현 위에 새롭게 해당 작업에 맞는 구조를 쌓아서 모델을 만들었다. 그러나 이는 작업에 맞는 모델 구조를 추가적으로 설계해야 하고 이런 추가적인 구조에 전이학습을 사용하지 않는다. 이 대신, 본 논문에서는 traversal-style approach를 사용하는데, 이는 목표 작업에 맞는 구조화된 입력(structured input)을 사전학습 모델이 사용할 수 있는데 정렬된 시퀀스(ordered sequence)로 변환하는 것이다. 

 

  Textual Entailment

    함의 문제에 대한 작업에서는, 전제 p와 가정 h를 구분자 토큰 $를 사이에 두고 연결한다.

 

  Similarity

    유사 문장에 대한 작업에서는, 두 문장의 순서가 결과에 관계가 없다. 이를 반영하기 위해 입력 시퀀스를 순서가 뒤바뀐 두 개의 입력 시퀀스로 나누어서(물론 두 문장 사이에 구분자 토큰이 존재한다) 독립적으로 모델에 입력한다. 이를 통해 두 시퀀스에 대한 두 개의 시퀀스 표현인 h_l^m이 완성되고, 이는 원소별로(element-wise) 더해져서 선형 출력 layer의 입력으로 사용된다.

 

  Question Answering and Commonsense Reasoning 

    context document z, 질문 q, 가능한 답변들 {a_k}가 주어진다면, 여기서 [z; q; $; a_k] 식으로 연결해준다.($ : 구분자 토큰) 이렇게 완성된 시퀀스들은 각각 독립적으로 모델에 입력되며, softmax를 통해 정규화(normalize)되고 가능한 답변들에 대한 출력 분포를 생산하게 된다.

 

Experiments

  Setup

    비지도 사전학습(Unsupervised pre-training)

      언어 모델 학습을 위해서 BooksCorpus 데이터셋을 사용했다. 이는 다양한 장르에 속한 7,000권 이상의 출판되지 도서들로 구성된다. 특히 이는 긴 범위의 연속된 text를 포함하는데,  이로 인해 생성 모델이 넓은 범위의 언어적 정보를 학습할 수 있다. 또 다른 데이터셋인 1B Word Benchmark는 ELMo에서도 사용되었는데, 사이즈가 비슷하지만 문장 수준에서 섞여 있어서 넓은 범위의 정보가 파괴되어있다. 

 

    Model Specifications

      전반적으로는 Transformer를 따른다. 

Hyperparameter 내용
Layers 12-layer decoder-only transformer with masked self-attention heads
Dimensional states 768
Attention heads 12
Position-wise FFN dimensional states 3072
Optimization Adam
Learning rate max : 2.5e-4.
초기 2000step까지는 최대 2.5e-4까지 선형적으로 증가.
이후 cosine schedule에 따라 0으로 서서히 감소
Batch_size 64
Epochs 100
Contiguous tokens 512
Weight initialization N(0, 0.02)
Subword Segmentation BPE (40,000 merges)
Dropout 0.1
Regularization 변형된 L2(w=0.01)
Activation function Gaussian Error Linear Unit(GELU)
Position embedding learned positoin embeddings
(sinusoidal 안씀)
전처리 fify library, spaCy tokenizer

    Fine-tuning details

      특별히 명시되지 않은 것들은 미지도 사전학습에 사용된 하이퍼파라미터들을 재사용했다.

Hyperparameter 내용
dropout 0.1
batch size 32
epochs 3 (3번이면 충분했다)
learning rate 최대 6.25e-5
linear learning rate decay schedule을 사용했다. (warmup을 포함해 학습당 0.2%, 람다=0.5)

  Supervised fine-tuning

    Natural Language inference(자연어 추론)

      이는 짝지어진 두 문장이 모순(contradiction)인지 혹은 중립(neutral)인지를 판단하는 문제이다. Image captions(SNLI),  음성 기록, 유명 소설, 정부 보고서(MNLI), 위키피디아 문서(QNLI), 과학 시험(SciTail)과 뉴스 기사(RTE)등의 데이터셋으로 검증을 한 결과 RTE를 제외한 나머지 데이서테셋에서 유의미한 성능 향상을 보여줬다.

    Question answering and commonsense reasoning

      이는 QA 문제이다. 사용한 데이터셋으로는 중학교와 고등학교 시험 문제들로 이루어진 RACE 데이터셋, 이야기에서 올바른 엔딩을 선택하는 문제를 다루는 Story Cloze Test 데이터셋이 있다. Story Cloze에서는 약 8.9%, RACE 데이터셋에서는 전반적으로 약 5.7%의 성능 향상을 보여줬다.

    Semantic Similarity

      이는 두 문장이 의미적으로 같은지 다른지를 판단하는 문제이다. 사용한 데이터셋으로는 Microsoft Paraphrase corpus(MRPC), the Quora Question Paris(QQP), Semantic Textual Similarity benchmark(STS-B)가 있다. 이 중 STSB와 QQP에서 SOTA의 성능을 끌어냈다.

 

    Classification

      텍스트 분류로 사용한 데이터셋으로는 문법적으로 맞는지를 판단하는 Corpus of Linguistic Acceptability(CoLA)와 단순히 이진분로 사용되는 Stanford Sentiment Treebank(SST-2)가 있다. CoLA에서는 기존 성능과 비교했을 때 큰 성능 향상을 이루었으며, SST2는 SOTA와 맞먹는 성능을 발휘했다.

Analysis

  Impact of number of layers transferred

    사용되는 transferred layer 개수에 따른 효과를 분석해보았다. MultiNLI와 RACE데이터셋에서 실험을 진행했으며, 좌측 그래프를 보면 transferring embedding들이 layer마다 최대 9%의 성능 향상을 일으킨다는 것을 알 수 있다. 이는 사전학습 모델의 각 layer가 유용한 기능을 포함한다는 것을 의미한다.

  

  Zero-shot Behaviros

    저자들은 왜 transformer를 사용한 language model 사전학습이 효과적인지를 밝히고자 했다. 이에 대한 가정은 근본적인 generative model이 language modeling의 capability를 향상시키고자 많은 작업들을 배울 수 있고, LSTM과 비교했을 때 transformer의 구조화된 attentional memory가 transfer시에 도움이 된다는 점이다. 이를 위해 저자들은 몇 가지의 휴리스틱한 solution들을 고안했는데, 이는 지도학습을 통한 미세조정 없이 generative model 그 자체로 작업에 사용해보는 것이다. 이 휴리스틱 solution의 결과가 우측 그래프에 나타나있다. 그래프를 보면 학습 횟수에 따라 안정적으로 꾸준히 성능이 증가하는데, 이는 생성적 사전학습(generative pretraining)이 광범위한 종류의 작업들을 배우는 것에 도움을 준다는 것을 의미한다. 또한 LSTM이 더 높은 편차를 보여주는데, 이는 transformer 구조의 귀납적 편향이 transfer를 돕는다는 것을 의미한다.

    CoLA(linguistic acceptability) 데이터셋에서는, 생성 모델이 사용하는 token log-probability의 평균을 score로 사용했고, thresholding으로 예측을 만들었다. SST-2(감성 분석)는, 각 토큰에 "very"라는 토큰을 붙였고 language model의 출력 분포를 "positive"와 "negative"로 제한하여 더 높은 probability를 prediction으로 사용해서 측정하였다. RACE(QA)데이터셋에서는, generative model이 가장 높은 평균 token log-probability로 뽑아내는 것을 정답으로 측정하였고, DPRD(winograd schemas)에서는 확실한 대명사들을 가능한 지시대상 중 두 개로 교체하여 예측을 진행하였다.

 

  Ablation studies

    세 가지 ablation study를 진행하였다. 첫 번째는, 미세조정 시 보저 LM 목적함수를 사용하지 않고 성능을 관찰하엿다. 그 결과 보조 목적함수가 NLI task와 QQP에서 도움을 준다는 것을 확인했다. 또한 전반적으로 큰 데이터셋은 보조 목적함수로부터 도움을 받는 반면, 작은 데이터셋에서는 도움을 받지 못한다는 것도 확인했다. 두 번째는, 같은 framework를 사용하면서 2048 unit의 LSTM과 비교하며 Transformer의 효과를 분석했다. 결과는 LSTM을 Transformer 대신 사용할 때의 성능이 평균 약 5.6점 정도가 떨어졌다. LSTM은 오직 MRPC데이터셋에서만 Transformer보다 더 나은 성능을 보였다. 마지막으로, 논문에서 제시한 transformer구조를 사전학습을 거치지 않고 바로 작업에 맞춘 지도학습을 진행했을 때의 결과를 분석했다. 사전학습을 거치지 않는 것은 모든 작업에서의 성능 저하를 나타냈다.

 

Conclusion

  여기서는 생성적 사전학습과 미세조정을 통해 만들어진, "작업에 대한 지식이 없는", 자연어를 이해하는 것에 강한 framework를 소개했다. 광범위한 정보를 담는 연속된 텍스트로 이루어진 다양한 말뭉치들로 사전학습된 모델은 상당한 일반 지식(world knowledge)과 넓은 범위의 정보 처리가 가능한 기능을 얻었는데, 이는 QA, 의미적 유사도 평가, entailment determination, 텍스트 분류와 같은 작업들에 맞게 성공적으로 전이되었으며, 12개의 데이터셋 중 9개에서 SOTA를 달성하였다. 특화된 작업의 성능 부스트를 위한 비지도 사전학습은 오랫동안 기계학습 연구의 중요한 목적이였다. 우리의 작업은 이 분야에서 상당한 성능 향상도 가능하고, 어떤 모델(Transformer)과 데이터셋(긴 범위에 대한 의존성이 존재하는 텍스트) 이 가장 좋은지에 대한 힌트도 준다. 이 연구가 새로운 비지도 학습 연구를 도와주기를 바라며, 더 나아가 비지도 학습이 어떻게, 그리고 언제 발생하는지에 대한 이해를 돕는 것에도 도움이 되기를 바란다.

 


리뷰

  아아...너무나 길고 길었다...

  포스팅을 하다가 중간에 GPT를 먼저 구현해보고 글을 쓰면 더 잘써지지 않을까 해서 구현하는데 1주일이 또 걸렸다. gpt논문을 통해 NLP분야에서의 사전 학습에 대해서 알 수 있었다. 덧붙이자면, 여기서 자주 언급되는 Language model이란 토큰을 입력했을 때 다음 토큰을 예측하는 모델인 것 같다. 방금 써보니 그럼 비지도학습 모델이 아니지 않나? 싶은데 KoGPT는 이런 식으로 훈련이 되었다고 한다. 일단은 LM을 다음 토큰 예측 모델이라고 이해하고 넘어가도 괜찮을 것 같다. 다음으로는 BERT 논문을 분석해보고자 한다. 그 전에 GPT 구현 먼저 정리해야지

 

Reference

https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf

 

Comments