GPT1 - Improving Language Understanding by Generative Pre-Training - 논문 리뷰

govlKH·2023년 7월 4일
0

논문리뷰

목록 보기
4/45

GPT1 - Improving Language Understanding by Generative Pre-Training

< GPT-1 >

우선 수월한 이해를 위해 논문 리뷰에 앞서 간단하게 GPT-1에 대해서 정리를 해 보겠다.

GPT-1은 language model로 문장이 얼마나 자연스러운지 확률적 계산을 통해 문장의 특정 위치에 출현하기 적합한 단어를 예측하는 모델이다.
(language model과 관련해서는 GPT1을 이해하기 위한 내용(1)에서 자세하게 참고할 수 있습니다)

그렇다면 왜 GPT-1은 language model을 사용할까?
이 질문에 대해서 가장 큰 이유는 특별히 레이블링이 필요없기 때문이다.
거의 대다수 모델은 레이블링 있는 있는 학습 데이터가 필요했다. 사람이 직접 레이블링을 하는 경우는 시간이 오래걸릴 뿐 아니라 100% 정확함을 보장할 수 없다.

하지만 language model은 이전의 단어들을 가지고 다음 단어를 예측하기에 별도로 사람을 통한 레이블링 작업이 필요없는 것이다. 이러한 장점을 통해 엄청난 양의 데이터를 학습하여 우리가 알지 못하던 특성또한 학습할 수 있기에 뛰어난 자연어 처리 모델을 만들 수 있다는 것이 GPT-1의 핵심이다.


0. Abstract

"자연어 처리"
textual entailment(natural language inference) : 자연어 추론
question answering : 질의 응답
semantic similarity : 문장 유사도
classification : 분류
등으로 구성된다.

지금부터 설명할 GPT-1은 위의 4가지 task에도 뛰어난 성능을 보인다.

Q. 그렇다면 이러한 성능이 뛰어난 GPT-1은 왜 나오게 되었을까?
우리가 가지고 있는 데이터는 무궁무진하게 많지만, label이 되어 있는 텍스트 데이터는 너무 적었다.
즉, unlabeled 된 텍스트 데이터만 많았기에 훈련하는데 어려움이 존재했었다.
이러한 한계점을 극복하기 위해 unlabeled text 데이터를 사용하고자 하였다.
본 논문에서 unlabeled text를 사용하여 generative pre-training하고, 각 작업에 맞는 fine-tuning(generative, disciminative, ...)을 통한 language model을 제시하였다.
(위 모델에 관해서는 GPT-1을 이해하기 위한 내용(2)에서 Generative model VS Discriminative model을 다루겠습니다)

  1. 첫 번째 학습 과정 : unsupervised pre-training
  2. 두 번째 학습 과정 : supervised fine tuning
    (이와 관련해서는 'Framework' 부분에서 자세히 다루겠다)

이러한 작업은 뛰어난 성능 향상을 증명하였고, 연구 대상 12개 작업 중 9개 작업에서 기술을 크게 개선시켰다.
(상식 추론(commonsense reasoning):8.9%, 질문 답변(question answering):5.7%, 자연어추론(textual entailment):5.7%)

1. Introduction

앞의 abstract에서 말한 바와 같이 GPT-1은 unlabeled text data를 사용한다. 이는 지도학습에 대한 의존을 완화시킬 수 있으며 시간과 비용이 들어가는 annotaion 작업을 대체하고, 방대한 데이터의 학습으로 효율을 올릴 수 있다.

하지만 라벨이 없는 텍스트에서 단어 수준 이상의 정보를 활용하는 것은 두 가지 이유에서 어렵다고 한다.

