学习来源:全网最通俗易懂的 Self-Attention自注意力机制 讲解_self attention机制_越来越胖的GuanRunwei的博客-CSDN博客
变形金刚——Transformer入门刨析详解_哪有灬平凡?的博客-CSDN博客
Attention Function:
一、Softmax部分
是一个矩阵乘以它的转置,矩阵本身的运算是第一行乘第一列,第一行乘第二列......,第二行乘第一列,第二行乘第二列......,......。因此,一个矩阵乘以它的转置矩阵时,转置后的第一列就是转置前的第一行,这就是在计算第一个向量与自己的内积,第一行与第二个行向量的内积,第一个行向量与第三个行向量的内积。
内积:
内积的含义就是一个向量在另一个向量上的投影,当两个相同向量做内积时,即,即,即,即,也就等于的平方。
假设 ,其中为一个二维矩阵,为一个行向量(很多教材默认是列向量,但为了方便读者理解,我还是写成行向量)。对应下面的图,对应“早”字。
下图模拟了一个运算过程,即X乘X的转置。
投影值越大表示两个向量的相关性越高。
矩阵是一个方阵,我们以行向量的角度理解,里面保存了每个向量和自己与其他向量进行内积运算的结果。
至此,我们理解了公式中,的意义。我们进一步,Softmax的意义何在呢?请看下图:
Softmax的含义就是归一化
Softmax之后,这些数字的和为1,attention的核心机制就是加权求和,而权重就是这些归一化之后的数字,“早”这个字的权重分配0.4,“上”分配0.4,“好”分配0.2。
二、
取的一个行向量举例。这个行向量与的一个列向量相乘,得到一个新的行向量,且这个行向量与x的维度相同。在新的向量中,每一个维度的数值都是由三个词向量在这一维度的数值加权求和得来的,这个新的行向量就是"早"字词向量经过注意力机制加权求和之后的表示。
三、Q K V矩阵
许多文章里所谓的Q K V矩阵、查询向量之类的字眼,其来源都是与矩阵的乘积,本质上都是的线性变换。那么为什么不直接使用而要对其进行线性变换呢?
当然是为了提升模型的拟合能力,矩阵都是可以训练的,起到一个缓冲的效果。
四、的意义
假设 都服从均值为0,方差为1的标准高斯分布,那么中元素的均值为0,方差为d。当d变得很大时,中的元素的方差也会变得很大,如果中的元素方差很大,那么的分布会趋于陡峭(分布方差大,分布集中在绝对值大的区域)。总结一下就是的分布会和d有关。因此中每个元素除以后,方差又变为了1。这使得的分布的陡峭程度和d成功解耦,从而使得Transformer在训练过程中的梯度值保持稳定。