2021. 4. 15. 14:28ㆍ논문 리뷰
Abstract
Question and Answering, machine translation, reading comprehension, summarization 등 다양한 현재 자연어 처리(이하 NLP) 분야에서는 전형적으로 task별 supervised learning 방법으로 접근한다.
이 논문에서는 어떠한 task에 대해서도 따로 학습하지 않고 예측할 수 있다는 것을 증명했고 수백만개의 website에서 가져온 새로운 dataset인 WebText를 사용했다.
어떤 훈련도 하지 않고 Q&A task를 진행했을 때 55F1 score를 얻을 수 있었다.
Language Model(이하 LM)의 능력은 zero-shot task transfer 와 다른 어떤 task에서도 성능 향상을 위해 필수적인 요소이다.
해당 논문의 모델 중 가장 사이즈가 큰 GPT-2의 경우 1.5 Billion 개의 parameter Transformer이며 zero-shot으로 실험 했을 때 8개중 7개의 LM dataset에서 SOTA를 달성했다. (심지어 WebText dataset은 underfit 상태였다)
Introduction
요즘 MLP 분야에서는 task specific하게 학습하면 전문가보다 나은 성능을 내곤 한다.
하지만 해당 논문에서는 specific한 모델이 아니라 일반화 된 모델 즉, 어떤 task도 해낼 수 있는 모델을 만들고자 하였다.
기존의 방법은 training examples들을 모으고 correct 정답을 알려줘서 학습을 시켜 전문가 이상의 성능을 달성했지만, 이는 너무 1차원적인 접근 방식이다.
Single task에 맞춰 single domain에만 학습을 하면 generalization이 어렵고 현재 추세는 좀 더 넓은 범위에서 평가하고자 GLUE, decaNLP등 다양한 benchmark들이 제안되고 있다.
Multitask learning은 general performance를 향상시키기 유망한 framework이다. 하지만 아직 너무 초기 단계이다. 현재의 방법은 더 많은 목적의 데이터를 학습시키는 방법으로 성능 향상을 하고 있다. 하지만 성능 향상을 위해서는 너무 많은 데이터가 필요하다는 문제점이 있다. 이러한 부족한 점을 보완하기 위해 multitask learning 연구에 더 힘쓰고 있다.
현재 좋은 성능을 내는 NLP 모델들은 pre-training 과 supervised fine-tuning의 구조로 수행되고 있다.
이러한 모델들은 여전히 본인의 task에 맞는 supervised training을 요구한다. 하지만 데이터가 정말 없거나 부족하다면 이는 해결할 수 없는 문제점이 있다.
이 논문에서는 이 두가지를 합쳐서 transfer를 함에 있어 더 general 한 방법을 찾고자 한다. Down-stream task를 fine-tuning 없이 zero-shot setting으로 진행했을 때 좋은 성능을 낸다는 것을 보였고 특정 task에 대해서는 SOTA 달성을 하였다.
Approach
Approach의 메인은 language modeling에 있다. 현재 language modeling은 학습되지 않은 채로 그들의 joint probabilities를 학습한다.
최근에는 이 conditional probabilities를 compute 할 수 있는 Transformer 같은 self-attention 구조의 방법들이 등장했다.
Single task에 대해서 학습하는 것을 conditional distribution으로 보면 p(output | input)으로 나타낼 수 있다.
하지만 General system은 같은 input에 대해서도 다른 task를 수행할 수 있어야하기 때문에 한가지 요소를 더 추가해줘야한다.
p(output | input, task)
Task conditioning은 보통 task에 맞는 encoder, decoder와 같이 architecture 수준에서 구현되거나 알고리즘 수준에서 구현된다.
그러나 언어는 task, inputs, outputs 모두를 symbol의 sequence로 표현할 유연한 방법을 제공한다. 예를 들면 translation training example의 경우 (translate to french, english text, french text)로 표현할 수 있고, reading comprehension training example의 경우에는 (answer the question, document, question, answer) 로 표현할 수 있다.
LM의 원리상 어떤 supervised objective는 그저 평가가 가능한 unsupervised objective라고 볼 수 있다.
-> 자의적 해석입니다만 unsupervised로 training해도 주어진 sequence들간의 관계는 supervised랑 같지만 단순히 잘 파악하고 있는지 평가할 수 없기 때문에 원리는 같다고 표현하는 것 같습니다.
다음 문장을 보면 global minimum of the unsupervised objective is also the global minimum of the supervised objective. 인데 결국 두 가지 모두 같은 목표를 가지고 움직이는 아이들이라는 뜻이라고 저는 이해했습니다
문제는 unsupervised objective가 수렴을 해야한다는 것이다. (평가하는 목표가 없기 때문에 특정 방향으로 수렴이 어렵다)
이러한 가정을 가지고 실험을 진행했을 때 supervised approach보다 학습 속도가 훨씬 느리다는 것을 알수 있었다.
context dialog를 활용하면 QA task를 예측 데이터가 필요없이 학습이 가능하다. Dialog 접근은 매력이 있는 반면 한편으로는 제한적인 부분이 있을까 걱정이 되었다고 한다. 왜냐하면 인터넷에는 수만은 데이터들이 있지만 대화형 커뮤니케이션이 아니라 수동적으로 사용할 수 있는 데이터들이기 때문이다.
저자의 추측으로는 충분한 능력의 LM이 추론을 학습하고 NLP 분야에서 증명된 task를 수행한다면 이것이야 말로 진정한 unsupervised multitask learning이라고 이야기 하고 있다.
Training Dataset
이전의 work들은 single domian에서의 text만 학습했다(e.g news articles, Widipedia, fiction books...). 본 논문에서는 크고 다양한 분야의 언어를 모아서 다양한 domain에 적용시켜보고자 했다.
다양한 분야의 제한 없는 text를 모으는데는 web crawling을 사용했다. 하지만 data quality issue가 있었고 이를 피하기 위해서 Reddit을 시작점으로 해서 모든 link들의 정보를 수집했다. 이는 사용자가 링크를 왜 눌렀는지에 대한 heuristic한 정보들로 사용될 수 있다.
WebText dataset을 모아본 결과 총 4500만개의 link들을 모을 수 있었으며 그 중 Wikipedia document들은 제거하고 사용했다.
Input Representation
현재 large scale LM들은 lower-casing, tokenization, out-of-vocabulary등 model이 수용할 수 있는 string의 공간을 제약하는 pre-processing 과정을 거친다. 이는 Unicode로 처리하는 과정을 UTF-8같은 byte level 처리로 처리하면 해소가 가능하지만 현재 byte-level의 LM은 large scale dataset에는 적합하지 않다. 해당 논문의 실험에서도 byte-level의 LM에서는 성능 차이를 보였다.
Byte Pair Encoding(이하 BPE)는 character와 word level 중간에 있는 단계로 서로 효율적으로 보간하는 방법이다. 하지만 BPE를 구현해 놓은 reference를 살펴보면 이름은 Byte Pair이지만 보통 Unicode code point에서 동작하고 있다. 이를 수행하려면 Unicode string의 base를 다 알고 있어야 가능한데 이는 BPE의 base vocab 숫자인 32000개에 비하면 엄청나게 많은 숫자이다. byte-level로 구현한 BPE의 경우 256개의 vocab만이 필요하다.
실험을 하던 도중 저자는 BPE가 많은 같은 단어를 포함하고 있는것을 알아냈다. 예를 들어 dog. dog! dog? 등 같은 단어들이 많이 포함 되어있었고 이는 vocabulary slot 낭비 뿐만 아니라 model의 능력에 영향을 주기 때문에 이를 막기 위해 BPE가 character를 기존 단어에 합성하는 것은 막도록 했다.
이러한 input representation은 기존의 word-level로 수행되던 LM들을 generality하게 바꿔줬다. 이를 통해 기존의 pre-processing 과정이 필요 없어졌다.
Model
모델의 구조는 Transformer 기반으로 구성했으며 기존의 OpenAI GPT 모델에서 조금 수정했다.
Layer normalization을 각 sub-block의 input으로 넣어줬고 추가적인 layer normalization을 마지막 self-attention block 뒤에 붙여주었다.
residual layer의 weights를 scale 해줬는데 그 scale 변수는 1√N으로 두었다. -> 여기서 N은 residual layer의 갯수
Context size는 512에서 1024 token으로 올렸고 batch size 역시 512로 더 크게 사용했다.
Experiments
4가지 LM을 가지고 실험을 진행했다.
가장 작은 모델은 기존의 GPT와 동일하고, 두번째 작은 모델은 BERT와 크기가 동일하도록 하였다.
우리가 GPT-2라고 부르는 가장 큰 모델은 GPT에 비해 훨씬 많은 parameter가 필요했다.
모든 모델들은 Web-text에 대해서 underfit한채 수행되었다(training 시간이 부족)
Language Modeling
어떻게 WebText LM들이 zero-shot domain transfer를 하는지 이해하는데 흥미로운 사실을 발견했다.
"이 모델은 byte level로 동작하기 때문에 정보를 잃어버릴 수 있는 pre-processing이나 tokenizer 과정을 요구하지 않는다."
WebText LMs 들은 domain, dataset들 간의 transfer를 잘해준다.
8개의 dataset중 7개 에서 zero-shot으로 수행헀을 때 sota를 달성했다.
Childrens's Book Test
children's Book Test(이하 CBT)는 다른 categories에 있는 단어들에서의 성능을 측정하기 위해 만들어졌다.
위의 그림을 보면 model 사이즈가 커지면 증가하는 것을 볼 수 있었고 인간의 performance에 가깝게 가는 것을 확인할 수 있었다.
LAMBADA
LAMBADA는 model의 long-range dependencies를 측정하기 위한 실험이다. 이 task는 문장의 마지막 word를 예측하게 하는데 최소 50개 이상의 token이 포함된 context이어야 한다.
이 분야에서도 SOTA 달성
이 외에도 다양한 분야에서의 실험을 진행 하였으며, 좋은 성능을 보여주었다. 다른 실험들이 많아서 생략..
Conclusion
큰 LM이 충분한 크기와 다양한 dataset에서 학습을 하게 되면, domain과 dataset들 간의 transfer가 잘 일어난다. GPT-2의 zero-shot의 sota달성을 기점으로 앞으로 explicit한 supervision없이 우도를 최적화하는 방향으로 학습시켜 zero-shot으로도 좋은 성능을 낼수 있을 것이다.