什么是胶囊网络?
胶囊网络是 Geoffrey Hinton 提出的一种新型神经网络结构,为了解决卷积神经网络(ConvNets)的一些缺陷。正式介绍Capsule的论文由Geoffrey Hinton在2017年发表,论文名字为《Dynamic Routing Between Capsules》。如对原论文感兴趣,可以通过文章底部的方式进行下载。
卷积网络有什么缺陷?
上图是卷积网络对卡戴珊图像的识别结果。第一张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) 三种形式。下图是变换及其矩阵表示
用R,T,S分别表示旋转、平移和缩放矩阵,那么对(x,y)先逆时针转30度,再向右平移2个单位,最后缩放50%到(x',y')可以由下列矩阵连乘得到
M就是从(x,y)到(x',y')变换的姿态矩阵。
如上图所示,物体的每个部分的姿态矩阵都与整体相关联。如果M是Face对Person的姿态矩阵,N是Month对Face的态矩阵,那么Month对Person的姿态矩阵为N'=MN。
如果我们知道部分相对于整体的姿态矩阵,那么根据物体某部分的位置就能推断出整体的位置。
将卡戴珊的右眼和嘴巴对换之后,由右眼和嘴巴各自根据相对于脸的姿态矩阵,推断出脸的位置,而最终得到两个不一致的脸的位置。因此有了姿态矩阵的信息,就可以保证下图不被识别为人。而不会像卷积网络那样,只要图像中有眼睛、嘴巴、鼻子等的存在就认为是人。
左侧是卷积网络对数字“2”的特征表示,即使数字在图像中进行了平移,得到的特征表示仍然一致。右侧的特征表示方法(如:胶囊网络)就包含了物体的位置信息,不仅能识别出数字“2”,还能判断数字“2”在图像中的位置。
胶囊网络胶囊网络也是一种神经网络,与普通神经网络的区别是胶囊网络的神经元是一个向量(一组值)而不是一个标量(单个值),其神经元叫做向量神经元(vector neuron)。向量神经元中的每个值表示某一个属性,如姿态 (位置、大小、方向),形变,速度,颜色,纹理结构等。向量神经元还有一个特殊的属性,其值由向量长度来表示,即神经元所表示的实例存在的概率。说明向量长度在[0,1]区间内。这样,各个属性构成了向量神经元的方向,而实例存在的概率构成向量神经元的长度。下图是标量神经元(普通神经元)与向量神经元的前向传播过程
标量神经元前向传播过程:
-
将输入标量 x 乘上权重 w
-
对加权的输入标量求和成标量 a
-
用非线性函数将标量 a 转化成标量 h
向量神经元前向传播过程:
-
将输入向量 u 与矩阵 W 相乘得到新的输入向量 U
-
将输入向量 U 乘上权重 c
-
对加权的输入向量求和成向量 s
-
用非线性函数将向量 s 转化成向量 v
其中i为输入层神经员的下标,j、k表示下一层神经元的下标,W是需要学习的参数,b和c的值由下面介绍的动态路由算法确定。Squash函数是Hinton专门为胶囊网络设计的新的激活函数。
动态路由算法
低层向量神经元将其输出发送给对此表示“同意”的高层向量神经元,这是动态路由算法的核心。低层向高层的映射关系如下
而单个低层向量神经元对高层的映射如下
以上就是作者对胶囊网络的理解,希望对大家有所帮助。
扫描顶部二维码,关注“帅帅Go”公众号回复“capsule”即可得到下载链接
网友评论