1) 라벨이 없는 데이터를 학습시키다 보니, 어떠한 유형의 최적화 목표가 가장 적절한지 불분명하다.
언어 모델링, 기계 번역, 담화 일관성 등 각 연구의 주제에 알맞게 서로 다른 최적화 목표를 가지고 진행이 되어야 하는데, 라벨이 없는 데이터로는 까다로움이 존재한다.
2) unlabeled data로 학습시켰다고 했을 때, 학습된 표현들을 목표 작업으로 옮기는 가장 효과적인 방법이 불분명하다.
기존에는 model architecture를 task별로 변경하거나, 복잡한 학습방법을 사용한다. 이러한 불확실성으로 인해 자연어처리를 위한 효과적인 반지도 학습(semi-supervised learning)이 어렵다.

GPT는 이러한 unlabeled text data의 활용 문제를 보완하기 위해 task에 따른 adaptation을 최소한으로 하여 미세조정을 통해 다양한 task에 적응 가능함을 목표로 두고 진행하였다. : Semi-supervised language model, GPT 제안
( 추가로 GPT-1은 Model-Agnostic으로 모델 종류에 구애를 받지 않으려 노력했고,
GPT-2,3는 few shot learning으로 minimalist 데이터 셋으로부터 예측을 하기 위해 노력했다. )

이제부터 GPT-1에 대해 자세히 이야기 해보자.
GPT-1은 대량의 unlabeled text corpus를 이용한 unsupervised pre-training과 labeled data를 활용한 supervised fine-tuning(task에 맞는 미세조정)을 조합한 준지도 학습을 제시한다.
위에서 말했듯, GPT-1은 다양한 task에서 사용될 수 있으며 약간의 변화로 transfer할 수 있는 보편적인 표현들을 학습하고자 한다.

모델의 구조로는 기계번역, 문구 생성, 구분 분석 등에서 큰 효과를 발휘한 "Transformer"를 사용한다.

Q) What is Transformer?
트랜스포머는 attention is all you need에서 설명된 딥러닝 모델로, 핵심은 기존 문장 번역 모델들이 RNN에 의존했던 것과 달리 트랜스포머는 온전히 attention 매커니즘에 의존한다. attention매커니즘의 가장 큰 장점으로는 문장 내 단어가 여러개 존재하여도, 한 번에 연산이 가능하다는 것이다. 참고로 RNN은 단어가 10개면, 10번 순차적으로 계산을 해야했다.
RNN을 attention으로 대체했지만, 번역 모델에서 자주 사용되는 인코더 디코더 아키텍처를 유지했고, 영어-> 독일어, 영어->불어 로 번역하는 수행평가에서 최고점을 얻었다.
기존 모델과 가장 큰 차이는 attention 레이어이다. 기존 모델들은 인코더 디코더 디자인을 사용할 때 보통 RNN을 사용했지만, transformer는 과감하게 attention으로 대체했다.

이러한 Transformer는 long term data에 대해서도 기존의 RNN LSTM과 같은 모델에 비해 훨씬 robust하게 작동한다.
그렇기에 이 Transformer를 사용하였고, language model에서 fine-tuning으로 넘어가는 시점에서 language model의 출력을 원하는 작업에 맞는 input으로 변형하여 넘겨줄 수 있게 만들었다. 즉, task에 맞는 미세 조정을 위해 pre-trained 모델의 출력을 변형시킨 것이다.
( 차후 3.3 Task-specific input transformations에서 자세히 다루겠습니다)

  • 이전에는 unlabeled data로 훈련된 단어 임베딩을 사용하여 다양한 작업에 성능 발전을 가져왔지만, 이런 접근은 단어 수준의 정보만 transfer한다는 점에서 한계가 있다. 본 논문에서는 이러한 단어 수준 보다 더 고차원적인 정보를 transfer하고자 한다.(문맥 수준, 문장 수준 등)
  • 방대한 양을 활용하기 위한 unlabeled data를 사전학습 시키는데, 이에 대한 목표는 좋은 시작점을 찾는 것이다.(사전학습이 우수한 정규화 및 일반화 가능성을 높여준다)
  • Transformer를 사용하여 long term data에 대해서도 좋은 성능을 보인다.
  • task에 맞는 변화를 진행할 때(tansfer 시) 최소한의 변화를 추구한다.
  • 보조 목적함수를 사용하지만(성능 개선, 일반화 성능 향상을 위해), 비지도 사전학습 자체가 이미 목표 작업과 연관된 언어적 정보를 학습한다.

