各类神经网络学习:(九)注意力机制(第1/4集),背景介绍,以及理解与引入
详细介绍了注意力机制,看完这篇文章,会对注意力机制的含义有深刻的理解
| 上一篇 | 下一篇 |
|---|---|
| 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=1∑nα(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(q−k)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(q−k)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=1∑3α(q,ki)⋅vi=α(175,160)⋅110+α(175,170)⋅120+⋅⋅⋅+α(175,180)⋅140=∑i3e−21(175−ki)2e−21(175−160)2⋅110+∑i3e−21(175−ki)2e−21(175−170)2⋅120+∑i3e−21(175−ki)2e−21(175−180)2⋅140=⋅⋅⋅⋅⋅⋅⋅
更多推荐


所有评论(0)