上一篇 下一篇
GRU(下集) 注意力机制(第2/4集)

Attention(注意力机制)

又叫做: attention pooling

简单来说,就是在训练的过程中,已知哪些东西更重要,哪些东西次重要。从而更准确的把握上下文的关联性

1)背景

心理学认为人通过 “随意线索” 和 “不随意线索” 来选择注意点。其中:

  • 随意线索:随着意念的线索,即定向线索。(有意识地关注)
  • 不随意线索:不随着意念的线索,即漫游线索。(无意识地关注,其实就是口语上经常讲的随意想,没错,跟随和随便的区别,容易搞混)

先前的很多网络,诸如 C N N CNN CNN R N N RNN RNN 这些都属于在找不随意线索(无意识地找一些特征,通常是找一眼望去最突出的特征)。

对于一个模型而言,尤其是应用于序列的神经网络,比如说序列预测,需要预测的值是依据已有数据来进行预测的,但是这些数据对它来说有的重要,有的不重要,理想情况下我们需要使用重要的数据,舍弃不重要的数据。因此就有了注意力机制,通过权重来加大对重要信息的吸收,不重要的信息就予以小的权重。

2)理解与引入:

注意力机制本质上就是 “加权平均” ,整个过程就是学习这个加权的权重。

权重大小取决于 “相关性计算” ,相关性越大则权重越高,相关性越小则权重越低。

下面给出一段 情景模拟 (不等于绝对实际,理解万岁):

————

【有黄、白、黑三种皮肤的三个小孩,分别对应了亚洲、欧洲、非洲三个归属地,这时候来了一个小孩,请你根据他的肤色说出他的归属地是什么?这个新的小孩的皮肤是:介于黄和白之间,离白比较近,所以推测他的归属地是亚欧交界处,并且偏向欧洲一点。】

————

这种根据现有信息进行推测的方法(其中包括的一些权重计算)就是注意力机制。这里给定的三种肤色我们把它们叫做 k e y key key ,其对应的归属地叫做 v a l u e value value , 新来的小孩的肤色叫做 q u e r y query query ,但是注意: q u e r y query query 的对应值不是从指定的这些 v a l u e value value 中找,而更像是根据现有的值进行类推。

→   →   →   →   →   →   →   →   → →~→~→~→~→~→~→~→~→          ———————————————————————————————————————————————————

那么就引入了注意力机制:

注意力机制的输入参数主要有三个: q u e r y \large query query(请求), k e y \large key key(键), v a l u e \large value value(值),其中 k e y \large key key v a l u e \large value value 一一对应。输出是 q u e r y \large query query 对应的 v a l u e \large value value

先将 q u e r y \large query query 和所有的 k e y \large key key 带入能刻画相关性的函数来计算出 “注意力分数”(就是相关性分数) ,再用 s o f t m a x \large softmax softmax 函数计算出 “注意力权重” ,再将权重和 k e y \large key key 对应的 v a l u e \large value value 相乘,最后再相加即可得到 q u e r y \large query query 对应的 v a l u e \large value value

当上述三个参数仅为标量时,用 s ( q , k i ) \large s(q,k_i) s(q,ki) α ( q , k i ) \large \alpha(q,k_i) α(q,ki) 分别表示 q \large q q k i \large k_i ki 的注意力分数、注意力权重,用 f ( q ) \large f(q) f(q) 表示 q \large q q 对应的 v a l u e \large value value ,则有:
f ( q ) = α ( q , k 1 ) ⋅ v 1 + α ( q , k 2 ) ⋅ v 2 + ⋅ ⋅ ⋅ + α ( q , k n ) ⋅ v n = ∑ i = 1 n α ( q , k i ) ⋅ v i \Large f(q)=\alpha(q,k_1)·v_1+\alpha(q,k_2)·v_2+···+\alpha(q,k_n)·v_n=\sum_{i=1}^{n}\alpha(q,k_i)·v_i f(q)=α(q,k1)v1+α(q,k2)v2+⋅⋅⋅+α(q,kn)vn=i=1nα(q,ki)vi

→   →   →   →   →   →   →   →   → →~→~→~→~→~→~→~→~→          ———————————————————————————————————————————————————

最简单的注意力机制,就是用距离来分配权重,比如高斯核,其机理为:离得越近相关性就越大,离得越远相关性就越小:

其注意力分数函数为: s ( q , k i ) = − 1 2 ( q − k ) 2 \Large s(q,k_i)=-\frac{1}{2}(q-k)^2 s(q,ki)=21(qk)2 ,注意力权重为 α ( q , k ) = s o f t m a x ( − 1 2 ( q − k ) 2 ) \Large \alpha(q,k)=softmax(-\frac{1}{2}(q-k)^2) α(q,k)=softmax(21(qk)2)

其中 s o f t m a x ( x i ) = e x i ∑ i n e x i \Large softmax(x_i)=\frac{e^{x_i}}{\sum_{i}^{n}{e^{x_i}}} softmax(xi)=inexiexi

举一个简单的小例子,有如下键值对:

高度(key) 重量(value)
160 110
170 120
180 140

给出新的高度值 175   ( q u e r y ) 175~(query) 175 (query) ,则有:
f ( 175 ) = ∑ i = 1 3 α ( q , k i ) ⋅ v i = α ( 175 , 160 ) ⋅ 110 + α ( 175 , 170 ) ⋅ 120 + ⋅ ⋅ ⋅ + α ( 175 , 180 ) ⋅ 140 = e − 1 2 ( 175 − 160 ) 2 ∑ i 3 e − 1 2 ( 175 − k i ) 2 ⋅ 110 + e − 1 2 ( 175 − 170 ) 2 ∑ i 3 e − 1 2 ( 175 − k i ) 2 ⋅ 120 + e − 1 2 ( 175 − 180 ) 2 ∑ i 3 e − 1 2 ( 175 − k i ) 2 ⋅ 140 = ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ \begin{align*} \Large f(175)&=\sum_{i=1}^{3}\alpha(q,k_i)·v_i=\alpha(175,160)·110+\alpha(175,170)·120+···+\alpha(175,180)·140\\ &\large =\frac{e^{-\frac{1}{2}(175-160)^2}}{\sum_{i}^{3}{e^{-\frac{1}{2}(175-k_i)^2}}}·110+\frac{e^{-\frac{1}{2}(175-170)^2}}{\sum_{i}^{3}{e^{-\frac{1}{2}(175-k_i)^2}}}·120+\frac{e^{-\frac{1}{2}(175-180)^2}}{\sum_{i}^{3}{e^{-\frac{1}{2}(175-k_i)^2}}}·140\\ &=······· \end{align*} f(175)=i=13α(q,ki)vi=α(175,160)110+α(175,170)120+⋅⋅⋅+α(175,180)140=i3e21(175ki)2e21(175160)2110+i3e21(175ki)2e21(175170)2120+i3e21(175ki)2e21(175180)2140=⋅⋅⋅⋅⋅⋅⋅


Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