논문 리뷰

GPT-2(2019): Language Models are Unsupervised Multitask Learners

cch8ii 2025. 10. 2. 02:19
논문 링크: https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

 

한 줄 정리

  • 목표: 지도학습용 라벨 데이터 없이, 하나의 모델로 여러 NLP task를 수행할 수 있는 “일반 언어모델” 만들기
  • 기존의 문제점
    • GPT-1: LM 사전학습 + 얕은 finetuning 필요 → task별 라벨 데이터 여전히 요구
    • 전통적 multitask: dataset마다 학습 필요, 확장성 부족
  • 핵심 아이디어
    • WebText(40GB, 8M 문서)로 pure LM(next-token prediction) 사전학습
    • Byte-level BPE로 모든 유니코드 처리(OOV 제거)
    • 프롬프트(자연어 지시어)만으로 다양한 task를 zero-shot 수행
  • 성과
    • 8개의 언어 모델링 데이터셋 중 7개에서 SOTA 성능을 달성
    • 번역·요약 성능은 감독모델보다 낮지만, task 힌트만으로 동작 가능함을 입증

기존 방법론과 한계

기존 방식은 task마다 독립적인 아키텍처와 dataset이 필요하고, 분포가 조금만 달라져도 성능이 무너질 수 있음 원하는 건 공유된 표현을 바탕으로 다양한 task를 처리할 수 있는 generalist 모델

당시 머신러닝에서는 대규모  데이터셋, 용량이 큰 모델, 지도학습을 결합하여 뛰어난 성능을 보였다. 원하는 task에서 올바른 행동을 보여주는 training example을 모아 dataset을 만들고 머신러닝 학습을 통해 이를 모방하도록 학습시킨 후 독립적이고 동일한 분포 (i.i.d) 의 검증 dataset에서 성능을 평가하는 방식을 사용한다. 

이러한 방법들의 단점이자 한계점은 학습한 데이터셋의 분포와 조금만 달라지기만 하거나 dataset의 도메인이 달라질 경우 성능이 낮아지는 민감성이었다.

 

논문에서는 다음과 같은 말로 표현한다.

Current systems are better characterized as narrow experts rather than competent generalists.

 

우리는 하나의 모델을 만들어서 여러 분야, 다양한 데이터셋에 적용해도 성능이 좋았으면 좋겠는데, 현재의 시스템은 각각의 task마다 별도의 training dataset을 만들고 라벨링해야 하는 시스템이라는 것이다. 

때문에 결국 각각의 dataset을 만들어 라벨링하지 않아도 여러 task를 수행할 수 있는, 보다 일반적인 시스템으로 나아가야 한다고 논문에서 주장한다. 

 

질의응답, 번역, 독해, 요약 등의 Natural language processing task도 일반적으로 task 별 데이터셋을 활용한 지도 학습으로 접근해왔다. 예를 들어 질의응답 task일 때는 질문과 응답 pair가 있는 데이터셋을 가지고 학습을 시킨 것이다. 물론 Multitask learning이 NLP에서도 점점 당시 주목받고 있었지만 초기 단계였다. 

 

그런데 왜 굳이 multitask training이 중요한 걸까? 

하나의 task와 관련해서 모델을 학습시키기 위해선 정말 많은 수의 training data가 필요하다. 그만큼 데이터와 정답 pair도 필요하고 이는 dataset을 구축하는 데에 시간이 너무 많이 든다는 단점이 존재한다. 이렇게 많은 dataset을 만들고 objective를 설계하는 것은 규모를 계속해서 확장하는 데에 장애물이 된다. 

 

language task에서 가장 높은 성능을 보이는 방법론은 pre-training과 supervised fine-tuning을 결합한 방식이었다. 이때까지의 가장 최근에는 BERT나 GPT-1 처럼 Transformer 계열 모델이 task-specific 아키텍처조차 필요 없고, 그냥 모델 블록 전체를 transfer하는 게 가능하다는 결 보였다. 

