Transformer之所以能支持Decoder部分并行化训练

Transformer之所以能支持Decoder部分并行化训练,是基于以下两个关键点:

teacher force
masked self attention
对于teacher force,在其他seq2seq模型中也有应用。它是指在每一轮预测时,不使用上一轮预测的输出,而强制使用正确的单词。还以上面这个例子来说,第二轮时,给解码器模块输入“ I” 和 编码器的输出结果,解码器没有正确预测出“Iove”,而是得到了“want”。如果没有采用teacher force,在第三轮时,解码器模块输入的就是“ I want”。如果采用了 teacher force,第三轮时,解码器模块输入的仍然是“ I love”。通过这样的方法可以有效的避免因中间预测错误而对后续序列的预测,从而加快训练速度。而Transformer采用这个方法,为并行化训练提供了可能,因为每个时刻的输入不再依赖上一时刻的输出,而是依赖正确的样本,而正确的样本在训练集中已经全量提供了。值得注意的一点是:Decoder的并行化仅在训练阶段,在测试阶段,因为我们没有正确的目标语句,t时刻的输入必然依赖t-1时刻的输出,这时跟之前的seq2seq就没什么区别了。

对于masked self attention,它本质就是一种自注意力,只是加了一个mask,也正是这个mask为Decoder提供了并行化训练的可能。为了更好的说明mask的作用,我自己手画了两个简图,画的比较丑,请读者凑合着看。

上图是一个普通的自注意力机制示意图,实际上Encoder部分的自注意力机制大概就是这个关系。图中为了不太凌乱,我没有画出z2 、z3、z4 与x1:4 的关联,实际上Z1:4 和x1:4

是两两关联的。

有的读者可能发现了,这是不是类似于一个的全连接网络?

其实自注意力机制本质就是一种全连接网络,只是普通的全连接网络每层的节点数量在建立模型时就已经确定了,对于一个模型这些连接的权重也通过训练得到。

而自注意力机制可以适应不同长度的输入,这些权重是由K、Q动态生成的,我们要训练得到的是产生K、Q的参数矩阵。这一点和我们要说的并行化训练关系不大,只是做一点补充。

以上这个自注意力模型在训练Decoder无法直接使用,因为Decoder是在做解码,解码时要求第t时刻的输出,是看不到t时刻以后的样本的。换句话说,我们需要把

z1和x2:4 之间的连接去掉,z1 只与x1 相关。同理 只与 相关,只与 相关 ,与 全相关。如下图所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值