Transformer中的自注意力

Transformer中的自注意力

参考链接https://blog.csdn.net/u012526436/article/details/86295971

self-attention,其思想和attention类似,但是self-attention是Transformer用来将其他相关单词的“理解”转换成我们正在处理的单词的一种思路,我们看个例子:
The animal didn’t cross the street because it was too tired
这里的it到底代表的是animal还是street呢,对于我们来说能很简单的判断出来,但是对于机器来说,是很难判断的,self-attention就能够让机器把it和animal联系起来,接下来我们看下详细的处理过程。

  1. 首先,self-attention会计算出三个新的向量,我们把这三个向量分别称为Query、Key、Value。这三个向量是用embedding向量与一个矩阵相乘得到的结果,这个矩阵是随机初始化的。三个参数矩阵的维度是 W Q , W K , W V ∈ R d x ✖ d z W^{Q},W^{K},W^{V }\in \mathbb{R} ^{dx ✖ dz} WQ,WK,WVRdxdz
    其中,dx是输入序列每个元素的维度,即embedding向量的维度,dz是线性转换后的维度。
    Transformer中的自注意力_第1张图片
    2、计算self-attention的分数值,该分数值决定了当我们在某个位置encode一个词时,对输入句子的其他部分的关注程度。这个分数值的计算方法是Query与Key做点乘,以下图为例,首先我们需要针对Thinking这个词,计算出其他词对于该词的一个分数值,首先是针对于自己本身即q1·k1,然后是针对于第二个词即q1·k2
    Transformer中的自注意力_第2张图片
    3.接下来,把点乘的结果除以一个常数,这里我们除以8,这个值一般是采用dz的开方,当然也可以选择其他的值,然后把得到的结果做一个softmax的计算。得到的结果即是每个词对于当前位置的词的相关性大小,当然,当前位置的词相关性肯定会会很大。
    Transformer中的自注意力_第3张图片
    4、下一步就是把Value和softmax得到的值进行相乘,并相加,得到的结果即是self-attetion在当前节点的值。
    Transformer中的自注意力_第4张图片
    在实际的应用场景,为了提高计算速度,我们采用的是矩阵的方式,直接计算出Query, Key, Value的矩阵,然后把embedding的值与三个矩阵直接相乘,把得到的新矩阵Q与K相乘,乘以一个常数,做softmax操作,最后乘上V矩阵
    Transformer中的自注意力_第5张图片
    Transformer中的自注意力_第6张图片
    这种通过 query 和 key 的相似性程度来确定 value 的权重分布的方法被称为scaled dot-product attention。

相信到这里你对自注意力的计算过程已经有了一定了解,接下来我们从公式的角度来推导这个过程
首先我们关注一下自注意力模块的输入和输出。输入是序列 x = (x1,x2,…,xn),其中每个元素的维度都是dx。输出是新的序列z=(z1,z2,…,zn),其中每个元素的维度都是dz。
(1) 每一个输出元素,z_i,计算为输入元素线性转换后的加权和:
z i = ∑ j = 1 n α i j ( x j W V ) z_{i}=\sum ^{n}_{j=1}\alpha _{ij}\left( x_{j}W^{V }\right) zi=j=1nαij(xjWV)
(2) 每一个权重系数,α_ij是用softmax函数计算得到的:
α i j = exp ⁡ e i j ∑ k = 1 n exp ⁡ e i k \alpha _{ij}=\dfrac {\exp e_{ij}}{\sum ^{n}_{k=1}\exp eik} αij=k=1nexpeikexpeij
(3) e_ij是使用比较两个输入元素的兼容性函数计算得到的:
e i j = ( x i W Q ) ( x j W K ) T d z e_{ij}=\dfrac {\left( x_{i}W^{Q}\right) \left( x_{j}W^{K}\right) ^{T}}{\sqrt {dz}} eij=dz (xiWQ)(xjWK)T
三个参数矩阵的维度分别是
W Q , W K , W V ∈ R d x ✖ d z W^{Q},W^{K},W^{V }\in \mathbb{R} ^{dx ✖ dz} WQ,WK,WVRdxdz
下面附一张我推导的图
Transformer中的自注意力_第7张图片

以上即为Transformer中的自注意力结构,下篇会讲到多头自注意力。

你可能感兴趣的:(Transformer中的自注意力)