Attention基本原理
1.为什么需要Attention?
最基本的seq2seq模型包含一个encoder和一个decoder,通常的做法是将一个输入的句子编码成一个固定大小的state,然后作为decoder的初始状态(当然也可以作为每一时刻的输入),但这样的一个状态对于decoder中的所有时刻都是一样的。
attention即为注意力
,需要attention的原因是非常直观的。比如,我们期末考试的时候,我们需要老师划重点,划重点的目的就是为了尽量将我们的attention放在这部分的内容上,以期用最少的付出获取尽可能高的分数;普通的模型
可以看成所有部分的attention都是一样
的,而这里的attention-based model
对于不同的部分,重要的程度则不同
。
2. Attention-based Model
Attention-based Model
其实就是一个相似性的度量
,当前的输入与目标状态越相似
,那么在当前的输入的权重
就会越大,说明当前的输出越依赖于当前的输入。严格来说,Attention并算不上是一种新的model,而仅仅是在以往的模型中加入attention的思想。
没有
attention
机制的encoder-decoder结构通常把encoder的最后一个状态
作为decoder的输入(可能作为初始化,也可能作为每一时刻的输入),但是encoder的state毕竟是有限的,存储不了太多的信息,对于decoder过程,每一个步骤都和之前的输入都没有关系了,只与这个传入的state
有关。attention机制的引入之后,decoder根据时刻的不同,让每一时刻的输入都有所不同。
3.什么是Attention?
(1)未使用Attention:
其中f是Decoder的非线性变换函数,可以看出不论生成哪个单词,它们的使用的输入句子Source的语义编码c都是一样的,c是由encoder的Source每个单词编码产生的,这样Source中任意单词对生成某个目标单词yi影响力(权重)都是一样的,没有体现模型出的Attention能力
(2)Attention机制:
4.图像处理中的应用:
在图像处理上的attention 机制
是在特征图
上生成空间分布的权重
,然后再对特征图加权求和
,试图让网络学出来对不同物体区域
加以不同关注度
。之后的在CV领域中应用attention绝大多数都是这么的。例如,spatial transformer networks(STN)是之后将attention用于物体识别比较有名的一篇文章,在一些现实应用中仍被使用。再如residual attention network。
attention机制听起来高达上,其实就是学出一个权重分布
,再拿这个权重分布施加在原来的特征之上
,就可以叫做attention。简单来说:
(1)这个加权可以是保留所有分量
均做加权(即soft attention),也可以是在分布中以某种采样策略选取部分分量
(即hard attention)
(2)这个加权可以作用在原图
上,也就是RAM和DRAM;也可以作用在特征图
上,如后续的好多文章(例如image caption)
(3)这个加权可以作用在空间尺度
上,给不同空间区域加权;也可以作用在channel尺度
上,给不同通道特征加权;甚至特征图上每个元素加权
参考:
[1]https://blog.csdn.net/wuzqChom/article/details/75792501
[2]https://blog.csdn.net/nicajonh/article/details/84204020
[3]https://blog.csdn.net/nijiayan123/article/details/84984820