Attention机制的理解
查询,键和值
注意力机制通过注意力汇聚将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入)的选择倾向。
——《动手学习深度学习》
训练的目标是对于新的\(x\),能够根据\(f\)来预测出更准确的\(y\)。具体来说,训练阶段的每一个输入数据\(x_i\)都对应输出数据\(y_i\),因此,输入数据可以看成大量的键值对,其中键表示输入数据,值表示输入数据对应的输出数据。
注意力机制就是利用了这样的信息,训练阶段,对于每一个输入,都可以看成是一个给定的查询,根据注意力汇聚,将查询转换为键的
查询和键之间的交互形成了注意力汇聚,如果查询和键\(x_i\)越接近,那么分配给这个键的对应的\(y_i\)的注意力权重就越大,即获得了更多的注意力。这样在新的\(x\)出现的测试阶段,也可以用训练好的注意力汇聚权重来确定没出现过的查询\(x\)输出的\(y\)。
注意力机制的分类
1. 非参数注意力汇聚
- Nadaraya-Watson核回归(Nadaraya-Watson kernel regression)
2. 带参数注意力汇聚
- Nadaraya-Watson核回归 + 再乘一个学习的参数
注意力评分函数
注意力汇聚其实相当于是对值进行一个加权和,权重是根据什么来计算的呢? 就是将键和查询通过注意力评分函数映射成标量,再过一道softmax,得到每一个值对每一个键的一个概率分布,作为权重,因为是概率,所以相当于是一个加权和。
加性注意力
\[a(q,k) = w_v^Ttanh(W_qq + W_kk) \in R
\]
相当于把键和值线性映射一次,然后再相加,最后输入MLP里学习,激活函数是tanh,且没有偏置项。
缩放点积注意力
- 需要查询和键具有相同的长度
\[a(q,k) = \frac{q^Tk}{\sqrt{d}}
\]