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部分)
capsule network——CNN仅仅考虑了“有没有”的问题,没有考虑feature map的结构关系。这个结构关系包括位置,角度等。Capsule layer的输出也跟feature map的max-pooling输出不同,capsule layer的输出是一个向量,这个向量包含了位置,大小,角度等信息,这是feature map仅能输出一个值所不具备的;训练比较慢的更多相关文章
- 深度学习课程笔记(十一)初探 Capsule Network
深度学习课程笔记(十一)初探 Capsule Network 2018-02-01 15:58:52 一.先列出几个不错的 reference: 1. https://medium.com/ai% ...
- Capsule Network
Capsule Network最大的特色在于vector in vector out & 动态路由算法. vector in vector out 所谓vector in vector out ...
- 语义分割:使用关系图辅助图像分割-Capsule Network、IceNet
文章:欲取代CNN的Capsule Network究竟是什么来头?它能为AI界带来革命性转折么? 文章:用于分类.检测和分割的移动网络 MobileNetV2 网络 文章:后RCNN时代的物体检测及分 ...
- TensorFlow中max pooling层各参数的意义
官方教程中没有解释pooling层各参数的意义,找了很久终于找到,在tensorflow/python/ops/gen_nn_ops.py中有写: def _max_pool(input, ksize ...
- 【面向代码】学习 Deep Learning(三)Convolution Neural Network(CNN)
========================================================================================== 最近一直在看Dee ...
- 卷积神经网络(Convolutional Neural Network, CNN)简析
目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...
- day-16 CNN卷积神经网络算法之Max pooling池化操作学习
利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...
- Convolutional neural network (CNN) - Pytorch版
import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # ...
- 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...
随机推荐
- unity 切圆角矩形 --shader编程
先上个效果图 制作思路 如上图我们要渲染的就是上图带颜色的部分 步骤: 先获取黄色和蓝绿部分 例如以下图 算法 |U|<(0.5-r)或|V|<(0.5-r) 注意的是模型贴图最大值是1. ...
- C++里面定时器的使用
说白了就是三个函数的使用: SetTimer(20, 20, 0); //第一个20表示此定时器的标识符,第二个20表示你要定的时间,第三个不用管,设0即可. void CLMS511_interfa ...
- vs调试,监控变量
- css:html() text() val()
转http://www.jb51.net/article/35867.htm .html()用为读取和修改元素的HTML标签 对应js中的innerHTML .html()是用来读取元素的HTM ...
- npm安装package.json
npm安装package.json时,直接转到当前项目目录下,用命令npm install 或npm install --save-dev安装即可,自动将package.json中的模块安装到node ...
- 【翻译自mos文章】执行utlpwdmg.sql之后报ORA-28003, ORA-20001, ORA-20002, ORA-20003, ORA-20004 错误
执行utlpwdmg.sql之后报ORA-28003, ORA-20001, ORA-20002, ORA-20003, ORA-20004 错误. 适用于: Oracle Server - Ente ...
- python升级安装后的yum的修复
升级python版本号后,执行yum # yum -y install openssl 提演示样例如以下: There was a problem importing one of the Pytho ...
- VSTS跟Kubernetes整合进行CI/CD
利用VSTS跟Kubernetes整合进行CI/CD 为什么VSTS要搭配Kubernetes? 通常我们在开发管理软件项目的时候都会碰到一个很头痛的问题,就是开发.测试.生产环境不一致,导致开发 ...
- 32.10 使用模板更改控件的UI
32.10 使用模板更改控件的UI 样式是改变WPF控件基本外形的非常好(且非常简单)的方式,它通过为窗口部件的特性设置建立一组默认的值,从而改变WPF控件的基本外形.但是,即使样式允许我们改变各种 ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...