贾伟中科院合肥 发表于 2016-2-25 23:52:54

【VALSE前沿技术选介16-01期】

http://mp.weixin.qq.com/s?__biz=MzA3Mjk0OTgyMg==&mid=401996336&idx=1&sn=2d7799d19ecab3f90662f8ae6efcb4f3&scene=23&srcid=0225V4HQ35DhiZo93MFZ6VX0#rd

【VALSE前沿技术选介16-01期】2016-02-20 Winsty VALSE
【创刊号卷首语】
VALSE的各位读者,大家好!感谢大家过去一年来的持续关注和对VALSE的支持,祝大家猴年生活更美满,科研事业更精彩!在新的一年里,VALSE将继续围绕“打造视觉与学习领域国内外华人首要学术交流平台”这一目标,为大家提供学术交流舞台和各种机会,推介最新的产学研干货。

作为VALSE的又一个重要“产品”,今天我们正式推出《VALSE前沿技术选介》(VALSE Frontier Technology Recommendation and Review)。通过这一新的“媒介”,每周将对少量实效性较高的优秀学术论文进行简要介绍和评述,为广大VALSER们提供方便、快捷的享受更多学术盛宴的机会。

《VALSE前沿技术选介》初期将以邀稿为主,中后期欢迎大家积极参与,踊跃投稿,我们会通过合适的机制择优发布在VALSE公众号、QQ群、微信群和网站等平台上。

【VALSE前沿技术选介16-01期】

    今天给大家带来的第一篇Paper是来自于Google Deepmind的"Exploiting Cyclic Symmetry in Convolutional Neural Networks" (http://arxiv.org/abs/1602.02660),2月8日上传于Arxiv。
    在传统的CNN中,通过Pooling操作可以达到translation invariance,然而对于rotation,并没有很好的办法解决。最常用的办法就是data augmentation,即通过枚举不同的rotation强制使CNN学到这种性质。然而这种方法并不能保证泛化性能,同时为了达到相同的效果还需要容量更大的网络。本文主要想解决的问题是如何将rotation equivariance/invariance的性质在CNN的结构中保持。
    首先,介绍一下Equivariance和Invariance的定义:对于一个输入x和一个函数f()和某种变换T,如果存在某种对应的变换T’,f(Tx) = T’f(x),则称f对T equivariance;如果f(x) = f(Tx),则称f对T invariance。对于普通的分类问题而言,更多需要的是invariance,即输入变化,最终的输出label不会变化;然而对分割等结构化输出任务而言,更需要的是equivariance,直观的解释就是输入一个旋转过的图片,则输出的分割也应相应旋转。更多的性质和讨论可以参见文中的引用 (“Understanding Image Representation by Measuring Their Equivariance and Equivalence” Arxiv 2014)
    文章中提出了4种可以插入在现有CNN框架中操作来从网络结构的层面保证equivariance:
[*]Cyclic Slicing:将输出结果旋转作为新的样本
[*]Cyclic Pooling:如果该操作插入在conv层后,则将Slicing后的一组样本逆旋转通过Pooling操作变为一个样本;如果该操作插入在fc层后,则直接将Slicing后的一组样本进行Pooling。注意在fc层进行这样的Pooling操作,可以达到invariance的性质
[*]Cyclic Stacking:将Slicing后的一组样本逆旋转后在channel方向拼接。
[*]Cyclic Rolling:将Slicing后的一组样本permute后stacking,具体比较难用文字描述,见下表和下图。

这四种操作正式的描述在下表中:http://mmbiz.qpic.cn/mmbiz/ZCzUCpTsR3eRbSjmia2R1ibYRfM547QibcAKMzibToOWib74K44v1o6uKSD8HxYCRySdBODCjogUFjhMicrGaJAV8Zicw/0?wx_fmt=png
实际使用中,Slicing和Pooling会成对出现(注意Pooling可能在fc后),Rolling和Stacking可以插入在Slicing和Pooling中间。见下图:http://mmbiz.qpic.cn/mmbiz/ZCzUCpTsR3eRbSjmia2R1ibYRfM547QibcAAOibROx0PsDKv28xsvMIHc1gRBmEfhdM3qd1x7bfQOfTIepItr18Frg/0?wx_fmt=png
实验部分不赘述,一些简单的结论如下:

[*]即使在做了data augmentation的情况下,这四种操作仍然能够改进结果。
[*]实验结果看来,Cyclic Pooling做好的setting是average pooling后不加activation function
[*]在Slicing和Pooling中间再加入Rolling对结果改进较小。

简单点评:如果问题中对于旋转不敏感的话,本文中的方法十分值得一试,简单而且通用,适合插入在任何已有的CNN结构中。然而缺陷也很明显,本文方法的适用范围只有4个方向的旋转以及翻转,对更复杂的变换就无能为力了。对于更复杂的情况,个人推荐去年来自VGG的一篇NIPS:“Spatial Transformer Networks”

页: [1]
查看完整版本: 【VALSE前沿技术选介16-01期】