本文转自:http://www.cosmosshadow.com/ml/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/2016/03/08/Attention.html
 
 
Attention

参考列表

Survey on Advanced Attention-based Models 
Recurrent Models of Visual Attention (2014.06.24) 
Recurrent Model of Visual Attention (blog) 
https://github.com/Element-Research/rnn/blob/master/scripts/evaluate-rva.lua 
Show, Attend and Tell: Neural Image Caption Generation with Visual Attention(2015.02.10) 
Soft Attention Mechanism for Neural Machine Translation 
DRAW: A Recurrent Neural Network For Image Generation(2015.05.20) 
Teaching Machines to Read and Comprehend(2015.06.04) 
Learning Wake-Sleep Recurrent Attention Models(2015.09.22) 
Action Recognition using Visual Attention (2015.10.12) 
Recurrent Convolutional Neural Network for Object Recognition (2015) 
Understanding Deep Architectures using a Recursive Convolutional Network (2014.2.19) 
MULTIPLE OBJECT RECOGNITION WITH VISUAL ATTENTION (2015.04.23) 
Recursive Recurrent Nets with Attention Modeling for OCR in the Wild(2016.03.09) 
https://github.com/Element-Research/rnn/blob/master/examples/recurrent-visual-attention.lua (code)

Attention

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

Attention在视觉上的递归模型

参考 Recurrent Models of Visual Attention (2014.06.24)

模型

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

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

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

训练

网络的参数可表示为θ={θg,θh,θa,θl}θ={θg,θh,θa,θl},强化学习的策略可表示成π((lt,at)∣s1:t;θ)π((lt,at)∣s1:t;θ),其中s1:t=x1,l1,a1,⋯,xt−1,lt−1,at−1,xts1:t=x1,l1,a1,⋯,xt−1,lt−1,at−1,xt,另可用utut表示(lt,at)(lt,at)。 
强化学习得到奖赏为R=∑Tt=1rtR=∑t=1Trt。例如,在物体识别中,aTaT输出类型是正确时,奖赏为1,否则为0。其它时刻的奖赏为0。 
奖赏期望为

J(θ)=Ep(s1:T;θ)[∑t=1Trt]=Ep(s1:T;θ)[R]=Ep(s1:T;θ)[∏t=1Tπ(ut∣s1:t;θ)R]J(θ)=Ep(s1:T;θ)[∑t=1Trt]=Ep(s1:T;θ)[R]=Ep(s1:T;θ)[∏t=1Tπ(ut∣s1:t;θ)R]

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

∇θ(logJ)=Ep(s1:T;θ)[∑t=1T∇θlogπ(ut∣s1:t;θ) R]≈1M∑i=1M∑t=1T∇θlogπ(uit∣si1:t;θ) Ri∇θ(log⁡J)=Ep(s1:T;θ)[∑t=1T∇θlog⁡π(ut∣s1:t;θ) R]≈1M∑i=1M∑t=1T∇θlog⁡π(uti∣s1:ti;θ) Ri

其中i=1…Mi=1…M表示第 ii 次采样。

在学习训练过程中,∇θlogπ(uit∣si1:t;θ)∇θlog⁡π(uti∣s1:ti;θ)不需要显示求出,可直接使用RNN模型的标准反馈梯度。

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

1M∑i=1M∑t=1T∇θlogπ(uit∣si1:t;θ) (Rit−bt)1M∑i=1M∑t=1T∇θlog⁡π(uti∣s1:ti;θ) (Rti−bt)

其中bt=Eπ[Rt]bt=Eπ[Rt]

效果

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

Torch代码结构

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

(TODO)基于Attention的图片生成

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

基于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模型,最后得到主题输出。

编码

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

a={a1,…,aL}, ai∈RDa={a1,…,aL}, ai∈RD

L表示切割的区域个数。 
如区域大小为14×1414×14,D=196D=196。

输出的主题yy可以编码为

y={y1,…,yC},yi∈RKy={y1,…,yC},yi∈RK

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

解码

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

运算为

⎛⎝⎜⎜⎜itftotgt⎞⎠⎟⎟⎟=⎛⎝⎜⎜⎜σσσtanh⎞⎠⎟⎟⎟ TD+m+n,n ⎛⎝⎜Eyt−1ht−1z^t⎞⎠⎟(itftotgt)=(σσσtanh) TD+m+n,n (Eyt−1ht−1z^t)
ct=ft⊙ct−1+it⊙gtct=ft⊙ct−1+it⊙gt
ht=ot⊙tanh(ct)ht=ot⊙tanh⁡(ct)

