Attention


Attention

在引入Attention(注意力)之前,图像识别或语言翻译都是直接把完整的图像或语句直接塞到一个输入,然后给出输出。
而且图像还经常缩放成固定大小,引起信息丢失。
而人在看东西的时候,目光沿感兴趣的地方移动,甚至仔细盯着部分细节看,然后再得到结论。
Attention就是在网络中加入关注区域的移动、缩放、旋转机制,连续部分信息的序列化输入。


基于Attention的图片分类

参考 Recurrent Models of Visual Attention (2014.06.24)

模型

该模型称为The Recurrent Attention Model,简称RAM。

A、Glimpse Sensor: 在步,图片位置处取不同大小的区域,组合成数据
B、Glimpse Network: 将图片局部信息与位置信息整合成
C、Model Architecture: 为隐藏记忆单元,每轮加入新的,生成新的,并以此生成感兴趣的与新的位置

该模型每次迭代的时候,还可以输出缩放信息和结束标志。

训练

网络的参数可表示为,强化学习的策略可表示成,其中,另可用表示
强化学习得到奖赏为。例如,在物体识别中,输出类型是正确时,奖赏为1,否则为0。其它时刻的奖赏为0。
奖赏期望为

强化学习的目标是提高 ,等同于提高 。对其求导

其中表示第 次采样。

在学习训练过程中,不需要显示求出,可直接使用RNN模型的标准反馈梯度。

以上等式是梯度的无偏估计,但可引起高方差,所以引入以下估计

其中

效果

以上是论文中在扩大和污染了的minst数据库上,glimpse的移动方向。
实心绿点是开始,空心绿点是结束。
可以看到,RAM模型顺着感兴趣的方向移动。
识别效果比全链接的网络,和基于CNN的网络都要好。

Torch代码结构

在博客Recurrent Model of Visual Attention训练代码中,结构如下


基于Attention的图片生成

Auto-Encoding Variational Bayes (2014.05.01)
DRAW: A Recurrent Neural Network For Image Generation (2015.05.20)

模型

约定: 为线性变换。

隐变量 符从高斯分布:

模型结构的具体计算

代价函数

其中 是标准正态分布,所以

生成过程

以上是训练过程,下面是生成过程

如果结果为二值域,D 可为伯努利分布。

读写

读写使用 的格子框,高斯分布进行。
格子点的位置为

其中参数由如下生成

A、B 表示输入图片 x 的大小。
为高斯采样的方差。
为读写强度。

采样矩阵如下生成

两个矩阵大小分别为
a 与 b 分别为图像上点的位置坐标。
为归一化:

实现

https://github.com/CosmosShadow/DRAW


基于Attention的图片主题生成

参考 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention (2015.02.10)

A bird flying over a body of water

如上,根据图片,生成主题描述。

模型

如上图,模型把图片经过CNN网络,变成特征图。
LSTM的RNN结构在此上运行Attention模型,最后得到主题输出。

编码

特征图均匀地切割成多个区域,表示为

L表示切割的区域个数。
如区域大小为

输出的主题可以编码为

K是字典的单词个数,C是句子长度。
的形式为,即只有第处位置为1,其它位置为0。

解码

该模型使用的LSTM如下图所示

运算为

其中 是 sigmoid 函数, 表示同位置的元素相乘。
分别为输入门、遗忘门、输出门,是对输入的转化,是cell状态,是隐藏状态。
,通过随机初始化学习到的矩阵。

是对整张图片部分信息的动态表示,一个Attention模型,如下计算

其中 表示第 个特征区域,共 L 个。
函数 采用多层网络实现,利用前一时刻的隐藏状态 与 L 个特征区域,分别得到每个区域的权重
权重 可以理解为(1)下一步选择哪一个特征区域的概率,也可以理解为(2)每一个特征区域在下一次输入中所占的比例。
不同的理解与应用,体现在函数 的不同实现上。
按(1)实现称为 Stochastic “Hard” Attention ,按(2)实现称为 Deterministic “Soft” Attention。
下图上一排为 soft 模型,下一排为 hard 模型。

LSTM中的记忆单元与隐藏单元的初始值,是两个不同的多层感知机,采用所有特征区域的平均值来进行预测的:

而最终的单词概率输出,采用深度输出层实现

其中

Stochastic “Hard” Attention

指示是否选择 L 个特征图中的第 个,如果设置成1,表示选中,0表示不选中。
在随机’Hard’模型中,只有唯一的选中。
变量如下计算

我们设置 函数的下限为目标函数 :

对其进行参数求导有

以上参数求导可用Monte Carlo方法采样实现

为减少估计方差,可采用冲量方式,第k个 mini-batch 的时候

为进一步减少估计方差,引入 multinoulli 分布的熵

是两个超参。
以上参数求导优化的过程就是强化学习,每次选择下一个特征图的过程都朝目标更好的方向变化。

Deterministic “Soft” Attention

上面的随机模型需要采样位置 ,我们还可以通过直接计算

这就是Deterministic “Soft” Attention模型,通过 来选择感兴趣的特征区域。
该模型可以通过端到端的的反馈方法进行学习。

在计算 的时候,有 来保证感兴趣的所有区域的权重和为1。
另外,可以加入一个新的正则化,每一个区域在 步中,被观察的权重拉近:

这个正则的加入,可以使得生成的主题更加丰富。就是结果更好嘛!

另外,在 的计算中添加一个标量进行缩放,通过前一个隐藏单元 来计算

最终,端到端的目标函数可写为


基于Attention的字符识别

参考 Recursive Recurrent Nets with Attention Modeling for OCR in the Wild (2016.03.09)

模型

Recursive / Recurrent CNN

CNN是卷积层权重共享。
Recursive CNN是在卷积层中添加多层,每层的卷积核共享:

Recurrent CNN也是在卷积层中添加多层,但每层都在最初信息的参与,卷积核可以共享,也可能不共享:

Recursive与Recurrent CNN有都提高感受野,减少参数的作用。
在参考这篇论文中,有提到Recursive CNN效果比Recurrent CNN好。

Attention is all you need

[Paper]