“卷积神经网络(CNN)的时代已经过去了!”

——Geoffrey Hinton

酝酿许久,深度学习之父Geoffrey Hinton在10月份发表了备受瞩目的Capsule Networks(CapsNet)。 Hinton本次挟CapsNet而来,大有要用它取代CNN的气势。

今天,有科技媒体发布Capsule Networks(CapsNet)开源的消息,去寻找Github链接后,发现本次开源非常低调且隐蔽,隐藏在谷歌tensorflow的专题之下,没有相关报道,谷歌也搜不到,不熟悉Github的同学很难查找。

先放上链接:https://github.com/Sarasra/models/tree/master/research/capsules

因为发布低调,所以,Star数只有23,Folk数也只有12个。当然,这也并不影响这个开源项目的优秀和影响力。

那么,欲取代CNN的Capsule Network究竟是什么来头?CapsNet相比CNN到底有哪些优势?它又是否能为AI界带来革命性转折呢?我们不妨来为大家科普一下这一深度学习的新里程碑。

首 先,这位被誉为深度学习之父Geoffrey Hinto究竟是何许人也呢?在上世界50年代,深度神经网络的概念就已出现,从理论上来讲可以解决众多问题,但是一直以来却没有人知道该如何训练它,渐 渐的也就被放弃。直至1986年,Hinton想到了通过反向传播来训练深度网络,标志了深度学习发展的一大转机。然而,受限于当时的计算机运算能力,直 到2012年,Hinton的发明才得以一显神通。这一突破也为近年来人工智能的发展奠定了基础。