출처: https://ravjot03.medium.com/bert-vs-gpt-a-guide-to-two-powerful-language-models-b14502438065

  • 과거 접근 (task-specific architecture 필요)
    • 각 task에 맞는 별도 아키텍처가 필수
    • 언어모델에서 word embedding만 가져와 쓰고, 그 위에는 task-specific 모델을 따로 얹는 구조
    • 번역 → 인코더-디코더, QA → 질문-문맥 매칭 네트워크

  • GPT-1
    • 대규모 LM pre-training + 간단한 fine-tuning만으로 여러 NLP task를 수행할 수 있음을 증명
    • 특별한 task-specific layer를 설계하지 않았으며 구조화된 입력을 연속 토큰 시퀀스로 바꿔서 디코더 LM이 그대로 읽게 하고 LM 위에 단순한 linear output layer만 붙여 fine-tuning

  • BERT
    • 양방향 Transformer를 사전학습한 뒤 각 task에 맞게 [CLS] 토큰 embedding → classifier head 정도만 붙여 fine-tuning
    • task마다 새로운 아키텍처를 만들 필요 없이 입력 포맥을 바꾸고 출력 부분에 classifier head를 붙여 finetuning하면 됨

하지만 이러한 방법들은 여전히 특정 task를 수행하기 위해 fine-tuning에 라벨 데이터가 필요하다. 즉, supervised learning이 필요하다는 것이다. 이러한 연구 이후 언어 모델에서 라벨이 거의 없거나 아예 없어도 학습 과정에서 언어모델이 일반적인 지식을 내재화하기 때문에 자연어 프롬프트만 주면 여러 task 수행이 가능하다는 연구가 몇몇 등장했고 때문에 GPT-2에서는 이러한 연구 흐름을 따라 라벨 없이도 다양한 task에 가능하게끔 하는 것을 목표로 했다. 

 

출처: https://www.youtube.com/watch?v=3n6157XNYyw

즉, GPT-2의 다음과 같은 아이디어를 결합해 목표를 세운 것이다. 

 

  • 사전학습된 Transformer 블록 전이 (GPT-1, BERT)
  • 라벨 없이도 LM이 특정 태스크를 할 수 있다는 증거들

 

“라벨이나 아키텍처 수정 없이, 언어모델 자체를 zero-shot 세팅에서 다양한 task에 써 보자.”

 

GPT-2

Approach

GPT 접근법의 핵심은 Language modeling이다. Language modeling은 $(x_1, x_2, ..., x_n)$ 으로부터의 unsupervised distribution estimation 문제로 정의된다. 

입력으로 들어오는 시퀀스는 $(s_1, s_2, ..., s_n)$ 순차적인 구조를 가지기 때문에 확률 $p(x)$는 시퀀스를 왼쪽에서 오른쪽으로 보고 이전의 단어들을 조건으로 두어 확률의 곱으로 분해해 구할 수 있게 된다. 

$$p(s_1, s_2, ..., s_n) = p(s_1) · p(s_2 | s_1) · p(s_3 | s_1, s_2) · ... · p(s_n | s_1, s_2, ..., s_{n-1})$$

 

단일 task를 수행할 때에는 $p(output|input)$이라는 conditional distribution을 추정하는 것으로 표현할 수 있다. 하지만 우리는 단일 task에만 잘 작동하는 것이 아니라 여러 개의 task에도 유연하게 잘 작동하는 모델을 만들어야 하기 때문에 단순히 input 뿐만 아니라 수행할 task까지 조건으로 포함해 $p(output|input, task)$를 모델링해야 한다. 

출처: https://www.youtube.com/watch?v=3n6157XNYyw

예를 들어 영어-프랑스어 번역 task에 대해서는 (translate to french, english text, french text)의 시퀀스로 표현하고 독해 task의 경우 (answer the question, document, question, answer)의 시퀀스로 표현하는 것이다. 

💡 task를 토큰으로 제공하는 게 BERT에서 활용한 CLS 토큰과 무슨 차이가 있을까? 

BERT의 [CLS] 토큰과 GPT-2의 문맥을 task로 제공(prompting) 방식은 둘 다 모델에서 원하는 task를 알려주는 신호이다.
BERT의 [CLS] 토큰은 입력 시퀀스 맨 앞에 항상 붙이는 특수 토큰으로 classification task(문장 분류, NLI 등)에서 문장 전체의 representation을 요약하는 역할을 한다. 결국 모델이 [CLS] 토큰의 hidden state를 task-specific classifier (MLP 등)에 전달하여 supervised fine-tuning으로 학습하게 된다. 
이러한 [CLS] 토큰은 task-specific classifier에 입력할 수 있도록 설계되었기 때문에 결국 supervised fine-tuning에 의존하게 되는 것이다. 각 task마다 [CLS] representation 위에 새로운 분류기를 붙여 학습해야 한다. 

