논문 리뷰

GPT-1(2018): Improving Language Understanding by Generative Pre-Training

cch8ii 2025. 9. 25. 15:12
논문 링크: https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf

 

한 줄 정리

  • 라벨 없는 긴 텍스트로 언어 모델 사전학습(Next-token LM) 후 각 task에 얕은 finetuning 으로 transfer
  • task에 대해 finetuning할 때 구조화 입력을 선형화하고 구분 토큰($)·시작/종료 토큰(<s>, </s>)만 추가해 아키텍처 변경 최소화
  • Transformer(decoder-only)로 장기 문맥·세계 지식 습득, 긴 컨텍스트 task에 강함
  • NLI·QA·similarity·classification 등 12개 중 9개 task SOTA, GLUE 72.8 달성

기존 방법론과 한계

Natural language understanding은 textual entailment, question answering, semantic similarity assessment, document classification 등의 다양한 task를 포괄한다. NLP에선 항상 라벨이 있는 데이터보다 라벨이 없는 데이터가 방대한 규모로 많기 때문에 다양한 task들을 라벨이 있는 데이터로 학습하기엔 충분한 성능을 내기 어렵다. 

하지만 단어 수준 이상의 정보를 unlabeled 텍스트에서 활용하는 것은 어렵다. 

① transfer learning에 유용한 텍스트 표현을 학습하는 데 어떤 최적화 목적 함수가 가장 효과적인지 불분명하다. 

② 학습된 표현을 목표 task에 transfer하는 가장 효과적인 방법이라는 게 존재하지 않는다. 

 

GPT-1

때문에 본 논문에서 제안한 GPT-1은 다양한 unlabeled 텍스트 코퍼스에 대해 언어 모델을 생성적으로 사전학습(generative pre-training)한 뒤, 각 task에 맞게 discriminative fine-tuning을 수행하면 이러한 task들에서 큰 성능 향상을 얻을 수 있음을 보인다. GPT-1은 task-agnostic 즉, task에 따라 변화하지 않는 모델로 각 task에 특화된 아키텍처를 사용하는 모델들을 능가하며 12개의 task 중 9개에서 최신 성능을 달성했다. 

 

GPT-1의 목표는 다양한 task에 최소한의 적응만으로 transfer 가능한 universal representation을 학습하는 것이다. 

2 단계의 학습 절차를 사용하는데 먼저 unlabeled 텍스트에 대해 언어 모델링 목적 함수를 사용해 신경망 모델의 초기 파라미터를 학습한다. 그 이후 해당 파라미터를 목표 task의 지도 학습 목표를 통해 조정하는 것이다. 특히 이렇게 transfer할 때는 모델 아키텍처를 거의 수정하지 않는다는 것이 큰 특징이다. 

 

출처: https://wikidocs.net/184363

BERT는 Transformer의 인코더를 사용하는 반면, GPT는 Transformer의 디코더를 활용한다. 

출처: https://ffighting.net/deep-learning-paper-review/language-model/gpt-1/

Cross self attention이 제거된 Transformer의 디코더를 사용했는데 이는 인코더 없이 디코더만 단독으로 구성되어 있기 때문에 cross attention의 기능이 필요 없어졌기 때문이다. 

 

[1단계] Unsupervised pre-training

대규모 텍스트 코퍼스에 대해 고용량(high-capacity) 언어 모델을 학습하는 단계이다. 

비지도 텍스트 코퍼스가 들어오면 위와 같은 표준 언어 모델링 목적 함수를 사용해 다음과 같은 Likelihood를 최대화한다. 이때 k는 컨텍스트 윈도우의 크기이며 조건부 확률 P는 파라미터 Θ를 가진 신경망으로 모델링된다. 여기선 SGD를 사용하여 학습된다. 

 

입력 context 토큰에 대해 multi-head self-attention 연산을 적용한 후 position-wise feedforward layer를 거쳐 목표 토큰에 대한 출력 분포를 생성한다. 

위에서 U는 예측하려는 위치 바로 앞 k개의 토큰을 나타내는 context 토큰 벡터, n은 레이어 수, W_e는 토큰 임베딩 행렬, W_p는 위치 임베딩 행렬이다. 

즉, '나는 밥을' 이라는 문맥이 들어오면 이를 임베딩으로 바꾸고 위치 임베딩을 더하여 h_0을 만든다. masked self-attention을 활용해 '나는'과 '밥을' 의 관계를 참고해 적절한 동사가 오리라고 추론하게 되고 최종적으로 어휘에 대한 점수를 만든 뒤 softmax하여 '먹었다'라는 단어의 확률이 가장 높게 나오게 되는 것이다. 

 

