我正试图围绕 Transformer 架构的工作原理展开思考。我想我对编码器部分有一个不错的顶级理解,有点像 Key、Query 和 Value 张量在 MultiHead 注意力层中的工作方式。我正在努力解决的是解码器部分,特别是第一个解码器层的输入。
我明白有两件事。最终编码器层的输出,但在此之前是嵌入式(位置编码+嵌入)版本......好吧。
在图 1 的原始论文中,他们提到第一个解码器层输入是输出(右移)。我对“右移”的含义有些困惑,但如果我不得不猜测,我会说以下情况正在发生
输入:<Start> 你好吗 <EOS> 输出:<Start> 我很好 <EOS>
因此第一个解码器层的输入将是 [<Start> 我很好]。
有什么需要改变顺序?为什么我们不只输入目标序列本身?我在想也许是因为解码器部分的自回归性质,但是如果我没看错的话,序列之间的唯一区别就是 <EOS> 标记。
正如您可能会说的那样,我对某些部分的工作方式有些困惑,因此非常感谢任何有助于更好地理解的帮助。