Transformer 架构中第一个解码器的输入是什么

问题描述 投票:0回答:1

在原始论文的变压器架构中,我参考了很多文本,但我无法解决这个见解。

让我们从输入句子开始,“猫跳了。”

我的理解是,每个单词都是由每个编码器并行处理的。也就是说,以单词 cat 为例,生成它的嵌入,然后对其进行位置编码以生成另一个向量。然后,根据注意力计算,生成最终向量。然后将其传递到编码器的前馈部分。对于输入句子的所有其他单词,此过程是并行完成的。重复此操作直到第 6 个编码器。因此,在最后一个编码器中,句子的每个单词都有三个输出。如果是这种情况,第一个解码器接收什么作为输入?所有三个输出依次、并行、串联还是合并?我认为没有使用串联,因为解码器具有固定的输入大小。

transformer-model encoder decoder
1个回答
0
投票

参考参考部分下面列出的优秀注释后,我找到了答案并将其发布给将来的其他新手。参考文献 3 中的 gif(来自 google 的转换器教程)准确地表示了所有解码器处理的内容,参考文献 3 中教程的“运行推理”部分也描述了所发生的情况。通常发生的情况是,所有解码器仅使用最后一个编码器的 K、V 输出。这是为了计算输入句子“The cat Jump”的编码器表示的注意力值。 。解码过程与编码过程完全相同,不同之处仅在于添加了交叉注意力。 所有解码器的输入是解码器本身生成的当前输出序列,最初只是 [start] 标记,然后是来自最后一个编码器的注意力值 K 和 V

以下是解码过程的工作原理。输入句子“The cat Jump”导致最后一个编码器输出所有三个单词的 K、V 值。然后,[start] 标记作为解码器的输入给出。解码器的自注意力仅使用到目前为止的初始输出序列(即 [start] 标记)来计算。然后将 [start] 标记的查询 Q 值与最后一个编码器的 K,V 值一起使用来计算句子“The cat Jumped”的编码表示的注意力。然后,我们对起始标记有四个注意值,它们组合起来创建 [start] 标记的向量表示,该向量表示被馈送到解码器的前馈网络,生成第一个输出词 ow1(输出词 1),这可以成为某种语言中第一个翻译的单词。然后使用序列 [start] ow1 重复相同的过程。然后,处理 [ow1] 的解码器的输出将产生下一个生成的单词 ow2。重复此操作,直到生成 [end] 令牌。

参考:

  1. https://ai.stackexchange.com/questions/36688/last-linear-layer-of-the-decoder-of-a-transformer

  2. https://www.reddit.com/r/learnmachinelearning/comments/18u929u/comment/kfoktol/

  3. 教程中的gif https://www.tensorflow.org/text/tutorials/transformer
    实际的 gif:https://www.tensorflow.org/images/tutorials/transformer/apply_the_transformer_to_machine_translation.gif

  4. http://jalammar.github.io/illusterated-transformer/

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.