前期回顾:[萌芽时代]、[风起云涌]、[文本分类通用训练技巧]
感谢清华大学自然语言处理实验室对预训练语言模型架构的梳理,我们将沿此脉络前行,探索预训练语言模型的前沿技术,红色框为前期脚印,绿色框为本期介绍,欢迎大家留言讨论交流!
在具体看论文之前,我们先来看看GPT-2,也是GPT家族巨人的惊人表现做一个开胃菜。在一个生成式任务上,OpenAI给出了这么一个开头:
翻成中文是:在一项惊人的研究中,科学家们发现了一群独角兽,它们生活在安第斯山脉一个偏远的还没被开发山谷中,更令人惊讶的是这些独角兽会说一口完美的英语。
就这么一句话,GPT-2能接着它写出以下这么一大段故事:
因为它们独特的角,科学家们把他们命名为Ovid’s Unicorn,这些长着四个银色角的独角兽是原来科学家所不曾见过的。
......中间还描写了,这些独角兽如何被发现,以及权威人士们评论这些生物是怎么出现的,最后还认为要验明这群独角兽是否是外星的种族,唯一方法就是通过DNA了。
这一本正经的胡说八道,让编者也是自愧不如啊。GPT-2这么强劲不是没有道理的,接下来让我们回归学术,查查GPT家族的户口本吧!
GPT是 “Generative Pre-Training” 的缩写,由OpenAI的四位作者发表于2018年。我想基于文章谈谈GPT模型的特点以及和之前模型的相似点。下图为GPT及ELMo的结构图。
GPT模型不同于之前模型的特点:
GPT的模型核心组件选择了Transformer,区别于之前的其他一些模型包括ELMo的LSTM。这确实给模型带来了极大的性能和速度提升。关于Transformer原理,我受限于篇幅,不在这里赘述,但是强烈推荐大家对Transformer进行深入了解,可以查阅文后的参考阅读,网上的介绍也很多,如果大家希望我们出一期Transformer的推送,也可以在后台留言。
为了方便将语言模型的能力transfer到下游的各种任务上去,GPT对模型的输入进行了规范,称为 traversal-style input transformations。把各种任务的结构化输入统一转化为有序的序列。避免在应对不同任务时,要对模型进行大的改动。其实做法很简单,我们看下面这个图就知道,使用特定的符号,来界定文本序列的开始,间隔和结束,并在预训练时做相同的处理即可,BERT也使用了这种方法。
GPT对词典使用了 bytepair encoding (BPE) 。这样做的目的是为了缩小词典,就英文来说词是表示意义的基本单位,但是常用词有30000-50000个,全量的可达130000。字符只有256个,但是并不能很好地展现语义信息。所以应该可以找到一个更好的subword units来作为基本单元,即不能将句子长度被增加太多而降低模型性能,也能有效减少词典的大小以减少模型参数量,这种做法也确实对模型性能的提高有很大帮助。BPE的实现在下方模型细节会提到。
GPT模型和之前模型的共同点:
GPT模型使用经典的two stage training。第一个阶段,将一个大容量的语言模型在很大的无监督语料上进行预训练。第二个阶段,在特定任务的监督数据上进行finetune。
GPT模型沿袭了我们第一期 [萌芽时代] 中所讲文章 Semi-supervised Sequence Learning 的方法。将语言模型预训练后,把模型的参数作为监督模型的起始点的做法。而有区别于第一期所讲另一篇context2vec,或第二期 [风起云涌] 所讲的ELMo这样,通过预训练模型生成带上下文信息的向量表示,然后作为监督模型的特征。
GPT使用了标准的语言模型目标,优化某个词在其前面k个词出现情况下的条件概率。
与之前的一些文章一样,GPT在特定任务的训练时,会把语言模型目标的误差一起加在总误差中联合训练,以提升模型的泛化能力,缓解灾难性遗忘
GPT使用了 multi-layer Transformer decoder 作为语言模型的层结构。GPT模型一共有12层,每层是一个 transformer的decoder,有768维hidden state和12个attention头。position-wise feed-forward network 使用了3072维内部状态。输入层的tokens 经过word embedding 和 position embedding ,最后通过softmax得到输出的概率分布。语言模型的训练使用了2000轮的warmup,最大学习率为2.5e-4,接着通过cosine schedule下降到0,dropout使用0.1,输入的最大长度为512。在直接finetune任务目标的时候,模型训练了三轮。
GPT家族的杰出后代GPT-2同样是由OpenAI发表,GPT-2希望能够使模型不经过任何改变就可以在下游任务上获得比较好的性能,也就是zero-shot。
要达成这个目标,模型就要是通用的,不能只在某些任务上进行训练。它的语言模型目标,跟GPT相似,但是因为模型要在多任务上都能有较好的表现,所以模型的预测不仅要基于前几个词作为条件,同时也要将任务考虑在内。
GPT2相比于GPT的几个变化:
本期的论文就给大家分享到这里,感谢大家的阅读和支持,下期我们会给大家带来预训练语言模型其他的论文阅读分享,敬请大家期待!
欢迎关注朴素人工智能,这里有很多最新最热的论文阅读分享,有问题或建议可以在公众号下留言。
Attention Is All You Need (2017)
https://arxiv.org/abs/1706.03762
[NLP] Transformer详解
https://zhuanlan.zhihu.com/p/44121378
GPT2
http://m.elecfans.com/article/880042.html
一分钟搞懂BPE
https://blog.csdn.net/qq_27590277/article/details/88343988
推荐阅读
模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法
抛开模型,探究文本自动摘要的本质——ACL2019 论文佳作研读系列
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。