GPT:Improving Language Understanding by Generative Pre-Training(2018-6-12)

模型介绍

自然语言理解包括各种各样的任务,例如文本蕴含,问题回答,语义相似性评估和文档分类。 尽管大型的未标记文本语料库很丰富,但是学习这些特定任务的标记数据却很少,这使得经过严格训练的模型难以充分发挥作用。

通过在各种未标记文本的语料库上对语言模型进行生成式预训练(GPT,genertive pre-training),然后对每个特定任务进行判别性微调(DFT,discriminative fine-tuning),这些任务实现了巨大收益。与以前的方法相比,我们在微调过程中利用了任务感知的输入转换来实现有效的迁移,同时只要求模型架构的更改最小。

模型改进

训练过程包括两个阶段。第一阶段是学习大量文本语料库上的高容量语言模型;第二阶段是微调,使模型适应带有标签数据的判别性任务。

无监督预训练

给定无监督的分词语料 U = { u 1 , . . . , u n } U=\{u_1,...,u_n\} U={u1,...,un},使用标准的语言建模目标,最大化似然估计:

L 1 ( U ) = ∑ i log ⁡ P ( u i ∣ u i − k , . . . , u i − 1 ; Θ ) L_1(U)=\displaystyle\sum_i\log P(u_i|u_{i-k},...,u_{i-1};\Theta) L1(U)=ilogP(uiuik,...,ui1;Θ)

其中 k 是上下文窗口的大小,以及条件概率 P,这些参数使用随机梯度下降训练。

实验使用多层Transformer解码器作为语言模型,这是Transformer的一种变体如Transformer)。模型对输入上下文分词应用多头自注意操作,继之以位置相关前馈层,在目标分词上产生输出分布:

h 0 = U W e + W p h_0=UW_e+W_p h0=UWe+Wp

h l = t r a n s f o r m e r _ b l o c k ( h l − 1 ) , ∀ i ∈ [ 1 , n ] h_l=transformer\_block(h_{l-1}),\forall i \in[1,n] hl=transformer_block(hl1),i[1,n]

P ( u ) = s o f t m a x ( h n W e T ) P(u)=softmax(h_nW^T_e) P(u)=softmax(hnWeT)

其中 U U U为上下文分词向量, n n n 为层数, W e W_e We 是分词, W p W_p Wp 为位置嵌入矩阵。

有监督微调

在经过预训练后,将使模型参数适应有监督的目标任务。假设一个标记数据集 C C C,其中每个实例由一系列输入分词组成的序列 x 1 , . . . , x m x^1,...,x^m x1,...,xm,以及标签 y y y。输入经过预训练模型,获得最终的Transformer-Block的激活 h l m h_l^m hlm,最后送入带参数 W y W_y Wy 的线性输出层去预测 y y y

P ( y ∣ x 1 , . . . , x m ) = s o f t m a x ( h l m W y ) P(y|x^1,...,x^m)=softmax(h^m_lW_y) P(yx1,...,xm)=softmax(hlmWy)

然后最大化目标函数:

L 2 ( C ) = ∑ ( x , y ) log ⁡ P ( y ∣ x 1 , . . . , x m ) L_2(C)=\displaystyle\sum_{(x,y)} \log P(y|x^1,...,x^m) L2(C)=(x,y)logP(yx1,...,xm)

通过实现还发现,将语言建模作为微调的辅助目标,有助于通过学习改进监督模型的泛化,加速收敛。使用这种辅助目标可以改善性能。具体而言,优化了以下目标:

L 3 ( C ) = L 2 ( C ) + λ ∗ L 1 ( C ) L_3(C)=L_2(C)+\lambda * L_1(C) L3(C)=L2(C)+λL1(C)

总之,在微调期间唯一需要的额外参数是 W y W_{y} Wy ,以及定界符标记的嵌入。

具体任务的输入

对于某些任务,例如文本分类,可以直接微调模型。其他任务,例如问题解答或文本蕴含,具有结构化的输入,例如有序句子对、<文档,问题,答案>
三元组。由于我们的预训练模型是在连续的文本序列上训练的,因此我们需要进行一些修改才能将其应用于这些任务。这种方法重新引入了大量的特定于任务的定制化,并且不将迁移学习用于这些额外的架构组件。

在这里插入图片描述

替代方案,可以使用遍历样式的方法,其中将结构化输入转换为我们的预训练模型可以处理的有序序列。这些输入转换使我们能够避免跨越任务对架构进行大量更改。在下面提供了这些输入转换的简短描述,上图提供了直观的图示。所有转换都包括添加随机初始化的起始符号和结束符号(<s>,<e>)。

文本蕴含

对于蕴含任务,我们连接前提p和假设h为符号序列,在在两者之间插入定界符($)。

相似度

对于相似度任务,没有两个被比较句子的固有顺序。为了反映这一点,我们修改了输入序列以包含两个可能的句子顺序(之间有一个定界符),并分别进行独立处理以产生两个序列表示 ,它们在被馈送到线性输出层之前逐个元素地添加。

问题解答和常识推理

对于这些任务,我们获得了上下文文档 z z z,问题 q q q 和一组可能的答案 a k {a_k} ak。我们将文档上下文和问题与每个可能的答案连接起来,在两者之间添加定界符标记 [ z ; q ; [z; q; [z;q;$ ; a k ] ;a_k] ;ak]。这些序列中的每一个都由我们的模型独立处理,然后通过softmax层进行归一化以在可能的答案上产生输出分布。

模型参考

论文地址:https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

代码地址1:https://github.com/openai/finetune-transformer-lm
代码地址2:https://openai.com/blog/language-unsupervised

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不负韶华ღ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值