自注意力机制(self-attention)
首先,其核心思想为:
其中,Q为query, ,即查询、要查询的信息
K为key, ,即索引、被查询的向量
V为value, ,即值、查询到的内容
dk代表k的维度,除以k的维度的平方根,使训练时的梯度保持稳定
Q,K,V都是输入x经过经过线性变换得到的,和它们分别相乘的三个矩阵W是通过学习得到的矩阵,使用这样的线性变换可以提高的模型的拟合能力
举一个例子
有一个渣男,他有 n 个备胎,他想要从自己的备胎里寻找最符合自己期望的,好分配注意力和管理时间
用 Q 表示择偶标准,K表示自身条件,V表示被匹配到的备胎
所以不论是渣男,还是备胎,都有着自己的一套Q,K,V
那么,当渣男开始筛选备胎时,肯定是备胎条件与渣男的择偶标准相符合时比较好,也就是备胎的 K 与渣男的 Q 相似度更高时
对于两个向量点乘的几何意义:向量A与向量B的点乘,也就是A在B向量上的投影,所以点乘的大小可以表示A与B向量的相似度。当两个向量垂直时,我们知道它们点乘的结果为0,说明这两个向量没有一点相关性,所以同样,当两个向量点乘的结果越大时,说明两个向量的相似度就越高
再看向 ,矩阵Q与矩阵K的转置相乘,相当于Q的每一行和K的每一行进行点乘,也就是每个行向量的相似度,然后使用函数对结果进行归一化,也就是让所有元素的和为1,我们就得到了一个权重矩阵,接下来用得到的权重矩阵给匹配到的备胎加权,也就是将权重矩阵与V相乘,渣男就知道该对每个备胎付出多少注意力了