【学习】注意力机制(Attention)和 自注意力机制(self-Attention)

参考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 QK=k1k2⋅⋅⋅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) softmaxs1,s2,⋅⋅⋅,sn,便可以得到概率值 a 1 , a 2 , ⋅ ⋅ ⋅ , a n a_1,a_2,···,a_n a1a2⋅⋅⋅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=(v1v2⋅⋅⋅vn=a1a2⋅⋅⋅anv1v2⋅⋅⋅vn=(a1v1+a2v2+⋅⋅⋅+anvn)=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 v10.88 得到一个新的向量值 v 1 v_1 v1
此时的 v 2 v_2 v2的概率值是0.12, v 2 ∗ 0.12 v_2*0.12 v20.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矩阵中就有每个单词和每个单词联系的概率值。

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超好的小白

没体验过打赏,能让我体验一次吗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值