其中 σσ 是 sigmoid 函数,⊙⊙ 表示同位置的元素相乘。
it,ft,otit,ft,ot 分别为输入门、遗忘门、输出门,gtgt是对输入的转化,ctct是cell状态,htht是隐藏状态。 
E∈Rm×KE∈Rm×K,通过随机初始化学习到的矩阵。

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

eti=fatt(ai,ht−1)eti=fatt(ai,ht−1)
αti=exp(eti)∑Lk=1exp(etk)αti=exp⁡(eti)∑k=1Lexp⁡(etk)
z^t=ϕ({ai},{αti})z^t=ϕ({ai},{αti})

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

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

c0=finit.c(1L∑iLai)c0=finit.c(1L∑iLai)
h0=finit.h(1L∑iLai)h0=finit.h(1L∑iLai)

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

p(yt∣a,yt−1)∝exp(Lo(Eyt−1+Lhht+Lzz^t))p(yt∣a,yt−1)∝exp⁡(Lo(Eyt−1+Lhht+Lzz^t))

其中 Lo∈RK×mLo∈RK×m,Lh∈Rm×nLh∈Rm×n,Lz∈Rm×DLz∈Rm×D。

Stochastic “Hard” Attention

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

p(st,i=1∣a)=αt,ip(st,i=1∣a)=αt,i
z^t=∑i=1Lst,iaiz^t=∑i=1Lst,iai

我们设置 logp(y∣a)log⁡p(y∣a) 函数的下限为目标函数 LsLs:

Ls=∑sp(s∣a)logp(y∣s,a)≤log∑sp(s∣a) p(y∣s,a)=logp(y∣a)Ls=∑sp(s∣a)log⁡p(y∣s,a)≤log⁡∑sp(s∣a) p(y∣s,a)=log⁡p(y∣a)

对其进行参数求导有

∂Ls∂W=∑sp(s∣a)[∂logp(y∣s,a)∂W+logp(y∣s,a)∂logp(s∣a)∂W]∂Ls∂W=∑sp(s∣a)[∂log⁡p(y∣s,a)∂W+log⁡p(y∣s,a)∂log⁡p(s∣a)∂W]

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

s∼t∼MultinoulliL({αi})s∼t∼MultinoulliL({αi})
∂Ls∂W≈1N∑n=1Np(s∼n∣a)[∂logp(y∣s∼n,a)∂W+logp(y∣s∼n,a)∂logp(s∼n∣a)∂W]∂Ls∂W≈1N∑n=1Np(s∼n∣a)[∂log⁡p(y∣s∼n,a)∂W+log⁡p(y∣s∼n,a)∂log⁡p(s∼n∣a)∂W]

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

bk=0.9×bk−1+0.1×logp(y∣s∼k,a)bk=0.9×bk−1+0.1×log⁡p(y∣s∼k,a)

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

∂Ls∂W≈1N∑n=1Np(s∼n∣a)[∂logp(y∣s∼n,a)∂W+λr(logp(y∣s∼n,a)−b)∂logp(s∼n∣a)∂W+λe∂H[s∼n]∂W]∂Ls∂W≈1N∑n=1Np(s∼n∣a)[∂log⁡p(y∣s∼n,a)∂W+λr(log⁡p(y∣s∼n,a)−b)∂log⁡p(s∼n∣a)∂W+λe∂H[s∼n]∂W]

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

Deterministic “Soft” Attention

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

Ep(st∣a)[z^t]=∑i=1Lαt,iaiEp(st∣a)[z^t]=∑i=1Lαt,iai

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

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

∑tαt,i≈1∑tαt,i≈1

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

另外,在 z^tz^t 的计算中添加一个标量进行缩放,通过前一个隐藏单元 ht−1ht−1 来计算

Ep(st∣a)[z^t]=β∑i=1Lαt,iaiEp(st∣a)[z^t]=β∑i=1Lαt,iai
βt=σ(fβ(ht−1))βt=σ(fβ(ht−1))

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

Ld=−log(P(y∣x))+λ∑iL(1−∑tCαt,i)2Ld=−log⁡(P(y∣x))+λ∑iL(1−∑tCαt,i)2

基于Attention的字符识别

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

模型

Recursive / Recurrent CNN

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