GPT-2의 문맥을 task로 제공(prompting) 하여 입력 텍스트 자체가 곧 task 지시어가 된다. 때문에 모델이 언어모델링(next token prediction)만으로도, 주어진 문맥(prompt) 패턴을 보고 task를 추론해 답변을 생성할 수 있게 된다. 이는 별도의 classifier가 필요하지 않아 zero-shot / few-shot setting에서 prompt만 잘 설계하면 supervised fine-tuning 없이도 다양한 task 수행이 가능해진다. 

Training Dataset

이전 연구들에서는 특정 도메인의 텍스트에서 언어 모델을 학습했다. 때문에 본 연구에서는 가능한 한 크고 다양하며 범용적인 데이터셋을 구축하는 데에 초점을 두었다. 

이때 문서의 품질도 고려를 해야 하기 때문에 사람에 의해 filtered된 웹페이지만 수집했다. Reddit에서 최소 3 karma 이상 받은 웹 페이지를 다른 사용자들에게 흥미롭거나 유익하거나 재미있다고 판단되었음을 보여주는 휴리스틱 지표로 해석하여 이러한 조건에 해당하는 outbound link를 모두 수집했다.

이렇게 수집된 데이터셋이 WebText이다. WebText 는 4천 5백만개의 link에 관한 text를 담고 있다. 

Input Representation

언어 모델은 어떤 문자열에 대해서도 확률을 계산하거나 생성할 수 있어야 하는데 대규모 언어 모델의 경우 lowercasing, tokenization, out-of-vocabulary token 같은 사전 처리 과정을 거치기 때문에 한정된 Vocabulary를 가지게 되고 모델이 다룰 수 있는 문자열 공간이 제한된다. 

논문에서는 이러한 사전 처리 과정에 대한 해결책으로  unicode 문자열을 UTF-8로 변환하여 byte-level에서의 처리를 제시하였다. 하지만 크기가 큰 데이터셋에서 byte-level language model이 word-level language model보다 성능이 뒤떨어지는 문제가 발생했다. 

💡byte-level language model이 word-level language model보다 성능이 뒤떨어진다?
1. 시퀀스 길이 문제
Byte-level은 모든 문자를 byte 단위로 처리하기 때문에 한 문장이 훨씬 긴 시퀀스로 표현된다. long-term dependency 문제가 발생하고 계산량도 그만큼 증가하게 된다. 
2. 정보 단위의 크기 차이
Word-level 토큰은 사람이 이미 의미 단위의 단어로 분할해둔 것이기 때문에 모델이 바로 의미를 학습할 수 있다. 하지만 Byte-level은 이렇지 않아 의미 단위를 모델이 스스로 학습해야 한다. 때문에 학습 효율이 떨어지게 된다. 

 

Byte-level BPE(BBPE)

이러한 문제를 해결하기 위해 BPE 알고리즘을 byte-level에서 동작시키는 Byte-level BPE(BBPE)를 제안했다. 

BBPE는 무엇일까? 

예를 들어 다음과 같은 corpus가 있다고 할 때...

dog
dog.
dog?
dog!

 

단순 BPE는 d, o, g, ., ?, ! 와 같은 문자 단위에서 시작해서 자주 쓰이는 쌍들을 합친다. 이렇게 되면 dog라는 단어 하나 때문에

'dog', 'dog.', 'dog?', 'dog!'가 각각 다른 토큰으로 만들어질 수 있게 되는 비효율적인 상황이 벌어진다. 

또한 문자 단위 BPE 구현은 유니코드 전체(13만 개 이상)를 기본 사전에 포함시켜야 하므로 Vocabulary가 지나치게 커진다는 문제도 있다.

 