Supervised fine-tuning

이렇게 식(1)의 목적 함수로 모델을 학습한 후 파라미터를 task에 맞게 조정한다. 라벨이 있는 데이터를 활용하여 이 모델을 task에 맞게 fine-tuning하는 단계이다. 

 

라벨링된 데이터셋 C가 주어져있으며 각 인스턴스는 입력 토큰 시퀀스 (X_1, ..., x_m)과 라벨 y로 구성된다. 

입력은 사전학습된 모델을 통과해 최종 TRansfrmer 블록의 활성값 h_l^m을 얻고 추가된 선형 레이어에 전달해 라벨을 예측한다. 이때 파라미터는 W_y이다 또한 (4)번 식과 같은 목적함수를 최대화한다. 

 

또한 finetuning 과정에서 Language Modeling을 보조 목표(auxiliary objective)로 추가하면 학습이 더 잘 진행됨을 발견했다. (a) 지도 모델의 일반화를 향상시키고, (b) 수렴 속도를 높여주기 때문이다. 

때문에 구체적으로 (5)번 식과 같은 다음 목적 함수를 최적화한다. 여기서 λ는 가중치이다. 

때문에 finetuning을 할 때에도 필요한 추가 파라미터는 W_y와 구분 토큰(delimiter token)의 임베딩뿐이다.

 

Task-specific input transformations

위에서 말한 구분 토큰이라는 것은 무엇일까? 

텍스트 분류 같은 일부 task는 설명한 방법 그대로 모델을 finetuning할 수 있다. 하지만 질의응답이나 텍스트 함의같은 task는 문장 쌍이나 문서-질문-답변 삼중항처럼 구조화된 입력을 가진다. 사전학습 모델은 연속적인 텍스트 시퀀스에서 학습되었기 때문에 이러한 task에서는 변환 과정이 필요하다. 

 

 

GPT-1에선 구조화된 입력을 순차적인 시퀀스로 선형화하고 이를 사전학습 모델에 적용한다.왜냐하면 GPT는 디코더 전용 LM이기 때문에 왼쪽에서 오른쪽만보면서 한 줄 시퀀스 입력을 가정하기 때문이다. 아키텍처 추가 없이 transfer 하기 위해선 구조화 입력을 한 줄로 선형화해야 한다. 

때문에 모든 변환에는 무작위로 초기화된 시작 토큰 (h_{si}) 과 종료 토큰 (h_{ei}) 이 추가된다. 

  • 텍스트 함의 (Textual entailment)
    • 전제 p와 가설 h의 토큰 시퀀스를 구분 토큰을 사이에 두고 연결한다. 
  • 유사도 (Similarity)
    • 비교하는 두 문장은 고유한 순서가 없기 때문에 입력 시퀀스에 두 가지 가능한 문장 순서를 각각 구분 토큰과 함께 포함시킨다. 모델은 두 시퀀스를 독립적으로 처리해 두 개의 표현을 얻고 이를 원소 단위로 합한 뒤 선형 출력 레이어에 입력한다. 
  • 질의응답 및 상식 추론 (Question Answering and Commonsense Reasoning)
    • 문서 컨텍스트 z, 질문 q, 가능한 답변 집합 {a_k}가 주어진다. 
    • 문서와 질문에 각 답변을 구분 토큰과 함께 연결해 [z;q;$;a_k​] 시퀀스를 만들고 각 시퀀스를 모델이 독립적으로 처리한 후 softmax 층을 통해 가능한 답변에 대한 확률 분포를 산출한다. 

 

Experiments

Unsupervised pre-training

언어모델 학습을 위해서 BooksCorpus 데이터셋을 사용했다. 해당 데이터셋의 가장 큰 특징은 긴 연속 텍스트를 포함하고 있어 장기 의존 정보(long-range information)를 학습하는 데 적합하는 것이다. 

 

Model specifications

Mask self-attention 을 사용하는 12층 디코더 전용 Transformer를 학습했으며 

최적화는 Adam을 사용했고, 최대 학습률은 2.5e-4로 설정했다. 학습률은 처음 2000 업데이트 동안 선형적으로 0에서 증가하고, 이후 코사인 스케줄로 0까지 점진적으로 감소한다. 64개의 무작위 연속 512 토큰 시퀀스를 묶은 미니배치로 100 epoch 동안 학습하였다.

또한 모델 전반에 layernorm을 사용했기 때무넹 단순한 정규분포 초기화 N(0, 0.02) 만으로 충분했다. 

 

