GPT-3 : Language Models are Few-Shot Learners
2020년 5월 OpenAI에서 발표한 Language Models are Few-Shot Learners, GPT-3 Paper에 대해 요약하고 정리해보려고 한다.
◼ 논문 링크 : Language Models are Few-Shot Learners, GPT-3
1. INTRODUCTION
최근 몇 년간 NLP 시스템에서 사전학습된 언어 표현(representations)을 사용하는 추세가 있었고, downstream transfer을 위한 점점 더 유연하고 작업에 구애받지 않는 방식으로 적용되었다. 먼저, 단어 벡터를 사용하는 단일 레이어 표현을 학습시켜 task-specific한 모델 구조에 입력되고, 더 강력한 표현을 얻기 위해 다중 레이어 표현을 활용하는 RNN과 문맥적 state가 사용되었다. 그리고 더 최근에는 사전학습된 재귀, 또는 transformer 언어 모델이 task-specific한 모델 구조의 필요성을 제거하고 직접 미세조정(fine-tuning)하는 방식이 사용되었다.
이러한 최근의 패러다임은 독해, 질답, 원문함의 등등 수많은 어려운 NLP task들에서 상당한 발전을 이루어 냈으며, 새로운 모델구조와 알고리즘에 기반하여 더 많은 진전을 이루었다. 하지만, 이 방법의 큰 한계는 모델구조가 작업에 구애받지 않지만, 여전히 fine-tuning 단계를 필요로 한다는 것이다.
Fine tuning 기반의 방법들은 다음과 같은 단점이 있다.
1. 매번 새로운 task를 풀때마다 많은 레이블 데이터가 필요하다.
2. Fine tuning 기반의 방법들은 사전학습 중에는 다량의 지식을 학습하지만, 특정 task에 fine-tuning 되는 과정에서 특정task외의 문제에 대한 일반화 능력을 상실한다. 그래서 벤치마크 데이터에 대해서는 좋은 성적을 내는 것처럼 보이지만 실제 사람의 능력과는 동떨어져 있다.
3. 사람은 실제 언어를 활용할 때 대규모의 라벨을 필요로 하지 않는다. 간단한 지시 혹은 몇가지 예시만으로도 가능하다.
위와 같은 문제를 해결하기 위한 방법으로 메타러닝을 제시한다.
메타러닝은 훈련시에 다양한 기술과 패턴 인식 방법을 학습한 후 추론시에 다운스트림 task에 빠르게 적응하도록 하는 방법을 의미한다. GPT-2에서는 이러한 방법을 "in-context learning" 방식으로 진행했는데, 사전학습 모델에 풀고자 하는 task를 텍스트 input으로 넣는 방식이다. 하지만 몇몇 task에서는 기존 fine-tuning을 넘지는 못했었다.
최근 NLP 연구의 또 다른 트렌드는 parameter 수를 늘리는 것이다. 트랜스 포머를 이용하면 모델 사이즈를 크게 늘릴 수 있고 parameter 수가 1억 개(GPT-1), 3억 개(BERT), 14억 개(GPT-2), 80억 개(Megatron), 110억 개(T5), 170억 개(Project Turing)까지 증가하였다. Parameter 수가 늘어날 수록 downstream NLP task에서의 상당한 성성능의 개선이 이루어졌고, 실제 log loss가 규모가 커질수록 개선되는 추세가 있다는 연구 결과가 있다. in-context learning 방식은 모델의 parameter로부터 많은 스킬과 task를 습득하므로, 모델의 규모가 커질수록 성능 개선의 여지 또한 있을 수 있다.
이러한 가설을 입증하기 위해 해당 논문에서는 1750억개의 parameter로 autoregressive model language model, GPT-3를 학습하고, in-context-learning 능력을 테스트했다.
GPT-3는 24개 이상의 NLP task에 대해 3가지 조건을 이용하여 GPT-3를 평가하였다.
(1) few-shot learning : 모델의 context window(10-100)에 최대한 많은 예제를 넣는다.
(2) one-shot learning : 하나의 예제만 넣는다.
(3) zero-shot learning : 예제는 사용하지 않고, task에 대한 지침만 넣어준다.
그래프 해석
1. Task에 대한 자연어 지시문(Prompt)이 주어지면 모델 성능이 향상된다. (Natural Language Prompt > No Prompt)
2. 모델 문맥에 주어지는 예시(Example in context)의 숫자가 많아지면 모델 성능이 향상된다. (K에 비례하여 정확도 증가)
3. In-context-learning 능력은 모델의 크기가 커질수록 향상된다.
이때 성능의 증가는 어떤 gradient update나 fine-tuning 을 거치지 않았으며, 단지 조건으로 주어지는 예시의 수를 늘려 달성하였다.
NLP task들에서 GPT-3은 zero-shot과 one-shot 조건에서 훌륭한 결과를, few-shot 조건에서도 SOTA와 비슷하거나 경우에 따라서는 넘어서는 결과를 보여주었다.
GPT-3은 단어해독(순서 맞추기), 연산 수행, 정의된 것을 단 한 번만 보고서 문장에서 새로운 단어를 사용하는 등 즉석에서 추론하는 task와 빠른 적응력을 측정하는 task들에서 one-shot과 few-shot에서 숙련된 결과를 내놓음을 보여주었다. 또한 few-shot 세팅에서, GPT-3은 사람이 보기에도 주어진 기사가 인간 혹은 기계가 썼는지 분간하기 어려운 기사를 생성해낼 수 있다.
하지만, ANLI(추론), RACE, QuAC(기계 독해) 데이터의 경우는 GPT-3의 규모로도 힘들었다.
본 논문에서는 GPT-3이 가지는 강점과 약점을 분석하고, few-shot learning의 발전을 위해 어떤 개선이 가장 필요한지 분석한다.
2. Approach
모델, 데이터, 학습 등 기본적인 접근법은 Language models are unsupervised multitask learners와 비슷하지만, 모델의 크기를 키웠고, 데이터셋의 크기와 다양성, 학습량을 전부 늘렸다. 문맥 내 학습도 위 논문(GPT-2)와 비슷하지만, 이 논문에서는 문맥 내 학습을 위해 세팅을 다르게 하는 체계적인 방법을 보인다.
본 논문에서는 평가 방법을 아래와 같은 4가지로 세분화하여 정의하였다.
1) Fine-Tuning(FT) - 최근에 가장 일반적인 접근법으로, 사전학습된 모델을 원하는 task에 맞도록 감독학습 데이터셋으로 학습시키는 과정을 포함한다. 보통 수천~수만 개의 라벨링된 예시를 필요로 한다.이 방법은 성능 향상에 크게 도움되지만, 매 태스크마다 라벨링된 데이터가 지나치게 많이 필요하다는 단점이 있다. 이러한 fine-tuning은 많은 벤치마크에서 강력한 성능을 가지지만, 모든 task마다 큰 데이터셋을 새로이 필요로 하며, 분포 외의 데이터에 대해서는 일반화를 잘 못하며, 학습 데이터에 거짓/비논리적인 특성이 있는 경우 이를 흡수할 수도, 사람에 비해 불공정한 비교로 이어질 수도 있다는 단점이 있다.
2) Few-Shot(FS) - 모델은 단 몇 개의 예시만을 볼 수 있되 가중치 업데이트는 허용되지 않는다. 일반적인 데이터셋에서 예시는 문맥과 원하는 답이 있고(예로는 영어-독일어 번역), few-shot은 K(10~100) 개의 예제를 context (2048 토큰까지 처리) 부분에 주고, 추론하려는 example의 결과를 완성하도록 한다. 이 방법에서는 task에 대한 소량의 예제만이 필요하다. 하지만, 대부분의 모델에서 few-shot 성능은 fine-tuning 결과를 따라가지 못한다.
3) One-Shot(1S) - few-shot과 비슷하나 단 한 개의 예시와, task에 대한 자연어 지시문이 제공된다는 점이 다르다. one-shot이 few나 zero-shot과 다른 점은 사람이 소통하는 방법과 가장 흡사한 방법이라는 점이다.
4) Zero-Shot(0S) - one-shot과 비슷하지만 단 하나의 예시도 없으며, 모델은 단지 task에 대한 지시문만을 받는다. 이 방법은 엄청나게 편리할 뿐만 아니라 잠재적으로 강건하고 사전학습 데이터에 편재할 수 있는 좋지 않은 상관관계를 피하게 한다. 하지만, 이는 굉장히 어려운 과제이고 아마 어떤 경우에는 사람조차도 예시가 없으면 task에 대해 제대로 이해하지 못할 수도 있고, 어려움을 느낄 수 있다.
2.1 Model and Architectures
modified initialization, pre-normalization, reversable tokenization 을 포함하여 GPT-2와 동일한 구조를 갖는다.
단, Transformer 레이어의 attention 패턴에 대해 dense와 locally banded sparse attention을 번갈아 사용하였다.
모델 크기에 따른 기계학습 성능의 의존도를 살펴보기 위해, 1.25억 개부터 1750억 개의 parameter를 가지는 8가지 다른 크기의 모델을 학습시켰고, 가장 큰 마지막 것은 GPT-3 모델이며 모든 모델은 3,000억 토큰에 대해 학습하였다.
2.2 Training Dataset
언어모델을 위한 데이터셋은 빠르게 확장되어 거의 1조 개의 단어로 구성된 Common Crawl 데이터셋에서 정점을 찍고 있다. 하지만, 필터링을 전혀 또는 거의 거치지 않은 Common Crawl 데이터는 조정된 데이터셋에 비해 낮은 품질을 갖는 경향이 있다. 따라서, 데이터셋의 품질을 높이기 위한 3가지 방법이 사용되었다.
1. 고품질 출처와 연관성이 있는 것만을 받아 정제한다.
2. 과적합을 정확히 측정하기 위한 온전성을 남겨두고 중복을 피하기 위해 문서 수준에서 중복 제거 작업을 수행하였다.
3. 다양성을 증가시키기 위해 고품질 출처로 알려진 말뭉치를 추가하고 섞어서 사용하였다.
CommonCrawl의 경우 45TB의 데이터셋을 정제하여 570GB로 만들었다(4천억 개의 byte pair encoded 토큰으로 구성). 학습에서, 데이터의 사용은 데이터셋의 크기에 비례하지 않고, 고품질일수록 많이 선택되었다. 이는 고품질과 과적합 사이의 trade-off가 있는 것이다.
2.3 Training Process
일반적으로 큰 모델일수록 더 큰 batch를 쓰지만, learning rate는 더 작게 해야 한다. 학습하는 동안 gradient noise scale을 측정하고 이를 batch size를 선택하는 가이드로 사용하였다. 메모리 부족 없이 더 큰 모델을 학습시키기 위해, 각 행렬곱 내에서 모델 병렬화와 네트워크의 레이어에서 모델 병렬화를 섞어 사용하였다. 모든 모델은 고대역 클러스터의 일부분으로 V100 GPU에서 학습되었다.
2.4 Evaluation
few-shot learning에서, evaluation set의 각 예제에 대해 training set에서 조건으로 개의 샘플을 뽑아 평가하였다.
LAMBADA와 StoryCloze에는 감독학습 셋이 없으므로 train-eval set 대신 dev-test set을 사용했다.
는 모델의 context window이 허용하는 범위에 따라 가 될 수 있는데, 모든 모델에 대해 이고 보통 개의 샘플에 맞는다. 큰 가 항상 좋지는 않기 때문에 분리된 dev/test set이 있다면 적은 K\를 dev set에 사용하여 최고의 값을 test set에서 사용했다.
3. Results
language modeling 성능은 계산을 효율적으로 사용할 경우 모델이 커짐에 따라 성능이 지수적으로 증가한다.
하지만 모델 크기가 매우 커졌을 경우 지수적인 증가에서 조금 벗어나 더 향상되는 모습을 보였다.
이러한 결과가 모델이 훈련 corpus에 있는 지나친 세부사항에서 오는 cross-entropy-loss에서 기인하는 것이 아닌지 걱정할 수 있으나 다양한 NLP 태스크에서 성능 향상을 가져온다는 것을 보일 것이다.
3.1 Language Modeling, Cloze, and Completion Tasks
흥미있는(of interest) 한 개의 단어를 예측하거나, 문장/문단을 완성하거나, 텍스트를 완성시키는 가능한 것들 중 하나를 선택하는 task이다.
3.1.1 Language Modeling
Penn Tree Bank(PTB) 데이터에 대해 zero-shot perplexity를 계산한 결과, 가장 큰 GPT-3 모델은 SOTA보다 15 point 앞서는 20.50 Perplexity를 기록하였다. 여기서는 데이터셋의 명확한 구분이 없기 때문에 zero-shot만 테스트했다.
3.1.2 LAMBADA (문장 완성하기/ 언어의 장기 의존성을 모델링하는 태스크)
LAMBADA dataset은 텍스트에서 장거리 의존성 모델링을 테스트한다 - 모델은 문맥 문단을 읽어 문장의 마지막 단어를 예측해야 한다. 최근 언어모델의 크기를 키우는 것은 난이도가 높은 벤치마크에 대한 성능을 경감시킨다는 것이 제안되어 왔다. 모델을 두 배 키워도 1.5% 정도의 향상만이 있었다.
그러나 GPT-3은 기존 대비 8% 이상의 성능 향상을 얻으며 Zero-shot setting에서 76%의 정확도를 달성했고, Few-shot에서는 이전보다 18% 향상된 86.4%의 정확도를 달성하였다.
3.1.3 HellaSwag (짧은 글이나 지시사항을 끝맺기에 가장 알맞은 문장을 고르는 태스크)
사람에게도 살짝 어려운 문제이지만(95.6% 정확도), GPT-3은 78.1%(one-shot), 79.3%(few-shot)을 달성하며 종전의 미세조정된 15억 개의 parameter를 가진 모델(75.4%)를 뛰어넘었다. 그러나 SOTA인 multi-task 학습 후 fine-tuning된 모델인 ALUM(85.6%)에 비하면 낮은 점수이다.
3.1.4 StoryCloze (다섯 문장의 긴 글을 끝맺기에 적절한 문장을 고르는 태스크)
zero-shot으로 83.2%의 성능을 얻었고, few-shot(K=70)으로 87.7%의 성능을 얻었다.
BERT 기반의 fine-tuning SOTA보다 4.1% 낮은 성적이긴 하나 기존의 zero-shot 성능은 10% 가까이 뛰어넘었다.
3.2 Closed Book Question Answering
GPT-3이 광범위한 사실적 지식(broad factual knowledge)에 대한 QA 능력을 측정한다.
가능한 질의가 방대하기 때문에, 이 task는 보통 연관된 텍스트를 찾는 정보 검색 시스템에 더해, 질문과 검색한 텍스트가 주어지면 답변을 생성하는 모델을 함께 사용하는 접근법을 사용해 왔는데, 이러한 세팅은 “open-book” 과 같은 방식이다.
최근에는 보조적인 정보라는 조건 없이도 질문에 대한 답변을 잘 생성하는 충분히 큰 모델이 제안되었는데, 이러한 방식은 “closed book”으로 불린다.
TriviaQA
: zero-shot에서 64.3%, one-shot에서 68.0%, few-shot에서 71.2%를 달성하였다. zero-shot 결과는 T5-11B를 14.2% 차이로 능가하는 성능을 보여 주었다. one-shot에서도 3.7%의 차이로 SOTA를 제치는 등의 결과를 얻었다.
WebQuestions
: zero-shot에서 14.4%, one-shot에서 25.3%, few-shot에서 41.5%를 달성하였다. few shot으로 갔을 때 zero shot에 비해 성능 향상이 큰 태스크 중 하나이다. GPT-3에게 있어 WebQA스타일의 질문은 out-of-distribution이었을 것으로 추정한다. 그럼에도 T5-11B fine-tuning된 모델의 성능인 37.4%을 넘었고, Q&A를 위한 사전학습을 더한 T5-11B+SSM의 44.7% 성능과 비슷한 성능을 보여준다.
Natural Questions
: zero-shot에서 14.6%, one-shot에서 23.0%, few-shot에서 29.9% 의 성능을 달성하였다. WebQs에서와 비슷하게 zero~few-shot에서의 큰 발전은 분포의 이동을 제안할 수 있으며, TriviaQA나 WebQS에 비해 더 낮은 경쟁력을 보여주는 것을 설명할 수 있다. NQs의 질문은 Wikipedia에서 아주 fine-grained한 지식을 물어보기에 특히 이는 GPT-3의 용량과 광범위 사전학습 분포의 한계를 테스트해볼 수 있다.
3.3 Translation 번역
GPT-2에서는 용량 문제 때문에 영어만 존재하는 데이터셋을 만들기 위한 필터를 사용하였다. GPT-3에서는 훨씬 더 커진 크기 덕분에 실제로 여러 언어에 대한 표현(representation)을 얻을 수 있게 되었다.
GPT-3 학습을 위해 사용된 Common Crawl 데이터는 사실 93%가 영어이지만 7%는 다른 언어를 포함한다.
GPT-3은 다양한 언어를 자연스럽게 섞어서 학습하게 되었고, 어느 특별한 문제만을 위해 특별 제작되지 않았다.
결과는 기존 NMT 모델에 비해 좋지 않지만, 단 한 개의 예시만이 주어지는 task에서는 7 BLEU score만큼 향상되었으며 이전 연구와 거의 근접한 성능을 보여준다.
GPT-3은 다른 무감독 NMT에 비해 다른 언어 → 영어로의 번역은 아주 잘 하지만 그 반대는 상당히 성능이 낮다. 이는 GPT-2의 byte-level BPE tokenizer가 거의 영어에 맞춰져 있기 때문으로 보인다.
그리고, 여전히 모델이 커질수록 성능이 증가함에는 변함이 없다.
3.4 Winograd-Style Tasks 대명사 지칭 문제
자연어 문장에서 특정 대명사가 어떤 대상을 지칭하는지를 판별하는 고전적인 자연어처리 문제로, 문법적으로는 (답이) 모호하지만 의미적으로는 (사람에게는) 명확한 문제이다.
최근 fine-tuning 된 모델은 Winograd 데이터에 대해 사람 수준의 성능을 보였지만, 적대적으로 만들어진 Winogrande 데이터 등에서는 성능이 떨어짐을 보였다.
GPT-3은 273개의 Winograd Schemas의 원래 세트에 대해 테스트를 진행하였으며, GPT-2에서 사용된 partial evaluation 방법을 사용했다. 이 세팅은 SuperGLUE benchmark와는 조금 다르게 이진 분류로 표현되며 객체 추출이 필요하다.
Winograd에서, GPT-3은 zero/one/few-shot에서 각각 88.5%, 89.7%, 88.6%의 성능을 보였으며, 문맥 내 학습에서 크게 명확하진 않지만 모든 경우에서 SOTA 및 사람보다 조금의 차이밖에 나지 않는 결과를 얻었다.
더 어려운 버전인 Winogrande dataset에서는, zero/one/few-shot에서 각각 70.2%, 73.2%, 77.7%의 정확도를 보였다. 비교를 하자면, 미세조정된 RoBERTa가 79%를, SOTA가 84.6%(T5), 사람이 94.0%이다.
3.5 Common Sense Reasoning
PhysicalQA(PIQA) 는 어떻게 물리학적으로 세계가 움젝이고 세상에 대한 현실 이해를 관찰하는 것을 목적으로 한 상식 질문을 묻는 데이터셋이다.
GPT-3은 zero/one/few-shot에서 81.0%, 80.5%, 82.8%의 성능을 보였으며, 이는 이전의 SOTA였던 미세조정된 RoBERTa의 79.4%보다 더 높은 수치이다. PIQA는 상대적으로 모델 크기가 커져도 성능이 많이 향상되지 않으며 또한 사람에 비하면 10% 이상 낮지만, GPT-3의 zero-shot 결과는 현재 SOTA를 뛰어넘는다. 참고로 PhysicalQA에서도 데이터 오염 문제가 있었다.
ARC(AI2 Reasoning Challenge) 는 3~9학년(초등~중등)의 과학 시험에서 모은 7787개의 다지선다형 문제 데이터셋이다.
이 데이터셋의 “Challenge” 버전은 단순 통계적 혹은 정보 검색만으로는 맞게 답할 수 없는 것들만 필터링한 것으로서 GPT-3은 zero/one/few-shot에서 51.4%, 53.2%, 51.5%의 성능을 보였다. “easy” 버전에서는 GPT-3은 zero/one/few-shot에서 68.8%, 71.2%, 70.1%의 성능을 보여 RoBERTa를 살짝 앞질렀다. 그러나 이는 UnifiedQA에 비하면 27%/22%만큼이나 낮은 수치이다.
OpenBookQA에서는 zero~few-shot에서 상당한 발전을 보였으나 SOTA에 비하면 20점 이상 낮은 수치이다. few-shot 성능은 미세조정된 BERT Large와 비슷하다.
3.6 Reading Comprehension 기계 독해
추상적 / 다지선다 등 5개의 데이터셋에 대해 독해력을 측정한다.
자유 형식 대화 데이터셋인 CoQA에서 사람보다 3 point 낮은 좋은 성적을 보여준다.
구조화된 대화와 교사-학생 상호작용의 답변 선택 모델링을 요구하는 QuAC에서는 ELMo baseline보다 13 F1 score가 낮은 나쁜 성능을 보여주었다.
독해 문맥에서 이산적 추론과 산술능력을 평가하는 데이터셋인 DROP에서는 GPT-3이 few-shot에서 미세조정된 BERT baseline을 뛰어넘었지만 SOTA나 사람에 비하면 아주 못 미치는 성적을 거두었다.
SQuAD 2.0에서는 zero-shot에서 10 F1(69.8) score를 향상시켰고 이는 원 논문의 가장 좋은 미세조정 모델보다 약간 더 높은 점수이다.
중/고등 다지선다형 영어시험 문제를 모은 RACE에서는 상당히 약한 모습을 보였다(SOTA에 비해 45%나 낮음).
3.7 SuperGLUE
조금 더 많은 NLP task에 대한 결과를 모으고 BERT와 RoBERTa와 더 체계적으로 비교하기 위해 SuperBLUE benchmark 테스트도 진행하였다.
few-shot에서는 모든 task에 대해 32개의 예제를 사용하였고 이는 training set에서 무작위로 선택하였다.
GPT-3으 몇몇 데이터셋에서는 SOTA에 근접한 결과를 얻었으나 그렇지 못한 데이터셋도 여럿 있는 것을 볼 수 있다. 특히 두 문장에서 사용된 동일한 철자의 단어가 같은 의미로 사용되었는지를 보는 WiC dataset 에서는 49.4%로 찍는 거랑 다를 바가 없었다.
모델의 크기가 커질수록, few-shot에 사용되는 예제의 수가 많을수록 성능이 증가함을 볼 수 있다.
3.8 NLI (Natural Language Inference)
Natural Language Inference (NLI) 은 두 문장 간의 관계를 이해하는 것을 측정한다. 실제로는, 보통 2~3개의 분류 문제로 모델은 두 번째 문장이 첫 번째 문장과 같은 논리를 따르는지, 모순되는지, 혹은 그럴지도 모를지(중립적)를 판별한다.
3.9 Synthetic & Qualitive Tasks
즉석 계산적 추론이나, 새로운 패턴을 찾아내거나, 새 task에 빠르게 적응(적용)하는지를 측정하였다.
3.9.1 Arithmetic
2~5 자릿수 덧셈/ 뺄셈 , 두 자릿수 곱셈, 한 자릿수 복합 연산 태스크에 대해 테스트를 진행하였다.
few-shot 세팅에서 두 자릿수 덧셈과 뺄셈 영역에 있어서는 175B 모델의 경우 완벽에 가까운 성능을 보였다. 하지만 4 자릿수 이상의 계산에서는 성능이 매우 떨어졌고, 복합 연산에 대해서는 21.3%밖에 되지 않는 정확도를 보여주었다.
하나의 계산을 넘어가는 계산에 대해서는 성능이 떨어짐을 보여준다.
3.9.2 Word Scrambling & Manipulation
적은 수의 예로부터 새로운 symbolic manipulation을 학습하는 능력을 측정하기 위해 다음 5가지 문자조합 task를 설정
- CL(Cycle letters in word)
: 순서가 뒤죽박죽 된 단어를 원래로 맞추기 (예. pen → enp)
- A1(Anagram, 처음/마지막 글자 제외)
: 처음과 마지막 글자를 제외하고 랜덤하게 만든 글자 원복하기 (yolelw → yellow)
- A2(Anagram, 처음&마지막 두 글자 제외)
: 처음&마지막 두 글자씩을 제외하고 랜덤하게 만든 글자 원복 (notebook → noeotbok)
-RI(Random insertation in word)
: 각 글자 사이에 랜덤한 마침표나 띄어쓰기가 들어간 것 원복 (b.l!u e → blue )
- RW(Reversed word)
: 거꾸로 쓴 글자를 원래로 맞추기 (der -> red)
4~15글자 사이의 가장 빈도가 높은 단어들을 선정해 위의 태스크들에 대해 각각 10,000개의 예제를 생성하고, few-shot / one-shot 셋팅으로 결과를 측정해 보았다. zero-shot으로는 거의 아예 문제를 풀 수 없었고, 몇 개의 예제를 볼 때 그나마 성능 향상이 있었다.
어떤 모델도 단어를 뒤집는 RW task에 성공하지 못했다.
모델의 크기가 커질수록 성능도 조금씩 증가한다. 여기서 문맥 내 정보는 큰 모델일수록 더 잘 활용한다는 것을 보였다.
또한, 언어모델의 이러한 성공은 단지 BPE token을 잘 쓰는 것 뿐 아니라 그 하부구조를 잘 이해하고 분석하였음을 알 수 있다. non-trivial 한 패턴 매칭과 계산이 요구될 것으로 보인다.
3.9.3 SAT analogy
텍스트의 전형적인 분포와 연관된 무언가 흔치 않은 다른 task에 테스트하기 위해, 374개의 “SAT analogy” 문제를 모았다.
GPT-3은 zero/one/few-shot(K=20) 에서 각각 53.7%, 59.1%, 65.2%의 성능을 보였고, 대학 졸업자 평균이 57%(찍으면 20%)이다. GPT-3은 단어 사이의 관계를 잘 학습했다 볼 수 있다.
3.9.4 News Article Generation
생성적 언어모델을 질적으로 테스트하기 위한 방법으로 뉴스기사로 첫 문장을 준 뒤 이후 문장을 생성하는 식으로 측정하였다.
GPT-3에서는 3개의 이전 뉴스기사를 모델의 문맥에 포함시켜 few-shot 학습능력을 측정했다. 제목과 부제목이 주어지면, 모델은 “뉴스” 장르에서 짧은 기사를 생성할 수 있다.
GPT-3이 생성한 기사가 사람이 쓴 것과 구별되는지를 사람이 얼마나 잘 구별하는지를 측정하였다. 정답률이 50%에 근접하면 기계가 썼는지 사람이 썼는지 분간이 안 된다는 뜻이다.
사람의 평가에서 가장 큰 모델은 175B모델의 경우 평균 52%의 정확도를 보였다. 기계가 생성한 글을 기계가 생성했다고 판별하기 어려운 수준으로 잘 생성함을 보여줬다.
더 긴 기사를 생성했을 때 가짜 뉴스를 생성할 수 있는 다른 대조 모델은 '기계가 생성했다'라고 판별할 수 있는 정확도가 88%까지 높아졌던 반면, GPT-3 최고 모델은 52% 정확도에 머물렀다. 500 단어 정도의 긴 기사까지도, GPT-3은 사람이 기계가 쓴 것인지 판별해내기 어려운 퀄리티의 글을 써냈다.
3.9.5 Learning and Using Novel Words
새로운 단어를 학습하고 사용하는 능력을 측정한다.
“Gigamuru”와 같이 실제로 없는 단어를 정의하고, 이를 문장에서 사용해 보게 하였다. 1~5개의 없는 단어를 정의하고 문장에서 사용하여, 이 task는 one/few-shot 세팅으로 구성된다. 모든 정의는 사람이 직접 하였고, 첫 번째 답은 사람이 정의하였고, 나머지는 GPT-3이 한 것이다
모든 경우에서 정확하거나 합리적인 수준으로 사용하였다.
3.9.6 Correcting English Grammar 문법 교정
Poor English Input: <sentence>
Good English Output: <sentence> 의 형식으로 예시를 주었다.
꽤 좋은 성능을 보인다.
4. Measuring and Preventing Memorization Of Benchmarks
GPT-3를 학습한 사전학습 데이터는 인터넷에서 얻은 데이터이기 때문에, 벤치마크 테스트 셋에 있는 예제를 이미 학습했을 가능성이 있다. 인터넷 규모의 데이터 세트에서 테스트 오염을 정확하게 감지하는 것은 새로운 연구 분야이다. 오염을 조사하지 않고 대규모 모델을 학습하는 것이 일반적인 관행이지만 사전 학습 데이터 세트의 규모가 증가함에 따라 이 문제는 점점 더 중요해지고 있다.
GPT-2에서도 test 데이터가 사전학습 데이터에 섞여 있었을 가능성에 대한 연구를 수행하였다. 그 결과 모델이 training과 testing 시에 오버랩이 있는 상태일 때 모델이 약간 더 잘하긴 했지만, 아주 적은 비율로 오염된 데이터로 인해 크게 성능이 좌우되지 않는다는 것을 발견했다.
GPT-3은 데이터와 모델 크기의 스케일이 GPT-2의 수 배에 이르고, 잠재적으로 오염과 테스트 셋 암기의 위험성이 더 높다. 그러나 동시에 데이터 양이 너무나 방대하기 때문에 GPT-3의 175B 모델조차 훈련 데이터셋을 오버피팅하지 못하였다. 따라서 연구자들은 인터넷 규모의 사전학습 데이터를 사용함에 따라 테스트셋 오염 현상이 발생하나, 그 결과가 크지는 않을 것이라 예상했다.
사전학습 과정에 테스트 셋이 유출된 것의 영향을 평가하기 위해, 각각의 벤치마크에 대해 사전학습 데이터와 13-gram으로 "클린"버전의 테스트 셋을 만들어 보수적으로 모델을 평가하였다. 이후 GPT-3을 이러한 깨끗한 버전의 데이터에 대해 평가해보았을 때, 유출된 데이터에 대해 모델이 더 잘했다라는 특별한 증거는 없었다. 테스트셋 중 오염된 데이터의 비율이 높은 태스크에 대해서도 조사해 보았으나, 그것이 성능에 미치는 영향은 거의 0에 가까웠다.
물론 이 분석에서 깨끗하게 만든 데이터가 원래 테스트 셋의 분포를 반영한다는 보장은 없고, 우연히 쉬운 데이터만이 남겨진 편향이 있었을 수 있다. 하지만 모델이 사전학습을 통해 테스트 셋을 외워서 성능이 높아진 것은 아니라는 것이다.
5. Limitations
성능적인 한계
분명 GPT-2에 비하여, 큰 성능의 향상이 있었던 것은 맞지만 여전히 잘하지 못하는 부분이 있었다. 텍스트 생성에서는 전체적으로 품질은 높았지만 여전히 문서 단위로 의미론적인 반복이 일어났고, 충분히 긴 문장에서는 일관성을 잃거나, 모순이 발생했다. 또한, 상식 수준의 물리학 (common sense physics) 도메인을 잘 하지 못했다. 가령, 치즈를 냉장고에 넣으면 녹을까요?와 같은 질문에 잘 대답하지 못했다. In-context learning의 경우에도, WIC(두 단어가 한 문장에서 동일한 방식으로 사용되는지), ANLI(한 문장이 다른 문장을 의미하는지)와 같은 task에서는 큰 성능 향상이 없었다.
알고리즘적 한계
훈련 방식을denoising이나 bi-direction등이 아닌 auto-regressive에만 집중했기 때문에 양방향성을 갖지 못했다. 그러한 이유로 WIC나 ANLI와 같은 task를 잘하지 못했던 것으로 추측된다.
본잘적인 한계
훈련 방식이 autoregressive이던 아니던 모델의 규모를 키우는 것은 사전학습의 손실함수의 한계에 도달할 수 있다. 이러한 손실 함수는 모든 토큰에 동일한 가중치를 주고 있고, 토큰을 예측함에 있어 무엇이 중요하고 중요하지 않은지에 대한 정보가 없다. 또한 self-supervised 손실 함수는 특정 task에 대한 예측 문제로 강제하는데, 이는 궁극적으로 유용한 언어 모델이라고 말하기는 힘들다. 마지막으로 사전학습된 대규모 언어 모델은 실제 세상과의 상호작용이 없기 때문에 세상에 대한 context가 부족하다. 이러한 이유로 self-supervised 학습 방식은 구조적 한계를 가질 수 밖에 없다. 그렇기 때문에 앞으로는 사람이 학습하는 것처럼 목적함수 설계하기, 강화학습을 이용하여 fine tuning하기, multimodal 학습 등을 포함할 수 있을 것이다.
학습 데이터의 효율성
GPT-3는 사전 학습동안 사람이 평생 보는 것보다도 더 많은 텍스트를 보지만, 사람만큼의 성능을 내지 못한다. 사전학습 시 하나의 샘플이 모델에게 주는 정보에 대한 효율성을 높이는 것은 중요한 연구 과제이다.
Few-shot learning의 해석 불가능함
Few-shot learning 방식이 모델로 하여금 추론 중에 처음부터 새로운 과제를 학습하도록 하는 것인지, 학습했던 task를 식별해서 작동하는 것인지 구분이 모호하다.
사용성
GPT-3 규모의 모델의 또 다른 한계는 비용이 비싸고, 추론 과정이 불편하다는 점이다.현재로써는 실용성 부분에서 점수가 낮은 모델이다. 이러한 문제를 해결하기 위한 방법 중 하나는 distillation인데, GPT-3은 특정한 태스크에 국한되지 않은 다양한 스킬을 보유하고 있다는 점에서 공격적으로 distillation 하는 것이 가능할 수 있다. 1750억개의 parameter를 가지는 모델에 대해서는 연구된 바가 없기 때문에 향후 풀어나가야 할 주제이다.
블랙박스
GPT-3 또한 다른 딥러닝 모델과 같은 문제를 갖고 있다. 바로 결과를 설명하기 힘들다는 점이다. 또한 새로운 입력에 대해서도 보정이 일어나지 않으며, 훈련데이터의 편향도 유지된다.
6. GPT-3, 사회에 미치는 영향 (Broader Impacts)
자연어 모델들은 자동완성, 문법 교정, 게임 내레이션 생성, 검색 엔진 성능 개선등 사회 전반의 애플리케이션 개발에 있어 유용한 역할을 했다. 그러나 모델이 발전한 만큼 잠재적으로 악용될 가능성이 있는데, GPT-3와 같이 인간이 생성한 것과 구별할 수 없을만치 정교한 텍스트를 생성하는 모델의 경우 모델이 주는 유용성과 함께 악용될 위험도 고려해야 한다.
자세한 내용은 논문을 참고하길 바란다.