背景
随着语言模型从word2vec, ELMo, GPT1再到BERT等模型的发展,目前基本形成了无监督的pretrain到各自任务监督学习的fine-tune(比如机器翻译,文本分类等任务),然而也导致了一个问题,如果缺乏特定任务的监督训练数据就比较难办了。GPT2的研究发现语言模型其实不用显式的fine-tune,利用少量输入进行few-shot learning本身就具备解决这些能力,具体见论文《Language Models are Unsupervised Multitask Learners》
GPT2
回来最初的问题,到底什么是语言模型?从word2vec, ELMo, GPT1再到BERT, 语言模型即从一部分句子计算预测下一个单词是某个具体单词的概率。之前我们谈到OpenAI GPT解读,和GPT1一样,GPT也是采用了transformer为主体的单向语言模型,主要区别在于参数量极大。和bert的区别,GPT采用tranformer的decoder,而bert采用tranformer的encoder(因为GPT是单向,需要mask)。GPT2采用了和GPT1大致相同的结构,不同点在于layer norm放在了每个sub-block的输入,另外每个attention block最后输出增加一个额外的layer norm;词表大小增加到50275,context size 从512->1024,另外batch size为512。
论文训练了四个模型,最小的和GPT参数量一致,第二小的和BERT-large一致,最大的模型就是最终论文中对应的GPT-2. 训练数据为爬虫抓的WebText,清理后大概为800W个文档中的语料大小为40G。
该模型的优势是可以在zero-shoting的条件下达到state of the art的表现。
强烈推荐:关于GPT-2模型解释看过最好的文章 http://jalammar.github.io/illustrated-gpt2/
总结
看起来GPT-2只是参数量大,但注意到本文的题目Language Models are Unsupervised Multitask Learners;作者用few-shot learning的方式通过实验证明了GPT-2在各个子任务上获得提升。所以该论文的核心就是语言模型=无监督多任务学习,机器翻译,问答,摘要生成等等任务都可以通过语言模型等解决。比如在问答、翻译、摘要等任务上做 finetune,仅仅通过几个输入 token 做提示,就能让模型通过类比猜出这个任务的用意,从而产生有意义的输出。例如给 document 后面接一个 TL;DR: 就可以生成摘要;又比如机器翻译举例
翻译的提示内容(图中的to-fr),通过提示语进行few-shot learning后模型便可以通过生成的方式进行机器翻译得到法语而不需要进行监督训练,并且这个表现超越了之前模型效果。
这些原理相关解释还可参考 https://zhuanlan.zhihu.com/p/57251615