自然语言处理中,使用标注数据集的有监督fine-tuning方法成为主流。本文使用自行构建的新数据集WebText构建了一个语言模型直接处理下游任务。处理阅读理解任务时,GPT-2没有使用该task的标准训练集CoQA(127000+)进行fine-tuning,仍然好过4个baseline中的3个。语言模型的容量是零样本学习任务的重要成功要素,本文的模型有15亿参数,在对WebText数据集欠拟合的情况下,仍取得了8个语言测试集中7个历史最好得分。说明提高数据集数量和体量远远还没有到达Transformer的天花板,这为学者提供了一条新的途径:有钱可以为所欲为,没钱玩你XX。
传统有监督学习的方法对数据集的分布非常敏感,所以这些训练好的模型更像一个狭窄领域的全才,而不是有能力的通才。
同时传统有监督方法一般使用留出法等对数据集拆分成训练集和测试集分别进行训练和评估,这种训练方式假设数据集与真实情况的数据的分布情况相同。在字幕与阅读理解任务上,输入的变化情况很大,如果数据集带有某种非总体性的特征,则实际泛化能力可能不够好,所以对于NLP任务,下游数据集数量和质量是不足的,本文关注训练好语言模型。
多任务学习是一种可以提高泛化效果的框架,但是多任务学习在NLP仍未发展壮大,以当前语言模型收敛所需要的参数数量和人工标注数据的难度来看,当前不具有使所有任务收敛的数据量。
有监督方法结合预训练和下游再训练,这个方法经过了word vector、contextual representations、self-attention三个阶段.
这些方法的发展考虑了更多的文本信息,也发展出了可以并行的方法技巧,但仍然需要大量高质量的标注训练集。有学者提出无监督的语言模型直接进行下游任务的可行性,本文也采用这种方式。
语言模型是通过大量预料进行autoregressive或autoencoding语言训练任务,判断一个句子出现的联合概率分布(一个句子拆分成多个token)。对于autoregressive,即根据上文预测下一个词,联合概率可以拆分为条件概率的乘积。
[外链图片转存失败(img-6fpuvVYm-1564476364650)(https://upload-images.jianshu.io/upload_images/18662974-4719997d7d520914.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
这样训练出的语言模型似乎天然适合续写等任务,那么对于翻译、问答、摘要提取的任务要怎样处理呢?可以通过调整输入输出的结构使得模型得到训练,适应于不同的具体任务,简单来说就是:1、涉及到多文本的任务就拼接成单文本,2、不同的任务在开通加上不同的标志文本。如下图所示:
[外链图片转存失败(img-GmK2Gkb1-1564476364660)(https://upload-images.jianshu.io/upload_images/18662974-444e3dc774c95695.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
关于语言模型为什么无需显性的带标签的学习下游任务,因为下游任务实际上也是将类似于上游任务的语料组合成特定形式,但实际来说下游任务的数据集仍然属于上游任务的子集。所以本文将高质量的任务按照统一形式在上游进行训练,在具体任务上是zero-shot的0训练状态,也能表现出不凡的成绩,这样就达到了通过语言模型实现competent generalist的目标。所以在特定任务条件下的全集上的全局最小自然是子集上的全局最小,这样还能实现更多变更有创造性的续写。
OpenAI应该花了不少成本在收集整理数据上,它爬取(除wikipedia外的极多的网页文本),并经过清洁和数据处理得到了40多G的数据集WebText(BERT-base使用了13G训练数据)。文中给出了WebText中提取自然语料发生的英语法语翻译的情况,如下图:
[外链图片转存失败(img-ILXSviRW-1564476364662)(https://upload-images.jianshu.io/upload_images/18662974-8a4f30b0b62f8ee1.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
文中采用了BPE(Byte Pair Encoding)方法,简单来说就是不用词向量而用UTF-8的二进制表示,这种表示方法适合插值。对于一些常见词汇,如dog,由于字典槽位有限,BPE很难区别dog.dog?dog!之间的情感差别。为了避免陷入局部最优,本文严禁不同种类byte sequence的拼接。最终本末的模型结合了词级别的语言模型的优点和字节级别的泛化能力。
模型基本上使用的是OpenAI的GPT模型,唯一改动的两个地方是Layer Normalization和多头自注意力机制,这两处改动影响基本不大,可以认为其效果主要是WebText的效果。
拿语言模型的常用评价指标进行了对比,如下图,可以发现随着模型参数的增加,Transformer的能力天花板远远还未达到,随着参数的增加,得分有比较明显的改善。
[外链图片转存失败(img-M3L3Fh0x-1564476364668)(https://upload-images.jianshu.io/upload_images/18662974-410e38cd0217c630.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
另外值得一提的是,它认为使用zero-shot方法更能体现其泛化的能力,更能说明其学到了语言的结构,而非直接死记硬背。文中给了一张表,有些数据集文本集和训练集有超过10%以上的高度文本相似内容,这种相似其实高估了模型真正的泛化能力。
[外链图片转存失败(img-A8sIVoRY-1564476364671)(https://upload-images.jianshu.io/upload_images/18662974-87673979fc4b433d.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)]
公众号:六点一刻研习室
(兴趣使然,不定时更新一些有用的,没有质量保障)
4671)]
公众号:六点一刻研习室
(兴趣使然,不定时更新一些有用的,没有质量保障)