概述
1、Dynamic Routing Between Capsules
- CapsNet与CNN的区别
CNN善于捕捉特征是否存在,因为它的卷积结构总是尝试理解局部的特征与信息。当前面低级特征组合成后面复杂与抽象的特征时,可能需要通过池化层来减少输出张量或特征图的尺寸,而这种操作可能会丢失位置信息。比如在下面这两张图中,CNN对两张图的识别效果都是人脸,显然是不对的。
例如对下图CNN的识别过程:
CNN对这张图像可以正确的提取出嘴巴、鼻子、眼睛的特征,但是CNN并没有挖掘到这几个特征之间的位置关系和特征的方向,进而进行了误判,判断是人脸。
Geoffrey Hinton 等人提出的CapsNet 使用向量代替标量,因此能获取更多的信息。例如,输出的信息不再是标量X,而是向量X(可能性,方向,大小),那就可以检测眼睛、鼻子、嘴巴的一致性,从而得出结论。
标量神经元 向量神经元
由以上两图得出,与CNN不同的是,Capsule中神经元的激活情况表示了图像中存在的特定实体的各种性质。这些性质可以包含很多种不同的参数,例如姿势(位置,大小,方向)、变形、速度、反射率,色彩、纹理等。而输入输出向量的长度表示了某个实体出现的概率,所以它的值在0到1之间。
为了实现这种压缩,并完成 Capsule 层的激活,Hinton等人使用了一个被称为「squashing」的非线性函数。该非线性函数确保短向量的长度能够缩短到几乎等于零,而长向量的长度压缩到接近但不超过 1 的情况
- CapsNet结构
输入是一张手写数字的图像。首先对这张图片做了卷积,得到 Conv1;然后再对Conv1做卷积,并将其调整成适用于CapsNet的向量神经元层PrimaryCaps,而不是以往的标量神经元,PrimaryCaps到DigitCaps的转变由动态路由算法实现。最后,DigitCaps中一共10个向量(代表MNIST数据集中的10个数字分类),每个向量中元素的个数为16。对这10个向量求模,求得模的值最大的那个向量代表的就是图片概率最大的类别。
3)capsules间的连接与传播过程
Capsule 的输入向量就相当于经典神经网络神经元的标量输入,而该向量的计算就相当于两层 Capsule 间的传播与连接方式。输入向量的计算分为两个部分,即线性组合和 Routing。第一部分为上图中ui与wij间的线性组合,第二部分为上图中ui|jhat与sj间的Routing部分。
上图展示了Capsule间的层级结构和动态路由过程,底层ui有两个Capsule神经元,该层传到下一层Vj共有四个Capsule。u1和 u2 是一个向量,即含有一组神经元的 Capsule 单元,它们分别与不同的权重 Wij(同样是向量)相乘得出ui|jhat。例如 u1 与W12 相乘得出预测向量 u2|1 hat。随后该预测向量和对应的「耦合系数」cij 相乘并传入特定的下一层 Capsule 单元。不同 Capsule 单元的输入 Sj是所有可能传入该单元的加权和,即所有可能传入的预测向量与耦合系数的乘积和。随后就得到了不同的输入向量Sj,将向量输入到「squashing」非线性函数就得到后一层 Capsule 单元的输出向量Vj。然后可以利用该输出向量 Vj 和对应预测向量 ui|jhat的乘积更新耦合系数cij,这样的迭代更新不需要利用反向传播,论文中建议迭代三次。
4)动态路由算法的更新
由上图得,当高层输出向量Vj与低层的输入向量的乘积为负时,路由系数将会减少c11,乘积为正时,路由系数将会增加c12。通过这样的方式,更新耦合系数cij
最后
以上就是微笑金毛为你收集整理的Dynamic Routing Between Capsules笔记总结1、Dynamic Routing Between Capsules的全部内容,希望文章能够帮你解决Dynamic Routing Between Capsules笔记总结1、Dynamic Routing Between Capsules所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复