我正在学习注意力模型,并跟随Jay Alammar关于Illustrated Transformer的精彩博客教程。他提供了很好的演练,说明了如何计算注意力得分,但我在某一点上有些茫然,并且看不到他解释的注意力得分Z
矩阵如何用于解释不同单词之间的联想强度在输入序列中。
他提到给定某些输入矩阵X
,形状为N x D
,其中N
是输入序列中元素的数量,D
是输入维数,我们将X
与形状为D x d
的三个单独的权重矩阵相乘,其中d
是一些较低的维数,表示查询,键和值矩阵的投影空间:
将查询矩阵和关键矩阵加点,然后除以比例因子(通常是投影维数的平方根),然后通过softmax函数运行。这将生成一个大小为N x N
的权重矩阵,将其与值矩阵相乘即可得到形状为Z
的输出N x d
,Jay说
到此结束自我注意力的计算。所得向量为 我们可以将其发送到前馈神经网络。
他的博客中用于此计算的屏幕截图如下:
但是,这是我感到困惑的地方。 Z
是N x d
。但是,从可解释性的角度,据我所知,对于特定的序列元素(即序列{{中的词cats
1}}),当与该词嵌入相关或强烈相关时,自我注意力应该在该序列的其他部分得分较高。但是,我希望I love pets, especially cats
是Z
,所以我可以说我可以选择N x N
并为序列中的Z[i,j]
单词说{ {1}}这个词与这个词有或多或少相关。
实际上,仅使用权重的softmax输出(不将其乘以值矩阵)是否更有意义,因为它已经是i-th
了?本质上,周杰伦如何确定这些特定顺序中与单词j-th
的关联强度?
这是他所显示的N x N
乘it
的关系-有N
个值对应于与单词1
的关联强度。