内容纲要

文章目录

  1. 定义
  2. 两阶段
  3. GPT VS ELMO
  4. 训练
  5. 使用
  6. 新问题
  7. 优点
  8. 缺点
  9. GPT 1 VS GPT 2
  10. 模型大小
  11. GPT2 VS BERT VS Transformer-XL
  12. Decoder Only block
  13. Self-Attention VS Masked Self-Attention

欢迎转载,作者:Ling,注明出处:深度学习:前沿技术-GPT 1 & 2

GPT 1

定义

GPT是“Generative Pre-Training”的简称,从名字看其含义是指的生成式的预训练。

两阶段

GPT也采用两阶段过程:

  • 第一个阶段是利用语言模型进行预训练
  • 第二阶段通过Fine-tuning的模式解决下游任务。

GPT VS ELMO

下图展示了GPT的预训练过程,其实和ELMO是类似的,主要不同在于两点:

首先,特征抽取器不是用的RNN,而是用的Transformer,上面提到过它的特征抽取能力要强于RNN,这个选择很明显是很明智的;

其次,GPT的预训练虽然仍然是以语言模型作为目标任务,但是采用的是单向的语言模型,所谓“单向”的含义是指:语言模型训练的任务目标是根据 W_i 单词的上下文去正确预测单词 W_iW_i之前的单词序列Context-before称为上文,之后的单词序列Context-after称为下文。ELMO在做语言模型预训练的时候,预测单词 W_i 同时使用了上文和下文,而GPT则只采用Context-before这个单词的上文来进行预测,而抛开了下文。这个选择现在看不是个太好的选择,原因很简单,它没有把单词的下文融合进来,这限制了其在更多应用场景的效果,比如阅读理解这种任务,在做任务的时候是可以允许同时看到上文和下文一起做决策的。如果预训练时候不把单词的下文嵌入到Word Embedding中,是很吃亏的,白白丢掉了很多信息。

file

训练

file

输入前面的单词,输出下一个单词,中间是Tranformer的Decoders+FFNN+Softmax

使用

将训练好的Decorders作为Encoders,输入句子,得到每个单词的特征向量,用于下游任务

file

上图展示了GPT在第二阶段如何使用:
首先,对于不同的下游任务来说,本来你可以任意设计自己的网络结构,现在不行了,你要向GPT的网络结构看齐,把任务的网络结构改造成和GPT的网络结构是一样的。然后,在做下游任务的时候,利用第一步预训练好的参数初始化GPT的网络结构,这样通过预训练学到的语言学知识就被引入到你手头的任务里来了,这是个非常好的事情。
再次,你可以用手头的任务去训练这个网络,对网络参数进行Fine-tuning,使得这个网络更适合解决手头的问题。就是这样。看到了么?这有没有让你想起最开始提到的图像领域如何做预训练的过程,这跟那个模式是一模一样的。

新问题

对于NLP各种花样的不同任务,怎么改造才能靠近GPT的网络结构呢?

file

GPT论文给了一个改造施工图如上:

  • 分类问题,不用怎么动,加上一个起始和终结符号即可;
  • 句子关系判断问题,比如Entailment,两个句子中间再加个分隔符即可;
  • 本相似性判断问题,把两个句子顺序颠倒下做出两个输入即可,这是为了告诉模型句子顺序不重要;
  • 多项选择问题,则多路输入,每一路把文章和答案选项拼接作为输入即可。

从上图可看出,这种改造还是很方便的,不同任务只需要在输入部分施工即可。

优点

采用了Tranformer替代LSTM,并行,特征提取能力强

缺点

  • 缺少ELMO的双向
  • 缺乏炒作

GPT 2

GPT 2 本质上和GPT 1没有太大区别,,GPT 2首先通过扩容,增加Decoder层数,然后通过放水,增加数据数量,广度,质量,从而提升性能。我们通过以下对比的方式介绍GPT2。

GPT 1 VS GPT 2

  • 数据质量: GPT 2更高,进行了赛选

  • 数据广度: GPT 2更广, 包含网页数据和各种领域数据

  • 数据数量: GPT 2更大,WebText,800万网页

  • 数据模型:模型更大,15亿参数

  • 结构变化:变化不大

  • 两阶段 vs 一步到位:GPT 1是两阶段模型,通过语言模型预训练,然后通过Finetuning训练不同任务参数。而GPT 2直接通过引入特殊字符,从而一步到位解决问题

    • Machine Trainslation

file

  • Summary

file

模型大小

参数大小对比

file

存储空间大小对比

GPT-2 Small: 345M

GPT-2 Extra Large: 6.5 GB

层数对比

file

GPT2 VS BERT VS Transformer-XL

我们知道完整的Seq2Seq模型如下图

file

主要包含Encoder和Decoder。

和BERT,Transformer主要区别可以用下图概括:

file

  • GPT2:只能看到之前的内容,看不到之后的内容,所以是一个Decoder模型
  • BERT:可以同时看到上下文,所以是一个Encoder模型
  • Transformer XL:如果输入过长,会截成一段一段,用前一段部分信息服务于后一段,但是也是只能看到前文,看不到后文,所以是一个Recurrent Decoder模型

Decoder Only block

file

输入同样是由Token Embedding + Positional Encoding

file

Self-Attention VS Masked Self-Attention

file

  • Self-Attention: 可以同时看见上文和下文
  • Masked Self-Attention: 只能看到上文