3. Framework

위에서 말했듯, GPT-1은 두 단계의 학습 과정으로 진행된다.

  1. 첫 번째 학습 과정 : unsupervised pre-training
    대량의 말뭉치(corpus of text)로 대용량의 언어모델을 학습
  2. 두 번째 학습 과정 : supervised fine tuning
    labeled data를 사용하여 목표 task에 맞게 미세조정

3.1 Unsupervised pre-training

Objective

  • U, u : corpus, token
  • k : window size
  • theta : 모델의 파라미터

학습의 목적 함수는 위와 같으며 'Language modeling objective' 라고 한다.
이러한 목적함수를 이용하여 window size에 맞는 token들로 i번째 token을 예측할 likelihood를 최대화하도록 model의 파라미터를 업데이트하는 것이다.
이는 text의 label이 없어도 이 학습 과정이 가능하기에 Unsupervised learning에 해당된다.

Architecture

학습하는 모델의 구조는 Transformer의 디코더 파트에서 따온 것이다.
"multi-layer Transformer decoder" 로 masked self-attention과 position-wise(인덱스 별로) feed forward network만 남았다.

왼쪽은 transformer의 디코더이고, 오른쪽은 gpt의 디코더이다.
GPT에서는 multi-head attention이 없어지고 self attention만 남았는데, 사실 multi-head attention이 인코더의 아웃풋과 디코더의 self-attention으로 attention을 구하는 것이기에 인코더를 쓰지 않는 GPT에서는 당연하다.

=> 그렇다면 여기서 의문점이 생긴다.

"Q) 왜 GPT는 Decoder만 사용했을까?"
보통 language model들은 output token들이 나올 때 마다 이를 input sequence에 추가하고, 다음 단계에서 이렇게 만들어진 sequence를 새롭게 input으로 쓴다.
Transformer 디코더의 경우 Masking 기법을 통해 future token에 대한 attention을 주지 않게 됨으로써, next token prediction에 대한 능력을 학습하게 된다. 이러한 학습이 language model과 방식이 비슷하여 유리하게 작용하기 때문에 GPT-1은 transformer의 decoder를 기반으로 모델을 구성한다.
GPT-1의 주된 목표가 문장의 문맥을 이해하고 다음 토큰을 예측하는 능력을 훈련하는 것이었기에 트랜스포머의 디코더만 사용한 것으로 생각되며, GPT-2와 3에서는 트랜스포머의 인코더와 디코더 둘 다 사용되는 것을 확인할 수 있다.

  • 목적 함수 구성

1) 여기서 U는 이전에 token들의 context vector이며, n은 layer의 개수, We는 token embedding matrix, W_p는 positional embedding matrix이다.
Input token Matrix U에 embedding matrix W_e를 곱한 후, positional embedding W_p를 더해 이후 Masked self-Attention을 위한 input h_0를 만들어준다.
2) GPT는 n개의 디코더가 stack되어 있는 형태이다. 본 논문에서는 12개의 decoder block을 사용하였다.
I번째 decoder block의 hidden state h_I는 이전 decoder block의 hidden state h
(I-1)를 입력으로 받아 계산된다.
3) 마지막 n번째 decoder block의 hidden state output h_n에 다시 transposed embedding Matrix W_e(^T)를 곱하여 softmax 함수를 적용하면 output probability P(u)를 계산할 수 있다.
4) 위 과정으로 모델링한 조건부 확률 P(u)를 통해 앞서 말한 목적함수 Likelihood L_1(u)를 만들고, 이를 최대화하며 사전학습이 진행된다.


3.2 supervised fine-tuning

supervised fine-tuning은 pre-training이 끝난 후, target task에 맞게 파라미터를 조정하는 단계이다.
여기서는 지도학습을 진행하기에 input token sequence {x1,...,xm}과 label y로 구성된 target task의 labeled dataset C 를 통해 학습이 진행된다.

