专栏首页悦思悦读什么是胶囊网络?| 小白深度学习入门

什么是胶囊网络?| 小白深度学习入门

小白深度学习入门系列

1. 直观理解深度学习基本概念

2. 白话详解ROC和AUC

3. 什么是交叉熵

4. 神经网络的构成、训练和算法

5. 深度学习的兴起:从NN到DNN

6. 异军突起的激活函数:ReLU

7. CNN,RNN,LSTM都是什么?

8. 什么是Transformer

9. 什么是生成对抗网络(GAN)

什么胶囊网络

胶囊网络(CapNet)

胶囊网络(CapsNet)于2011年在Geoffrey Hinton的一篇名为《Transforming Autoencoders》的论文中首次出现。

2017年底,Geoffrey Hinton等人又发表了一篇名为《Dynamic Routing between Capsules》的论文,其中介绍了胶囊架构。这是一种新的深度神经网络模型。目前这种模型主要应用在图像识别领域。

所谓“胶囊(capsules)”指的是人脑中的一种结构,它们能够很好的处理不同类型的视觉刺激并对诸如位置、形制、速度等信息进行编码。

在深度学习中,胶囊则是嵌入的神经元集合。一个胶囊网络是由胶囊而不是由神经元构成。

胶囊网络的作用

那么为什么需要CapsNet,CapsNet对现有模型有哪些改进呢?

首先,在图像识别领域,目前是各种CNN网络的天下,不过CNN网络有其自身的局限性,这一点Hinton之前也提到过。CNN的不足主要体现在下面两方面 :

  1. CNN中,对不同特征的相对位置并不关注。
  2. 池化操作虽然效果很好,增加了模型的鲁棒性,但同时丢失了模型的很多细节。

CapsNet详解

CapsNet是一种思路,Hinton也说了论文中的实验方式只是一种最直接的实现方式。其核心思路包括以下两点:

1. 与传统神经元不同,Capsule的输入和输出都是一个向量,我们可以将向量长度理解为传统神经元中的概率,向量的方向来表示其他信息(包括位置信息)。

2. 使用基于约定的动态路由(后面会有解释)来代替传统CNN中的Max-Pool(也可以理解为一种原始的路由机制)。

Capsule的结构

下面是一个capsule和传统神经元的对比图,右边部分我们已经很熟悉了。下面来简单介绍一下测三个公式。

  1. 第一个Eq.2 中, W是一组通过训练获得的参数。它和传统神经元类似,只是从一维向量变为二维。
  2. 第二个Eq.2中, C是通过动态路由计算得到,不需要训练,具体动态路由的算法后面会介绍。
  3. Eq.1是一个非线性函数,分为两部分。右边部分负责将向量转换成一个近似的单位向量;左边部分是一个被称为Squashing的函数,使得输出的长度被压缩在0到1之间。前面我们提到过,这里输出的长度可以被理解为特征的概率。

动态路由

动态路由的思路就是将第I-1层变换后的输出(上图中的Uj|i)和第I层的输出(上图中的V)做点积,点积的结果代表两个向量的相似度。

我们约定,第I-1层输出到到第I层的权重于两层之间的相似度成正比,并且权重总和为1。下图是动态路由过程的伪代码, 其中的迭代次数r是一个超参数,Hinton的论文中建议将其设为3。

完整网络结构

了解了Capsule单元的结构之后,我们来看一下论文中给出的参考网络模型。参考网络实现了对MNIST手写数据集的图像识别,下图是模型的结构,可以看到这个胶囊网络模型只有三层,比传统模型的层数少了许多。

网络的第一层仍然是一个卷基层,第二层为主胶囊层,在主胶囊层中我们仍然使用了CNN中滑动窗口的概念。第三层为数字胶囊层,他的输出为1610的向量,其中每一个 161的向量对应着一个类的可能性。

原文使用了一个额外的图像重建结构来对模型进行训练,重建结构使用DiitCaps中活动的输出(可能性最大的)来重建出原始图像,通过这种方式强迫网络记住更多的图像特征。重建网络只是简单地使用了三个全连接层来实现,其结构如下图所示:

结语

本文通过使用了较短的篇幅来介绍胶囊网络的核心概念,内容中如果有纰漏或者难以理解之处,请留言加以指正。

如果读者有足够的时间,可以阅读文章开头处提到的文章更进一步的了解网络的更多细节。

胶囊网络中的胶囊单元给了我们构建深度神经网络时一个新的选型,通过动态路由机制网络也较好的解决了复杂网络难以训练的问题。

相信胶囊网络的退出只是一个开始,随着越来越多的人对这种网络的关注,更多的可能性奖杯不断地发掘出来。

本文分享自微信公众号 - 悦思悦读(yuesiyuedu),作者:HSC

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是Transformer?| 小白深度学习入门

    Transformer是什么?一句话来讲,就是完全利用attention机制来解决自然语言翻译问题。

    叶锦鲤
  • 如何成为人工智能(AI)产品经理

    首先,我们需要从一个大的历史背景和趋势上来思考:为什么会有AI产品经理这样一个岗位。

    叶锦鲤
  • 大数据技术在工业界的应用

    大数据是近几年非常热门的一个概念。到底什么叫做大数据呢?简单而言,就是具备4V属性的数据:

    叶锦鲤
  • LFN又添八个新成员,实现全球快速增长

    旧金山 - 2018年7月31日 - Linux Foundation Networking Fund(LFN),致力于促进ONAP和OPNFV等开放式网络项目...

    SDNLAB
  • 51 Nod 1057 N的阶乘【Java大数乱搞】

    1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的准确值。 Input 输入N(1 <= N ...

    Angel_Kitty
  • JS对象和数组

    对象的属性既可以存放基本数据类型也可以存放其他对象的引用值或者函数的引用值,如果存储的是函数的的引用值则该属性称为方法

    用户3159471
  • 价格战再起波澜,索尼宣布PSVR套装降价50美元

    VRPinea
  • 新建SpringBoot项目pom文件第一行报错 Unknown error

    由于代码审计的原因,原来的SpringBoot 2.0.1.RELEASE 需要更新到 2.1.6.RELEASE,替换了版本号以后,功能正常,但eclipse...

    pollyduan
  • 国内如何免费访问 Google

    1.下载 Chrome 扩展程序离线安装文件 google-access-helper.zip

    王小明_HIT
  • 拥抱开放式网络 通往下一代数据中心

    引言: 就IT行业发展来看,保持开放性是大势所趋。在网络领域占据主导地位的专有技术,在现代数据中心已经逐渐失去效能。 利用开放式网络解决方案,IT管理员可以构建...

    SDNLAB

扫码关注云+社区

领取腾讯云代金券