本文转自: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. Linear Predictors

    In this chapter we will study the family of linear predictors, one of the most useful families of hy ...

  2. <em>标签

    <em> 标签告诉浏览器把其中的文本表示为强调的内容.对于所有浏览器来说,这意味着要把这段文字用斜体来显示.

  3. (转)MyEclipse设置注释格式

    原文:http://xinghaifeng2006.iteye.com/blog/1243565 MyEclipse设置注释格式(转载)          博客分类: Java基础知识   Windo ...

  4. hdu 2072

    Ps:啊啊啊啊啊啊!WA了N次!真的是N次......终于做出来了...想哭的心情都有了... 这道题要考虑前面有N个空格,中间有N个空格,后面也有N个空格....然后就是输入空格.... 贴上代码: ...

  5. GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站

    引文 如果你已经购买了Nuand(官方)BladeRF x40,那么就可以在上面运行OpenBTS并可以输入一些指令来完成一些任务.一般来说HackRF,是一款覆盖频率最宽的SDR板卡.它几乎所有的信 ...

  6. MySQL创建数据表

    *  创建数据表 * *       *      一.什么是数据表 * *           * *      二.创建数据表的SQL语句模型 * *          DDL * *       ...

  7. IOS 用正则表达式解析HTML等文件,得到所有文本

    获得网页内容 NSURL *url=[NSURL URLWithString:@"http://121.199.34.52/wordpress/?json=core.get_post_con ...

  8. WCF之服务说明

    实质:服务说明实质上就是服务相关的一些信息. 1.服务端代码添加了如下黄色代码: class Program { static void Main(string[] args) { //创建一个Ser ...

  9. 解决两台虚拟机互ping可通,但connect失败

    问题描述: 在UNP一书中实例中,采用两台不同的虚拟机.即一台虚拟机作为服务端,另外一台虚拟机作为客户端. 现象: 两台电脑各自互ping可通 客户端访问local可行 客户机访问服务端报错:No r ...

  10. LeetCode Search a 2D Matrix(二分查找)

    题意: 有一个矩阵,每行都有序,每行接在上一行尾后仍然有序.在此矩阵中查找是否存在某个数target. 思路: 这相当于用一个指针连续扫二维数组一样,一直p++就能到最后一个元素了.由于用vector ...