본문 바로가기

deeplearning

GPT3(Generative Pretrained Transformer) - Language Models are Few-Shot Learners

Fine-Tuning과 같은 추가 학습 없이 몇 번의 demonstration으로 Down Streaming Task가 가능하도록 하려면 어떻게 할까?

Open AI는 이에 대한 해답으로 GPT-3를 제시한다.

 

GPT-3는 트랜스포머의 디코더 구조를 따서 만든 거대 모델이다. Pretrain된 1750억개의 파라미터를 바탕으로 fine tuning 없이 zero-shot과 few-shot setting을 통해 Down Streaming NLP task가 가능하다.

 

BERT와 같은 pre-trained 모델을 다양한 task에 적용하기 위해 우리는 주로 Fine tuning을 이용한다.

처음부터 학습시키는 것 보다는 훨씬 정확하고 빠르지만, 이를 위해 트레이닝 데이터를 모으고  분류하는 일은 쉽지 않고, GPT3처럼 수 많은 파라미터(1750억 개의 파라미터)를 가지는 모델을 fine tuning 하는 것은 굉장히 비싼 작업이다.

 

GPT-3는 요즘 메타러닝 분야에서 자주 보이는 Few Shot을 적용한다. 물론 이는 학습과정에서 적용되는 것이 아니라 Inference 단계에서 적용된다는 차이가 있다.

 

Prototypical Networks for Few-shot Learning(Jake Snell et al.)이라는 논문을 보면, Few Shot Learning은 아주 소수의 데이터로 분류모델을 학습하는 방법들 중 하나이다. 이 논문에서는 클래스 당  5장(5 shot)의 이미지를 벡터공간에 임베딩한다. 그리고 클래스가 동일한 값들의 mean을 이용해 prototype을 구하고 이를 이용해 학습 및 분류를 진행한다.

 

1. 학습과 주요 개념

- In-context learning: 학습과정에서는 맥락을 바탕으로한 다음 시퀀스 예측(Next Word Prediction)을 통해 테스크의 패턴을 인식한다. 이는 이후에 다운스트림 테스크(Few/Zero shot task transfer)에도 큰 도움이 된다. 다운스트림 테스크에 대한 몇 개의 예시(예시의 개수가 Fewshot에서 shot의 개수이다)와 뭘 해야하는 지 Description을 알려주면 예시와 비슷한 형태의 과거 테스크와 데이터를 참조하여 테스크를 진행한다.  

 

 

In-Context Learning

 

예를 들어 In-context learning 방식으로 학습된 GPT-3에 Description으로

"Translation English to French." 을 주고

예시로 

"sea otter => loutre de mer"

"peppermint => menthe poivree"  을 준 뒤 (2-shot)

"cheese => ."을 주면 모델은 다음에 뭐가 올지 예측하여 "fromage."를 반환한다. 

 

 

- Few-shot, one-shot and zero-shot setting: 이는 Inference 단계에서의 setting을 의미한다. 아무리 Down Stream Task를 진행하더라도 Finetuning과 같은 추가학습이나 모델에 대한 변형은 주지 않는다. few-shot setting에서는 테스크에 대한 설명과 여러 개(약 10~100개)의 예시 데이터가 주어진다. one-shot setting에서는 한 개의 예시데이터, zero-shot setting에서는 아무런  예시데이터가 주어지지 않고 Description만 주어진다. 

 

 

단어에 섞인 랜덤한 기호 제거하기 테스크

다운 스트림 테스크를 해결하는 과정(Few/One shot setting)에서 그라디언트 업데이트나 fine-tuning은 진행하지 않는다 .  

 

 

 

 

2. 데이터셋

GPT-3 는 Pretraining 단계에서 5개의 섞인 코퍼스로 학습되며 각 코퍼스를 학습할 때는 일정 웨이트가 지정된다(each having certain weight assigned to it). 높은 퀄리티의 코퍼스는 더 자주 샘플링되고 모델은 각 코퍼스는 1 에폭 이상으로 학습된다. 코퍼스는 Common Crawl, WebText2, Books1, Books2, and Wikipedia이다.

 

3. 모델

GPT-3는 GPT-2와 동일한 아키텍쳐를 가진다. 이 둘은 차이는 아래와 같다.

1. GPT-3는 96개의 레이어를 가지며 각 레이어는 96개의 attention heads를 가진다. 파라미터 수가 훨씬 많다.

2. word embeddings의 크기가 1600에서 12888로 증가했다.

3. Context window size가 1024에서 2048 tokens로 증가했다.

4. Adam optimizer 가 사용되었고 파라미터는 β_1=0.9, β_2=0.95, and ε= 10^(-8) 이다.

5. 트랜스포머 레이어의 attention 패턴에 대해 dense와 locally banded sparse attention을 번갈아 사용한다.

 

 

4. 성능

GPT-3는 LAMBADA and Penn Tree Bank 등의 데이터셋에 대한 테스크를 진행할 때 few or zero-shot setting으로도 SOTA를 달성했다. GPT-3는 또한 closed book QA, schema resolution, 번역 등에서 우수한 성능을 보였다. 대부분의 테스크에서 , few-shot setting이 one and zero-shot setting 보다 성능이 높았다.

 

 

 

 

LAMBADA는 문장에서 마지막 단어를 예측하는 태스크이다. 문장의 맥락에 대한 이해를 테스트해볼 수 있다.

autoregressive한 모델(RNN, transformer decoder부분)인 만큼 높은 성능을 보이는 것이 아닌가 생각이 든다.

 

 

5. 한계

1. GPT-3가 높은 수준의 텍스트를 생성할 수는 있지만 일관성을 잃거나 비슷한 텍스트를 반복하는 경우가 생긴다. 또한, GPT-3는 언어 의미 추론, 빈칸채우기 등에서 별로 좋은 성적을 보여주지 않는다.

저자들은 모델이 단방향적이기 때문에 생긴 문제(트랜스포머의 디코더 구조를 사용하는 GPT모델의 한계)라고 이야기한다. 그리고 이러한 문제는 bidirectional models(버트같은?)을 거대한 스케일로 학습하면 해결할 수 있을 것이라 이야기한다.

2. GPT-3의 학습 방식이 각각의 테스크에 정확히 맞춰지지 않다. 따라서 이 논문은 학습 목적에 맞게 강화학습을 이용한 finetuning이나 모델의 추가 등을 통한 추가 학습을 하는 것을 제안한다. 

3. 모델의 1750억개의 파라미터 수로 인한 느린 Inference, 해석의 어려움 등.

4. 인간 같은 텍스트 생성으로 인한 문제들이 발생할 가능성. 스팸, 욕설, 인종차별, 성차별, 사기 등 bias를 학습했을 수도 있다.