举个卡戴珊的例子,讲讲Hinton的Capsule是怎么回事 | 教程+代码
2017-11-12 00:00
246 查看
Nick Bourdakos 文
李林 若朴 编译自 HackerNoon
量子位 出品 | 公众号 QbitAI
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的Capsule是怎么回事 | 教程+代码
- 举个卡戴珊的例子,讲讲Hinton的Capsule是怎么回事
- [转]孙鑫VC教程例子代码1---Windows程序内部运行原理
- spring3.0 mvc和rest风格的小例子配置demo代码教程
- AD中各字段在代码访问时的字段表述及访问AD用户的例子
- 区块链教程Fabric1.0源代码分析链码 链码语言平台
- [译]GLUT教程 - 整合代码3
- TortoiseGit配合msysGit在Git@OSC代码托管的傻瓜教程
- SpringMVC入门教程及其原理讲解和实例代码下载
- wordpress主题开发教程手记:短代码(Shortcodes)知识详解
- paypal express 教程和例子
- springmvc注解配置例子的实例代码下载
- ssh采用uuid作为主键的例子以及代码
- FreeRTOS操作系统教程,支持F103,F407和F429,配套145个例子,1200页教程
- iOS App集成Apple Pay教程(附示例代码)
- JDBC连接池教程(带具体例子)
- Python常用辅助安全测试6个代码例子
- JDBC-MySQL代码例子-3
- Android例子—Android文件下载--多线程断点下载的代码流程解析
- Redis教程(十五):C语言连接操作代码实例