今天阅读的是 OpenAI 的同学于 2019 年发表的论文《Language Models are Unsupervised Multitask Learners》,目前具有 300 多引用量。
在有了之前论文的基础后读这篇论文就比较简单了,论文介绍的是 OpenAI 对 GPT 的一个改进模型 GPT-2,其模型结构与 GPT 相比几乎没有什么变化,只是让模型变得更大更宽,并且取消了 Fine-tuning 的步骤。也就是说 GPT-2 采用了一阶段的模型(预训练)代替了二阶段的模型(预训练+微调),并且在语言模型(文本摘要等)相关领域取得了不错的效果。
1.Introduction
目前最好的 NLP 模型是结合无监督的 Pre-training 和监督学习的 Fune-tuning,但这种方法的缺点是针对某特定任务需要不同类型标注好的训练数据。作者认为这是狭隘的专家而不是通才,因此作者希望能够通过无监督学习训练出一个可以应对多种任务的通用系统。
作者认为目前的数据集往往都是针对某一特定任务,如 QA 领域的 SQuAD 2.0,机器翻译领域的 NIST04 和 WMT 2014 En-2-Fr等。而正是因为数据集的单一导致系统缺乏泛化性。作者想通过尽可能地构建和利用足够大的且多样化的数据集,以保证最终的模型能够应用于多个不同的 NLP 任务中。为此,作者专门爬了 Reddit 上 > 3 karma 的外链作为数据源,同时去除 wiki 数据,最终数据大小共 40G。由于 Reddit 上的数据会包括各个领域,所以既保证了数据质量、数量又保证了数据的多样性。
此外,据研究表明语言模型有望完成某些特定的任务,如常识推理和情感分析等,所以作者提出了去掉有监督的 Fine-tuning 阶段,仅采用无监督 Pre-training 的语言模型来直接应用到下游任务中。
在本文中,作者论证了这种方法的可行性,并证明了语言模型来相关领域具有很大的潜力。
2.GPT-2
2.1 Approach
GPT-2 的核心是语言模型,语言具有天然的顺序性,通常可以表示为:
p ( x ) = ∏ i = 1 n p ( s n ∣ s 1 , . . . , s n − 1 ) p(x) = \prod_{i=1}^n p(s_n|s_1,...,s_{n-1}) \\ p(x)=i=1∏np(sn