hi,j,k(t)={σ((whhk)Txi,j+bk)σ((whhk)Thi,j(t−1)+bk)at t=0at t>0hi,j,k(t)={σ((wkhh)Txi,j+bk)at t=0σ((wkhh)Thi,j(t−1)+bk)at t>0

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

hi,j,k(t)=σ((wrk)Thi,j(t−1)+(wfk)Txi,j+bk)hi,j,k(t)=σ((wkr)Thi,j(t−1)+(wkf)Txi,j+bk)

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

(转)Attention的更多相关文章

  1. Attention:本博客暂停更新

    Attention:本博客暂停更新 2016年11月17日08:33:09 博主遗产 http://www.cnblogs.com/radiumlrb/p/6033107.html Dans cett ...

  2. attention 机制

    参考:modeling visual attention via selective tuning attention问题定义: 具体地, 1) the need for region of inte ...

  3. (转)注意力机制(Attention Mechanism)在自然语言处理中的应用

    注意力机制(Attention Mechanism)在自然语言处理中的应用 本文转自:http://www.cnblogs.com/robert-dlut/p/5952032.html  近年来,深度 ...

  4. 论文笔记之:Deep Attention Recurrent Q-Network

    Deep Attention Recurrent Q-Network 5vision groups  摘要:本文将 DQN 引入了 Attention 机制,使得学习更具有方向性和指导性.(前段时间做 ...

  5. 注意力机制(Attention Mechanism)在自然语言处理中的应用

    注意力机制(Attention Mechanism)在自然语言处理中的应用 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了 ...

  6. PowerVault TL4000 Tape Library 告警:“Media Attention”

      Dell PowerVault TL4000 磁带库机的指示灯告警,从Web管理平台登录后,在菜单"Library Status"下发现如下告警信息:  Library Sta ...

  7. paper 27 :图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)

    1. 早期C. Koch与S. Ullman的研究工作. 他们提出了非常有影响力的生物启发模型. C. Koch and S. Ullman . Shifts in selective visual ...

  8. Attention and Augmented Recurrent Neural Networks

    Attention and Augmented Recurrent Neural Networks CHRIS OLAHGoogle Brain SHAN CARTERGoogle Brain Sep ...

  9. 论文笔记之:Multiple Object Recognition With Visual Attention

     Multiple Object Recognition With Visual Attention Google DeepMind  ICRL 2015 本文提出了一种基于 attention 的用 ...

随机推荐

  1. Windows 8.1 Update 2更新了什么?

    Windows 8.1的第二个更新将于8月12日(周二补丁日)发布,官方命名是“8月更新”(August Update).但是之前我们已经知道Windows 8.1 Update 2不可能重新提供开始 ...

  2. hql抓取要注意的点

    fetchtype是lazy,那就用到了在通过缓存中的关联去取,用不到不取:lazy遇到joinfetch就失去意义,但是由于hql语句是自己编写的,可以控制加不加fetch 所以如果主力是hql语句 ...

  3. PHP同一个IP绑定多个域名(六)

    原理图 一个ip绑定如何绑定多个域名? 解决方案: A.方案一:端口号来区别不同的站点 1.绑定一个网站 1.1先开发好自己的网站 d:/ApacheProject/myanimal 1.2 配置我们 ...

  4. 关于java的static语句块

    声明:转载请注明出处 static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法,下面我们详细的讨论一下该语句块的特性及应用. 一.在程序的一次 ...

  5. poj2891 拓展欧几里得

    //Accepted 164 KB 16 ms //拓展欧几里得 //m=a1*x+b1 --(1) //m=a2*(-y)+b2 --(2) //->a1*x+a2*y=b2-b1 //由欧几 ...

  6. App跳转至系统Settings

    很多著名和非著名的App有在App内通过某种方式跳转到系统Settings的功能.不论初心和交互,某认为这个功能用的好确实是很方便的,Control Center功能有限,Home键点击起来很累,至于 ...

  7. php5.2 连接 SQL Server2008

    如果你见到下面这一段输出的话,那么你有福了!!!! Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => ...

  8. HDU 3791

    http://acm.hdu.edu.cn/showproblem.php?pid=3791 建立二叉树,对比是否相同 #include <iostream> #include <c ...

  9. 求助 WPF ListViewItem样式问题

    求助 WPF ListViewItem样式问题 .NET 开发 > Windows Presentation Foundation Вопрос 0 Нужно войти <Style ...

  10. 创建XML文档结构

    static void CreateXML(string outputPath) { XmlDocument _xmlDoc = new XmlDocument(); string _xmlNode ...