文章目录
- 4.自注意力机制的理解
- 步骤 4
4.自注意力机制的理解
步骤 4
我们计算了查询矩阵和键矩阵之间的点积,得到了分数,然后使用softmax函数对分数进行了归一化。现在,自注意力机制的最后一步是计算注意力矩阵Z。
注意力矩阵包含句子中每个单词的注意力值。我们可以通过将分数矩阵softmax(QK/sqrt(dk))乘以值矩阵 V来计算注意力矩阵Z,如下图所示:
图1.16 - 计算注意力矩阵
假设我们有以下结果:
图1.17 - 注意力矩阵的结果
注意力矩阵Z是通过将值向量乘以分数并求和来计算的。让我们逐行理解这一点。首先,让我们看看第一行z1,单词“I”的自注意力是如何计算的:
图1.18 - 单词“I”的自注意力
从前面的图中,我们可以理解,单词“I”的自注意力z1是通过将值向量乘以分数并求和来计算的。因此,z1的值将包含来自值向量v1(I)的90%的值,来自值向量v2(love)的7%的值,以及来自值向量v3(learning)的3%的值。
但这有什么用呢?为了回答这个问题,让我们回到前面提到的例子句子: “The little girl fell asleep in her mother’s arms because she was tired.”这里,单词“she”指的是“girl”。要计算单词“she”的自注意力,我们遵循前面相同的步骤。假设我们有以下结果:
图1.19 - 单词“she”的自注意力
从前面的图中,我们可以理解单词“she”的自注意力值包含了来自值向量(girl)的100%的值。这帮助模型理解单词“she”实际上是指“girl”而不是“mother”。因此,通过使用自注意力机制,我们可以理解一个单词如何与句子中的所有其他单词相关。
现在,回到我们的例子,单词“love”的自注意力是通过将值向量乘以分数并求和来计算的,如下所示:
图1.20 - 单词“love”的自注意力
从前面的图中,我们可以观察到,z2的值将包含来自值向量v1(I)的2.5%的值,来自值向量v2(love)的95%的值,以及来自值向量v3(learning)的2.5%的值。
同样,单词“learning”的自注意力是通过将值向量乘以分数并求和来计算的,如下所示:
图1.21 - 单词“learning”的自注意力
这意味着z3的值将包含来自值向量 v1 (I) 的21%的值,来自值向量 v2 (love) 的3%的值,以及来自值向量 v3 (learning) 的76%的值。
因此,注意力矩阵 由句子中所有单词的自注意力值组成,计算方式如下:
为了更好地理解自注意力机制,涉及的步骤总结如下:
(1)首先,我们计算查询矩阵Q和键矩阵K之间的点积Q.KT,得到相似度分数。
(2)接下来,我们将结果Q.KT除以键向量维度的平方根sqrt(dk)。
(3)然后,我们应用softmax()函数对分数进行归一化,得到分数矩阵softmax((Q.KT)/ sqrt(dk))。
(4)最后,我们通过将分数矩阵乘以值矩阵V来计算注意力矩阵Z。
自注意力机制在图形上展示如下:
图1.22 - 自注意力机制
自注意力机制也被称为缩放点积注意力,因为在这里我们计算的是点积(查询向量和键向量的点积)并缩放值(乘以sqrt(dk))。
现在我们已经理解了自注意力机制是如何工作的,下一节我们将学习多头注意力机制。
感谢您的阅读,欢迎关注!