pre-train한 모델에서 pre-train에서의 3) 레이어 W_e^T 대신 아래의 레이어를 추가한 후 fine-tuning을 진행한다.

1) 우선 C의 input token에 대한 GPT의 마지막 decoder block hidden state "h_I^(m)"을 얻기 위해 앞 단계에서 얻은 pre-trained model에 input token을 통과시킨다.

2) 그리고 파라미터 W_y를 갖는 하나의 linear layer에 h_I^(m)을 통과시켜 softmax를 취해 "softmax probability P(y|x^1,...,x^m)" 을 계산한다.

3) 파라미터 W_y를 갖는 linear layer에 H_I^(m)을 통과시켜 softmax를 취한 확률 값인 P(y|x^1,...,x^m)를 이용하여 "token probability distribution" 을 얻을 수 있다. 따라서 label y에 대해서 지도학습을 진행할 수 있게 된다.
How? ) 이렇게 구한 값을 통해 Likelihood L_2(C) 라는 목적함수를 구한다. 이는 input token을 넣었을 때 라벨값을 반환할 Likelihood를 의미하며, 이 Likelihood를 최대화하도록 W_y를 업데이트 한다.

4) 다만 논문에서는 위 함수를 fine-tuning의 보조 목적 함수로 사용했다. L_1은 pre-train에서의 식을 말하며, 저자들은 이를 auxiliary objective라 명명했다.
이 식을 사용한 이유는 하나의 task objective에 대해서만 학습하는 것 보다, auxiliary objective(sub-task)를 같이 학습하는 것이 주요 task에 대한 정확도를 높여준다고 했다. 또한 두 식을 함께 사용함으로써 모델의 일반화 성능의 향상과 수렴을 가속화시킨다는 장점에서 미세조정의 학습을 돕는다.

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

과거 기존 모델들은 fine-tuning을 할 경우에 목적에 따라 레이어를 더 추가해야 했다. 이는 추가적인 레이어를 연구하기 위한 시간과 노력이 많이 필요했다.
그러나 GPT-1은 다르다. GPT-1은 fine-tuning과정에서 레이어 추가 작업을 제외시켰다. 단순히 모델 그대로 유지한 채 레이블링 된 데이터를 입력하고 최적화하는 일만이 fine-tuning의 전부이다.

3.3 Task-specific input transformations

GPT-1의 장점은 pre-train한 모델의 구조를 크게 바꾸지 않더라도 다양한 task에 fine-tuning이 가능하다는 것이다. 즉, 각 task에 적합하게 input data의 구조만 짜주면 된다.

위 그림은 논문에서 제시한 input data의 구조이다.
맨 위의 classification의 경우 이 모델을 사용해서 바로 미세조정이 가능하다. 하지만 아래 3개는 특별히 구조화가 필요한 것을 확인해 볼 수 있다.

transformer가 기계번역에 초점을 맞춘 반면에 GPT-1은 아래 4가지를 수행한다.

1) classification : 분류
주어진 문장을 이미 분류한 어떤 그룹으로 분류하는 task

2) textual entailment(natural language inference) : 자연어 추론
두 문장이 주어졌을 경우에 두 문장의 관계를 유추하는 task
전제 P와 가정 H를 구분자 토큰($)을 사이에 두고 연결한다.
ex) A가 참일 경우 B가 참일 경우를 entailment라고 하고, 두 문장이 모순될 경우에는 contradcition이라고 한다.

3) semantic similarity : 문장 유사도
두 문장이 유사한지 여부를 판단하는 task
문장 유사도에서는 두 문장의 순서가 결과에 관계를 없기에, 입력 시퀀스를 순서가 뒤바뀐 두 개의 입력 시퀀스로 나누어서(물론 두 문장 사이에 구분자 토큰이 존재한다) 독립적으로 모델에 입력한다. 이를 통해 두 시퀀스에 대한 두 시퀀스 표현인 h_I^(m)이 완성되고 liner layer에 입력된다.

