본문 바로가기

논문

[논문 공부] GPT-2 : Language Models are Unsupervised Multitask Learners

GPT-2 : Language Models are Unsupervised Multitask Learners

원문 : 원문 보기


개요

이번 포스팅에서는 GPT-2 : Language Models are Unsupervised Multitask Learners 논문을 공부합니다

나는 사용했다. 구글 번역기 번역을 위해서


Reference

FacerAin님 - GPT-2 리뷰

위키독스 - BPE

greeksharifa님의 GPT-2 리뷰


들어가기 전

Zero shot Learning
  • train dataset에 없는 class를 예측하는 것
결합 확률(joint probabilities)
  • 2개 사건이 동시에 일어날 확률
조건부 확률(conditional probabilities)
  • 사건 X가 발생했다는 가정에서 사건 Y가 발생할 확률
Code point
  • 특정 문자에 매핑되는 숫자 값

TITLE : Language Models are Unsupervised Multitask Learners

 

Abstract

  • 우리는 수백만 개의 웹페이지 데이터셋인 WebText를 사용해서 학습한 언어 모델로, QA와 기계번역/독해, 요약 같은 NLP문제를 해결함
  • Zero shot task와 모델 성능을 향상하는 데는 언어 모델의 capacity는 필수적임
  • 우리의 largest 모델인 GPT-2는 15억 개의 파라미터를 가진 Transformer 모델이며, 8개 중 7개 언어 모델링 데이터셋에서 Sota를 달성했지만 WebText에서는 여전히 좋은 성능을 내지 못함

Introduction

  • 성능이 좋은 NLP 모델은 pre-training과 fine-tuning의 결합으로 만들어지고 발전됨
  • 본 논문에서는 두 방식의 연구를 결합해 transfer-leraning의 일반적인 방법의 흐름을 이어감
  • 본 논문에서는 언어 모델이 파라미터와 아키텍처 변형 없이 zero-shot setting에서 downstream task를 수행하는 것을 증명
  • 이러한 접근법이 zero-shot setting에서 광범위한 task를 언어 모델이 수행할 수 있는 가능성을 보여준다는 것을 보여줌

Approach

  • 접근 방식의 핵심은 언어 모델링(language modeling)
  • 언어 모델링이란 보통 symbol(s1, s2,... sn)으로 구성된 set(x1, x2... xn)에서 unsupervised 분포를 추정하는 데 사용됨
  • 자연스러운 문장 순서가 있는 언어의 특성 때문에, 조건부 확률의 곱을 사용해 symbol에 대한 joint probabilities(결합 확률)을 인수 분해하는 것이 일반적임 

  • 이 접근법은 샘플링을 간단하게 할 수 있게 하며, 최근 Transformer는 이러한 조건부 확률을 잘 계산함
  • 여러 Task에서도 시스템이 일반적으로 동작하려면, 입력단계에서는 단순 입력뿐만 아니라 Task정보도 들어가야 함
  • 즉, p(output|Input, task)을 가지고 모델링해야 하며 이것은 이미 공식화된 이론임
  • 이것을 실제 데이터셋을 사용해 적용할 때는 유연하게 적용이 가능함
  • 또한 대화 데이터셋의 사용은 매우 제한적이고 상호작용이 필요 없는 인터넷상의 방대한 양의 데이터가 더 나음

접근법 1 - Training Datasets

  • 선행 연구에서는 단일 domain에서 가져온 데이터셋을 사용했지만, 우리는 large 한 데이터셋을 만들기 위해 다양한 domain을 사용함
  • 하지만 크기만 큰 데이터셋이 아니라 양질의 데이터셋을 구축하기 위해, 사람에 의해 필터링되고 조직화된 글만 사용했고 크기는 40G
  • 해당 데이터셋 이름은 WebText

접근법 2 - Input Representation

  • WebText에서 Byte Pair Encoding(BPE)를 했을 때 좋은 성능을 발견함
Byte  Pair Encoding
  • 빈번한  Symbol Sequence와 빈번하지 않은 Symbol Sequence 입력을 적절히 조정하는 방법
  • 기존 BPE 구현은 Byte가 아닌 Unicode에 매핑되어서 13만 개의 Token vocabulary를 사용해야 했지만,  우리는 Byte-level BPE 방식을 사용해서 256개의 Token Vocabulary만을 필요로 함
  • 하지만 Byte-level BPE를 사용하면 최적의 병합이 이루어지지 않았음. 예를 들어  'dog' 단어가 있으면 'dog1' , ' dog.'과 같은 변형이 발생함. 이는 'dog'라는 일반적인 단어만을 의미함
  • 따라서 문자의 범주를 넘어가는 병합하는 것을 막아버림
기존 자연어 처리에서 BPE(Byte Pair Encoding) 
글자(charcter) -> 단어 집합(vocabulary)을 만들어내는 Bottom up 방식
1. 훈련 데이터셋에 있는 모든 단어 들을 Char or Unicode로 단위로 Vocabulary 생성
2. 가장 많이 등장하는 unigram을 하나의 unigram으로 통합

접근법 3 - Model(아키텍처 이미지는 논문에 없음... )

  • Transformer 기반 아키텍처이며 GPT-1에서 조금 수정함
  • Norm  Layer를 각 sub-block의 입력으로 옮김
  • Norm Layer를 추가적으로 사용해서 마지막 self-attention 블록 뒤에 추가함
  • 모델 depth에 따른 residual path누적에 관한 부분의 초기화 방법 변경함. residual layer 가중치에 1/sqrt(N)을 곱함(N은 residual layer 수)
  • Context size : 512 Token -> 1024 Token
  • batch size : 512

Experiments

  • 4개 모델 사용함 (모두 underfit 상태이며, 더 많이 훈련하면 좋아졌음)
  • 117M은 기존 GPT,
  • 345M은 BERT의 largest model
  • 1542M은 GPT-2
Language Modeling
  • Zero-shot 학습 결과로써 SOTA
Children's Bookt Test
  • 카테고리 별 언어 모델의 성능을 측정
  • 10개 보기 중 생략된 단어를 선택하는 task
  • 매개변수(parameter) 수에 비례한 성능 증가
  • 가장 큰 모델은 마치 인간에 필적함
LAMBADA
  • 장거리 의존성(long-range dependency) 역량 평가에서도 성능이 향상
Winograd Schema Challenge
  • 텍스트 속의 모호함을 푸는 Task
  • SOTA 달성
Reading Comprehension
  • QA 형태의 데이터셋으로 문서 이해능력과  QA능력을 동시에 평가함
  • BERT 성능보다는 낮지만 fine-tuning 없어도 좋은 성능을 보여줌
Summarization
  • 텍스트 요약 능력
  • 기존 SOTA 모델 대비 성능 낮음
Translation
  • WMT-14 영어-프랑스어 데이터셋 사용
  • 기존 SOTA 모델 대비 성능 낮음

Conclusion

zero-shot learning 한 성능 좋은 GPT-2 잘 봤지?

지도 학습(supervised learning) 없이도 대용량 학습 데이터셋만 잘 학습한다면  zero-shot learning을 통해서  좋은 모델 성능을 낼 수 있다는 거 알겠지?