本文主要介绍Transformer的核心Self-Attention的原理。
目录
第1章 向量点积
1.1 Self-Attention公式
Transformer原论文中将核心部分称为Scaled Dot-Product Attention,缩放点积注意力,最核心的公式为:
Q:Query,查询,由输入矩阵变换而来;
K:key,键,由输入矩阵变换而来;
V:value,值,由输入矩阵变换而来。
1.2 向量点积
对于给定的一组向量与
,点积表示为:
向量点积的几何意义是:向量x在向量y方向上的投影再与向量y的乘积,能够反应两个向量的相似度。向量点乘结果大,两个向量越相似。这也是自注意力的基础。
1.3 矩阵相乘
根据上文提到的向量点积进行进一步拓展。我们已经知道,向量的点积表明的是两个向量之间的相似度,那么如果是向量与本身做点积呢?对于一个给定的向量,进行如下操作:
则得到的矩阵内的每个元素表示原向量中第个元素与第
个元素的相似度。将其称为相似度矩阵。
第2章 Self-Attention自注意力机制
再回到缩放点积注意力上来,与上文提到的相似度矩阵矩阵相结合,相似性就体现出来了。
对于一个输入矩阵,我们求出其与本身的相似度矩阵
。相似度矩阵内的元素则为每个元素与其他元素的相似度大小,接下来,对得到的相似度矩阵进行softmax。
2.1 softmax
softmax可以将输入映射为0-1之间的实数,并且归一化保证和为1,这里注意到在多分类任务中,概率之和也为1。在多分类任务中,往往可以将softmax之后的输出当作是属于每个分类的概率。在self-attention中,则用到了另外一种含义。考虑到softmax保证了归一化之后的和为1,则我们可以将softmax后得到的矩阵当作是权重矩阵,权重矩阵内的元素值越大,则表明相似度越高。
得到权重矩阵后,将其与原矩阵相乘,得到
,这个过程其实就是将权重矩阵的每一行与原矩阵的每一列进行加权求和,值得注意的是,权重矩阵的每一行都是归一化的,每个元素代表了点的相似度权重,进行如此的加权求和,相当于融入了全局的权重信息,这也就是为何自注意力机制可以考虑到全局信息。
2.2 自注意力机制
最后,得到了经过加权求和的矩阵,再与自注意力机制公式相对比,
两个公式本质上是完全等价的。上文提到实际上是输入矩阵
的线性投影矩阵,该过程是为了增强神经网络的可拟合性。最后,还剩下一个因子
,实际上
为
的维度大小,这个因子的作用是防止输入的值过大,使得梯度更加稳定,这个过程也就是缩放。
自注意力机制,即缩放点积注意力,本质上就是通过向量的点积来反应向量之间的相似度关系,从而获得全局的信息。