반면, BBPE의 경우 기본 토큰은 바이트 256개로 어떤 유니코드 문자든 다 표현 가능하게 해 OOV를 사라지게 한다.컴퓨터에서 모든 텍스트가 바이트 (0~255) 값으로 표현되어 이모지까지 바이트 조합으로 표현할 수 있게 되고 때문에 기본적으로 256 바이트만 있으면 어떤 문자열이든 토큰 시퀀스로 표현이 가능해지기 때문이다. 

또한 만약 문자 범주가 알파벳, 구두점과 같이 다르면 병합을 하지 않고 공백은 예외로 둬 단어와 함께 병합이 가능하게 했다. 

때문에 같은 예시에 BBPE를 적용하면 다음과 같다. 

"dog." → ["dog", "."]
"dog?" → ["dog", "?"]
"dog!" → ["dog", "!"]

만약 byte 기준으로 '한' (3 byte) 이라는 단어가 많이 쓰이면 하나의 토큰이 되는 것이다!! 

## 다른 예시
I love dogs.
I love cats.

## 결과
"I love dogs." → ["I", "␠love", "␠dogs", "."]
"I love cats." → ["I", "␠love", "␠cats", "."]

 

이러한 input representation은 word-level LM의 경험적 장점과 byte-level 접근의 일반성을 결합한다. 따라서 GPT-2에서는 어떤 유니코드 문자열에도 확률을 할당할 수 있으며 preprocessing, tokenization, vocab size와 관계없이 어떤 dataset에서도 LM을 평가할 수 있게 된다. 

 

Model

출처: https://ljm565.github.io/contents/gpt1.html#google_vignette

GPT-2는 GPT-1과 비교했을 때 모델 구조가 많이 바뀌진 않는다. 

  • Layer normalization이 원래 sub layer 다음에 위치했지만 Layer normalization 을 각 sub block의 입력 부분으로 이동시켰다. 
    • GPT-1의 구조를 보면 입력 분포가 정규화되지 않은 채 각 서브 모듈로 들어가는 것을 볼 수 있고, GPT-2의 구조에서는 layer norm으로 안정된 분포가 각 모듈에 들어가는 것을 볼 수 있다. 
  • 마지막 self-attention block 뒤에 추가 layer normalization을 넣었다. 
  • residual path에서 깊이에 따른 누적 효과를 고려해 수정된 initialization을 적용했으며 residual layer의 weight는 초기화 시 $1 / \sqrt N$ (N = residual layer 수) 로 스케일링했다. 
    • 잔차가 layer를 거치면서 분산이 커질 수 있기 때문에 초기 가중치를 레이어 수로 정규화시켜 layer가 깊어져도 분산이 과도하게 커지지 않게 한다. 
  • vocabulary 크기를 50,257로 확장했다.
  • context size를 512 → 1024 token으로 늘렸으며, batch size는 512를 사용했다.

 

더보기

💡  ResNet pre-activation

이 이후 Post-LN(출력 쪽 LN)은 네트워크가 깊어질수록 학습이 불안정해지기 쉬운데 Pre-LN은 역전파 경로가 더 안정적이고 학습에 유리하다는 것이 밝혀져 Pre-LN 을 사용하게 된다. 

 

위 그림을 보면 (a)의 경우 활성화 함수 후에 normalization을 적용하고, (b)의 경우 활성화 함수를 거치기 전에 normalization을 적용하고 있다. 그에 따른 결과를 봤을 때 파란색 선의 loss가 orginal의 loss보다 더 떨어진 것을 볼 수 있다. 

 

GPT-2의 모델 크기는 다음과 같다. 

(오) 출처: https://soki.tistory.com/98

 

GPT-1은 약 1억 1,700만개의 파라미터를 가지고 있고 12개의 Transformer 디코더 층을 사용하는 구조인 반면, GPT-2의 경우 15억개의 파라미터를 보유하며 GPT-1 대비 약 10배 커진 규모이다. 

GPT-2 small은 12개의 레이어, GPT-2 medium은 24개의 레이어, GPT-2 large는 36개, GPT-2 extra large는 48개라는 레이어 수를 가진다. 

여기서 조금 웃긴 이야기는 GPT-2 이전에 발표된 BERT에서 BERT-large는 24개의 레이어를 가졌는데 Open AI에서 이를 의식해 BERT-large 크기 정도의 모델의 이름을 GPT-2 medium이라고 붙인 것이다. 

 

