阅读文献“Language Models are Unsupervised Multitask Learner”(GPT-2)

阅读文献“Language Models are Unsupervised Multitask Learner”(GPT-2)

Abstract

zero-shot:指在分类任务中没有A类的样本,只有B、C、D等类的样本,然后希望训练好的网络可以识别出A类。

one-shot:指的是训练集只有一个或少量样本。

GPT-2模型仍然是一个语言模型,但是在下游任务训练的时候,达到了一个zero-shot的设定,也就是下游任务的时候不需要有标注的数据进行训练。不需要训练模型。也就是这个模型在任何情况下都能用。

Intorduction

机器学习通过使用大数据集、高容量模型,有监督学习来完成训练任务。但是这些模型对于数据分布的轻微变化是非常敏感的。因此大部分模型都是使用在特定场合,有着比较狭窄的使用空间。

在单一的数据集上训练单一的任务的流行是导致现在的系统不具有普遍化性能的主要原因。现在模型的健壮性很可能就得益于在一个大范围的领域和任务上进行训练。

多任务学习是一个模型在多个数据集上同时训练,可能使用多个损失函数进行优化,最终达到一个模型在多个数据集上都能用的目的。

NLP领域表现最好的系统是一个预训练和有监督的微调的组合。这种方法有着向更灵活的转让形式的趋势。最刚开始是词向量被学习,然后作为特殊任务结构的输入,然后使用循环神经网络学习文本级特征。近几年的工作说明了,特殊任务结构是没必要的,使用许多的自注意力块很重要。

本片论文证明了语言模型能在zero-shot的情况下完成下游任务,并且不到有参数或者结构上的修改。这种方法展示了语言模型能够适应大范围任务的潜力。

Approach

由于要做zero-shot,因此不能够像GPT模型一样,引入一些模型没有见过的符号(开始符,间隔符什么的)。下游任务的输入应该和预训练的时候的输入长得一样。

方法核心是语言建模。就是条件概率:已知前n-1个词语,预测第n个词语。
p ( x ) = ∏ i = 1 n p ( s n ∣ s 1 , … , s n − 1 ) p(x)=\prod_{i=1}^np(s_n|s_1,\dots,s_{n-1}) p(x)=i=1np(sns1,,sn1)
对于一个单一的任务,可以表示为估计一个条件概率: p ( o u t p u t ∣ i n p u t ) p(output|input) p(outputinput)。而对于一个有着能够适应各种任务的系统来说,他的条件概率表示应该是: p ( o u t p u t ∣ i n p u t , t a s k ) p(output|input,task) p(outputinput,task)。任务条件被实现在一个架构级别,例如任务的在算法层级的编码和解码器,比如MAML结构的循环优化器。但是语言提供了一种更灵活的方式去说明任务、输入、输出:使用符号序列。例如翻译任务可以被写成这么一个序列:(translate to
french, english text, french text)。

Train Dataset

希望建立尽可能大和丰富的数据集为了收集自然语言任务的演示在尽可能多的不同的领域当中。

一个来源是使用爬虫爬取网站只做的数据集Common Crawl,但是该数据集的文本质量不是很高。另一个是有人使用这个数据集(Common Crawl)的那些与他们目标数据集相似的子数据集“ Winograd Schema Challenge”。这个方法确实能够提升表现,但是不利于本模型想要突出的普遍性。

本文创建了一个新的数据集,来源于网站爬虫,同时强调了文本的质量。

最终的数据集结果:WebText。

Input Representation

byte级别的语言模型与word级别的语言模型在性能上存在较大差距。

Byte Pair Encoding是介于byte级别和word级别之间的一个实用的中间方法。这种方法导致词库有点大。byte级别的BPE比较小,但是如果直接使用byte级别的BPE的话,又有它使用的是一个贪心算法(出现次数),因此将不会达到最优效果。

由于dog、dog. dog!这种的存在,导致模型容量和词汇表处于一个不是最优的状态。为了避免这些,实验中阻止了BPE和标点符号目录融合。并且添加了额外的空格,这样能够有效提升压缩效率。

Model

本模型使用了以Transformer为基础的结构,细节上是在GPT模型的基础上进行了一些修改。Layer normalization(标准化)移动到了每个sub-block的输入之前。并且添加标准化层到最终的自注意力块之后

在初始化的时候,规范了一些残差层的权重,通过乘以一个 1 N \frac{1}{\sqrt{N}} N 1,这个N是残差层的数量,用了更大的词表,用了更大的文本,用了更大的batchsize。

你可能感兴趣的:(阅读文献“Language Models are Unsupervised Multitask Learner”(GPT-2))