연구/Natural Language Processing

[Paper Review] GPT1: Improving Language Understanding by Generative Pre-Training

서히! 2025. 2. 5. 10:34

논문 정리

0. Abstract

  • unlabeled text corpora(corpus의 복수형)는 충분하지만, 특정한 task를 학습하는 데에 labed data는 부족한 상황
    ⇒ 다양한 unlabeled text corpus의 generative pre-training → discriminative fine-tuning 에 의해 이런 특정한 task를 잘 학습할 수 있음
  • 이전과 달리, 효과적으로 전달하기 위해 fine-tuning 중에 task-aware input transformation을 사용
  • task-agnostic(= 작업에 구애받지 않는) 모델은 각 작업에 맞게 설계된 모델의 성능을 능가했음 (ex. RACE에서 5.7%, MultiNLI에서 1.5% 개선)

 

1. Introduction

  • NLP에서 supervised learning에 대한 dependence를 완화하기 위해서는 raw text로부터 효과적으로 학습하는 능력이 매우 중요
  • 대부분의 딥러닝 method들은 상당한 양의 손수 라벨 데이터를 필요로 함 & annotated data가 부족한 많은 분야에서 응용 가능성을 제한 
    → unlabed data의 언어 정보를 활용할 수 있는 모델이 더 많은 annotation을 수집하는 것이 대안
     However, unlabeled text로부터 단어 수준 이상의 정보를 활용(ex. 단어간 관계 등)하는 것이 어려운 이유
    1. 어떤 유형의 optimization objective가 전달에 유용한 text representation을 학습하는 데에 효과적인지 불분명
    2. learned representation를 target task에 전달하는 효과적인 방법에 대한 의견 일치 X : 기존 기술들은 모델 아키텍처를 작업에 맞게 변경, 복잡한 learning scheme을 사용, 보조 learning objective를 추가하는 것을 조합하여 활용
      ⇒ 이러한 불확실성은 언어처리에서 효과적인 semi-supervised learning 접근들을 발전시키기 어렵게 함

 


이 연구에서는,

unsupervised pre-training, supervised fine-tuning 💡 의 조합을 사용하여 언어 이해 작업에 대한 semi-supervised approach를 탐색

 

(목표) 다양한 task에 적응하지 않고도 전달되는 universal representation을 학습하는 것

(가정) unlabeled text와 손수 annotated training example들을 가진 여러 데이터셋들의 large corpus + 손수 annotated training example (= target task)와 unlabeled text corpus는 같은 domain에 있을 필요가 없음

(훈련 과정) 

  1. nerual network model의 초기 파라미터를 학습하기 위해 unlabeld data에 대해 language modeling objective를 사용
  2. target task에 맞춰 해당하는 supervised objective를 사용하여 파라미터를 조정

(Model Architecture) Transformer [1] 다양한 task(ex. 기계 번역, 서류 생성, 구문분석) 에 잘 수행 + recurrent network와 같은 대안에 비해 텍스트의 장기 의존성을 처리하기 위한 structured memory를 제공 → 다양한 task에서 전달 성능이 robust


 

  • transfer 동안 traversal-style 접근 방식에서 파생된 task별 input 적응 방법을 활용: text input을 하나의 연속적인 토큰 시퀀스로 처리
    → 이러한 적응 방법은 pre-trained 모델의 아키텍처에 최소의 변화를 주어서 fine-tune을 효과적으로 하게 해줌
  • 4종류의 language understanding task로 평가
    1. natural language inference
    2. question answering
    3. semantic similarity
    4. text classification

⇒ 각 task에 맞게 특별하게 만들어진 architecture를 사용하는 model보다 작업에 관계없이(task-agnostic) 💡 사용하는 모델(=논문에 나오는 GPT1)이 성능이 좋음 (연구된 12개의 task 중에서 9개 과제에서 크게 향상 ex. (Stories Cloze Test) 상식 추론에서 8.9% 상승, (RACE) question answering에서 5.7% 상승, (MultiNLI) textual entailment에서 1.5% 상승, (GLUE multi-task benchmark) 5.5% 상승)

  • 네위의 4가지 다른 setting에서 pre-trained model의 zero-shot behavior를 분석 + downstream task을 위한 유용한 언어 정보가 필요하다는 것을 증명

 