Experiments

Language Modeling

zero-shot task transfer를 위한 초기 단계로, WebText LM이 자신이 학습한 primary task인 language modeling에서 zero-shot domain transfer를 얼마나 잘 수행하는지 분석하였다. 

기존의 언어모델의 경우 성능을 보통 log-probability(= log-likelihood, 또는 perplexity)로 평가하는데 평가하는 데이터셋마다 토크나이저, 단위, 스크립트가 다르다. 

 

  • 어떤 데이터셋은 word 단위 (단어 하나 = 토큰 1개)
  • 어떤 건 subword 단위 (BPE 조각)
  • 어떤 건 character 단위 (글자 하나씩)

이 경우 토큰 단위가 다르기 때문에 직접 비교할 수 없게 된다. 

 

GPT-2는 byte-level에서 동작하며, lossy pre-processing이나 tokenization을 요구하지 않으므로 어떤 language model benchmark에서도 평가가 가능하다는 장점이 있다. 때문에 본 논문에서는 WebText LM이 특정 데이터셋에 대해 계산한 걸 데이터셋마다 토큰 단위가 다르니까, 공통 단위(예: 단어 수, 바이트 수)로 정규화해서 공평한 성능 지표를 만들어 사용했다. 

실험 결과, WebText LM은 domain과 dataset을 넘나들며 zero-shot setting에서 8개 dataset 중 7개에서 SOTA를 달성했다. 

특히 Penn Treebank, WikiText-2처럼 training token이 100만~200만 개에 불과한 작은 dataset에서 큰 향상을 보였으며 LAMBADA, Children’s Book Test 처럼 long-term dependency를 측정하기 위해 설계된 dataset에서도 큰 개선을 보였다. 

하지만 1BW (One Billion Word Benchmark) 에서는 특이하게 성능이 이전 SOTA 성능보다 떨어지는 것을 알 수 있다. 본 논문에서는 이를 dataset 규모가 가장 크고, 문장을 무작위로 섞어 long-range structure를 제거하는 등 preprocessing이 파괴적이었기 때문이라고 이야기한다. 

더보기

💡 One Billion Word Benchmark(1BWB)에서 성능이 낮게 나온 이유

1. 데이터셋 규모가 크다. 

1BWB는 8억 단어 이상의 아주 큰 말뭉치였다. 데이터셋의 규모가 크면 좋은 거 아닌가? 하는 생각이 들 수 있찌만 여기서 말하는 데이터셋은 학습 데이터셋으로 사용하는 것이 아니라 평가용 벤치마크라는 사실을 기억해야 한다. 

즉, GPT-2가 1BWB로 학습하지 않았기 때문에 거대한 말뭉치가 가진 특성과 분포 차이가 오히려 모델 성능을 조금 낮추는 원인으로 작용했을 가능성이 있다. 

 

2. 파괴적 전처리

1BWB는 데이터를 만들 때 문장을 무작위로 섞는다고 한다. 이로 인해 원래 문맥 순서가 사라지고 따라서 긴 문맥 구조가 완전히 제거된다. 때문에 모델이 긴 문맥을 전혀 활용할 수 없게 되어 GPT-2의 장점(긴 context window = 1024 tokens)이 발휘되지 못한 것이라고 추정할 수 있다. 

그렇다면 1BWB는 왜 데이터를 만들 때 문장을 무작위로 섞을까? 원래의 1BWB의 목적이 언어모델을 평가하기 위한 순수한 문장 단위 예측 벤치마크였기 때문이다. 즉, 앞뒤 문장 (문맥)을 배제하고 문장 자체의 확률적 예측 능력만 평가하고자 구축된 데이터셋이 1BWB인 것이다. 

Children’s Book Test

Children’s Book Test (CBT) 는 named entity, noun, verb, preposition 등 서로 다른 word category에 대한 LM 성능을 평가하기 위해 만들어진 데이터셋이다. task는 10개의 후보 중 문장 속 빈칸에 들어갈 올바른 단어를 맞히는 것이다. GPT-2는 LM 학습 그대로 각 후보와 나머지 문장의 확률을 계싼한 뒤 가장 높은 확률을 가진 단어를 예측한다. 