4) question answering : 질의 응답
딥러닝 모델에게 질문과 함께 관련된 정보를 주고, 딥러닝 모델이 관련된 정보에서 정답을 제대로 찾는 지 테스트하는 task
context document z, 질문 q, 가능한 답변들{a_k}가 주어지면, {z;q; $;a_k}로 연결해준다.( $:구분자 토큰) 이렇게 완성된 시퀀스틀은 각각 독립적으로 모델에 입력되고, softmax를 통해 정규화된 후에 가능한 답변들에 대한 출력 분포를 생산하게 된다.

4. Experiments

Setup

  • 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 : 자연어 추론
    음성기록, 유명소설, Image captions(SNLI), 과학시험(SciTail), 위키피디아 문서(QNLI), 뉴스기사(RTE)등의 데이터셋으로 검증한 결과 RTE를 제외하고는 유의미한 성능을 보였다.

  • Question answering and commonsense reasoning
    중학교와 고등학교 시험 문제들로 이루어진 RACE 데이터셋, 이야기에서 올바른 엔딩을 선택하는 문제를 다루는 Story Close Test 데이터셋이 있다. 전반적으로 좋은 성능 향상을 보였다.

  • 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와 비슷한 성능을 이끌었다.

5. Analysis

Impact of number of layers transferred & Zero-shot Behaviros


왼쪽 그래프는 unsupervised pre-training에서 transformer layer 수에 따른 결과비교로 layer 수의 증가에 따른 유의미한 성능 향상을 확인할 수 있다.(사전학습의 효과성)

오른쪽 그래프는 Transformer의 유무와 pre-training에 따른 각 task 별 성능 비교이다.(실선: transformer사용, 점선: LSTM사용)
대부분 트랜스포머를 사용했을 때 더 좋은 성능을 보였으며, pretraining을 거듭할 수록 성능 차이가 커졌다.

특히 Zero-shot에 대한 LSTM 성능의 분산이 더 컸다는 결과를 통해, transformer 구조의 귀납적 편향(주어지지 않은 입력의 출력을 예측)이 transfer를 안정적으로 돕는다는 것을 알 수 있다.

조건변화(Ablation)에 따른 결과 분석


세 가지 ablation study를 진행.
1) 논문에서 제시한 transformer구조를 사전학습을 거치지 않고 바로 작업에 맞춘 지도학습 진행
사전학습을 거치지 않은 경우는 모든 작업에서 성능 저하를 보였다.

2) 미세조정 시 보조 목적함수(LM)를 사용하지 않고 성능 관찰
보조 목적함수가 NLI와 QQP task에서 도움을 주는 것을 확인할 수 있었다.
앞의 데이터 셋들은 데이터의 크기가 작기에, 일반화 성능을 높인 Transformer with aux LM에 비해 aux LM을 썼을 때 성능이 좋았지만,
뒤의 데이터 셋들은 크기가 큰 데이터 셋들이기에 좋은 성능 향상을 확인해 볼 수 있다.

3) 같은 Framework를 사용하면서 LSTM과 비교하여 Transformer의 효과를 분석
LSTM을 Transformer 대신 사용할 때의 성능이 평균은 약 5.6점 떨어졌고, 오직 MRPC 데이터 셋에서만 더 나은 성능을 보였다.

6. Conclusion

GPT-1은 labeled data의 부족으로 인해 어려움을 겪고 있는 지도 학습을 위해 새로운 방안을 제시했다. semi-supervised language model로 generative하게 pre-training을 진행한 후 이를 textual entailment(natural language inference), question answering, semantic similarity, classification 같은 discriminative fine-tuning을 진행하였다.
이러한 두 단계의 학습과정과 간단한 구조변화만으로, 연구 중인 12개의 데이터 셋 중 9개에서 유의미한 성능을 가져오며 강력한 언어 모델임을 밝혀냈다.




참고 : https://velog.io/@stapers/GPT-1-Languageunderstandingpaper
https://supkoon.tistory.com/23

profile
수학과 대학원생. 한 걸음씩 꾸준히

0개의 댓글