CVPR 2017之#RNN论文精选, 小数据学习: 基于关注点的循环比较器(Attentive Recurrent Comparators)

“小数据”激发我们从人类学习本质的角度思考问题. — David 9

如果要得到生成模型分类模型, 我们可以用GAN或CNN等深度网络. 而对于”小数据“我们往往要换一种思路, 利用RNN的”记忆”能力在图片中反复”琢磨”图像的线条等特征:

来自: https://github.com/sanyam5/arc-pytorch

通过反复寻求好的”关注点”, 我们用一张样本图片, 就能比较新图片与之差异, 以及和原图片是同一个文字的可能性. 这正是所谓的one shot learning, 即, 从一个样本学习到该样本的整个类. 没错 , “小数据”的泛化能力真是惊人 ! 甚至击败了KNNSIAMESE NETWORK等传统相似度比较方式。

论文模拟了人类比较文字的方法,交替比较两个文字的区别,最后给出一个结论:这两个文字是不是同一个文字:

来自:https://arxiv.org/pdf/1703.00767.pdf

无疑,存储状态和“记忆”的核心是一个RNN网络

网络的输入是上一次RNN控制器的隐层状态ht-1依据上一次关注点获得的关注值Gt (文中形象地叫做”一瞥”:glimpse, 即瞥了一眼的信息)

网络的输出是下一次的隐层状态ht.

值得注意的是, 每次迭代的输入图片是两张对比图片交替输入的(上图的Image A 和Image B).  另外,每次迭代的隐层状态不仅包含了两张图片形似度的信息, 也包含下一次需要的关注点的信息. 即, ht 可以推出下一次的关注点参数 Ωt+1.

如果对关注点机制和如何推算出下一个关注点, 我想这篇文章这篇论文对大家很有帮助.

让我们假设已经明白了关注点是在每次迭代中如何变化并且优化的, 并且我们相信越靠后的迭代, 关注点对于区分两个文字的价值应该越大.

剩下的, 论文主要把关注点评估(这里的Gt ) 加入, 另外结合一些深度学习的技巧.

来自: https://arxiv.org/pdf/1703.00767.pdf

为了加入深度学习属性, 文章没有直接用隐层的输出做相似性比较, 而是像上述加入一个双向LSTM, 把绝对比较值转化为相对比较值, 最后用一些非线性函数和softmax做映射.

使用上述加入深度学习属性的模型,可以达到更好的one shot准确率:

对于实验分析,循环比较器(Attentive Recurrent Comparators)的关注点最后会趋向关注两张图区别较大的部分(注意关注点蓝色窗口移动):

这也导致一开始的几次迭代并不能很好地区分两张图片或文字,而是在后面几次迭代达到了不错的准确率:

 

参考文献:

  1. Attentive Recurrent Comparators
  2. https://www.slideshare.net/JisungDavidKim/oneshot-learning
  3. https://arxiv.org/pdf/1502.04623.pdf
  4. https://www.qcloud.com/community/article/971807
  5. http://kvfrans.com/what-is-draw-deep-recurrent-attentive-writer/
  6. https://github.com/sanyam5/arc-pytorch

本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

或直接扫二维码:


发布者

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注