GPT-3: Language Models are Few-Shot Learners

tobigs-nlp-article·2022년 3월 30일
0
post-thumbnail
post-custom-banner

gpt3 모델의 등장으로 굉장한 패러다임의 변화가 일어났다. 특정 task를 수행하기 위해 finetuning을 할 필요가 없다는 것이 이 모델의 의의이다. finetuning을 하지 않아도 사람에 근사하는 유창성을 가지기 때문이다. 이 뿐만 아니라, 사람의 학습 과정을 모방하는 few-shot learning을 통해 다음과 같은 것도 가능해졌다.

지피티

LaTex 문법에 맞춰 알아서 수식을 작성해주는 것 이외에도, 코딩해주는 인공지능, 데이터셋을 알아서 만들어주는 인공지능, 이 모든 것은 바로 gpt3을 지칭하는 것이다.

Background

Text-to-Text Framework

GPT3는 Text-to-Text Framework 하에서 동작한다. Text-to-Text Framework는 Google T5에서 등장한 방법론으로, 모든 downstream task들을 하나의 방식(NLG)으로 처리한다.

ㅅ5

이러한 방식의 장점은 downstream task에 따라 layer를 추가할 필요 없이, 기존 사전학습 모델의 파라미터를 기반으로 finetuning할 수 있다는 것이다. 하지만, task description와 Prompt에 영향을 많이 받는다는 연구 결과가 있다.

GPT 시리즈

gpt1gpt2gpt3
Transformer decoder + LM objective pretrainingMeta-learning을 통한 zero-shot 학습 & 추론크기를 엄청나게(175B) 키움

1. Introduction

최근의 NLP 연구들은 어떻게 하면 task-agnostic하게 모델을 동작하게 할 수 있을까에 초점을 맞췄다. 대부분의 PLM들은, 그 이름에서 알 수 있듯, 사전학습을 진행한 이후에 finetuning을 통해 특정 task를 해결하는 방식을 학습한다. 이러한 방식은 더 이상 task에 따라 모델을 새로이 구성할 필요가 없다는 점에서 architecture면에서는 task-agnostic해졌다고 할 수 있지만, 여전히 task-specific한 데이터셋을 바탕으로 task-specific finetuning을 한다는 점에서 한계가 있다.

이것을 해결해야 하는 이유는 3가지이다.

첫 째, 새로운 task를 풀 때마다 labeled data가 필요하다.
물론 pretraining + finetuning의 2 step이 scratch보다 더 좋은 성능을 내는 것은 맞지만, 여전히 상용화 가능한 수준까지 성능을 높이기 위해서는 task를 위한 수천-수만의 데이터셋이 필요하다. (뿐만 아니라, 각 데이터에 따라 수많은 모델들이 있다는 점도 문제)

둘 째, 일반화 성능을 잃을 수 있다.
pretraining을 하면서 언어 모델은 대량의 지식 흡수하지만, 결국 finetuning 하면서 아주 작은 task의 분포를 따르게 된다. 즉, 이러한 fine-tuning은 오버피팅을 야기하고, 결론적으로 일반화 성능을 잃을 수 있다.
첨언하자면, 기존의 방법론에서는 [CLS] 토큰 또는 각 time-step에 linear layer + softmax를 추가하여 추가 데이터셋을 통해 fine-tuning하는 방식을 택한다. 문제가 되는 것은 random initialize된 layer가 추가됨으로 over-confidence와 같은 문제가 발생한다는 것이다. 또한, initial weight를 task에 맞게 수정하는 과정에서 많은 학습 sample들이 필요하게 된다.
이는 논문 저자가 언급한 다음 문제와 연결된다. 바로, 언어 모델의 성능이 실제 성능보다 과대평가 되어 있다는 것이다. 생각해보면 benchmark에서 human performance를 능가했다고 이야기하지만, 실제로 기대되는 성능을 보이는 경우는 드물다.

셋 째, 사람과 유사하게 적은 샘플로도 task를 수행하게 해야 한다.
사람은 어떠한 task를 해결하기 위해선 간단한 지시사항이나, 몇 개의 샘플로도 충분하다. 예를 들어보자.

  • “please tell me if this sentence describes something happy or something sad“
  • “here are two examples of people acting brave; please give a third example of bravery“

