《Attention Is All You Need》论文中编码器和解码器的注意力模型的key和value是什么?

人工智能 深度学习 自然语言处理 变压器 注意力
2021-11-03 00:23:24

我最近遇到了关于 NLP 的论文。这对我来说很新,我仍然无法看到它是如何工作的。我已经使用了那里的所有资源,从原始论文到 Youtube 视频和非常著名的“Illustrated Transformer”。

假设我有一个“我是学生”的训练示例,并且我有相应的法语为“Je suis etudient”。

我想知道这 3 个单词是如何转换为 4 个单词的。什么是查询、键、值?

这是我目前对这个话题的理解。

编码器部分是:

  • 查询:嵌入向量形式的单个词。例如“I”表示为长度为 5 的向量[.2,0.1,0.4,0.9,0.44].

  • Keys:所有向量的矩阵,或者简单的单词,一个以嵌入形式包含句子中所有单词的矩阵。

  • 值 = 键

对于解码器:

  • 查询:向量形式的输入词(由解码器在前一次传递中给出的输出)。

  • 键 = 值 = 编码器层的输出。

但是有 2 个不同的注意力层,其中一个根本不使用编码器的输出那么,现在的键和值是什么?(我认为它们就像编码器,但只是生成直到通过)?

1个回答

但是有 2 个不同的注意力层,其中一个根本不使用编码器的输出。那么,现在的键和值是什么?

解码器中的第一个注意力层是“Masked Multi-Head Attention”层,是自注意力层,计算每个单词与同一个句子中每个单词的相关程度。然而,我们在解码器中的目标是生成下一个法语单词,因此对于任何给定的输出法语单词,我们可以使用所有英语单词,但只能使用句子中之前看到的法语单词。因此,我们通过将后面出现在法语句子中的单词“屏蔽”为 0,因此注意力网络无法使用它们。

这 3 个词如何转换为 4 个词

解码器中的第二个注意块是发生英语到法语单词映射的地方。我们对法语句子中的每个输出位置都有一个查询,对每个英语输入单词都有一个键/值。我们从查询和键的点积计算相关性分数,然后通过将相关性和值相乘获得每个预测词的输出分数。下图有助于可视化对于每个预测的单词,我们可以如何获得相关分数,该分数可以预测一个英语单词可以翻译成多个或没有法语单词。

在此处输入图像描述

总之,编码器发现英语句子的有趣之处,而解码器预测翻译中的下一个法语单词。需要注意的是,他们使用“Multi-Head Attention”,意思是计算一个数量(原论文中为 8 个)的注意力向量来学习注意力机制来关注不同的事物,例如语法、词汇、时态、性别,输出是这些的加权平均值。