2. Related Work

Semi-supervised learning for NLP

  • 본 연구는 Semi-supervised 범주에 속하며, 이러한 접근방식은 sequence labeling이나 텍스트 분류와 같은 task에 적용: 초기에는 unlabeled data에서 단어 수준이나 구문 수준의 정보를 추출   supervised model에서 feature로 사용
  • 최근 몇년 간 unlabeled corpora에서 훈련된 Word Embedding이 다양한 작업에서 성능을 향상시키는 데 유익하다는 것을 입증
    However, 이 접근방식은 단어 수준 정보를 전달하는 것 뿐, 목표는 더 높은 수준의 의미(semantic)를 반영하는 것 💡
    ⇒ unlabeled data로부터 단어 수준 이상의 의미를 학습하고 활용하는 방향으로 발전: 구 수준(Phrase-level) 또는 문장 수준(sentence-level) 임베딩은 다양한 target task에서 text → vector representation으로 인코딩하는데 사용됨

 

Unsupervised pre-training

  • Unservised pre-training은 semi-supervised learning의 special case로 supervised learning objective를 수정하는 것 대신, 초기 지점을 잘 찾는 것이 목표
  • 초기에는 이미지 분류나 회귕귀에 사용하였으나, 그 이후에는 pre-training이 정규화 기법으로 작용 → 더 나은 generalization에 도달
  • LSTM에서는 short range로 제한하지만, transformer는 더 넓은 범위의  언어구조를 반영할 수 있게 해줌
  • 다른 접근법들은 pre-trained language나 기계 번역 모델의 hidden representation을 보조 특성으로 사용하여 supervised model 훈련 때 사용하는 것은 상당한 양의 새로운 매개변수 필요
    → 우리는 전달 중에는 모델 아키텍처에 최소한의 변경만 필요

 

Auxiliary training objectives

  • 보조 unsupervised training objective를 추가하는 것은 semi-supervised learning의 대안 형태
  • Collobert and Weston[3]은 다양한 보조 NLP task를 사용하여 semantic role labeling을 개선
  • Rei[4]는 target task objective에 보조 language modeling objective를 추가하여 sequence labeling의 성능을 향상

→  우리는 unsupervised pre-training이 target task와 관련하여 이미 여러 언어적 측면을 학습한다는 것을 보여줌

 

3. Framework

훈련 절차는 총 2단계로 나누어짐

  1. 많은 양의 text corpus에서 high-capacity language model을 학습
  2. labeled data를 사용하여 task에 맞게 조정 (fine-tuning stage)

3.1 Unsupervised pre-training

아래의 likelihood를 최대화하는 standard language modeling objective를 사용

즉, likelihood 최대화하는 것이 목표

Eq1: likelihoood

  • k: context window 크기
  • ${U}$ (1~n): unsupervised corpus of tokens
  • 조건부 확률 $P$는 파라미터 theta를 가진 신경망을사용하여 모델링됨
    → 파라미터는 Stochastic Gradient Descent(SGD)[3]에 의해 훈련됨
  • multi-layer Transformer decoder 💡 를 사용
    • input context token에 대해 multi-headed self-attention 연산 적용 → position-wise feedforward layer를 거쳐서 target token에 대해 출력 분포를 생성

Eq2

  • $U$ (-k ~ -1): context vector of tokens 
  • n: layer 개수
  • $W_{e}$: token embedding matrix (단어 → 토큰)
    $W_{p}$: position embedding matrix (위치 정보를 추가)

(위 식에 대한 추가 설명)

1. 입력 임베딩과 위치 임베딩 추가

입력 토큰을 벡터로 변환한 후, 각 토큰의 위치 정보(position encoding)를 더함

 

2. Transformer 블록을 여러 층 거침

  • $h_{l}$ : $l$번째 층에서의 hidden representation
  • transformer_block: self-attention + FFN

여러 개의 Transformer 블록을 통과하면서 점점 더 정교한 학습을 함

3. 출력 확률 분포 계산

  • $h_{n}$ : Transformation 블록에서 나온 최종 hidden state
  • softmax : 확률 분포를 만들기 위한 활성화 함수

각 토큰이 다음에 나올 확률을 계산하여 언어 모델이 다음 단어를 예측할 수 있도록 함


 

