注意力机制

学习注意力机制的原理和实现代码

1.注意力机制

查询对象Query,被查询对象Value,通过去计算Q和V里的事物的相似度(更接近),来判断哪些东西对Q来说更重要,哪些更不重要。

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$。计算$QK^T$后为避免输入的值差异过大导致Softmax的概率值过于极端,需要归一化,归一化的方式是除以嵌入向量维度的平方根。

做一层$softmax(s_1, s_2,\cdots,s_n)$就可以得到概率$(a_1,a_2,\cdots,a_n)$,进而找到哪个事物对Q更重要。

image.png

最后做一个汇总,拿到**经过注意力计算之后的图片$V’$**,现在这张图片中多了一些信息,多了于Q而言更重要、更不重要的信息。

$V=(v_1, v_2, \cdots, v_n)$

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

image.png

2.自注意力机制(Self-attention)

在注意力机制中,一般来说Key和Value是相等的,或者一定具有某种关系。而Self-Attention中, Query、Key、Value三者是同源的,即K$\approx$V$\approx$Q,来源于同一个X。

对X分别做三次线性变换,得到Query、Key、Value,通过X找到X里面的关键点。接下来的步骤和注意力机制一模一样,如图,列表示一个个X词向量,行表示分别要和句子中的每个词做一下相似度计算。

效果是:给定一个 X,通过自注意力模型,得到一个 Z,这个 Z 就是对 X 的新的表征(词向量),Z 这个词向量相比较 X 拥有了句法特征和语义特征。

image.png
image.png

3.多头自注意力(Multi-Head Self-Attention)

3.1 什么是多头

对于X,我们不是说,直接拿 X 去得到 Z,而是把 X 分成了 8 块(8 头),得到 Z0-Z7,然后把 Z0-Z7 拼接起来,再做一次线性变换(改变维度)得到 Z,使其和原来的X词向量维度一致。

3.2 有什么作用

把X切成8个,这样原先在一个位置的X,去了空间上的8个位置,通过对8个点进行寻找(非线性变换,映射到更合理的空间),找到更合适的位置。

image.png


注意力机制
http://paopaotangzu.icu/2024/12/18/9-注意力机制/
作者
paopaotangzu
发布于
2024年12月18日
许可协议