실험 결과, model size가 커질수록 성능은 꾸준히 향상되었으며 human 성능과의 격차 대부분을 줄였다. GPT-2는 common noun에서 93.3%, named entity에서 89.1%의 정확도를 기록하며 SOTA를 달성했다. 

LAMBADA

LAMBADA dataset은 long-range dependency를 모델링하는 능력을 평가하기 위해 만들어진 데이터셋이다. task는 최소 50 token 이상의 context를 필요로 하는 문장에서 마지막 단어를 예측하는 것이다. 

GPT-2는 SOTA perplexity를 99.8에서 8.6으로 크게 개선했고, accuracy는 기존 LM의 19%에서 52.66%까지 끌어올렸다고 한다.

또한 GPT-2가 틀린 경우를 보았을 때 예측된 단어 자체는 말이 되는 단어였지만 문장의 마지막 단어를 예측하는 task로는 적합하지 않은 경우가 많았다고 한다. 이는 모델이 해당 task에서 예측해야 하는 단어가 반드시 마지막 단어여야 한다는 제약을 반영하지 못한다는 것을 의미한다. 때문에 마지막 단어 후보에서 stop word(관사, 전치사, 접속사 등 마지막에 거의 오지 않는 단어)를 필터링하는 휴리스틱을 활용했고 이렇게 했을 때 accuracy가 52.66% 에서 63.24%로 상승했다고 한다. 

또 신기한 점은 해당 데이터셋에서 SOTA를 달성한 이전 연구에서는 output을 context에 등장한 단어로만 제한하는 restricted prediction setting을 사용했다. 하지만 GPT-2에서는 이 제약이 오히려 성능을 저하시켰는데 왜냐하면 실제로 19%의 정답 단어들은 context에 포함되어 있지 않았기 때문이다. 

💡 Perplexity (PPL)
perplexity는 언어모델이 test 데이터의 토큰 시퀀스를 얼마나 잘 예측하는지 나타내는 지표로, 직관적으로는 모델이 문장을 읽을 때 평균적으로 몇 개의 후보 중 고르는 정도의 혼란도를 의미한다. 때문에 perplexity가 낮을 수록 좋은 모델임을 알 수 있다. 
간단하게 말해서 나쁜 모델이라면 많은 단어들 사이에서 혼란을 겪겠지만 좋은 모델이라면 정답인 단어의 확률만 높을 것이라는 아이디어에서 착안된 모델의 혼란도를 정량화한 지표이다.
출처: https://rfriend.tistory.com/851

Winograd Schema Challenge

Winograd Schema Challenge 는 텍스트 속 모호성을 해소하는 능력을 통해 시스템의 commonsense reasoning 능력을 측정하기 위해 만들어진 데이터셋이다. task는 짧은 문장에서 대명사(pronoun)가 누구를 가리키는지 추론하는 것이다. 

GPT-2에서는 대명사를 각각 후보 명사로 치환한 문장을 만들어 언어 모델 점수를 꼐산한 후 더 자연스러운 즉, 확률이 높은 쪽을 답으로 선택했다. 

실험 결과 PT-2는 SOTA 정확도를 7% 향상시켜 70.70%를 달성했다.

Reading Comprehension

Conversation Question Answering (CoQA) dataset 은 7개 domain의 문서와, 이를 기반으로 질문자와 응답자가 나눈 자연스러운 대화로 구성되어 있는 데이터셋이다. task는 reading comprehension과 대화 이력에 의존하는 질문(예: “Why?”)에 답변하는 능력을 평가하는 것이다. 

GPT-2 입력으로 문서 + 지금까지의 대화 이력 + 마지막 토큰 'A:' 을 넣어 모델에게 문서와 대화가 이렇게 진행되었고 답변을 써라라는 프롬프트를 제공한다. 그후 모델이 Greedy decoding (샘플링 없이 확률이 가장 높은 토큰만 선택)으로 답을 생성하는 방식이다. 

실험 결과, 55 F1 score를 기록했다. 이는 127,000개 이상의 수작업으로 수집된 QA pair를 사용해 학습된 baseline 4개 중 3개의 성능과 같거나 그 성능을 능가한다. 