3.2 Supervised fine-tuning

위 식(1) objective에 대해 훈련한 이후, supervised target task에 맞게 파라미터를 조정

  • labeled dataset $C$를 가정
    • $x_{1}, ... , x_{n}$ : input token sequence
    • $y$ : label
  • $h_{l}^{m}$ : pre-trained model을 통해 얻은 마지막 transformer block activation 값 (input)
     파라미터 $W_{y}$를 가진 linear output layer에 입력하여 $y$를 예측

Eq3
Eq4: objective: 위 식을 maximize

 

  • 언어 모델링을 fine-tuning의 보조 objective를 포함시키는 것이 (a) supervised model의 generalization을 향상시키고, (b) 수렴을 빠르게 하여 학습에 도움이 된다는 것을 발견하였음
  • 추가 파라미터: $W_{y}$, delimeter token에 대한 임베딩 (3.3 에서 설명)

이 objective를 최적화시켜야 함

 

Figure1: (left) Transformer architecture와 training objectives, (right) task에 따라서 fine-tuning을 위한 Input transformations

모든 structured input →  pre-trained model에 의해 처리된 token sequence로 변환 → linear + softmax layer

즉, Transformer 모델을 다양한 NLP 문제에 맞게 변형하여 사용할 수 있음

 

3.3 Task-specific input transformations

  • text classification 같은 task: 직접 fine-tuning
    question answering, textual entailment 같은 task: 순서가 있는 문장 쌍 또는 문서, 질문, 정답으 삼중구조와 같은 구조화된 입력을 필요로 함
    ⇒ pre-trained model은 text의 연속적인 sequence로 훈련이 되어있기 때문에 이 task에 적용하는 수정이 필요
  • 이전에는 transferred representation 위에 task별 아키텍처를 학습했다면, (상당한 양의 task별 customization이 필요 + 추가적인 아키텍처 component에 대해 transfer learning 을 사용 X) 
    우리는 traversal-style approach 💡[6] 를 사용

Traversal-style approach

  • structured input → pre-trained model이 처리할 수 있는 ordered sequence(정해진 순서대로 배열된 데이터의 집합)로 변환
    ⇒ extensive change를 막을 수 있게 함
  • 모든 변환 과정에는 랜덤으로 초기화된 시작 토큰과 종료 토큰을 추가하는 작업이 포함됨

 

Textual entailment

premise $p$ (전제)와 hypothesis $h$ (가설) 토큰 시퀀스들을 연결하고 그 사이에 구분자 토큰($)을 그 사이에 넣음

 

Similarity

비교하는 두 문장 간에 본질적인 순서가 존재하지 X

→ 문장 순서를 포함하도록 변형하고, 각 요소에 대해 개별적으로 처리하여 두 개의 시퀀스 표현인 $h_{l}^{m}$ 을 생성

→ lienar output layer로 들어감

 

Question Answering and Commonsense Reasoning

