胶囊网络原理

作者: 史哲涵 | 来源:发表于2019-11-05 06:36 被阅读0次
image

什么是胶囊网络?

胶囊网络是 Geoffrey Hinton 提出的一种新型神经网络结构,为了解决卷积神经网络(ConvNets)的一些缺陷。正式介绍Capsule的论文由Geoffrey Hinton在2017年发表,论文名字为《Dynamic Routing Between Capsules》。如对原论文感兴趣,可以通过文章底部的方式进行下载

卷积网络有什么缺陷?

image

上图是卷积网络对卡戴珊图像的识别结果。第一张CNN给出的答案是人,概率为0.88,正确;第二张CNN给出的答案也是人,概率为0.90,错误;第三张CNN给出的答案是黑发,概率为0.79,错误。

CNN分类错误的两张图说明它的两个缺陷:

  • CNN对物体之间的空间关系 (spatial relationship) 的识别能力不强,把卡戴珊的嘴巴和眼睛换位置了却还被识别成人。

  • CNN对物体旋转之后的识别能力不强,把卡戴珊倒过来就被识别成头发了。

因此就有了Hinton下面的话:

Convolutional neural networks are doomed. -- Hinton

物体姿态

要正确的分类和识别物体,保持物体部分之间的分层姿态 (hierarchical pose) 关系是很重要。姿态主要包括平移 (translation)、旋转 (rotation) 和放缩 (scale) 三种形式。下图是变换及其矩阵表示

image

用R,T,S分别表示旋转、平移和缩放矩阵,那么对(x,y)先逆时针转30度,再向右平移2个单位,最后缩放50%到(x',y')可以由下列矩阵连乘得到

image

M就是从(x,y)到(x',y')变换的姿态矩阵。

image

如上图所示,物体的每个部分的姿态矩阵都与整体相关联。如果M是Face对Person的姿态矩阵,N是Month对Face的态矩阵,那么Month对Person的姿态矩阵为N'=MN。

如果我们知道部分相对于整体的姿态矩阵,那么根据物体某部分的位置就能推断出整体的位置。

将卡戴珊的右眼和嘴巴对换之后,由右眼和嘴巴各自根据相对于脸的姿态矩阵,推断出脸的位置,而最终得到两个不一致的脸的位置。因此有了姿态矩阵的信息,就可以保证下图不被识别为人。而不会像卷积网络那样,只要图像中有眼睛、嘴巴、鼻子等的存在就认为是人。

image 卷积网络的不变性使得它在识别物体的时候,丢失了物体间的相关位置关系,如下图所示 image

左侧是卷积网络对数字“2”的特征表示,即使数字在图像中进行了平移,得到的特征表示仍然一致。右侧的特征表示方法(如:胶囊网络)就包含了物体的位置信息,不仅能识别出数字“2”,还能判断数字“2”在图像中的位置。
胶囊网络胶囊网络也是一种神经网络,与普通神经网络的区别是胶囊网络的神经元是一个向量(一组值)而不是一个标量(单个值),其神经元叫做向量神经元(vector neuron)。向量神经元中的每个值表示某一个属性,如姿态 (位置、大小、方向),形变,速度,颜色,纹理结构等。向量神经元还有一个特殊的属性,其值由向量长度来表示,即神经元所表示的实例存在的概率。说明向量长度在[0,1]区间内。这样,各个属性构成了向量神经元的方向,而实例存在的概率构成向量神经元的长度。下图是标量神经元(普通神经元)与向量神经元的前向传播过程

image

标量神经元前向传播过程:

  1. 将输入标量 x 乘上权重 w

  2. 对加权的输入标量求和成标量 a

  3. 用非线性函数将标量 a 转化成标量 h

向量神经元前向传播过程:

  1. 将输入向量 u 与矩阵 W 相乘得到新的输入向量 U

  2. 将输入向量 U 乘上权重 c

  3. 对加权的输入向量求和成向量 s

  4. 用非线性函数将向量 s 转化成向量 v

向量神经元前向传播的公式表示如下: image image image image

其中i为输入层神经员的下标,j、k表示下一层神经元的下标,W是需要学习的参数,b和c的值由下面介绍的动态路由算法确定。Squash函数是Hinton专门为胶囊网络设计的新的激活函数。
动态路由算法

低层向量神经元将其输出发送给对此表示“同意”的高层向量神经元,这是动态路由算法的核心。低层向高层的映射关系如下

image

而单个低层向量神经元对高层的映射如下


image u1按一定的概率分成4份,分别向v1、v2、v3、v4传递信息。此处的概率就是上述公式中的cij,具体为c11、c12、c13、c14。要得到cij,只需求得bij,而bij更新的过程就是通过动态路由算法得到的。将bij初始化为0,以下面的公式进行更新 image 动态路由算法的具体过程如下(其中的 image 即为上文中的 image ) image

以上就是作者对胶囊网络的理解,希望对大家有所帮助。
扫描顶部二维码,关注“帅帅Go”公众号回复“capsule”即可得到下载链接

相关文章

  • 胶囊网络原理

    什么是胶囊网络? 胶囊网络是 Geoffrey Hinton 提出的一种新型神经网络结构,为了解决卷积神经网络(C...

  • 微信小程序实现自定义头部导航栏(详细)

    1.实现效果 2.实现原理 2.1获取胶囊的详细信息 width:胶囊的宽度;height:胶囊的高度top:胶囊...

  • 胶囊网络

    1.背景介绍   CNNs存在一些缺陷,如需要大量数据拟合网络、池化层丢失太多有效信息(包括了特征的位置信息)等。...

  • Comirec

    1.胶囊网络 胶囊网络与传统的神经网络一个是标量神经元,一个是向量神经元。 2.原始胶囊网络 2.Comirec ...

  • CapsuleGAN: Generative Adversari

    摘要:我们提出了生成式对抗胶囊网络(CapsuleGAN),一种使用胶囊网络(CapsNets)替代标准的卷积神经...

  • 关于机器学习的3个热门专业术语,成都大数据分析培训

    如果你是刚入门机器学习的AI探索者,你知道什么是胶囊网络吗? AutoML和元学习又是什么? 胶囊网络Capsul...

  • 利用胶囊网络对图结构数据进行分类的论文阅读

    近日阅读了两篇利用胶囊网络算法对图结构数据进行分类的文章,有了不少的收获。 上个学习我专门学习了胶囊网络算法,但是...

  • CapsNet

    胶囊网络 原文:Dynamic Routing Between Capsules源码:https://github...

  • CapsNet 胶囊网络理解

    姿态矩阵 物体姿态的变化主要包括旋转、平移和缩放三种形式。针对一个向量,可以通过乘上一个姿态矩阵来调整向量姿态(大...

  • 胶囊网络 Capsule Network

    原文:Dynamic Routing Between Capsules--2017[https://arxiv.o...

网友评论

    本文标题:胶囊网络原理

    本文链接:https://www.haomeiwen.com/subject/ehojbctx.html