NLP task들은 task에 특화된 dataset과 지도 학습을 통해 처리했다. 본 논문에서 Language Model은 WebText라는 수백만 dataset로 학습될 때, 특정한 지도 없이 task들을 학습하기 시작했음을 보여준다. 이 Language Model의 capacity는 zero-shot task transfer에 필수적이다. zero-shot task는 model이 학습할 때와는 다른 새로운 task에 model을 적용하는것이라고 이해했다. 논문에서 제시된 가장 큰 model인 GPT-2는 15억 개의 transfomer parameter를 가지고 zero-shot 환경에서 8개중 7개의 SOTA를 달성했다.
현재 머신러닝의 학습체계를 구축하는 주된 방법은 task에 맞춰 dataset을 찾고 이를 학습과 평가를 하는것이 일반적인데 이러한 방법은 test할 때 좁은 범위의 과제에서는 효과적이지만 독해와 이미지 분류시스템 등의 범용적인 이해를 필요로하는 task에서는 성능이 좋지 않다. 즉, 일반적이지 않고 좁은 전문가(narrow expert)라고 논문에서 얘기했다. 이전 많은 연구들이 하나의 영역의 dataset과 하나의 task에만 초점을 두어 학습에만 치중했다면 최근, 다양한 영역의 dataset과 task에 대한 GLUE benchmark가 제안되기 시작했다. 본 논문에서는 Multitask learning에 대한 시도를 했고 아직 초기 연구 단계라고 얘기했다.
현재 가장 성능이 높은 Language Model은 사전학습(pre-training)과 세부학습(supervised fine-tuning) 결합한 model이다.
위와 같은 방법들은 여전히 지도학습을 필요로 한다고 한다.
본 논문에서는 사전학습과 세부학습을 결합하여 전이학습의 일반적인 방법을 지속했다고 말했다. Language model이 어떤 parameter나 model의 구조 변화 없이도 zero-shot setting에서 downstream task를 할 수 있음을 증명했다. 또한, 이러한 접근법은 language model이 넓은 범위의 과제를 수행할 수 있는 가능성을 보여줬으며 SOTA를 달성했다.
가장 중요한것은 Language Modeling이다. 보통 Language Modeling은 각 token 으로 구성된 문장에서 비지도 분포를 예측하는 것이다. 이 확률은 조건부 확률의 곱으로 sequential하게 단어를 예측한다.
Language는 보통 sequence를 가지고 있기 때문에 문장이라는 결합확률분포는 조건부 확률로 분해하여 modeling한다. 하나의 task에 대한 학습은 조건부 확률 를 추정하는 확률 framework로 표현할 수 있다. 그러나 general system에서는 다른 task들을 수행할 수 있어야 하기 때문에 입력뿐만 아니라 task의 종류라는 condition도 들어가야 한다. 그러므로 로 표현되어야 한다. task의 condition을 넣는것은 model의 구조나 MAML(Model Agnostic Meta-Learning) Optimization framework에서 알고리즘 수준에서 구현되기도 한다. (간단하게 MAML을 설명하면, Meta-Learning이란 작은 dataset을 가지고 다른 task에서도 잘 수행할 수 있도록 학습시키는 방식이며 MAML은 Meta-learning 방법 중 하나로 model의 구조에 구애받지 않고 새로운 task에 있어서 적은 경사 하강 step으로도 과적합을 피하며 빠르게 학습을 할 수 있도록 모델 파라미터의 초기화를 최적화하는 알고리즘이다.) 그러나 Language는 task/input/output 출력 모두 명시하는 McCann 방법이 있다.
GPT-2는 output에 대한 명시적인 지도 없이도 task를 학습할 수 있다. McCann과의 차이점은,McCann은 muti-task learning으로 실제 여러 개의 dataset을 학습한것이라면 GPT-2는 Language Model을 unsupervised-learning으로 했다는 점이다. 예비 실험에서 large language model은 muti-task learning을 수행할 수 있었지만, 속도가 굉장히 느렸다. 충분한 용량을 가진 language model, GPT-2라면 general system을 가질 수 있고 unsupervised multi-task를 할 수 있다.
앞선 연구에서 사용된 dataset은 news-data와 같이 한 domain에서만 가져온 data로 구성되어있었지만, 본 논문에서는 가능한 다양한 domain에서 data를 가져왔다.
다양한 domain의 dataset으로는 Common Crawl이 있는데 많은 부분에서 품질이 떨어지는 data라고 한다. 그래서 본 논문에서는 Web Scrape를 하여 data를 얻었다. Web Scrape 방법은 다음과 같다.
본 논문에서는 Byte Pair Encoding을 활용했다. BPE(Byte Pair Encoding)는 글자(Byte)와 단어(word)의 중간 level을 사용할 수 있는데 보통 word-level은 자주 등장하는 symbol이라고 생각했고 이는 자주 등장하지 않는 symbol을 처리할 수 있다는것으로 이해했다. Byte Pair Encoding을 간단하게 설명하면 subword를 분리하는 알고리즘이다. (ex. birthplace = birth + place) 그리고 vocabulary를 생성하여 반복을 통해 빈도수가 높은 쌍을 지속적으로 vocabulary에 추가하는 방법이다. 하지만 Byte pair encoding이름과는 다르게 기존의 BPE는 유니코드 수준에서 주로 작동했다. 유니코드 수준의 BPE는 13만 개 이상의 매우 큰 Vocabulary가 필요하지만 Byte 수준의 BPE는 256개의 Vocabulary만을 필요로 한다. 따라서 논문의 저자들은 byte 수준의 BPE를 사용했다. 그러나 byte 수준의 BPE에도 문제점이 존재하는데 {dog., dog?, dog!}와 같이 유의미하지 않은 단어의 version들을 포함한다. 이것은 한정된 Vocabulary의 크기를 낭비할 수 있다. 따라서 본 논문에서는 Byte수준의 BPE를 적용하기 위해 문자 수준 이상의 병합을 막았다.
GPT-2는 BPE(Byte Pair Encoding)를 거친 token을 입력 단위로 사용을 한다. GPT-2는 word embedding과 positional encoding 벡터를 더하여 model에 입력하게 된다.
이러한 input값이 decoder block의 Masked Self-Attention을 지나 신경망 layer를 거친다. 모든 decoder block을 거친 output은 attention 값을 가지게되고 앞에서 구한 token embedding 행렬과 곱해줘서 다음 단어에 대한 확률을 구한다. 이 확률중에 가장 높은 값이 최종 output이 된다.
GPT-2의 model 구조는 GPT-1과 비슷하나 몇가지 차이점이 있다. Layer의 정규화가 각 하위 block의 input으로 이동했다. Layer의 정규화 위치를 바꾼 이유는 Xiong et al. “On Layer Normalization in the Transformer Architecture”에서 Layer 정규화를 Attention과 Feedfoward 출력부에 두는것보다 입력부에 두는것이 학습시 Layer별 gradient의 정도가 고른편이라고 했다. 그리고 Layer의 정규화가 마지막 self-attention block이후에 추가됐다. 그리고 Model의 깊이에 따른 residual layer의 누적에 관한 부분의 초기화 방법이 변경되었다. (N이 residual layer의 수일 때, residual layer의 가중치에 을 곱함).
Model의 Layer의 수가 늘어났고 위쪽(깊은) layer일수록 weight의 parameter를 작게 설정하였는데 이는 model내에서 곱셈과 덧셈이 반복되는 구조로 되어있고 layer를 거칠수록 값이 커지면서 exploding과 vanishing이 일어날 수 있는데 weight를 scaling 해주면서 방지하기 위함이다.
GPT-2는 최대 1024개의 token을 입력받을 수 있으며 전체 vocab의 size의 크기는 50,257개로 embedding size는 모델에 맞게 사용한다.
GPT-2는 transformer model의 decoder block로 이루어져있고 BERT는 transformer의 encoder block으로 이루어져있다. 각 block의 첫번째 layer를 보면 BERT는 self-attention layer를 사용하고 GPT-2는 Masked self-attention layer를 사용한다.
전체 문장을 다 고려하는 encoder의 self-attention과는 다르게 decoder의 masked self-attention은 예측하려고하는 token 이후의 token을 제외하고 이전 단어들만 학습을 할 때 참고한다.
GPT-2는 BERT와는 달리 auto-regressive language model이다. GPT-2는 이전 모든 token들 가지고 다음 token을 예측하는 방식으로 사전 학습 된다. 이러한 model의 장점으로는 다음 단어를 예측하는 능력은 우수하지만 mask 처리된 단어들의 정보를 활용할 수 없다는 단점이 있다. 또한 GPT-2는 domain-specific training을 하지 않고 zero-shot learning을 이용한다. GPT-2의 Extra larger model의 parameter의 수는 15억개, BERT-Large는 3.4억개이므로 BERT-Large에 비해 4.5배 더 큰 model, BERT-Base에 비해서는 13배 정도 더 크다.
model의 크기가 각각 다른 4개로 만들어 실험을 진행했다. 각 model의 크기는 다음과 같다.
가장 작은 model은 GPT-1와 같고 두 번째는 BERT와 크기가 같다.
(각 model의 learning rate는 WebText의 5%를 떼서 만든 sample을 만들어서 수동 조정, 모든 model은 여전히 data에 대해서 underfitted 되었으며 오래 학습을 시키면 좋은 성능을 얻을 수 있을것이다.)
GPT-2는 어떠한 under model benchmark에도 사용할 수 있으며, WebText language model에 따른 log확률을 계산하는 방식으로 했다. < UNK >는 400억 byte중 26번 밖에 등장하지 않았다. 아래 표를 보면 어떠한 fine-tuning 없이 zero-shot 환경에서 8개중 7개의 SOTA를 달성했다.
CBT(Children's Boot Test) dataset은 품사에 따른 성능 비교를 위한 benchmark dataset이다. 모델의 크기에 따라 성능이 급격하게 증가하여 기존의 SOTA model을 능가하였으며 가장 큰 model은 human과 가까운 결과를 보여줬다.
Text의 long-range dependencies를 측정할 수 있는 benchmark dataset이다. GPT-2는 perplexity를 99.8에서 8.6으로 개선했으며 accuracy 또한 19%에서 52.66%으로 개선시켰다. 그리고 stop-word filter를 사용했을 때, SOTA보다 4% 높은 63.24%를 달성했다.
Text의 중의성(ambiguities)을 해석하는 능력을 측정했는데, 7% 증가시켜 70.70%를 달성했다.
CoQA(The Conversation Question Answering dataset)는 comprehension 능력과 conversation(대화)능력을 평가한다. GPT-2는 55 F1-score를 달성했고 127K 정도의 질문/대답의 pair를 학습하는것 없이 4개 중에 3개의 다른 모델을 능가했다.
CNN과 Daily Mail dataset을 이용해 평가했다. Task-specific한 결과를 유도하기 위해 문서 이후에 token을 추가하여 summarization을 진행했다. Token 없이 진행한 경우, 성능이 더 하락했다.
번역에서는 성능이 좋지 못했다. French - English에서는 성능이 좋았지만 English - French의 경우에서는 word-by-word model보다도 성능이 낮았다. 그럼에도 의미가 있는게 10MB정도의 작은 French Corpus로 활용했기 때문이다.
Answer 문장이 '정확히 일치 하는지' 여부를 지표로 비교했다. GPT-2는 4.1%의 정확도로 기존의 모델들보다 5.3배 높은 정확도를 보여줬다. 작은 모델들은 성능이 1%를 넘지 못하고 성능이 안좋았는데 이는 모델의 크기가 QA에 있어 중요한 요인이라는 것을 알 수 있었다.
Train dataset과 Test dataset의 Overlap(중복)은 모델의 Memorization를 유도하고 Generaliztion 성능을 왜곡하여 나타낼 수 있다.(Metric 측정에 방해되는 요소) 다음 표는 dataset의 Overlap 정도를 보여준다. WebText에 대해서 8-gram을 사용해 Bloom filter를 만들어 테스트 했을 때, 괜찮은 성능이 나왔다.
WebText를 사용해도 괜찮다는 결론이 나왔다. 본 논문에서는 Overlap을 제거하기 위해 n-gram overlap 사용을 추천했다.
Training and Test sets of WebText의 성능은 model의 size가 커질수록 증가하는것을 볼 수 있다. 이는 여전히 WebText에 underfitting함을 알 수 있다.
연구의 결과를 봤을 때, 시사하는 바는 있지만 아직 실용적인 측면에서 GPT-2의 zero-shot성능은 사용할 수준은 아니다. 그러나 연구는 비지도 작업 학습이 연구로서 탐구해볼 유망한 영역임을 알려주고 있다. 또한 크고 다양한 dataset에서 훈련될 때, 다양한 domain과 dataset에서 잘 수행됨을 보여줬다. GPT-2의 zero-shot은 8개 중 7개의 task에서 SOTA를 달성했기 때문이다. Model이 zero-shot에서 다양한 task를 잘 수행한다는 것은 큰 model이 특별한 지도 없이 큰 data를 학습하면 다양한 task를 잘 수행할 수 있다는 가능성을 최대할 수 있다는것을 제시한다.