반면, supervised SOTA인 BERT 기반 모델은 89 F1 score로 사람 정도와 비슷한 성능을 보인다. GPT-2는 supervised training 없이 달성한 성능이라는 점에서 주목할만 하지만 조금 아쉬운 성능을 보인 것이다.

💡 F1 score
F1 score는 precision과 recall의 조화 평균을 말한다. 이는 특히 불균형 데이터일 때 accuracy 대신 사용되는 성능 지표이다. 
(Precision = 예측한 것 중 맞은 비율, Recall = 실제 정답 중 맞춘 비율)

Summarization

Summarization은 CNN/Daily Mail dataset으로 평가되었다. 기사 끝에 'TL;DR:' 을 붙여서 요약을 작성하라는 프롬프트를 주었다. GPT-2는 Top-k random sampling(k=2)을 통해 확률이 높은 2개의 토큰 중 랜덤 샘플링을 진행해 한 번에 100 토큰 생성하고 그 중 앞의 3문장을 최종 요약으로 사용했다.

실험 결과, 겉보기엔 요약처럼 보이지만 마지막 문단 위주로만 요약을 하거나 세부 사항에 조금 혼동을 보였다고 한다.

정량적인 지표를 살펴보았을 때 ROUGE-1/2/L metric에서는 고전적인 neural baseline에 근접하는 수준이며 기사에서 무작위로 3문장을 고른 baseline보다 약간 우수한 정도를 보였다. 

Task hint(“TL;DR:”)를 제거하면 성능이 aggregate metric에서 6.4점 하락했는데, 이는 자연어로 LM에 task-specific behavior를 유도할 수 있음을 의미한다. 

💡 ROUGE-1/2/L metric
자동 요약 평가에 널리 쓰이는 지표로, 사람이 작성한 참조 요약(reference summary)과 모델이 생성한 요약(candidate summary) 간의 유사도를 측정하기 위한 평가 지표이다. 
Recall 중심으로 설계되어 있으며 ROUGE-1은 unigram overlap (단어 단위), ROUGE-2는 bigram overlap을 측정한다. 

ROUGE-n에서 n 값이 작을수록 단순히 단어의 빈도를 반영하게 되고 n값이 2 이상이면 문맥적 흐름과 단어 순서까지 반영하게 된다. 
여기서 recall은 겹치는 N-gram 개수 / 참조 요약의 N-gram 개수 로 계산된다. 

Translation

Translation에서는 english sentence = french sentence 형식의 예시 pair를 context로 주고 마지막에 'english sentence ='를 입력한 뒤 greedy decoding으로 첫 번째 문장을 번역으로 사용했다. 

WMT-14 English→French test set 에서는 5 BLEU score를 기록했다. 해당 성능은 기존 unsupervised word translation이 단어 대 단어 치환보다도 낮은 성능이라고 한다. 

또한 WMT-14 French→English test set에서도 낮은 성능인 11.5 BLEU score를 기록했다. 이는 SOTA 성능인 33.5 BLEU score에도 못 미치는 성능이다. 

💡 BLEU score
기계 번역 평가 지표로, 기계 번역 결과와 사람이 직접 번역한 결과가 얼마나 유사한지 비교하여 번역에 대한 성능을 측정하는 지표이다. 

 

여기서 논문에서 흥미롭다고 언급했던 부분은 WebText 수집 과정에서 비영어 웹페이지를 제거했음에도 translation 능력이 나타났다는 것이었다. Byte-level language detector로 WebText를 분석한 결과, 프랑스어 데이터는 약 10MB에 불과했으며 이는 일반 unsupervised MT 연구에서 사용하는 프랑스어 corpus보다 500배 작았다고 한다. 

Question Answering

Natural Questions dataset은 실제 구글 검색 질문 + 위키피디아 문서에서 답변을 구성한 대규모 QA 데이터셋이다. 이는 언어 모델의 QA 성능을 정량적으로 측정할 수 있는 벤치마크 데이터셋이다.

Translation 실험과 비슷하게 GPT-2 입력 context에 QA 예시 몇 개를 넣은 뒤 마지막에 질문을 넣으면 모델이 short-answer 형식으로 답변을 생성하는 방식이다.

