背景
研究问题
研究动机
CNN的缺陷
逆图形法
胶囊网络优点
-
由于胶囊网络集合了位姿信息,因此其可以通过一小部分数据即学习出很好的表示效果,所以这一点也是相对于CNN的一大提升。举个例子,为了识别手写体数字,人脑需要几十个最多几百个例子,但是CNN却需要几万规模的数据集才能训练出好结果,这显然还是太暴力了! -
更加贴近人脑的思维方式,更好地建模神经网络中内部知识表示的分层关系,胶囊背后的直觉非常简单优雅。
胶囊网络缺点
-
胶囊网络的当前实现比其他现代深度学习模型慢很多(我觉得是更新耦合系数以及卷积层叠加影响的),提高训练效率是一大挑战。
研究内容
胶囊是什么
人工神经网络不应当追求“神经元”活动中的视角不变性(使用单一的标量输出来总结一个局部池中的重复特征检测器的活动),而应当使用局部的“胶囊”,这些胶囊对其输入执行一些相当复杂的内部计算,然后将这些计算的结果封装成一个包含信息丰富的输出的小向量。每个胶囊学习辨识一个有限的观察条件和变形范围内隐式定义的视觉实体,并输出实体在有限范围内存在的概率及一组“实例参数”,实例参数可能包括相对这个视觉实体的隐式定义的典型版本的精确的位姿、照明条件和变形信息。当胶囊工作正常时,视觉实体存在的概率具有局部不变性——当实体在胶囊覆盖的有限范围内的外观流形上移动时,概率不会改变。实例参数却是“等变的”——随着观察条件的变化,实体在外观流形上移动时,实例参数也会相应地变化,因为实例参数表示实体在外观流形上的内在坐标。
-
人造神经元输出单个标量。卷积网络运用了卷积核从而使得将同个卷积核对于二维矩阵的各个区域计算出来的结果堆叠在一起形成了卷积层的输出。 -
通过最大池化方法来实现视角不变性,因为最大池持续搜寻二维矩阵的区域,选取区域中最大的数字,所以满足了我们想要的活动不变性(即我们略微调整输入,输出仍然一样),换句话说,在输入图像上我们稍微变换一下我们想要检测的对象,模型仍然能够检测到对象 -
池化层损失了有价值的信息,同时也没有考虑到编码特征间的相对空间关系,因此我们应该使用胶囊,所有胶囊检测中的特征的状态的重要信息,都将以向量形式被胶囊封装(神经元是标量)
囊间动态路由算法
-
权重均为非负标量 -
对每个低层胶囊i 而言,所有权重cij 的总和等于1 -
对每个低层胶囊i 而言,权重的数量等于高层胶囊的数量 -
这些权重由迭代动态路由算法确定
-
更多的迭代往往会导致过拟合 -
实践中建议使用3次迭代
整体框架
-
第一层:卷积层 -
第二层:PrimaryCaps(主胶囊)层 -
第三层:DigitCaps(数字胶囊)层 -
第四层:第一个全连接层 -
第五层:第二个全连接层 -
第六层:第三个全连接层
编码器
卷积层
-
输入:28×28图像(单色) -
输出:20×20×256张量 -
卷积核:256个步长为1的9×9×1的核 -
激活函数:ReLU
-
输入:20×20×256张量 -
输出:6×6×8×32张量(共有32个胶囊) -
卷积核:8个步长为1的9×9×256的核/胶囊
-
输入: 6×6×8×32张量 -
输出: 16×10矩阵
损失函数
解码器
-
输入:16×10矩阵 -
输出:512向量
-
输入:512向量 -
输出:1024向量
-
输入:1024向量 -
输出:784向量