capsule network——CNN仅仅考虑了“有没有”的问题,没有考虑feature map的结构关系。这个结构关系包括位置,角度等。Capsule layer的输出也跟feature map的max-pooling输出不同,capsule layer的输出是一个向量,这个向量包含了位置,大小,角度等信息,这是feature map仅能输出一个值所不具备的;训练比较慢

capsule network--《Dynamic Routing Between Capsules》

 

Hinton大神前一段时间推出的capsule network--《Dynamic Routing Between Capsules》可谓是火了朋友圈,吸引了无数科研人员的眼球。现实生活中,无论你持什么样的观点,总有人站在“对立面”,比如知乎中不乏“高人”跳出来“怒喷”这篇论文。那些怒喷的回答我读了读,觉得喷人的答主们格局小了点。《Dynamic Routing Between Capsules》这篇论文虽有不足,但该论文的亮点不是更值得我们关注吗?吹毛求疵的“暴击”除了抓眼球、或者通过贬低别人以体现自己的优越的事,还是要少做。多关注别人的有点,学习之,这才是生存之道。

 

废话半天,回到正题,本文的目的并非给出capsule network的详解(因为capsule network的相关博客已经满天飞了),还是像往常一样,我们简单的分析这篇论文的Motivation,了解其思想,并思考一下有哪些应用场景。

 

为啥要用Capsule network? 它比CNN有哪些优势?

(Hinto论文里提到,capsule network更像是大脑工作的方式,当人们处理某个视觉信息时,大脑有个“routing”的机制,寻找大脑中最好的“capsule”来处理该视觉信息

用下面图片中的例子说明,左边是一个房子,右边是一个帆船。假设我们用大量“房子”的图片训练CNN,然后用右边的“帆船”去测试CNN,CNN会错误地认为右边的图片也是“房子”。

为什么CNN会出现这个问题?CNN忽略了“结构信息”。这是因为不同的feature map分别捕捉了“三角形”和“四边形”的图形信息。对于测试样本“帆船”,CNN的“三角形”和“四边形”的feature map都会被激活,即该图片中包含了三角形和四边形,就认为这是一个房子。所以说,CNN仅仅考虑了“有没有”的问题,没有考虑feature map的结构关系。这个结构关系包括位置,角度等等。

房子,帆船

Capsule network是如何解决这个问题的呢?

Capsule layer的定义是a nested set of neural layers,即他是多层神经网络的一个集合,而非一个个孤零零的feature map。Capsule layer的输出也跟feature map的max-pooling输出不同,capsule layer的输出是一个向量,这个向量包含了位置,大小,角度等信息,这是feature map仅能输出一个值所不具备的

 

结合房子和帆船的例子,模型中间Primary capsules,我们可以理解为某个capsule表征“房子”,某个capsule表征“帆船”。假设一个“帆船”测试样本输入到网络中,那么Primary capsules中对应“帆船”的capsule会被激活,而对应“房子”的capsule会被抑制,整个模型也就避免了将“帆船”错误地识别为“房子”。某种程度上说,Capsule layer提升了整个模型的表达能力,它比feature maps提取了更多的细节信息。

 

Capsule Network既然有这样的优势,那么潜在的应用有哪些呢?

因为capsule network能够建模更细节的信息,capsule network可以用来做人脸识别,物体检测等任务,泛华能力可能比CNN要强

当然,图片信息推理(如:图片中最大物体的右边是什么?),图片描述生成(看图说话)等任务中,可能也会比较有用。

另外一方面,文本挖掘上,目前文本的结构信息仅局限在n-gram语言模型下,capsule network能否对n-gram之外的结构关系进行建模,从而提升文本挖掘任务上的表现,也不一定。

总之,capsule network已然成为一个“大坑”,相信会有很多人前来“灌水”。

我们在做文章的时候也该想一想,别为了灌水,损害了自己的“科研品味”。

 

最后,简单介绍一下论文中的几个重要概念,并介绍一下该论文的优势与劣势。

squash: 将向量长度限制在[0,1]之间,大家可以想想为啥。

routing by agreement:每个capsule可以认为是feature map的升级版,它记录了物体在图像中的位置、角度等信息,routing by agreement就是找到对应的capsule,并激活。

 

Prons:

效果好

更少的训练数据

routing by agreement能够处理更复杂的场景

通过实验分析,可解释性更强(将激活向量画出来,可以看到有些表示了粗细,有些表示平滑程度)

 

Cons:

在CIFAR数据上效果不是最好

没有在image-net大规模数据上测试

训练比较慢(routing by agreeement部分)

 

 

 

posted @ 2018-05-13 12:24  bonelee  阅读(3230)  评论(0编辑  收藏  举报