context document $z$, question $q$, answers $a_{k}$
→ document context와 답을 할 수 있는 question을 연결하고, 그 사이에 구분자 토큰 추가하여 $[z;q;$;a_{k}$ 형태의 시퀀스를 얻음
→ 각 시퀀스들ㅇ느 각각 처리되고 softmax layer를 거쳐 답변에 대한 확률분포를 생성

 

4. Experiments

4.1 Setup

Unsupervised pre-training

  • BooksCorpus 데이터셋 사용: 길고 연속적인 text를 포함하해서 생성 모델이 긴 범위의 information을 조건으로 하는 방법을 배울 수 있게 함
  • 1B Word Benchmark는 ELMo와 같은 접근 방식에서 사용되며. 데이터 크기는 비슷하지만 sentence level에서 섞여 있어 긴 범위의 구조가 파괴됨
    ⇒ 본 모델은 낮은 perplexity 값인 18.4를 달성

Table1: 각 Task에서 사용된 dataset

여기에 BooksCorpus가 무엇인지, 각 데이터셋이 무엇을 의미하는지 알아보기

Model specifications

기존 transformer 작동 방식을 따름

  • 12-layer decoder-only transformer, masked self-attention heads (768차원과 12 attention heads)
    • Embdding Size: 보통 임베딩(사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과) 될 때의 벡터 크기 = feature dimension: 768
    • Attention Heads: 12개의 Self-Attention Head가 있으므로 768/12 = 64로, 각 attention head는 64차원의 벡터를 다룸
    • Position-wise feed-forward network는 3072 차원
  • Adam optimization scheme 사용 (learning rate = 2.5e-4)
    • 2000번 업데이트까지는 0에서 선형적으로 증가시키고, 그 이후에는 cosine schedule을 사용하여 0으로 감소
  •  미니배치에 64개의 랜덤 샘플링된 연속적인 512개의 토큰 시퀀스를 사용하여 100 에포크동안 학습
  • 모델 전반에 layernorm을 사용하기 때문에 N(0, 0.02)를 사용하여 가중치를 초기화했음
  • 40,000 merge를 가진 Bytepair Encoding(BPE) vocabulary 사용 [7]
  • residual, embedding, attention dropout은 0.1로 regularization
    + 수정된 버전의 L2 regularization도 사용 [8] : bias나 gain 가중치를 제외한 가중치값들은 다 0.01로 설정
  • activation function은 Gaussain Error Linear Unit (GELU) 사용
  • 원래 tranformer처럼 sinusoidal version 대신 학습된 learned position embedding을 사용
  • ftfy library(fixes text for you) [9]를 사용하여 raw text를 전처리
    구두점과 공백을 표준화
    spaCy tokenizer [10]를 사용

 

Fine-tuning details

  • unsupervised pre-training에서의 하이퍼파라미터 세팅을 재사용
  • classifier에 dropout을 0.1로 추가
  • 대부분에서 learning rate는 6.25e-5와 배치크기는 32로 함
  • 빠르게 finetuning이 돼서 3 에폭으로 충분
  • linear learning rate decay를 사용하였으며 전체 training동안 0.2% 동안 warmup을 적용
  • lambda값은 0.5로 설정

 

4.2 Supervised fine-tuning

Natural Language Inference

  • Recognizing Textual Entailment 로 알려져 있으나,
    두 문장을 읽고, entailment, contradiction(모순), neural(중립) 중 하나를 기준으로 문장 간 관계를 읽는 것도 포함
     어휘적 함의(entailment), 상호참조(coreference, 임의의 개체를 표현하는 다양한 명사구들을 찾아 연결), 어휘와 구문 모호성같이 다양한 현상으로 인해 어려운 task
  • image captions(SNLI), 음성에서 글자로 바뀐 데이터, 대중 소설, 정부 보고서(MNLI), 위키피디아 문서(QNLI), 과학 시험(SciTail), 뉴스 기사(RTE)인 5가지 데이터셋들을 사용하여 모델을 평가

Table2: 모델에서 NLI task와 이전 SOTA 기법들 비교, 5x는 5개의 모델로 구성된 앙상블을 의미

  • MNLI에서는 1.5% 상승, SciTail에서는 5%, QNLI에서는 5.8%, SNLI에서는 0.6% 상승
    ⇒ 우리 모델이 여러 문장들을 잘 추론하고 언어의 모호함을 처리해줌을 알 수 있음
  • (RTE): 가장 작은 데이터셋 (2490개)에서 56% 정확도를 달성
    ⇒  multi-task biLSTM model에서 기록된 61.7%보다 아래지만,
    더 큰 NLI 데이터셋에서 강력한 성과를 보였기 때문에 우리의 모델이 multi-task training을 적용하면 더 나아질 것

 

Question answering and commonsense reasoning

  • RACE dataset 사용: 중고등학교 시험 질문이 포함된 영어 지문: CNN이나 SQuaD와 같은 다른 데이터셋보다 더 많은 추론 질문을 포함하고, 이는 long-range context를 처리하도록 훈련되어진 모델에 대한 완벽한 평가를 제공
  • Story Cloze Test 로 평가: 여러 문장으로 구성된 스토리에서 두 가지 옵션 중 올바른 결말을 선택 

⇒ Story Cloze Test는 최대 8.9% 향상, RACE 전체: 5.7% 향상

Table3: question answering and ommonsense reasoning

 

Semantic Similarity

= paraphase detection

  • 두 문장이 의미가 같은지 아닌지 예측
  • 문제는 개념의 rephrasing을 인식, 부정을 이해, 구문적 모호함을 인식하는 것이 어려움
  • Microsoft Paraphrase corpus(MRPC), Quora Question Pairs(QQP), Semantic Textual Similarity benchmark(STS-B) 총 3개의 데이터셋 사용

Table4: Semantic Similarity and classificaition results, 모든 평가는 GLUE benchmark를 사용

 

  • Semantic Similarity에서 3개중 2개가 SOTA를 기록
  • STS-B는 1% 향상
    QQP는 Single-task BiLSTM + ELMo + Attn에서보다 4.2% 향상

 

Classification

  1. Corpus of Linguistic Acceptability (CoLA): 이 문장이 문법에 맞는지 아닌지 판단하는 전문가 판단을 포함하고, trained model으 선천적인 언어 편향을 테스트
  2. Stanford Sentiment Treebank (SST-2): 이진분류 task
  • 우리의 모델은 CoLA에서 45.4% 향상 (이전 best 값이 35%에 비해 엄청난 jump): 선천적인 언어 편향을 잘 학습된거를 볼 수 있음
  •  SST2에서 91.3%로, SOTA모델과 경쟁력이 있음
  • GLUE Benchmark에서 68.9% 달성한 것보다 높은 72.8% 달성

 

전반적으로, 12개의 데이터셋 중 9개의 데이터셋에서 SOTA를 달성 + 다른 사이즈 (STS-B ~ SNLI) 에서 잘 작동 

5. Analysis

Impact of number of layers transferred

unsupervised pre-training → supervised target task로 다양한 개수의 layer를 transfer하는 것이 미치는 영향을 보았음

  • 임베딩만 적용해도 성능이 개선됨을 확인
  • 각 transformer layer가 추가적으로 성능을 향상해, MultiNLI에서는 모든 레이어를 transfer했을 때 최대 9% 향상

⇒  pre-trained model에서의 각 layer가 target task를 해결하는 데에 유용한 기능을 포함하고 있음을 의미

Figure2: (left) RACE와 MultiNLI에서 이미 훈련된 언어모델에서 layer의 개수가 늘어날 때 전이되는 효과, (right) 언어모델(LM) pre-training update 횟수에 따라 다른 task에서의 zero-shot 성능이 증가함을 보임: random guess baseline과 현재 단일 모델 기준 SOTA 사이에서 정규화됨

 

Zero-shot Behaviors

 transformer의 pre-training이 효과적인 이유를 잘 이해하는 것이 좋음

  • 가설: 기저에 생성 모델이 언어 모델링 능력을 향상 시키기 위해 우리가 평가하는 많은 task들을 수행하는 방법을 학습, transformer의 더 구조화된 attention memory가 LSTM보다 transfer에 더 도움이 됨
  • 생성 모델이 supervised finetuning 없이 task를 수행하는 휴리스틱 solution을 고안함
  • [Figure 2]에서는 generative pre-training의 과정에서의 휴리스틱 solution이 안정적이고 꾸준히 증가하는 것을 볼 수 있음 → generative pretraining이 다양한 task 관련 기능을 support함을 알 수 있음
  • cf) Inductive bias: 해당 데이터에 대한 판단을 내리기 위해 가지고 있는, 학습과정에서 습득한 편향
    머신러닝은 특정 문제를  풀기 위해 가장 loss가 작은 hypothesis를 찾는데, 이 hypothesis의 제한이 없다면 overfitting이 일어나게 됨
    → overfitting이 안되게 hypthesis에 제한을 걸어두는게 Inductive bias
    → Inductive bias가 강하면 오히려 generalization(variance)가 덜어져서 오히려 학습을 방해
    즉, inductive bias랑 generalization은 trade-off 관계 

    이어서,
    LSTM이 zero-shot performance에서 높은 variance를 가지고 있음을 확인 → Transformer 아키텍처의 inductive bias가 transfer 과정을 도움

  • CoLA(linguistic acceptability)
    생성 모델이 할당한 평균 토큰 로그 확률로 점수가 매겨지며, 임계값을 설정하여 예측이 이루어짐
  • SST-2(sentiment analysis)
    토큰 $very$를 각 예시에 추가하고 language model의 output 분포를 "positive"와 "negative" 두 단어로 제한
    높은 확률이 할당된 단어를 최종 예측값으로 선택
  • RACE(question answering)
    문서와 질문을 조건으로 주었을 때, 생성 모델이 가장 높은 평균 토큰 로그 확률(token log-probabiltiy)을 할당한 답변을 선택
  • DRRD(winograd schemas)
    대명사를 두 개의 가능한 참조 대상으로 대체 → 문장에서 나머지 부분에서 생성 모델이 더 높은 토큰 로그 확률을 할당하는 해석을 예측