Fine-tuning details

finetuning 시에는 거의 사전학습과 동일한 하이퍼파라미터를 재사용했고 dropout(0.1)을 추가했다. 대부분의 task에서 학습률은 6.25e-5, 배치 크기는 32를 사용했으며 3 epoch 학습으로 충분했다고 한다. 학습률은 전체 학습의 0.2% 동안 선형 warmup 후 선형적으로 감소하는 스케줄을 사용했고 λ 값은 0.5로 설정되었다.

 

 

Supervised fine-tuning

 

Natural Language Inference

NLI는 문장 쌍을 읽고 그 관계가 함의(entailment), 모순(contradiction), 중립(neutral) 중 어느 것인지 판단하는 task이다. 이미지 캡션(SNLI), 음성 전사·소설·정부 보고서(MNLI), 위키피디아 문서(QNLI), 과학 시험(SciTail), 뉴스 기사(RTE) 등 다양한 출처의 5개 데이터셋에서 평가하였다. 

맨 마지막에 있는 GPT-1이 거의  모든 데이터셋에서 기존 방법들보다 성능이 좋은 것을 알 수 있다. 

5개 중 4개 데이터셋에서 기존 성능을 크게 앞섰으며, MNLI에서 1.5%p, SciTail에서 5%p, QNLI에서 5.8%p, SNLI에서 0.6%p의 절대 향상을 달성했다. 이는 GPT-1이 다중 문장 추론과 언어적 모호성을 잘 처리함을 보여준다.

반면, 예시 수가 적은 소규모 데이터셋인 RTE(2490개 예시)에서는 정확도 56%를 기록했는데, 멀티태스크 BiLSTM 모델의 61.7%보다 낮다. 하지만 대규모 NLI 데이터셋에서의 강력한 성능을 고려하면 멀티태스크 학습을 활용했을 때 더 좋은 성능을 보일 수 있지 않을까 본 논문에서는 주장한다. 

 

Question answering and commonsense reasoning

질의응답은 단일·다중 문장 추론 능력을 요구한다. 해당 task에서도 모든 데이터셋에서 기존 방법들보다 성능이 좋았다. Story Cloze에서 최대 8.9%p, RACE에서 5.7%p의 절대 성능 향상으로 기존 최고 성능을 크게 앞질렀다. 이는 장기 맥락 처리 능력을 효과적으로 입증한다.

 

Semantic Similarity

의미 유사도의 경우 두 문장이 의미적으로 동등한지를 예측하는 task이다. 3개 중 2개 과업에서 최신 성능을 달성했으며, 특히 STS-B에서 절대 1%p 향상을 보였다. QQP에서는 Single-task BiLSTM + ELMo + Attn 대비 4.2%p의 절대 향상이라는 의미 있는 성능 격차를 보였다.

 

Classification

마지막으로 classification이다. 

Corpus of Linguistic Acceptability (CoLA) 는 문장이 문법적으로 타당한지 여부를 전문가가 평가한 데이터셋으로 모델이 학습한 언어적 편향을 측정다. 반면 Stanford Sentiment Treebank (SST-2)는 표준 이진 감성 분류 task이다. 

GPT-1은 CoLA에서 45.4점을 달성했는데 이는 이전 최고 성능(35.0)보다 크게 개선된 수치로, 모델이 내재적으로 습득한 언어적 편향을 보여준다. 또한 SST-2에서는 91.3% 정확도를 기록해 최신 성능과 경쟁 가능했다.

종합적으로 GLUE 벤치마크에서 72.8점을 기록했는데 이는 이전 최고 기록인 68.9보다 크게 앞선 수치이다. 평가한 12개 데이터셋 중 9개에서 최신 성능을 갱신했으며, 일부 경우에는 앙상블보다도 뛰어났다.

 

 

실험을 통해 GPT-1을 분석해보았을 때...

Layer의 개수에 따른 성능과 Zero shot 성능 실험 결과를 보면 다음과 같다. 

일단 비지도 사전학습에서 지도 목표 task 학습으로 transfer할 때 layer 수를 다르게 해 실험한 것이 왼쪽 그림이다. MultiNLI와 RACE에서 transfer된 layer 수에 따른 성능을 보여준다. 일반적으로 임베딩을 전이하면 성능이 향상되며, 각 Transformer 층이 추가될 때마다 성능이 개선되어 MultiNLI의 경우 전체 층을 전이하면 최대 9% 향상이 있는 것을 볼 수 있다. 이는 사전학습된 모델의 각 층이 목표 task 해결에 유용한 기능을 담고 있음을 시사한다. 즉, GPT-1에서 제안한 다음 단어를 예측하는 Language Modeling 방법은 대부분의 down stream task에 적합하다는 것이다. 

 

