Attention基本原理

1.为什么需要Attention?

最基本的seq2seq模型包含一个encoder和一个decoder,通常的做法是将一个输入的句子编码成一个固定大小的state,然后作为decoder的初始状态(当然也可以作为每一时刻的输入),但这样的一个状态对于decoder中的所有时刻都是一样的。

Attention基本原理

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:

Attention基本原理
Attention基本原理
其中f是Decoder的非线性变换函数,可以看出不论生成哪个单词,它们的使用的输入句子Source的语义编码c都是一样的,c是由encoder的Source每个单词编码产生的,这样Source中任意单词对生成某个目标单词yi影响力(权重)都是一样的,没有体现模型出的Attention能力

(2)Attention机制:
Attention基本原理
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