图片来自网址:Jay Alammar on transformers
K_encdec 和 V_encdec 在与编码器输出的矩阵相乘中计算出来,并发送到解码器中每个解码器层的编码器-解码器注意力层。
先前的输出是步骤 2 中解码器的输入,但步骤 1 中解码器的输入是什么?只是 K_encdec 和 V_encdec 还是有必要通过输入第一个单词的矢量化输出(来自编码器)来提示解码器?
图片来自网址:Jay Alammar on transformers
K_encdec 和 V_encdec 在与编码器输出的矩阵相乘中计算出来,并发送到解码器中每个解码器层的编码器-解码器注意力层。
先前的输出是步骤 2 中解码器的输入,但步骤 1 中解码器的输入是什么?只是 K_encdec 和 V_encdec 还是有必要通过输入第一个单词的矢量化输出(来自编码器)来提示解码器?
在每个解码时间步,解码器接收 2 个输入:
</s>
。在每个解码步骤之后,解码器在位置的结果写入目标标记矩阵的位置,然后进行下一个解码步骤。例如,在 fairseq 的解码实现中,您可以看到他们如何创建目标令牌矩阵并在此处填充填充,然后他们如何将 EOS 令牌 ( ) 放置在此处</s>
的第一个位置。
由于您已经用标签标记了您的问题bert
,您应该知道我之前描述的仅适用于使用 Transformer 的序列到序列转换任务方式(即用于机器翻译时),而这不是 BERT 的工作方式. BERT 接受了掩码语言模型损失的训练,这使得它在推理时的使用与 NMT Transformer 大不相同。