GPT-1 & 2: 预训练+微调带来的奇迹

摘要:  GPT,全称是Generative Pre-training,顾名思义,就是预训练模型。在GPT出现之前,通用的使用预训练的方式是word2vec,即学习词语的表达。而在GPT出现之后,通用的预训练方式是预训练整个网络然后通过微调(fine-tune ...

人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

 

最近要开始使用Transformer去做一些事情了,特地把与此相关的知识点记录下来,构建相关的、完整的知识结构体系,以下是要写的文章,本文是这个系列的第二篇:

Transformer:Attention集大成者

GPT-1 & 2: 预训练+微调带来的奇迹 (本篇)

Bert (待续)

Bert与模型压缩 (待续)

ALBert

MobileBert

更多

Bert与AutoML (待续)

线性Transformer (待续)

Bert变种 (待续)

Roberta

Reformer

Longformer

T5

更多

GPT-3

更多待续

背景

GPT,全称是Generative Pre-training,顾名思义,就是预训练模型。

在GPT出现之前,通用的使用预训练的方式是word2vec,即学习词语的表达。而在GPT出现之后,通用的预训练方式是预训练整个网络然后通过微调(fine-tune)去改进具体的任务。

GPT出现之后,引发了Bert,XLNet等一系列的地震式改进。对NLP任务的影响十分深远。

预训练

关于预训练,流行的使用方法可以分成如下几类:

半监督学习:即先在没有标注的数据上学习词语或者字符的表达,然后将其当做特征输入给特定的任务进行学习。

无监督学习:在没有标注的数据上学习网络,作为特定任务的网络的初始化参数值。

辅助目标函数:将语言模型的目标函数作为具体任务的辅助项来增强学习的效果。

GPT

GPT的思想简而言之,就是在没有标注的数据上进行网络学习,然后添加一层再去在具体的任务上做微调。

在未标注数据上的学习这一部分,需要学习一个语言模型,所谓的语言模型,就是依据前面的context,去预测下一个词。如下面的公式所示:

在学习语言模型的时候,GPT使用的是Transformer,Transformer的出现时预训练模型发生质变的关键因素,它的前任LSTM相较而言无法捕捉更长的语义信息。下图反映了语言模型从输入到输出的计算:

在得到了基于Transformer的模型之后,针对具体的某个任务,假设输入和输出分别是x和y,那么我们在transformer的输出上再加一层:

从而得到新的损失函数:

然后正如我们在预训练那一部分中所说,可以把语言模型的目标函数当做辅助目标函数来增强最终的效果

GPT具体任务上的输入输出

GPT所能处理的是序列式任务,即输入是一个词语序列。然后GPT的输出是一个值。但是很多任务的输入输出并不符合这个格式,接下来我们来看下如何对具体的任务做改动使它们适应GPT模型:

Textual Entailment

这个问题的目标是判断两个句子是包含关系,还是矛盾关系或者中立关系。

对于这个问题,输入是两个句子,premise p和hypothesis h,如上图所示,p和h被拼接了起来,然后输入给transformer。

Similarity

这个问题是判断两个句子是否相似。

对于这个问题,输入的两个句子,正向和反向各拼接一次,然后分别输入给transformer,得到的输出拼接在输入给下一层。

Question Answer和Commonsense reasoning

对于这两个问题,输入都是一个document d,一个问题q,还有若干个答案answer。

对于这个问题,输入的d和q先拼接起来,然后这个拼接和每个answer都拼接起来,输入给transformer,得到的结果分别输入给一个全连接层,再得到的结果去进行softmax形成概率分布。

GPT实验结果

GPT模型在几个问题上的结果分别如下:

fine-tune对层次的影响,语言模型的预训练的影响还有ablation实验如下:

GPT-2

相对于GPT而言,GPT-2使用的训练语料WebText更大。

WebText语料的构建过程:

从45M的链接中下载文本

去重

去除掉所有跟wikipedia有关的文本 (因为很多其他数据集都是基于wiki做的)。

得到40G的文本

相对于GPT而言,GPT-2的训练模型更大。如下图所示,最小的模型是GPT。

GPT-2论证了什么事情呢?对于语言模型来说,不同领域的文本相当于一个独立的task,而如果把这些task组合起来学习,那么就是multi-task学习。所特殊的是这些task都是同质的,即它们的目标函数都是一样的,所以可以统一学习。那么当增大数据集后,相当于模型在更多领域上进行了学习,即模型的泛化能力有了进一步的增强。

在下图中可以看到,使用在webtext上训练的模型,可以在7/8个训练语言模型的数据集上达到更好的效果。而且即便如此,GPT-2模型在webText上还没有完全拟合(即如果训练更长的时间,可以达到更好的效果)。

上图中的8个数据集基本上是跨领域的,可见,增大模型容量和训练数据大小带来的增益是多么可观。

GPT-2 直接做下游任务

除了语言模型上的进展之外,GPT-2还首次尝试了直接用语言模型做下游任务,也就是不用在具体任务上进行微调。这是如何做到的呢?

既然不用微调,那么就需要用输入直接去和模型做交互。比如,如果是summarization任务,那么对于语言模型来说,我加一个新词TL;DR:, 改词前面是context,后面是摘要。那么语言模型遇到这个词后,就能推断出来,接下来要做抽摘要的工作了。

同理,对于translate任务,我们把数据做成 french sentence = english sentence,那么语言模型遇到=的时候,应该能推断出接下来是翻译任务。

虽然在这些任务上,GPT-2都没有达到SOTA的效果,但是效果也是相当可观的。表明了高容量模型在这个方向上的可能性。在后面的文章中我们会介绍GPT-3,在GPT-3中可以完全抛弃了微调,只使用预训练也达到了SOTA的效果。

参考文献

[1]. Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. URL https://s3-us-west-2. amazonaws. com/openai-assets/researchcovers/languageunsupervised/language understanding paper. pdf, 2018.

[2]. Radford A, Wu J, Child R, et al. Language models are unsupervised multitask learners[J]. OpenAI Blog, 2019, 1(8).

更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

挑战者,都在FlyAI!!!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值