摘要:传统神经网络的问题到目前为止,图像分类问题上较先进的方法是。我们把卡戴珊姐姐旋转出现这个问题的原因,用行话来说是旋转的程度超出了较大池化所带来的旋转不变性的限度。
Capsule Networks,或者说CapsNet,这个名字你应该已经听过好几次了。
这是“深度学习之父”的Geoffrey Hinton近几年一直在探索的领域,被视为突破性的新概念。最近,关于Capsule的论文终于公布了。
一篇即将发表于NIPS 2017:
Dynamic Routing Between Capsules
作者:Sara Sabour, Nicholas Frosst, Geoffrey E Hinton
https://arxiv.org/abs/1710.09829v2
另一篇是ICLR 2018正在匿名评审的:
Matrix capsules with EM routing
作者目前未知
https://openreview.net/pdf?id=HJWLfGWRb
要理解Capsule Networks,还得从卷积神经网络(CNN)的特性说起。
传统神经网络的问题
到目前为止,图像分类问题上较先进的方法是CNN。
而CNN的工作原理,是将每一层对应的特征累积起来,从寻找边缘开始,然后是形状、再识别实际的对象。
然而,在这个过程中,所有这些特征的空间关系信息丢失了。
虽然可能有点过度简化了,不过我们可以把CNN看做这样一个程序:
if (2 eyes && 1 nose && 1 mouth) {
It"s a face!
}
翻译成人话就是:如果有两只眼睛、一个鼻子、一张嘴,它就是一张脸!
一般人看见这个表述,第一反应大概是挺好的啊,有道理,没毛病~
对,有道理,不过我们需要转念想一想:这个表述还是有问题的。不信?看一张略恐怖的卡戴珊姐姐照片:
确实是两只眼睛一个鼻子一张嘴吧?
但我等人类都一眼就能看出来,这张照片不对劲啊!眼睛和嘴错位了啊!人不应该长这样!识别成鬼还差不多……
可是呢,CNN会认为,眼睛和嘴的位置不管在哪,都没什么区别,会很宽容地,把这张照片归类成“人”:
除了对人类五官的位置过于宽容之外,CNN还有还有一个毛病,就是对图片的角度要求有点苛刻,它能容忍照片稍微旋转一些,但要是旋转太多,它就不认得了。
我们把卡戴珊姐姐旋转180°:
出现这个问题的原因,用行话来说是旋转的程度超出了较大池化(maxpooling)所带来的旋转不变性(invariance)的限度。这其实有办法解决,就是在训练中用上各种可能角度的图片,行话叫做data augmentation。不过,这种做法实在是耗时费力。
另外,CNN还很容易受到白盒对抗性攻击(adversarial attacks)的影响,在图片上悄悄藏一些图案,就能让CNN把它误认作别的东西。
谷歌的神经网络把海龟误认成步枪,就是这个毛病:
所以Hinton老爷子才会觉得CNN不行。(Hinton真的很严格)
Capsule Networks前来救援!
CapsNet架构
Capsule Networks就能让我们充分利用空间关系,看到更多东西。在认人脸这件事上,可以这么表示:
if (2 adjacent eyes && nose under eyes && mouth under nose) {
It"s a face!
}
翻译成人话:如果有两只相邻的眼睛、眼睛下有一个鼻子、鼻子下有一张嘴,它就是一张脸。
你应该能看出来,这样来定义,神经网络就不会把畸形版卡戴珊姐姐也认作人脸了。
这种新架构还更善于从不同角度来识别形状,它在下面这个数据集上,可以获得更高的精度。这个精心设计的数据集就是用来进行单纯的形状识别,甚至是从不同的角度识别的。Capsule Networks击败了较先进的CNN,将错误数量减少了45%。
CapsNet把第二行图片识别为第一行同类图片的能力远超CNN
此外,最近发布的论文表明,与卷积神经网络相比,Capsules对白盒对抗性攻击显示出更大的抵抗力。
训练CapsNet
重点来了:要想理解一篇论文,较好的方法是把它实现出来。
Bourdakos基于Hinton的论文,写出了一份CapsNet的TensorFlow实现
代码:https://github.com/bourdakos1/capsule-networks
接下来的内容,就是要介绍如何训练它。
下面以如何在MNIST数据集上训练模型为例。这是一个著名的手写数字的数据集,是测试机器学习算法的良好基准。
首先从克隆repo开始:
git clone https://github.com/bourdakos1/capsule-networks.git
然后安装需求。
pip install -r requirements.txt
开始训练!
python main.py
MNIST数据集有6万个训练图像。默认情况下,模型将以128的batch size训练50个epoch周期。一个epoch代表训练集的一次完整运行。由于batch size是128,所以每个epoch大约有468个batch。
注意:如果你没有GPU,训练可能需要很长的时间。
推理
一旦模型完整训练过,就可以通过以下命令来测试:
python main.py --is_training False
结论
Capsule Networks似乎很棒,但仍在婴儿期,在训练大型数据集时可能遇到一些问题,但信心还是要有的。
欢迎加入本站公开兴趣群商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/4676.html
斯蒂文认为机器学习有时候像婴儿学习,特别是在物体识别上。比如婴儿首先学会识别边界和颜色,然后将这些信息用于识别形状和图形等更复杂的实体。比如在人脸识别上,他们学会从眼睛和嘴巴开始识别最终到整个面孔。当他们看一个人的形象时,他们大脑认出了两只眼睛,一只鼻子和一只嘴巴,当认出所有这些存在于脸上的实体,并且觉得这看起来像一个人。斯蒂文首先给他的女儿悠悠看了以下图片,看她是否能自己学会认识图中的人(金·卡...
摘要:近几年以卷积神经网络有什么问题为主题做了多场报道,提出了他的计划。最初提出就成为了人工智能火热的研究方向。展现了和玻尔兹曼分布间惊人的联系其在论文中多次称,其背后的内涵引人遐想。 Hinton 以深度学习之父 和 神经网络先驱 闻名于世,其对深度学习及神经网络的诸多核心算法和结构(包括深度学习这个名称本身,反向传播算法,受限玻尔兹曼机,深度置信网络,对比散度算法,ReLU激活单元,Dropo...
摘要:本文试图揭开让人迷惘的云雾,领悟背后的原理和魅力,品尝这一顿盛宴。当然,激活函数本身很简单,比如一个激活的全连接层,用写起来就是可是,如果我想用的反函数来激活呢也就是说,你得给我解出,然后再用它来做激活函数。 由深度学习先驱 Hinton 开源的 Capsule 论文 Dynamic Routing Between Capsules,无疑是去年深度学习界最热点的消息之一。得益于各种媒体的各种...
摘要:未来向何处去做领袖不容易,要不断地指明方向。又譬如想识别在这些黑白图像中,是否包含从到的手写体数字,那么深度学习的传统做法是,输出一个维向量,,其中每个元素的取值范围是,表示出现相应数字的概率。老爷子的论文中,输出的是十个维向量,其中。 CNN 未来向何处去?做领袖不容易,要不断地指明方向。所谓正确的方向,不仅前途要辉煌,而且道路要尽可能顺畅。Geoffrey Hinton 是深度学习领域的...
摘要:论文链接会上其他科学家认为反向传播在人工智能的未来仍然起到关键作用。既然要从头再来,的下一步是什么值得一提的是,与他的谷歌同事和共同完成的论文已被大会接收。 三十多年前,深度学习著名学者 Geoffrey Hinton 参与完成了论文《Experiments on Learning by Back Propagation》,提出了反向传播这一深刻影响人工智能领域的方法。今天的他又一次呼吁研究...
阅读 2435·2019-08-30 15:53
阅读 2550·2019-08-29 13:11
阅读 2641·2019-08-29 12:45
阅读 3464·2019-08-29 12:41
阅读 2301·2019-08-26 10:14
阅读 2129·2019-08-23 14:39
阅读 2294·2019-08-23 12:38
阅读 3352·2019-08-23 12:04