GPT-1
GPT-1은 text를 이어 쓰는 causal next-token prediction으로 backbone을 먼저 학습하고, 그 backbone을 labeled task에 fine-tuning한다. 강의에 제시된 규모는 12-layer Transformer, 117M parameters, context 512이며, pre-training data는 BooksCorpus다. 중요한 변화는 generative pre-training으로 얻은 모델을 여러 task에 재사용한다는 것이지, 처음부터 label 없이 모든 task를 수행했다는 뜻이 아니다.
Reading a Task Through a Causal Sequence
Causal Attention에서 앞 position의 state는 뒤의 token을 볼 수 없다. 따라서 sequence 전체의 정보를 이용해 classification하려면, 입력을 모두 읽은 마지막 position의 state가 자연스러운 선택이다. BERT의 첫 [CLS]가 양쪽 context를 볼 수 있는 것과 달리, GPT-1의 첫 position으로는 뒤의 입력 전체를 모을 수 없다.
GPT-1은 task 입력을 하나의 token sequence로 linearize하고, 마지막 extract state 위에 linear+Softmax head를 둔다. Task에 따라 입력을 배열하는 방법이 달라진다.
| Task | Linearized input / readout |
|---|---|
| Classification | Start → text → Extract |
| Entailment | Start → premise → Delimiter → hypothesis → Extract |
| Similarity | A 다음 B, B 다음 A의 두 입력을 계산하고 final states를 합침 |
| Multiple choice | Context와 각 candidate를 붙인 입력을 candidate별로 계산 |
Classification의 Start/Extract는 강의의 <s> / <extract> 표시이며, Entailment의 Delimiter는 premise와 hypothesis 사이의 $ 표시다. 이 marker들은 task 입력의 경계를 나타낸다. Similarity에서 A/B 순서를 모두 계산하는 이유는 causal model에서 뒤의 text만 앞의 text를 볼 수 있어, 순서를 뒤집으면 information flow가 달라지기 때문이다. Multiple choice는 모든 candidate를 한 줄로 이어 붙이는 대신 각 candidate에 대해 모델을 실행하여 비교한다.
Supervised Fine-Tuning with an LM Objective
Task head의 loss만 사용하면 pre-training에서 배운 generative 동작과 멀어질 수 있다. GPT-1은 task loss에 LM loss를 함께 두어 task를 학습하면서도 원래의 next-token prediction을 유지하도록 한다.
여기서 는 auxiliary LM loss의 비중이다. 최종 extract state를 task head로 보내는 경로와, sequence에서 다음 token을 예측하는 경로가 함께 학습에 참여한다. 강의의 12개 datasets 중 9개 SOTA는 labeled fine-tuning 조건의 보고다.
GPT-2의 zero-shot과 GPT-3의 In-context Learning으로 넘어갈 때에는 scale뿐 아니라 task를 수행하는 interface가 바뀐다. GPT-1을 이 후속 모델처럼 label 없이 prompt만으로 task를 수행한 recipe로 기억하면 이 변화를 놓치게 된다.
Check
GPT-1의 classification head가 BERT처럼 첫[CLS] 대신 마지막 state를 읽는 직관은?
Answer
Causal visibility에서 마지막 position이 앞선 sequence 전체를 볼 수 있다. 입력을 linearize한 뒤 final state를 task head에 준다.
GPT-1의 보고된 task 성과를 zero-shot이라고 부르면 왜 틀리는가?
Answer
원 recipe는 labeled fine-tuning을 전제로 하고 task loss와 LM loss를 함께 사용했다.
GPT-1 · GPT-2 · GPT-3를 축별로 비교하고 그 차이가 필요한 이유를 설명하세요.
Answer
Scale만이 아니라 task 수행 interface가 바뀌는 흐름을 기억한다.
규모: GPT-1=117M / GPT-2=1.5B / GPT-3=175B
Context: GPT-1=512 / GPT-2=1024 / GPT-3=2048
데이터: GPT-1=BooksCorpus / GPT-2=WebText40GB / GPT-3=300B sampled tokens
Interface: GPT-1=Task-specific labeled fine-tuning / GPT-2=Zero-shot text pattern / GPT-3=Zero/one/few-shot ICL
공통: GPT-1=Causal next-token LM / GPT-2=Causal next-token LM / GPT-3=Causal next-token LM