이러한 인간의 adaptability가 결국 다양한 task들을 번갈아가면서 수행할 수 있게 한다. 따라서, 언어 모델이 task-agnostic해지기 위해서는 인간의 이러한 유연성과 일반성을 모델링해야 한다는 것이다. 그리고 반대로, 언어 모델의 목적은 인간의 언어를 모델링하는 것이니까 이러한 측면도 모델링해야 한다고 이해했다.

종합해보면, 결국 labeled data가 필요없고, 사전 학습에서 얻은 일반화 성능을 잃지 않으며, 아주 적은 데이터로 task를 풀게 할 수 있는 모델을 바라는 것이다. 돌려서 말하지만 결국, 아이디어는 finetuning 없이 pretrain 만으로 동작하게 하자는 것이다. 이는 두 가지를 통해 이루어질 수 있다.

  1. In-contrast learning
    역전파를 통한 parameter 업데이트 없이, feed-forward를 통해 이루어지는 학습을 의미한다. 학습을 parameter 업데이트와 동일시했다면 혼란스러울 수 있다. In-contrast learning에서는 각 time-step별로 hidden representation을 업데이트하는 것을 학습의 일환으로 본다.

  2. capacity 대폭 늘리기
    무려 1750억개의 파라미터를 가진다.

대용량 LM은 파라미터 업데이트 없이 In-contrast learning을 통해 다양한 task를 수행할 수 있다. 추가적인 학습없는 inference를 수행하는 것인데, 이는 위에서 언급한 Text-to-Text framework을 활용하여 동작한다. task에 대한 instruction과 몇 개의 예제들을 feed-forward하고 언어 모델로 하여금 정답을 생성하게 하는 것이다. 만약, 언어 모델이 언어의 분포를 잘 근사하였다면, 주어진 context를 잘 encoding하고 가장 알맞은 다음 단어를 생성할 수 있을 것이다.

단순 language modeling에 transformer decoder만 사용하는데, 거기다가 finetuning도 안하는데 크기만 키운다고 이게 되나 싶지만...

i21000437

본격적인 모델 설명에 앞서, 실험 세팅부터 살펴보자.

스크린샷 2022-03-29 오후 4.55.12

  1. few-shot learning
    모델의 context window에 넣을 수 있는 만큼 많은 예제(K)를 넣는다. 일반적으로 가능한 context 길이 2048에 들어가는 10~100개의 sample을 넣는다.

  2. one-shot learning
    하나의 sample만을 넣는다.

  3. zero-shot learning
    sample은 넣지 않고, 수행할 task에 대한 description 혹은 instruction만을 넣는다.

스크린샷 2022-03-29 오후 4.32.06

결과적으로, 넣는 context 수 K를 늘릴 수록 성능이 향상되는 것을 확인할 수 있다. 또한, 모델이 커질수록 in-context learning의 효율이 높아졌다. 주어지는 예제가 많아질수록 큰 폭으로 성능이 높아지는 것을 확인할 수 있다. 뿐만 아니라, task에 대한 prompt를 함께 넣는 것이 도움이 되었다.

이러한 방식을 통해, GPT3은 몇몇 task에서는 sota를 뛰어넘었으며, NLI & QA를 제외한 대부분의 task에서는 그에 준하는 결과를 얻을 수 있었다.

논문 저자들은 모델 이외에도 더욱 valid한 평가를 위해 data contamination에 대해서 연구를 진행한다. data contamination은 test dataset의 content가 학습 과정에 포함되는 것을 의미한다. Section 4에서 이를 방지하고 필터링하는 방법들을 소개한다.

2. Approach

2.1 Model and Architectures

GPT3은 GPT2와 동일한 구조와 학습 방식을 가진다.

스크린샷 2022-03-29 오후 5.06.02

학습에서의 유일한 차이는 dense와 locally banded sparse attention을 번갈아가며 사용한다는 것이다. 이는 Sparse Transformer에서 차용한 것이다.
스크린샷 2022-03-29 오후 5.15.24스크린샷 2022-03-29 오후 5.20.21

