GPT及GPT-2论文笔记

2017年中Google提出的Transformer结构,今天看来真是一篇经典的开山之作,启发了如今NLP领域大火的BERT、XLNET等模型。今天要介绍的GPT及GPT-2也是Transformer的重要发展之一,主要是基于Transformer的Decoder进行的升级,两项工作都是由OpenAI团队完成的。从时间线上来看,GPT要比BERT早,但是GPT-2要稍晚些,为了叙述方便,这里放在一起来讨论了。下一篇就会介绍到BERT,如果希望保持时间线索,可以两篇交替来看。

GPT (Generative Pre-Training)

论文地址:Improving Language Understanding by Generative Pre-Training

短评:主要贡献在将Transformer发扬光大(相比word-level的嵌入词向量能够学习到更丰富的语义语境信息,相比传统的RNN网络能够建模更长距离的相关信息),沿用Unsupervised pretraining + Supervised fine-tuning的套路,在很多任务上刷新了成绩。

模型框架

Unsupervised pre-training使用multi-layer Transformer decoder,采用的优化任务是语言模型。Supervised fine-tuning就是在具体任务的标注数据上进行调优,以文本分类任务为例,只需要将最后1个token的最上层的激活向量再过一层线性转换+softmax即可。论文发现,在fine-tuning阶段,引入辅助任务(例如还是语言模型),可以 a) 提升泛化能力,b) 加速收敛

针对其他一些任务的结构化输入数据,论文提出使用遍历(travelsal-style approach)的方法,模型框架改动小,灵活方便。具体见下图:

image-20190803121757273

特别看到,针对文本蕴含(Textual entailment)和文本相似度(Similarity)两类不同任务,前者有顺序关系,后者没有顺序关系,所以做了两种情况的区分。另外,输入的首尾增加了两个token,多段文本输入间引入了分隔符。

实验分析

模型细节和Transformer的Decoder基本一致,有一些小改动,例如层数增大,激活函数改用GELU等。在Natural Language Inference, Question answering and commensense reasoning, Semantic Similarity, Classification等多个任务的多份数据集上均取得了很大提升。

image-20190803124529825

左图表明了层数的关键。右图对比了Transformer和LSTM的zero-shot效果(不在监督数据上进行训练),证实Transformer能够学到更多信息。

image-20190803125255258

对照实验(Ablation studies),第1行是采用模型的效果,第2行表明pre-training是必不可少的,第3行表明fine-tuning阶段的辅助任务不一定总是有效的(在一些小数据集上可能没有更好),第4行则再次对比说明Transformer对比LSTM的领先性

GPT-2

论文地址:Language Models are Unsupervised Multitask Learners

官方Blog:Better Language Models and Their Implications

代码地址:https://github.com/openai/gpt-2

GPT-2是在今年2月份由OpenAI推出的,这里面还有一段小故事。在给出的一些测试示例中,模型可以根据一小段话脑补出大段连贯的文本,OpenAI甚至表示说:Due to our concerns about malicious applications of the technology, we are not releasing the trained model.(出于对模型可能遭恶意应用的担忧,我们本次并没有发布所有预训练权重)。在当时引起了学术圈和媒体圈的热议Kyunghyun Cho在twitter上笑怼:for the humanity, i feel now obliged to remove all the pretrained model weights i’ve made public so far. 😅 (要是这样,为了人类我不得不删除迄今为止自己公开的所有模型权重了),Yann LeCun也转推表示资瓷。

哈哈,轻松一会儿,让我们回到正题来,看看这么模型有什么过人之处,引发了大佬们的议论。

亮点:15亿参数,40G网页数据(800万个多样化文档)的超大模型;单数据单模型,Zero-shot。

模型框架

核心依旧是Language Modeling,形式化为p(x)=\prod_{i=1}^{n}p(s_n|s_1,...,s_{n-1}),从中可以学习到p(s_{n-k},...,s_n|s_1,...,s_{n-k-1})。单任务预测形式化为p(output|input),多任务则为p(output|input,task),通过将tasks,inputs和outputs都表示为符号序列,便可和上面的语言模型关联起来。再次看到LM的关键地位。

Training Dataset是从网页抓取得到的相对高质量内容,数据集命名为WebText,是4500万链接的一个子集,包含超过800万个文档,共40GB的文本数据,其中Wikipedia的文档被过滤以避免与测试评估任务的数据重叠。

Input Representation采用BPE(Byte Pair Encoding,虽命名为Byte,通常是在Unicode序列上做的)方法,且在字节级别上进行合并但是限制合并不同类型的字符以避免类似dog. dog! dog?的出现。这种表示方式能够结合词级别语言模型的优点和字节级别的泛化性能,更加灵活。

模型框架基本同GPT,有一点小改动,例如Layer normalization前移到每个子模块之前(顶层多加一层Layer normalization),初始化策略,扩大词表等。

image-20190803145720637

论文提到,即使GPT-2已经如此巨大,模型仍旧没有收敛,继续训练更长时间可能取得更好效果。果然是大力出奇迹😂

实验分析

image-20190803145924532

可以看到,在Zero-shot的情况下,WebText LMs几乎在所有测试数据集上达到了新的SOTA,除了1BW数据集(这个数据集消除了所有远程结构),语言建模能力惊人。

另外还在很多其他任务上进行了对比实验,大多数也取得了提升,如下图:

image-20190803151651428

论文的主要贡献在于表明了“在一个足够大的、多样化的数据集上,训练一个超大的语言模型(high-capacity),能够很好泛化到其他任务上”。不过,这对工业界可能是个正信号,对于学术界尤其是普通研究者而言,意义不大,资源需求太大了。

Published by

admin

天空没有翅膀的痕迹,但我已飞过

Leave a Reply

Your email address will not be published. Required fields are marked *