Given a token sequence , where means the sequence length and means the token dimension.

For each token (also called token embedding), we have

We first calculate three key variables, named query , key and value as follows.

[! note]- Details about the above formula

  • Token sequence
  • The correlative transformation matrix ,some paper call them query/key/value matrix @cordonnier2020relationship, respectively.

Then, self-attention operations is performed as

The output of self-attention operation is , obviously.


Beyond above descriptions, Let We call attention score, and its softmax output attention probabilities (calculated along each token)


如何理解 Q,K,V 和它们的维度

个人理解,可能不对,直接瞎说

假设空间 和空间 是分别是一个“表象空间”和一个比较理想的语义空间。

假设我们通过某些操作(比如矩阵乘法这种),得到了很多索引对<key-value>,假设有 N 对,即 key 和 query 的个数都是 N,而每 key 个的维度是 ,每个 value 的维度是

反正你也别问为啥找到的是索引对,你就记住就行 另外“表现空间”这个名词是我自己瞎取的

然后我们遇到了 query,query 可能有 M 个(可以不等于 N),但是注意其维度应该也是 ,应该在”表象空间”里

我们拿 1 个 query 举例,我们希望用这个 query 来对照着这个字典(就是这个索引对),找到最合适的 value,因为 value 又只能被 key 找到(一个角度我们从字典的角度来考虑,key 是 value 的外在体现 (即“表象”),value 是其具有分辨性的语义特征),所以我们先和 key 做内积,比较当前这个 query 和所有的 key 的相似性,后面归一化成概率(即“权”),然后利用这权重与对应的 value 进行加权求和得到 self-attention 的输出。

总结来说,self-attention 中有下面几个一定成立的数字和维度上的关系

  1. key 和 query 向量的维度一定是一样的(都在”表象空间”),而他们俩和 value 向量的维度可以不一样(value 在”语义空间”,但是两个空间可以是一个空间)
  2. key 和 value 向量的个数一定是一样的,而 query 的数量可以不一样。(因为 key 和 value 是一定成对出现的)

[! Note] 在 transformer 的 self-attention layer 中,1 和 2 提到的”可以不一样”的两个地方,都是一样的。


一些结论和性质

  • 对于输入的 token sequence,无论怎么调整 token 的顺序,其 self-attention 的输出都不变 @cordonnier2020relationship ,那这个显然对于位置敏感的任务或者模型就不是很好了