GPT3는 다시 말해, 1.5B 파라미터를 가졌던 GPT2의 크기를 175B까지 키운 모델이다.

저자들은 training data가 충분할 때, 언어모델 크기와 학습 loss는 power-law 관계를 가진다는 가설 하에 125B부터 175B까지 8개 버전의 모델을 만들어 이를 비교한다.

스크린샷 2022-03-29 오후 5.04.21

2.2 Training Process

  • learning rate & batch size
    • 큰 모델은 큰 batch size와 작은 lr이 필요하다. 위의 Table 2.1 참고
  • Adam, β1 = 0.9, β2 = 0.95
  • clip_by_global_norm = 1.0
  • learning rate -> cosine decay (down to 10%)
  • linear LR warmup = first 375 million tokens
  • weight decay = 0.1

2.3 Training Dataset

토크나이징으로는, 모든 언어에서 동작하도록 하기 위해 Character BPE가 아닌 Byte BPE 사용한다.

학습의 주가 되는 데이터셋은 인터넷의 글을 최대한 많이 긁어와 구축한 Common Crawl 데이터이다. 해당 데이터는 양적인 측면에서는 훌륭하지만 질의 측면에서는 문제가 많다. 이 때문에 2가지 filtering을 거친다.

  1. low-quality filtering
    WebText를 high-quality document로 labeling, Common Crawl을 low-quality document로 labeling해 데이터셋을 구축한 뒤, 이를 분류하는 classifier를 학습시킨다. 이 classifier를 사용해 Common Crawl 중 high-quality라고 분류되는 것만 남긴다.

  2. deduplication
    n-gram 단위로, 다른 데이터와 겹치는 데이터는 삭제한다. 이를 통해 data contamination과 overfitting을 방지할 수 있다.

최종적으로, 정제를 통해 45TB를 570GB(400B BPE Tokens) 정도로 줄였다.
다만, 이 데이터를 그대로 사용한 것이 아니라 crawling 데이터셋의 단점을 보완하기 위해 다른 고품질의 데이터셋을 섞어서 데이터셋을 구축한다. 이때, 가중치를 두어, 깔끔한 데이터셋이 실제 양에 비해 상대적으로 높은 빈도로 학습되도록 한다.

스크린샷 2022-03-29 오후 5.24.36

설명에 적혀있듯, 어떤 데이터셋은 3.4번 보는 것도 있는 반면, 한번도 다 보지 못하는 경우도 존재한다.

3. Results

스크린샷 2022-03-29 오후 5.43.18

성능(validation loss)이 학습시간과 power-law 관계를 가진다는 것을 확인할 수 있다.

3.1 Language Modeling

  • Penn Treebank

스크린샷 2022-03-29 오후 5.49.41

language modeling은 task의 특성 상 zero-shot만 가능하다. perplexity를 기준으로 sota를 달성한다는 것을 확인할 수 있다. (사실 이 결과는 너무 당연하다)

3.2 Cloze, and Completion Tasks

스크린샷 2022-03-29 오후 5.46.14

  • LAMBADA (문장 완성하기/ 언어의 장기 의존성을 모델링하는 태스크)
    스크린샷 2022-03-29 오후 5.52.10
  • StoryCloze
    스크린샷 2022-03-29 오후 5.53.22
  • HellaSwag
    스크린샷 2022-03-29 오후 5.54.12
    • zero-shot으로 비교했을 때는 sota를 달성했다.

3.3 Closed Book Question Answering

해당 section에서는 사실 기반의 지식에 대한 질문에 답변할 수 있는지 측정한다.

  • Natural Questions

    • 위키피디아에 대해 fine-grained 지식을 요구하는 task
    • 14.6% (zero-shot), 23.0% (one-shot), 29.9% (few-shot)
    • sota: 36.6% for fine-tuned T5 11B+SSM.
    • 즉, sota에 한참 멀었다.
  • WebQuestions

    • 14.4% / 25.3% / 41.5%
    • sota: 44.7% for fine-tuned T5-11B+SSM
    • few-shot은 sota에 거의 준하는 결과
  • TriviaQA
    스크린샷 2022-03-29 오후 5.58.37

    • 64.3% / 68.0% / 71.2%
    • sota 달성!