Transformer 언어 모델 사전학습이 왜 효과적인지 더 잘 이해하고자  Zero shot 성능 실험을 진행한 것이 오른쪽 그림이다. X 축은 Pre-Training을 진행한 정도, 실선은 Transformer를 사용한 성능을, 점선은 LSTM을 사용한 성능을 의미한다. 

결과적으로 대부분의 down stream task 에서 Pre-Training을 많이 진행했을수록 성능이 좋으므로, Pre-Training 과정이 대부분의 Down Stream Task에 적합하다는 것을 알 수 있다. 또한 LSTM보다 성능이 우수하게 좋다. 

 

Ablation 실험 결과는 다음과 같다. 

 

  1. 보조 LM 목적 제거: finetuning 시 보조 언어 모델링 목표를 제외했을 때 NLI task와 QQP에서 성능 저하가 보인다. 전체적으로, 대규모 데이터셋은 보조 목표의 이점을 보지만 소규모 데이터셋은 그렇지 않은 것을 볼 수 있다. 
  2. LSTM과 Transformer 비교: 동일한 프레임워크에서 단일층 2048 유닛 LSTM을 사용했을 때 평균 점수가 Transformer 대비 5.6 낮았다. LSTM이 Transformer를 앞선 경우는 MRPC 데이터셋 하나뿐이었다고 한다. 이를 통해 Transformer 구조가 LSTM을 사용하는 구조보다 우수함을 알 수 있다.
  3. 사전학습 없는 Transformer: Transformer 아키텍처를 사전학습 없이 지도 목표 task에 직접 학습시켰을 때, 모든 task에서 성능이 하락했으며 전체 모델 대비 평균 14.8% 감소했다. 이를 통해 GPT-1에서 제안하는 Pre-Training 방식이 효과적이고 성능에 큰 영향을 준다는 사실을 알 수 있다. 

 

결론적으로 GPT-1은 언어 모델 사전학습 (다음 토큰 예측) → 각 task에 맞춘 얕은 미세조정으로 구성된다.

긴 연속 텍스트(BooksCorpus)로 장기 문맥 지식을 먼저 배우고, 입력을 한 줄 시퀀스로 선형화(linearize) 해서 구분 토큰($), 시작/종료 토큰만 추가한 뒤 작은 분류층으로 각 task를 해결한다. 결과적으로 NLI, QA, similarity, classification 등 12개 중 9개 task에서 SOTA를 갱신했고 GLUE 점수 72.8로 기존 최고치를 넘겼다.

핵심적으로 GPT-1의 가장 큰 기여는 비지도(사전)학습이 다운스트림 task 성능을 실질적으로 끌어올린다는 것을 발견했다는 것, 그리고 Transformer + 긴 연속 텍스트 조합이 특히 효과적이라는 것을 발견햇다는 것이다. 

 

GPT의 장점과 단점에 대해 간단하게 알아보자면 다음과 같다. 

장점

① 낮은 적응 비용

하나의 디코더형 Transformer로 입력만 선형화하고 작은 분류층을 추가해 아키텍처 변경을 최소화하여 다수 task를 처리할 수 있다.

② 긴 문맥 처리에 강함

긴 연속 텍스트로 사전학습해 장거리 의존성을 잘 포착하므로 RACE, Story Cloze 같은 long-context task에서 유리하다.

③ 전반적 성능 향상

NLI, QA, similarity, classification 등 다양한 task에서 일괄적으로 성능을 끌어올려 SOTA를 다수 갱신했다.

 

단점

① 단방향 컨텍스트 제약

좌→우 한 방향만 보므로 양방향 정보가 중요한 상황에서는 불리할 수 있다. (BERT류 대비)

② 작은 데이터셋 취약

RTE처럼 샘플이 매우 적은 task에서는 성능 이득이 제한적일 수 있어 멀티-task 미세조정/증강이 필요하다.

③ 고정 길이 창

대개 512 토큰 전후의 컨텍스트 창에 의존하므로 매우 긴 문서는 슬라이딩/요약 등 추가 처리가 필요하다.

④ 사전학습 목표 단일

표준 언어모델링(다음 토큰 예측)에 집중되어 있어 번역/마스크 예측 등 다른 pre-training 목표와의 결합·비교가 제한적이다.