参考B站:09 Transformer 之什么是注意力机制(Attention)
1. 注意力机制(Attention)
红色的是科学家们发现,如果给你一张这个图,你眼睛的重点会聚焦在红色区域
人–》看脸
文章看标题
段落看开头
后面的落款
这些红色区域可能包含更多的信息,更重要的信息
注意力机制:我们会把我们的焦点聚焦在比较重要的事物上
Q、K、V
我(查询对象 Q),这张图(被查询对象 V),图中包含的模块(K)。
我看这张图,第一眼,我就会去判断哪些东西对我而言更重要,哪些对我而言又更不重要(去计算 Q 和 V 里的事物的重要度)
重要度计算,其实是不是就是相似度计算(更接近),点乘其实是求内积(数学中的原理,两个矩阵点乘得到的值越大,证明两个矩阵越相似。)
Q
、
K
=
k
1
,
k
2
,
⋅
⋅
⋅
,
k
n
Q、K=k_1,k_2,···,k_n
Q、K=k1,k2,⋅⋅⋅,kn
通过点乘的方法计算Q 和 K 里的每一个事物的相似度,就可以拿到 Q 和
k
1
k1
k1的相似值
s
1
s1
s1,Q 和
k
2
k2
k2的相似值
s
2
s2
s2,Q 和
k
n
kn
kn的相似值
s
n
sn
sn.
进一步做
s
o
f
t
m
a
x
(
s
1
,
s
2
,
⋅
⋅
⋅
,
s
n
)
softmax(s_1,s_2,···,sn)
softmax(s1,s2,⋅⋅⋅,sn),便可以得到概率值
a
1
,
a
2
,
⋅
⋅
⋅
,
a
n
a_1,a_2,···,a_n
a1,a2,⋅⋅⋅,an。
我们还得进行一个汇总,当你使用 Q 查询结束了后,Q 已经失去了它的使用价值了,我们最终还是要拿到这张图片的,只不过现在的这张图片,它多了一些信息(多了于我而言更重要,更不重要的信息在这里)。
V
=
(
v
1
,
v
2
,
⋅
⋅
⋅
,
v
n
)
=
(
a
1
,
a
2
,
⋅
⋅
⋅
,
a
n
)•(
v
1
,
v
2
,
⋅
⋅
⋅
,
v
n
)
=
(
a
1
∗
v
1
+
a
2
∗
v
2
+
⋅
⋅
⋅
+
a
n
∗
v
n
)
=
V
′
V = (v_1,v_2,···,v_n)=(a_1,a_2,···,a_n)•(v_1,v_2,···,v_n)=(a_1*v_1 + a_2*v_2 + ··· + a_n*v_n )= V'
V=(v1,v2,⋅⋅⋅,vn)=(a1,a2,⋅⋅⋅,an)•(v1,v2,⋅⋅⋅,vn)=(a1∗v1+a2∗v2+⋅⋅⋅+an∗vn)=V′
这样的话,就得到了一个新的 V’,这个新的 V’ 就包含了,哪些更重要,哪些不重要的信息在里面,然后用 V’ 代替 V。一般 K=V。
理解
注意力机制就是接收一个输入的东西(模型里面可能是特征),利用注意力机制找出图像中和该特征最相似的区域,该区域应该是提取出特征的区域,我们应该更加关注。
Transformer之自注意力机制(self-Attention)
Self-Attention 的关键点在于: K≈V≈Q 来源于同一个 X,这三者是同源的。
通过 X 找到 X 里面的关键点。
并不是 K=V=Q=X,而是通过三个参数
W
Q
,
W
K
,
W
V
W_Q,W_K,W_V
WQ,WK,WV,接下来的步骤和注意力机制一模一样。
1.Q、K、V的获取
这里的
q
1
q_1
q1,
q
2
q_2
q2 是由
x
1
x_1
x1,
x
2
x_2
x2 与
W
Q
W_Q
WQ 相乘得到的
,
k
1
k_1
k1,
k
2
k_2
k2 是由
x
1
x_1
x1,
x
2
x_2
x2 与
W
K
W_K
WK 相乘得到的
,
v
1
v_1
v1,
v
2
v_2
v2 是由
x
1
x_1
x1,
x
2
x_2
x2 与
W
V
W_V
WV 相乘得到的
这里的Q、K、V都来自于 x 1 x_1 x1, x 2 x_2 x2 ,所以是同源的。
2. Matmul (Q、K点乘,这里会和每个k进行点乘)
这里会先进行Q、K相乘,得到其相似值。
3.Scale+Softmax(对Q、K点乘结果进行softmax):
将Q、K相乘的相似值通过softmax,转为概率。
4. Matmul(得到的V1,并通过V1得到Z1):
将前面softmax得到的概率值0.88,再与
v
1
v_1
v1相乘,
v
1
∗
0.88
v_1*0.88
v1∗0.88 得到一个新的向量值
v
1
v_1
v1。
此时的
v
2
v_2
v2的概率值是0.12,
v
2
∗
0.12
v_2*0.12
v2∗0.12 得到一个新的向量值
v
2
v_2
v2。
最终的 z 1 = v 2 + v 2 z_1= v_2 + v_2 z1=v2+v2, z 1 z_1 z1 中包含了 v 1 v_1 v1和 v 2 v_2 v2的信息。
z 1 z_1 z1表示的就是 thinking 的新的向量表示,对于 thinking,初始词向量为 x 1 x_1 x1。
现在我通过 thinking machines 这句话去查询这句话里的每一个单词和 thinking 之间的相似度,新的 z 1 z_1 z1依然是 thinking 的词向量表示,只不过这个词向量的表示蕴含了 thinking machines 这句话对于 thinking 而言哪个更重要的信息。
举个例子:
这里的 its 做了自注意力,其包含了这句话所有词的信息,并且对Law的相似度最高,所以这里的its最有可能代表its。
但是如果不做自注意力,这里的 its 就是单纯的三个字母 its,并没有包含任何信息。
也就是说 its 有 law 这层意思,而通过自注意力机制得到新的 its 的词向量,则会包含一定的 laws 和 application 的信息
自注意力矩阵表示:
Q 、K、V的获取
Z矩阵的获取
Z矩阵的表示
最终Z矩阵中就有每个单词和每个单词联系的概率值。