Ablation studies

모델의 특정 구성 요소를 제거하거나 변경하여 해당 요소가 성능에 미치는 영향을 분석하는 연구 방법

  1. fine-tuning 동안 보조적인 LM objective 가 X (without aux LM): 보조 objective가 NLI task와 QQP에 도움을 준다는 것을 알 수 있음
    전반적인 경향이 데이터셋이 클수록 보조 objective로부터 더 이득을 봄 (더 작은 데이터셋은 X)
  2. 같은 framework를 사용한 single layer 2048 unit LSTM에서와 비교했을 때 Transformer의 효과를 볼 수 있음 (LSTM with aux LM) : Transformer보다 평균 점수가 5.6점이 낮은 것을 확인 (MRPC에서만 Transformer보다 큼)
  3. pre-training 없이 supervised target task (Transformer w/o pre-training): pre-training의 부족이 모든 작업에서 성능이 저하되며, full model에 비해 14.8% 감소

Table5: 각 Task에 대해서 다양한 model ablations

6. Conclusion

  • generative pre-training과 discriminative fine-tuning을 통해 단일 task에 구애받지 않는 모델로, 강력한 언어 이해를 달성하기 위한 프레임워크를 도입
  • 긴 연속적인 텍스트를 포함한 다양한 말뭉치에서 pre-training을 함으로써 우리의 모델은 상당한 world knowledge(= 인간 사회 생활에 필요한 물리적인 세계의 지식(이러한 일반적인 배경 지식은 어문 혹은 구문으 모든 의미를 이해하는 데 필수적)) + long-range 의존성을 처리하는 능력을 얻음 → 질문답변, 의미 유사성 평가, 함의 판단, 텍스트 분류와 같은 discriminative task를 해결하기 위해 성공적으로 transfer
  • Unsupervised training을 활용하여 discriminative task의 성능을 향상시키는 것은 Machine Learning research에서 중요한 연구 
    ⇒ 성능 향상이 가능하고, Transformer와 데이터셋이 이 접근방식에서 잘 사용이 된다는 단서를 제공
    ⇒ 자연어 이해 뿐만 아니라 unsupervised learning에 대한 새로운 연구가 나오도록 돕고, unsupervised learning이 더 나아가 언제, 어떻게 효과적인지를 더 깊이 이해하는 데 기여하기를 바람

