当前位置:   article > 正文

Transformer Decoder详解_transformer decoder的输入

transformer decoder的输入

这两天在学习Transformer,看了李沐的论文解读NLP从入门到放弃,看完这两个视频算是大致明白了Transformer的结构。

关于Self-Attention、Multi-Head Attention以及Poisitonal Encoding强烈建议看一下这篇文章:详解Transformer中Self-Attention以及Multi-Head Attention

但是对于Decoder部分,依然是有点模糊,不知道Decoder的输入到底是什么,也不知道Decoder到底是不是并行计算,还有Encoder和Decoder之间的交互也不是很清晰,于是去看了李宏毅的讲解视频:强烈推荐!台大李宏毅自注意力机制和Transformer详解!,才算是明白了Decoder的运行机制,于是想着总结一下。

1. Decoder的输入到底是什么

在train模式下和在test模式下Decoder的输入是不同的,在train模式下Decoder的输入是Ground Truth,也就是不管输出是什么,会将正确答案当做输入,这种模式叫做teacher-forcing。但是在test模式下根本没有Ground Truth去teach,那只能将已经出现的词的输出(注意这里的输出是走完整个Decoder计算得到预测结果而不是走完一层Decoder的输出)当做下一次Decoder计算的输入,我想这也是论文中shifted right的意思,一直往右移。

2. Decoder到底是不是并行计算的

在Transformer中,最被人津津乐道,也是他相较于RNN类型模型最大的优点之一就是他可以并行计算,但是这个并行计算仅限于在Encoder中,在Encoder中是将所有的词一起输入一起计算,但是在Decoder中不是的,在Decoder中依然是像RNN一样一个一个词输入,将已经出现的词计算得到的Q与Encoder计算得到的K,V进行计算,经过了全部Decoder层再经过FC+Softmax得到结果之后再把结果当做Decoder的输入再走一遍整个流程直到得到END标签。

3. Encoder与Decoder之间的交互

Encoder与Decoder之间的交互不是每一层一一对应的,而是Encoder 6层全部计算完得到K和V之后再将K和V传给Decoder的每一层与其计算得到的Q进行计算。但是看了李宏毅老师的视频,发现这是不一定的,可以自己发挥想象力自定义Encoder和Decoder之间的连接方式。


参考资料

Transformer中的Decoder详解_CuddleSabe的博客-CSDN博客_transformer的decoder//与本文互补

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/348299
推荐阅读
相关标签
  

闽ICP备14008679号