3.4 Translation

스크린샷 2022-03-29 오후 6.02.40

학습 데이터의 93%는 영어지만, 7%는 다른 언어들을 포함한다. 따라서, translation 작업도 가능했다. 신기한 점은, few-shot의 경우 finetuned된 다른 모델들에 비견할 만한 BLEU score를 얻은 경우도 있다는 것이다. 심지어는 sota를 달성하는 경우도 있었다.

3.5 Winograd-Style Tasks

해당 section에서는 대명사가 무엇을 지칭하는지 맞추는 task를 수행한다. 보다 쉬운 benchmark인 winograd와 이것의 난이도를 상승시킨 winogrande를 사용한다.

  • winogrande
    스크린샷 2022-03-29 오후 6.06.10
    • 보다시피, 대명사 it을 꾸미는 형용사에 따라 무엇을 지칭하는지가 달라지는 아주 어려운 task

스크린샷 2022-03-29 오후 6.07.07

3.6 Common Sense Reasoning

가장 성능이 하락되었던 task 중 하나이다.

스크린샷 2022-03-29 오후 6.11.10

  • PhysicalQA (PIQA)

    • common sense questions about how the physical world works
      • 예를 들어, “If I put cheese into the fridge, will it melt?”
    • 81.0% / 80.5% / 82.8%
    • 분석 결과 data contamination issue가 있을 수 있다는 결론
  • ARC

    • 3~9학년 과학 시험 데아터셋 (MCQ)
    • 51.4% / 53.2% / 51.5%
  • OpenBookQA
    스크린샷 2022-03-29 오후 6.13.24

3.7 Reading Comprehension

스크린샷 2022-03-29 오후 6.17.04

QA나 문맥을 이해하여 사지선다의 답을 고르는 데이터셋에 대해 굉장한 성능 하락이 보고되었다.

3.8 SuperGLUE

스크린샷 2022-03-29 오후 6.17.24

3.9 NLI

스크린샷 2022-03-29 오후 6.18.36

3.10 Synthetic and Qualitative Tasks

3.10.1 산술

스크린샷 2022-03-30 오전 9.30.22

덧셈 뺄셈의 경우, 낮은 자릿수의 계산일수록 높은 성능을 보였으며, 모델이 커질수록 성능이 향상되었다는 것을 확인할 수 있다.

스크린샷 2022-03-29 오후 6.23.36

3.10.2 문자 재정렬

스크린샷 2022-03-29 오후 6.25.25

  • Cycle letters in word (CL)
    • given: random shuffle
    • Example: lyinevitab → inevitably
  • Anagrams of all but first-and last characters (A1)
    • given: 처음과 마지막 letter를 제외하고 shuffle
    • Example: criroptuon → corruption.
  • Anagrams of all but first and last 2 characters (A2)
    • 첫 2개와 마지막 2개 제외 shuffle
    • Example: opoepnnt → opponent.
  • Random insertion in word (RI)
    • random punctuation / space character가 letter 사이에 들어갔을 때 복구하기
    • Example: s.u!c/c!e.s s i/o/n → succession
  • Reversed words (RW)
    • 거꾸로 적힌 단어 되돌리기
    • Example: stcejbo → objects

수행 결과, zero-shot setting에서는 유의미한 결과를 얻지 못했고, 그나마 few-shot에서는 나아졌지만 여전히 나쁜 성능을 보였다. 이유를 유추해보자면, 해당 task는 letter 단위로 작동하는데, gpt3는 BPE encoding을 사용하기 때문이라고 여겨진다. 이 task를 성공적으로 수행하기 위해서는 BPE token보다 더 하위의 단위까지도 고려할 수 있어야 한다.

3.10.3 SAT-style analogy problems

유사한 단어 고르기 문제에서 GPT3은 53.7 / 59.1 / 65.2%의 정확도를 가진다. 대학생 평균이 57%인 것을 고려할 때, 굉장히 성공적이라고 할 수 있다.

3.10.4 News Article Generation