GPT-2 extra large는 exact match metric 기준 4.1% accuracy를 기록했으며 반대로 GPT-2 small은 1.0%도 넘지 못했다. 이는 baseline 수준이다. GPT-2 extra large는 baseline에 비해 5배 이상 많은 질문에 정답을 맞췄고 이로써 capacity(모델 크기)가 QA 성능의 주요 요인임을 알 수 있다. 

하지만 GPT-2의 성능은 open domain QA system보다 낮다고 한다. 

 

Generalization vs Memorization

CV 연구 분야에서 일반적인 이미지 데이터셋에서 중복된 이미지가 포함되어있었꼬 train과 test 사이 중복이 존재해 이는 모델의 일반화 성능이 과대 평가 되었다는 의혹을 낳았다. 

데이터셋의 규모가 커지면 커질수록 이러한 문제가 발생할 가능성이 높아지고 WebText에서도 유사한 현상이 나타날 수 있다.

따라서 test data 중 일부가 training data에 포함되는 정도를 분석하는 것이 중요하다고 논문에서 언급한다. 

 

GPT-2 연구에서는 WebText training set의 token 8-gram을 포함하는 Bloom filter를 만들었다. Bloom filter는 대규모 데이터에서 중복 여부를 빠르게 체크하기 위한 도구로 GPT-2에서는 WebText train set의 모든 8-gram을 Bloom filter에 넣어 평가 데이터셋과의 overlap을 측정했다. 여기서 8-gram은 연속된 8개의 토큰을 의미한다. 8단어 연속 일치는 우연일 확률이 거의 없기 때문에 실제 데이터 중복 가능성이 크고 따라서 중복 판별 신뢰성을 확보하기 위해 8-gram을 기준으로 삼은 것이다. 

Bloom filter를 사용하면 특정 dataset에 대해 그 dataset의 8-gram 중 몇 %가 WebText training set에도 존재하는지 계산할 수 있게 된다. 일반 LM benchmark test set은 WebText train과 1~6% 정도 overlap이 있었으며 평균 3.2% overlap을 보였다고 한다. 

 

Discussion & Conclusion

GPT-2에서는 수백만 개의 웹페이지로 구성된 새로운 데이터셋 WebText로 학습했을 때, 언어 모델이 명시적인 감독 없이도 이러한 task들을 학습하기 시작한다는 것을 보여준다. GPT-2를 통해 zero-shot task transfer의 성공에는 언어 모델의 용량이 핵심적이며, 용량을 키울수록 다양한 과제에서 성능이 log-linear 하게 향상된다는 것이 밝혀졌다. 또한 실제로 8개의 언어 모델링 데이터셋 중 7개에서 SOTA 성능을 달성했다.

 

이러한 GPT-2의 한계는 다음과 같다. 

독해 부분에선 GPT-2가 zero-shot setting에서 supervised baseline과 경쟁할 만한 성능을 보였지만 요약 task의 경우 정량적 metric에서 좋은 성능을 보이지 못한다. 때문에 논문에서도 실제 응용 측면에서 GPT-2의 zero-shot 성능은 아직 활용하기에 부족하다고 언급한다. 

또한 bidirectional 문맥을 활용하는 BERT와 비교했을 때 Uni-directional representation 이 일부 task에서 정보를 활용하는 데에 효율이 떨어질 수 있다는 한계가 존재하고 논문에서는 GPT-2의 모델 capacity나 큰 training data가 이러한 비효율성을 극복하기에 충분한지는 확실하지 않다고 언급한다. 

마지막으로 GPT-2조차 WebText에 underfit하다는 점이다. 성능이 모델의 capacity에 의존적이며 크면 클수록 성능이 좋아 작은 모델은 baseline을 넘기 어려운 경우가 많다. 

 

 

GPT-2는 언어 모델을 충분히 크고 다양한 training 데이터셋에서 학습하면 zero-shot setting에서도 광범위한 Natural Language Processing task에 대해 경쟁력 있는 성능이 가능함을 증명한 모델이다. language modeling objective 자체가 자연스럽게 multitask 학습으로 확장될 수 있다는 것과 supervision 없이도 다양한 능력을 발현할 수 있다는 것을 보여준다.