Attention
QK相乘求相似度,K里面哪一个对于Q来说是重要的,做一个Scale(作用:未来做softmax的时候避免出现极端情况),然后做softmax得到概率。
新的向量表示了K和V(K==V), 然后这种表示还暗含了Q的信息(于Q而言,K里面最重要的信息),挑出了K里面的关键点。
Self-Attention(自注意力机制)(向量)
Self-Attention 的关键点在于,不仅仅是K、V、Q来源于同一个X,这三者是同源的,通过X找到X里面的关键点。
1、Q、K、V的获取,是通过三个参数
W
Q
,
W
K
,
W
V
W_Q, W_K, W_V
WQ,WK,WV获取的,
2、Matmul
q 和 k 相乘
3、Scale+Softmax 进行缩放和softmax
为什么要进行Scale(缩放)?
答:
- softmax内部的计算值太大,会导致出现梯度消失问题,最上面那张有dot-product的图片,使用了点积来计算k和q之间的关系,我们对q和k进行点积获得注意力权重,然后这些权重用于加权平均v, 这个点积会被缩放,除以k维度的平方根 d k d_k dk, d k d_k dk是k向量的维度。
可以看看这篇文章:引用文章
画图解释:
Q和K进行点积运算之后,分布相对分散,除于 d k \sqrt{d_k} dk
,使分布相对集中。
4、Matmul
缩放之后和v相乘
z 1 z_1 z1表示的就是thinking的新的向量表示
对于thinking,初始词向量为 x 1 x_1 x1
现在我通过thinking machines这句话去查询这里的每一个单词和thinking之间的相似度。
新的 z 1 z_1 z1依然是thinking的词向量表示,只不过这个词向量表示蕴含了thinking machines这句话对于thinking 而言哪个更重要。
自注意力机制(矩阵)