Attention(注意力机制)

2024.3.12 Attention(注意力机制)

 ## 怎么做注意力

我(查询对象Q),这张图(被查询对象V)

如:我看这张图,第一眼,我就会去判断哪些东西对我而言更重要,哪些有更不重要(去计算Q和V里的事物的重要度)

重要度计算,其实是不是就是相似度计算(更接近)

Q,$K =k_1,k_2,\cdots,k_N$,(图中所有事物的一个列表)我们一般使用点乘的方式——>求内积

通过点乘的方法计算Q和K里的每一个事物的相似度,就可以拿到Q和$k_1$的相似值$s_1$,Q和$k_2$的相似值$s_2$,Q和$k_n$的相似值$s_n$

做一层$softmax(a_1,a_2,\cdots,a_n)$就可以得到概率$(a_1,a_2,\cdots,a_n)$

image-20240312113412501

为什么要除以$\sqrt{d_k}$:$d_k$一般是头数(如词向量维度为8)

减少数据之间的差距(例如:80,20--->0.8,0.2 80/8,20/8------>10,2.5------>0.1,0.025

softmax:不再唯一的确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。

进而就可以找出哪个对Q而言更重要了

最终我们还得进行一个汇总,当使用Q查询结束了后,Q已经失去了它的使用价值,我们最终还是要拿到这张图片,只不过现在的这张图片多了一些信息(对我而言重要的和不重要的信息)

接下来

$(a_1,a_2,\cdots,a_n)(v_1,v_2,\cdots,v_n)=(a_1v_1,a_2v_2,\cdots,a_nv_n)$

针对计算出来的权重$a_i$ ,对 V中的所有 values 进行加权求和计算,得到 Attention 向量:

image-20240312113300585

一般K=V,在tranformer里,K!=V是可以的,但是K和V之间一定具有某种联系,这样的QK点乘才能指导V哪些不重要,哪些重要

posted @ 2024-03-12 17:03  adam12138  阅读(87)  评论(0)    收藏  举报