变压器模型中解码器的第一个输入是什么?

数据挖掘 nlp 顺序 伯特 变压器
2021-09-26 06:49:01

来自 https://jalammar.github.io/illustrated-transformer/

图片来自网址:Jay Alammar on transformers

K_encdec 和 V_encdec 在与编码器输出的矩阵相乘中计算出来,并发送到解码器中每个解码器层的编码器-解码器注意力层。
先前的输出是步骤 2 中解码器的输入,但步骤 1 中解码器的输入是什么?只是 K_encdec 和 V_encdec 还是有必要通过输入第一个单词的矢量化输出(来自编码器)来提示解码器?

1个回答

在每个解码时间步,解码器接收 2 个输入:

  • 编码器输出:计算一次,并在每个解码时间步作为密钥馈送到解码器的所有层(Kendec) 和值 (Vendec) 用于编码器-解码器注意块。
  • 解码到当前解码步骤的目标标记:对于第一步,矩阵在其第一个位置包含一个特殊标记,通常是</s>在每个解码步骤之后k,解码器在位置的结果k写入目标标记矩阵的位置k+1,然后进行下一个解码步骤。

例如,在 fairseq 的解码实现中,您可以看到他们如何创建目标令牌矩阵并在此处填充填充,然后他们如何将 EOS 令牌 ( ) 放置在此处</s>的第一个位置

由于您已经用标签标记了您的问题bert,您应该知道我之前描述的仅适用于使用 Transformer 的序列到序列转换任务方式(即用于机器翻译时),而这不是 BERT 的工作方式. BERT 接受了掩码语言模型损失的训练,这使得它在推理时的使用与 NMT Transformer 大不相同。