Recurrent Models of Visual Attention
Google DeepMind
模拟人类看东西的方式,我们并非将目光放在整张图像上,尽管有时候会从总体上对目标进行把握,但是也是将目光按照某种次序(例如,从上倒下,从左到右等等)在图像上进行扫描,然后从一个区域转移到另一个区域。这么一个一个的区域,就是定义的part,或者说是 glimpse。然后将这些区域的信息结合起来用于整体的判断和感受。
站在某个底层的角度,物体的显著性已经将这个物体研究的足够透彻。本文就是从这些东西上获得了启发,提出了一种新的框架,即:应用神经网络,基于 attention 任务驱动的视觉处理系统。本文模型考虑到一个视觉场景基于attention的处理看做是一个控制问题(a control problem),并且可以应用到动态图像,视频,或者处理动态视觉环境,像机器人,或者能够打游戏的agents。
这个模型是一个 recurrent neural network(RNN),按照时间顺序处理输入,一次在一张图像中处理不同的位置,逐渐的将这些部分的信息结合起来,来建立一个该场景或者环境的动态间隔表示。并非马上处理整张图像甚至bbox,在每一个步骤中,模型基于过去的信息和任务的需要选择下一个位置进行处理。这样就可以控制模型的参数和计算量,使之摆脱输入图像的大小的约束。这里和CNN有明显的不同。我们就是要描述这么一个端到端的优化序列,能够直接训练模型,最大化一个性能衡量,依赖于该模型在整个任务上所做的决策。利用反向传播来训练神经网络的成分和策略梯度来解决 the non-differentiabilities due to the control problem。
RAM:The Recurrent Attention Model
本文将 attention problem 看做是目标引导的序列决策过程,能够和视觉环境交互。在每一个时间点,agent 只能根据有带宽限制的感知器来观察全局,即: it never senses the environment in full. 他只能在一个局部区域或者狭窄的频域范围进行信息的提取。The agent 可以自主的控制如何布置感知器的资源,即:选择感知的位置区域。该agent也可以通过执行 actions 来影响环境的真实状态。由于该环境只是部分可观察,所以他需要额外的信息来辅助其进行决定如何行动和如何最有效的布置感知器。每一步,agent 都会收到奖励或者惩罚,agent 的目标就是将奖励最大化。
1. Model
Sensor:
在每一个步骤t,该agent 接收部分观察,没有处理全幅图像的权限,但是可以通过感知器 ρ 来提取从xt 得到的信息。假设从 Lt-1 提取的类似视网膜表示 ρ(xt, lt-1) ,该表示比原始图像 x 维度较低,我们称之为 glimpse。有一个叫 glimpse network fg 的网络结构包含 glimpse sensor 来产生 glimpse feature vector gt,像上图B所示。
Internal state:
The agent 保持一个间隔状态,用来总结从过去观察得到的历史信息。The internal state 由RNN的隐单元 ht 构成,随着时间利用 core network进行更新,该网络的额外输入是: the glimpse feature vector gt.
Actions:
每一步,agent 执行两个步骤:
1. 通过感知控制 lt 来决定如何布置感知器;
2. 一个可能会影响环境状态的环境动作 at 。
Reward:
在执行一个动作之后,agent会收到一个环境中得到的新的视觉观察 xt+1 和 一个奖励信号 rt+1。在目标识别场景中,如果分类正确,就奖励1分,否则奖励就设置为0.
以上就是Partially Observable Markov Decision Process (POMDP) 的一种特殊示例。
2. Training
总结下,可以看出整个pipeline 有三个小网络,即: the glimpse network, the core network, and the action network。我们的训练目标就是学习到一种策略使得总的奖励达到最大。
最大化 J 实际上是不容易的,因为这涉及到高维联系序列的期望,将这个问题看做是 POMDP, 然而,允许我们从RL的技术角度来解决该问题,即:一个样本近似的方法来逼近梯度:
整体结构,引用下这个博客上的一个插图链接:http://www.cosmosshadow.com/ml/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/2016/03/08/Attention.html#_label2_3
基于 Torch 的实现代码:
https://github.com/Element-Research/rnn/blob/master/examples/recurrent-visual-attention.lua
总结:
我觉得作为将强化学习和深度学习结合的先锋者,google deepmind 在这方面做的还算不错,论文的motivation 很自然,具体深度学习流程的设计也是比较合理的,其实我就有一个问题:
------------------------------
更新一个网络架构的示意图:
那么,可以看出,attention model 的输入是一个图像,那么根据任务的需要,可以输出一系列的图像 patch,即 attention region,仅仅对这些图像patch 进行处理,一方面可以减少非必要信息的干扰,降低噪声的影响,然后还可以减少计算量,可谓一举两得,一箭双雕,一石二鸟。。。。(一你妹,^_^)