正文
2 介绍 GPT-2
关键词:零样本任务、多任务学习
2.1 动机
GPT-1 已具备很强大的能力,但仍存在着一些不足,其中最重要的一点是:下游任务不能泛化
GPT-1 面对不同的下游任务,都需要重新进行训练,这要求各种下游任务要有对应的标注数据
从另一方面来说,GPT-1 出现后不久,BERT 以更多的数据、更大的模型全面超越了GPT-1
而为了进行反击,GPT-2 增加了数据和模型规模,并尝试解决更困难的零样本任务(zero-shot)
2.2 模型结构
GPT-2 的模型结构与之前相比基本没变,只是做了一些细微的修改
概括来说,层正则化被移动到子模块之前,另有一个新的层正则化被添加到最后的自注意力模块之后
GPT-2}GPT-2 并没有对模型结构有太大的创新,其最重要的改变在于使用了更大的数据和更多的模型参数
具体来说,作者设计了以下几种模型大小:
2.3 模型训练
GPT-2 的思想是在大规模无标注语料上预训练语言模型,然后直接把预训练模型应用到各种下游任务
这样的任务设定可以进一步引申为零样本任务
所谓零样本任务就是说预训练模型对下游任务进行预测时,不提供下游任务的训练样本,而是直接开始预测
这意味着预训练模型需要有泛化性,不用经过微调就可以应对各种下游任务
怎么使得预训练模型具备此能力呢?要从预训练过程入手,作者引入多任务学习的概念
所谓多任务学习就是说训练模型时,用多个任务的数据集,并且保证模型在各个任务的数据集上都可以收敛
说回模型,GPT-2 还是将单向语言模型作为预训练任务,其训练方式还是和GPT-1 一样
不同在于,GPT-2 会在更大型更丰富的语料上进行训练,可以认为这些语料隐式包含翻译、问答等的任务
与之对应,GPT-2 的模型参数也增加了许多,使其能拥有更强大的学习能力
作者认为,当语言模型的容量足够大且训练语料的数量足够多时,通过无监督训练就能覆盖所有有监督任务
换句话说,所有有监督任务都是语言模型的子集,直观的解释是:理想的语言模型能真正理解语言
最后还有一点,预训练模型进行预测时,是不能出现特殊标记的,因为模型无法理解预训练时没见过的东西
模型在预测时的输入应该是纯自然语言,用于明确待做任务类型,这在后来的文献中称为提示 ( prompt )
下面是示意图,GPT-2 所做的事情是:根据提示和输入来续写,从而完成各种下游任务
3 介绍 GPT-3
关键词:少样本任务、上下文学习
3.1 动机
从 GPT-2 的实验结果能看到:随着模型参数和训练语料的增加,模型的性能会不断提升
故GPT-3 继续沿着原有道路,进一步增加模型参数和训练语料,在大规模预训练模型上越走越远
另一方面,GPT-3 不再追求零样本任务,而是转为少样本任务 (few-shot)
这与人类的习惯更加相似,具有一定知识的人类,在给出若干个例子后,就可以学会某种能力
3.2 模型结构
GPT-3 的模型结构与之前相比基本没变, 只是做了一些细微的修改
概括来说,就是用Sparse Transformer 中提出的稀疏自注意力机制代替原有的自注意力机制
GPT-3 也没有对模型结构有太大的创新,最重要的改变在于使用了更大的数据和更多的模型参数
具体来说,作者设计了以下几种模型大小:
3.3 模型训练
GPT-3 的思想是在大规模无标注语料上预训练语言模型,然后直接把预训练模型应用到各种下游任务
这和GPT-2 是一样的,不同之处在于 :GPT-2 设定为零样本任务,GPT-3 设定为少样本任务
所谓少样本任务就是说预训练模型对下游任务进行预测时,只提供极少量的任务样本供预训练模型使用
通常 GPT-3 不会将这些极少量的任务样本用于微调模型,而是会将其当作提示输入到预训练模型
这是因为对参数量如此大的模型进行微调也是非常困难的
这样在预测时将任务样本放到提示中给模型来学习的行为,可以称作是上下文学习 (in-context learning)
简单来说就是预训练模型需要在提示的上下文语境中学习要完成的下游任务
因此对于使用者来说,使用预训练模型完成下游任务最需要考虑的事情就是:如何设计提示
下面是一个例子:
GPT-3 的最终效果虽然已十分惊艳,但仍不可避免地存在一些局限性,下面来简单讨论下:
- 假设存在很多任务样本,如果以拼接的方式输入预训练模型,那么会使得提示文本很长,难以理解
- 预训练模型每次预测时,都会直接从给定的上下文获得信息,但是每次得到的信息都没有保存下来
好啦,本文到此结束,感谢您的阅读!
如果你觉得这篇文章有需要修改完善的地方,欢迎在评论区留下你宝贵的意见或者建议
如果你觉得这篇文章还不错的话,欢迎点赞、收藏、关注,你的支持是对我最大的鼓励 (/ω\)