2017年 10月26日,Hinton又发表了一项开创性的论文——Capsule Networks(胶囊网络),或将再次改写深度学习的发展历程。(论文链接:https://arxiv.org/pdf/1710.09829v1.pdf)

传统神经网络中存在的问题

目前为止,CNNs(卷积神经网络)仍是最先进的图像分类识别方法。

简单来讲,CNNs通过逐层累加调整实现分类。它首先检测到边缘,然后是形状,然后是实际的识别对象。CNN的实现方式极具创新,然而在这一过程中却有一项重要的信息丢失了——特征之间的空间关系。下面是一个CNN工作原理的简化描述:

如果有两只眼睛,一只鼻子,一张嘴,那么这就是一张脸。

乍一看完全没问题啊,完美!那我们拿卡戴珊大姐的照片来试一下,看看会怎么样:

(前方高能……

请帮忙计算一下这位大姐的心理阴影面积……但话说回来,这也确实是两只眼睛,一个鼻子和一个嘴巴呀!我们很容易就能发现,这些特征的空间位置明显是错误的,不符合“脸”的特征,然而CNN在处理这一概念上却十分笨拙。

除了被图像的错误位置所迷惑,CNN在查看不同方向的图像时也很容易混淆。解决这个问题的方法之一,就是对所有可能的角度进行大量训练,但是这需要花费很多时间,而且似乎有些违反常理。

我们只要把Kim的照片颠倒一下,就能发现其性能的大幅下降:

颠倒的Kardashian被识别成了“炭黑色”

最后,卷积神经网络可能很容易受到白盒对抗攻击(攻击者知晓机器学习所用的算法和相关参数,并据此在对抗性攻击过程中与系统交互)。这种攻击在对象上嵌入了一个秘密的图案,由此使这张图片被错误识别。

讲到这,我们就不难理解为什么Hinton曾发表过这样的言论:“卷积神经网络的时代已经过去了”

胶囊网络“拯救世界”!

胶囊网络构架

胶囊网络的引入使我们能够充分利用空间关系,它可以实现以下逻辑:

如果有两个相邻的眼睛,眼睛下长了鼻子,鼻子下长了嘴巴:那么这就是一张脸。

你应该可以看到,这次我们定义的神经网络在处理卡戴珊大姐的照片过程中不会那么容易被糊弄了。

这种新的架构在以下数据集上也获得了更高的识别准确度。这个数据集经过了精心设计,是一个纯粹的形状识别任务,即从不同的角度来看也能识别物体。CapsNet在该数据集上打败了最先进的CNN,将错误数量减少了45%。

CapsNet能够识别出与上下对应的图像同属一个类别(动物,人类,飞机,汽车,卡车)。

另外,根据他们最近的研究成果,胶囊网络在对抗白盒攻击方面比卷积网络也更有效果。

训练CapsNet

要想使用胶囊网络,首先你得训练它——于是,我根据Hinton 的论文建立了一个Repo(非常感谢naturomics).

以下指南将为你提供在MNIST数据集上训练的模型。(MNIST是手写数字的数据集,很适合用作测试机器学习算法的基准线)

1. 复制Repo:

git clone https://github.com/bourdakos1/capsule-networks.git

2. 安装 requirements文件:

pip install -r requirements.txt

3. 开始训练!

python main.py

MNIST数据集包含6万个训练图像。默认情况下,该模型每次批处理的大小是128个,训练50次。每一次训练都是数据集的一次完整运行过程。由于每次批量大小是128,所以每次训练大约有468个批处理(60,000 / 128 ≈468)。

一旦我们的模型得到充分的训练,我们可以通过运行以下命令来测试它:

python main.py --is_training False

最后,我想指出,虽然胶囊网络看起来威力十足,但它现在仍然处在婴儿期。在训练庞大的数据集时,我们可能会遇到问题。但总体来说,我还是对胶囊网络的未来发展充满信心的。

来自:大数据文摘

相关链接
 
 
 
 

深度学习之父低调开源 CapsNet,欲取代 CNN的更多相关文章

  1. Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时

    Hinton“深度学习之父”和“神经网络先驱”,新论文Capsule将推翻自己积累了30年的学术成果时 在论文中,Capsule被Hinton大神定义为这样一组神经元:其活动向量所表示的是特定实体类型 ...

  2. Deep learning深度学习的十大开源框架

    Google开源了TensorFlow(GitHub),此举在深度学习领域影响巨大,因为Google在人工智能领域的研发成绩斐然,有着雄厚的人才储备,而且Google自己的Gmail和搜索引擎都在使用 ...

  3. 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))

    需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...

  4. 深度学习基础-基于Numpy的卷积神经网络(CNN)实现

    本文是深度学习入门: 基于Python的实现.神经网络与深度学习(NNDL)以及动手学深度学习的读书笔记.本文将介绍基于Numpy的卷积神经网络(Convolutional Networks,CNN) ...

  5. 深度学习:Keras入门(二)之卷积神经网络(CNN)

    说明:这篇文章需要有一些相关的基础知识,否则看起来可能比较吃力. 1.卷积与神经元 1.1 什么是卷积? 简单来说,卷积(或内积)就是一种先把对应位置相乘然后再把结果相加的运算.(具体含义或者数学公式 ...

  6. 深度学习:Keras入门(二)之卷积神经网络(CNN)【转】

    本文转载自:https://www.cnblogs.com/lc1217/p/7324935.html 说明:这篇文章需要有一些相关的基础知识,否则看起来可能比较吃力. 1.卷积与神经元 1.1 什么 ...

  7. 深度学习:Keras入门(二)之卷积神经网络(CNN)(转)

    转自http://www.cnblogs.com/lc1217/p/7324935.html 1.卷积与神经元 1.1 什么是卷积? 简单来说,卷积(或内积)就是一种先把对应位置相乘然后再把结果相加的 ...

  8. 吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:RNN和CNN混合的鸡尾酒疗法提升网络运行效率

    from keras.layers import model = Sequential() model.add(embedding_layer) #使用一维卷积网络切割输入数据,参数5表示每各个单词作 ...

  9. CVPR2015深度学习回顾

    原文链接:http://www.csdn.net/article/2015-08-06/2825395 本文做了少量修改,仅作转载存贮,如有疑问或版权问题,请访问原作者或告知本人. CVPR可谓计算机 ...

随机推荐

  1. 各技能DBC参数

    推荐你  通过 引擎的帮助文件查找标准魔法DB 下面是 部分hero引擎的标准魔法DB 34,解毒术,2,26,16,0,0,0,0,0,2,42,50,44,100,46,200,40,, 35,老 ...

  2. Vue - 过渡 列表过渡

    列表的进入/离开过渡 获取不大于数组长度的随机数,作为插入新值的位置 <div id="app" class="demo"> <button ...

  3. 短网址(t.cn、url.cn)生成,网址缩短接口API

    简要说明 短网址api接口有很多格式,不同的接口生成的短网址格式也不同,比如常见的t.cn.url.cn.w.url.cn等格式.总而言之短网址接口就是用来将一个冗长的链接缩短成10个字符以内的短链接 ...

  4. EVE无法安装vim

    有些时候,由于一些错误的操作,可能导致vim无法使用,例如如下情况: root@eve-ng:~# vim /etc/profile-bash: vim: command not found 此时,一 ...

  5. Go递归

    1. 递归介绍 package main import ( "fmt" ) func test(n int) { if n > 2 { n-- test(n) } fmt.P ...

  6. Docker配置阿里云镜像源

    Docker默认拉取镜像是从这里拉取(https://hub.docker.com/),拉取的速度让人...,所以是配置国内镜像源,拉取速度十分惊人 一.版本要求 Docker版本:1.10以上 二. ...

  7. office自签名证书

    在 Office安装目录,找到 SELFCERT 文件,双击打开填写名称,生成

  8. 02-Spring的IOC示例程序(通过id获取对象)

    *******通过IOC容器创建id对象并为属性赋值******** 整体结构: ①创建一个java工程 ②导包 ③创建log4j.properties日记配置文件 # Global logging ...

  9. 事件和方法的区别,以input框的blur事件为例

    1. 我们在原生的js中学到的事件 onblur 2. 使input框失去焦点的方法blur 3. jquery中的方法blur 是当input框失去焦点时触发的回调 三者是不相同的 事件:指的是一个 ...

  10. java 反射获取设置私有成员变量的值

    for (Object arg:args) { //处理applicationCode Class<?> argClass = arg.getClass(); Field applicat ...