스크린샷 2022-03-30 오전 9.10.45

사람에게 모델이 만든 뉴스와 실제 뉴스를 구분하는 작업을 맡겼을 때, 모델의 크기가 증가함에 따라, GPT-3에 의한 생성 여부를 판단하기 더 힘들어졌다. (후에 등장할 Hallucination issue와 이어진다)

3.10.5 Learning and Using Novel Word

새로운 용어에 대한 학습력을 평가한다. 용어의 정의 혹은 사용법을 제시한다음 gpt3으로 하여금 해당 단어를 사용하게 해본다.
스크린샷 2022-03-30 오전 9.14.09

보다시피, 잘못 사용하는 경우도 존재했지만 대부분 올바르게 사용했다.

3.10.6 Correcting English Grammar

스크린샷 2022-03-30 오전 9.15.52

여기서 주목할 점은, “Poor English input/Good English output” framing이다. Poor와 Good이라는 단어는 사실 여러 의미를 내재하고 있기 때문에 그것이 사용된 맥락에 따라 다르게 해석될 여지가 있다. 실제로, 여기서의 prompt는 문법을 교정하기 위한 의도로 설계되었지만 의미적으로 올바르지 않다고 판단해 수정하는 양상이 나타났다. (example mentioning the rental of a house, cheap 삭제)

이 때문에, prompt engineering 연구가 활발히 이루어졌는데, 관련 논문은 나중에 기회가 되면 리뷰하도록 하겠다.

4. Measuring and Preventing Memorization Of Benchmarks

결론적으로 이야기하면, data contamination이 일부 있지만 그것이 성능에 미치는 영향은 거의 없다.

학습 데이터 중 각 벤치마크와 13-gram으로 오버랩되는 데이터를 삭제한 clean ver 데이터를 새로 만들어, 이를 학습시켜 기존의 모델과 성능을 비교해보았다.

스크린샷 2022-03-30 오전 9.24.53

만약, clean 버전의 성능이 더 낮다면, contamination이 성능을 과장시키고 있는 것이다. 하지만 이를 뒷받침하는 증거들은 발견되지 않았다. 벤티마크 중 오염의 정도가 높은 것 마저도, 유의미한 성능 차이를 야기하지는 않았다.

이러한 결과는 아마 gpt3의 방대한 스케일 때문인 것으로 보인다. 데이터의 양이 너무나도 많기 때문에, 학습 데이터셋을 오버피팅하지 못한 것이다. 따라서 저자들은 사전학습 데이터에 contamination이 존재하나, 그 영향이 크지는 않다고 결론지었다.

5. Limitations

  1. weaknesses in text synthesis and several NLP tasks

    • text generation:
      • Repetition,lose coherence,self contradiction
      • Hallucination
    • difficulty with “common sense physics”
      • Lack of common sense in real-world
      • 단어의 개념에 대해 완전히 이해했다고 보기 어렵다.
    • 몇몇 데이터셋의 경우에는 zero-shot -> few-shot으로 바꾸어도 성능향상이 많지 않은 것을 보아 in-context learning 능력이 떨어진다. (ANLI, WIC)
  2. structural and algorithmic limitations

    • inference와 training의 방식이 일치하는 점에서 이점이 있기에, in-context learning을 택했다. 하지만, bidirectional architecture나 다른 training objectives는 고려하면 더 좋을 것이다.
  3. pretraining objective의 한계

    • 현재는 학습 과정에서 토큰들을 동일한 가중치를 두어 학습한다. 하지만, task specific하게 설정하여 문제를 해결하기 위해 어떤 토큰을 더 중요시해야 하는 가에 대한 정보를 학습하면, 확실히 성능이 높아진다는 것을 확인할 수 있었다.
    • 뿐만 아니라, 현재의 PLM은 다른 도메인적 지식은 고려하지 않는다.
    • 따라서, 단순히 크기를 키우는 것만으로는 한계에 도달할 것이며 다른 접근법이 필요하다. 현재로써는 모호하지만, (1) 사람이 학습하는 것과 같은 목적함수 사용하기 (2) 강화학습을 이용해 fine-tuning 하기 (3) 다른 modality 접목 등을 생각해볼 수 있을 것이다.
  4. poor sample efficiency during pre-training

    • inference에서는 사람과 유사하게 동작할 수 있지만, 여전히 사전학습에서는 이를 반영하지 못하고 있다. 따라서, 사전학습 단계에서 하나의 샘플에서 지식을 습득의 효율성을 높이는 연구가 필요하다.
  5. ambiguity

    • inference의 결과가 few shot을 통해 scratch 부터 새로운 태스크를 배운 것인지, 아니면 사전 학습에서 봤던 것을 알아본 것인지 알 수가 없다.
  6. 비용

    • expensive and inconvenient to perform inference
    • distillation을 통해 해결할 수 있다고 믿는다.
  7. 딥러닝 시스템의 본질적인 한계

    • 블랙 박스라던가, 훈련 데이터에 대한 편향 문제가 gpt3에도 계승된다.

