Self-Attention
前情提要
- 注意力机制:我们在看一幅图的时候,不会去看它的所有信息,相反我们倾向于看一些重点,并把我们的焦点放到这些重要信息上,过程如下:
- 首先:Q、K相乘求相似度,并做一个Scale缩放(避免未来做softmax的时候出现极端情况),然后通过softmax得到概率,并与V做乘加操作得到新的V’,这个V‘包含了原本的Q中跟K很相似,很重要的信息,也就是新的V’包含了注意力信息
自注意力机制
- Selft-Attention的关键点在于: X K X_K XK ≈ \approx ≈ X V X_V XV ≈ \approx ≈ X Q X_Q XQ,这三者同源,都来自于同一个输入X
- 步骤如下:
- 通过
W
Q
W^Q
WQ、
W
K
W^K
WK、
W
V
W^V
WV三个矩阵来获取
X
K
X_K
XK
≈
\approx
≈
X
V
X_V
XV
≈
\approx
≈
X
Q
X_Q
XQ:
- 通过
W
Q
W^Q
WQ、
W
K
W^K
WK、
W
V
W^V
WV三个矩阵来获取
X
K
X_K
XK
≈
\approx
≈
X
V
X_V
XV
≈
\approx
≈
X
Q
X_Q
XQ:
- 之后的步骤和注意力机制一样
-
q
1
q_1
q1和
k
1
k_1
k1点乘,
q
1
q_1
q1和
k
2
k_2
k2点乘得到相似度s
- 先做一个scale缩放,除
d
k
\sqrt{d_k}
dk,再做softmax得到概率a
- 注意:由于
x
1
x_1
x1:Thinking和它本身显然要比和
x
2
x_2
x2:Machines更为相似,所以得到的概率也就更大
- 注意:由于
x
1
x_1
x1:Thinking和它本身显然要比和
x
2
x_2
x2:Machines更为相似,所以得到的概率也就更大
- 最后,将
q
1
q_1
q1中和每个K点乘得到的的概率,和V相乘,并求总和,得到
z
1
z_1
z1
- 而 z 1 z_1 z1就是Thinking这个输入的新的V’,且包含了每一个单词和Thinking的相似度,包括Thinking本身。
- 换句话说:如果我们的输入
x
1
x_1
x1为Thinking的初始词向量,那么我们通过Self-Attention得到的
Z
1
Z_1
Z1仍然是Thinking的词向量,只不过这个词向量包含了Thinking Machines这句话中的每个词跟Thinking的相似度
- 使用Self-Attention的示例如下:
- 由于its和law、application相似,所以使用Self-Attention后得到的its词向量,会包含一定的law、application信息,即包含了一定的全局关系。
- 而如果不做自注意力机制,its的词向量就是单纯的its,没有任何的附加信息
参考文献
- 10 Self-Attention(自注意力机制)