Transformer Decoder的输入

大部分引用参考了既安的https://www.zhihu.com/question/337886108/answer/893002189这篇文章,个人认为写的很清晰,此外补充了一些自己的笔记。


弄清楚Decoder的输入输出,关键在于图示三个箭头的位置:

在这里插入图片描述

以翻译为例:

  • 输入:我爱中国
  • 输出: I Love China

因为输入(“我爱中国”)在Encoder中进行了编码,这里我们具体讨论Decoder的操作,也就是如何得到输出(“I Love China”)的过程。

Decoder执行步骤

Time Step 1

  • 初始输入: 起始符</s> + Positional Encoding(位置编码)
  • 中间输入:(我爱中国)Encoder Embedding
  • 最终输出: 产生预测“I”

Time Step 2

  • 初始输入:起始符</s> + “I”+ Positonal Encoding
  • 中间输入:(我爱中国)Encoder Embedding
  • 最终输出:产生预测“Love”

Time Step 3

  • 初始输入:起始符</s> + “I”+ “Love”+ Positonal Encoding
  • 中间输入:(我爱中国)Encoder Embedding
  • 最终输出:产生预测“China”

图示

在这里插入图片描述

整体右移一位(Shifted Right)

在这里插入图片描述

论文在Decoder的输入上,对Outputs有Shifted Right操作。

Shifted Right 实质上是给输出添加起始符/结束符,方便预测第一个Token/结束预测过程。

正常的输出序列位置关系如下:

  • 0-“I”
  • 1-“Love”
  • 2-“China”

但在执行的过程中,我们在初始输出中添加了起始符,相当于将输出整体右移一位(Shifted Right),所以输出序列变成如下情况:

  • 0-【起始符】
  • 1-“I”
  • 2-“Love”
  • 3-“China”

这样我们就可以通过起始符预测“I”,也就是通过起始符预测实际的第一个输出。

笔记

在这里插入图片描述
Transformer中Decoders也是 N=6 层,通过上图我们可以看到每层 Decoder 包括 3 个 sub-layers:

  • 第一个 sub-layer是 Masked Multi-Head Self-Attention,这个层的输入是:
    前一时刻Decoder输入+前一时刻Decoder的预测结果 + Positional Encoding。

  • 第二个sub-layer是Encoder-Decoder Multi-Head Attention,这个层的输入是:
    Encoder Embedding+上层输出。
    也就是在这个层中:
    Q是Decoder的上层输出(即Masked Multi-Head Self-Attention的输出)
    K\V是Encoder的最终输出
    tips:这个层不是Self-Attention,K=V!=Q(等号是同源的意思)。

  • 第三个 sub-layer 是前馈神经网络层,与 Encoder 相同。

总结

Transformer Decoder的输入:

  • 初始输入:前一时刻Decoder输入+前一时刻Decoder的预测结果 + Positional Encoding
  • 中间输入:Encoder Embedding
  • Shifted Right:在输出前添加起始符,方便预测第一个Token
  • 18
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值