References

[1] Attention Is All You Need: https://arxiv.org/pdf/1706.03762

[2] downstream task: 언어모델을 pre-train 방식을 사용해 학습 → 원하는 task를 fine-tuning 방식을 통해 모델을 업데이트 ( https://velog.io/@nawnoes/Downstream-Task%EB%9E%80 

[3] R. Collobert and J. Weston. A unified architecture for natural language processing: Deep neural networks with multitask learning. In Proceedings of the 25th international conference on Machine learning, pages 160–167. ACM, 2008

[4] M. Rei. Semi-supervised multitask learning for sequence labeling. ACL, 2017

[5] Stochastic Gradient Descent(SGD) 보조 설명

[6] Traversal-style approach: T. Rocktäschel, E. Grefenstette, K. M. Hermann, T. Koˇ cisk` y, and P. Blunsom. Reasoning about entailment with neural attention

[7] R. Sennrich, B. Haddow, and A. Birch. Neural machine translation of rare words with subword units. arXiv preprint arXiv:1508.07909, 2015

[8] I. Loshchilov and F. Hutter. Fixing weight decay regularization in adam. arXiv preprint arXiv:1711.05101, 2017

[9] ftfy library: https://ftfy.readthedocs.io/en/latest/

[10] spaCy tokenizer:  spaCy · Industrial-strength Natural Language Processing in Python

[11] G. Lai, Q. Xie, H. Liu, Y. Yang, and E. Hovy. Race: Large-scale reading comprehension dataset from examinations. EMNLP, 2017