6. Broader Impacts

6.1 Misuse of Language Models

  1. Potential Misuse Applications
    • hallucination issue
    • 문장을 생성하는 능력치가 높아질수록 더욱 문제가 되는 지점
  2. Threat Actor Analysis
    • ‘advanced persistent threats’ (APTs): 지능형 지속 공격
    • APT는 원하는 정보를 얻기 위해 악성코드, 피싱, 소셜 엔지니어링 등 다양한 공격 방식을 이용 하는 것이다. 따라서, 정확히 '공격'자체를 의미한다기 보다는 목적을 위해 사용되는 '공격들'이라 하는 것이 올바르다.
    • 아직 언어모델을 사용하는데 성공한 사례는 없는 것으로 보인다.
  3. External Incentive Structures
    • 사용이 쉬워지고, 비용이 낮아지기 때문에, APT들의 사용을 유도할 수 있다.

6.2 Fairness, Bias, and Representation

모델에 담겨있는 편견과 선입견들이 사람의 편견과 선입견을 강화하는 순환 구조가 존재한다. 이 때문에 편향에 대한 연구는 중요하다. gpt3을 분석한 결과, 인터넷에서 크롤링해 수집한 데이터셋을 기반으로 하기 때문에, 그곳에 존재하는 편향을 그대로 학습한 것으로 밝혀졌다.

  1. Gender
    • 성별과 직업의 연관성에 초점
    • [ prompt 1 ] "The {occupation} was a __"
      • male: 노동 집약적인 직업
      • female: 간호사, 카운터 접수원, 가사노동자
    • [ prompt 2] "The (in)competent {occupation} was a __"
      • competent : male>female(2.14)
      • incompetent: male>female(1.15)
    • [ prompt 3] context주고 pronoun 생성하기
    • [ prompt 4] "(S)He was very __"
      스크린샷 2022-03-30 오전 10.22.14
  1. Race
    • [ prompt ] "The {race} man was very", "The {race} woman was very"
    • 생성한 단어의 감성 분석을 실시.
      스크린샷 2022-03-30 오전 10.23.46
  1. Religion
    • [ prompt ] "{Religion practitioners} are __"
    • temperature를 다양하게 설정하여, 각 종교에 대한 800개의 문장을 생성.
    • violent, terrorism, terrorist 같은 단어를 이슬람교와 연관짓는다는 것을 확인할 수 있었다.

6.3 Energy Usage

모델을 학습시키는 과정만 고려하는 것이 아니라, 그것이 앞으로 사용되는 측면까지 생각한다면 에너지 사용면에서 효율적이라고 말할 수 있다.

처음 학습시키는데는 굉장히 많은 자원이 들어가지만, 한 번 학습되고 나면 100 page의 글을 작성하는데 추가적인 학습이 필요하지 않으므로, 아주 적은 비용이 들 것이다.

나중에 distillation 기법들이 성장하면 모델의 효율성은 더욱 높아질 것이라 기대된다.

Reference

https://arxiv.org/abs/2005.14165
https://littlefoxdiary.tistory.com/44
https://kk-7790.tistory.com/37
https://judy-son.tistory.com/5

profile
투빅스 NLP 논문세미나입니다!
post-custom-banner

0개의 댓글