OpenAI-GPT(Generative Pre-Training)详解

在GPT出现之后,通用的预训练方式是预训练整个网络然后通过fine-tune去改进具体的任务。(需要注意的是,ELMo先出现的,然后是GPT)

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

GPT的核心思想是先通过无标签的文本去训练生成语言模型,再根据具体的NLP任务(如文本蕴涵、QA、文本分类等),来通过有标签的数据对模型进行fine-tuning。

具体来说,在这篇论文中提出了半监督的方法,即结合了无监督的预训练和有监督的fine-tuning。论文采用两阶段训练。首先,在未标记数据集上训练语言模型来学习神经网络模型的初始参数。随后,使用相应NLP任务中的有标签的数据地将这些参数微调,来适应当前任务。

模型的结构是使用了多层的单向Transformer结构(Decoder)(《Attention is All you need》提出)。下图是GPT语言模型的结构:
在这里插入图片描述
在这里插入图片描述
训练的两个阶段如下:(1和2)

1. 无监督的预训练

在这里插入图片描述
总体来说,我们想要基于u-k,…,u-1 去预测出u是什么
h 0 h_0 h0状态是由上下文词与词嵌入矩阵相乘,并加上位置嵌入矩阵得到的。
然后随后的 h 1 h_1 h1 h 2 h_2 h2…都是每一个时间点所得到的“隐藏层 h h h”,直到最后一个 h n h_n hn,将其与之前词嵌入矩阵相乘经过 s o f t m a x softmax softmax,即生成目标词的概率分布。

S o f t m a x Softmax Softmax的权重矩阵是 W e T W_e^T WeT,而输入端 W e W_e We也是词嵌入矩阵,这里注意一下即可。

注:上述过程是从公式的角度来看GPT预训练过程,从输入输出的角度来看,输入假设为ABCD,其输出(或者说label)其实也是ABCD,只不过其内部会自动每次基于前文来预测下一个词,比如:虽然输入整体是ABCD,但实际上模型内部首先会基于输入的<start>起始符去预测输出的第一个词,然后输出的第一个词和label里的第一个位置上的A算loss;然后再基于输入的<start> A去预测第二个词,然后第二个词和labe里的第二个位置上的B算loss,以此类推。所以输入输出的角度来看,输入输出都是相同的一句话,只不过模型内部会进行一个个词的预测,一个个算loss最后求和进行梯度更新。

2. 有监督的fine-tuning

在这里插入图片描述

3. 具体任务的模型微调

在这里插入图片描述

4. 实验

模型细节 我们的模型大体上和原始的transformer一致,我们训练了一个12层的只有decoder的transformer,使用有遮蔽自注意力头(包含768维状态和12个注意力头)。对于 position-wise feed-forward networks 我们使用3072维的内部状态。我们使用adam优化器,最高学习率为2.5e-4。学习率从0开始上升2000步然后通过cosine曲线下降到0,我们训练了100个epochs,64的batch size,相邻序列长度为512,因为大量使用了layernorm,我们的初始化只是用 N ( 0 , 0.02 ) N(0,0.02) N(0,0.02) 的分布。我们使用了subword(其包括wordpiece)的方式,dropout为0.1,我们同样适用了改进版L2,另外与原始transformer不同我们使用预训练的位置嵌入。

微调细节 我们直接使用预训练模型的参数,然后加上0.1的dropout,对于大多数任务我们的学习率为6.25e-5和32的batch大小。只需要微调3个epoch左右就能收敛。我们还使用了线性的学习率衰减,和0.2%训练步数来预热(即学习率达到达到最大值的步数)。

5. 补充

选用Transformer的Decoder是因为模型整体有线性层和softmax,和Decoder更相似。
微调的时候要学习所有的参数!!

GPT为什么不能双向?这个答案写的非常的好,Bert、GPT、ELMo全部都提及到了。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xu_Wave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值