摘要
capsule 是一组神经元,其输出可表征同一个实体的不同性质。我们描述了一种 capsule 版本,其中每个 capsule 都有一个 logistic 单元(用来表示一个实体的存在)和一个 4×4 的姿态矩阵(pose matrix)(可以学习表征该实体与观看者之间的关系)。某一层的 capsule 会为上一层中许多不同 capsule 构成的姿态矩阵投票(vote),这是通过将它自己的姿态矩阵与视角不变的变换矩阵(viewpoint-invariant transformation matrix)相乘而实现的,可以学习表征「部分-整体」关系。这些投票中的每一个都会根据分配的系数加权。这些系数使用 EM 算法迭代式地更新,这样每一个 capsule 的输出都会被路由到上一层的一个 capsule,它会收到一组相似投票的集群。这整个系统是通过每个相邻层对之间的 EM 的展开的 3 次迭代而鉴别式地训练的。在 smallNORB 基准上,相比于当前最佳的方法,capsule 将测试错误的数量降低了 45%。比起我们的基准卷积神经网络,capsule 也表现得更能抵抗白盒对抗攻击(white box adversarial attack)。
1 介绍
卷积神经网络基于一个简单的事实,即视觉系统需要在图像中的所有位置使用相同的知识。这是通过绑定特征检测器的权重来实现的,以便在一个位置学习的特征在其他位置可用。 卷积胶囊扩展了跨地点的知识共享,包括关于以一个熟悉的形状为特征的部分-整体关系的知识。视点变化对像素强度具有复杂的影响,但对pose矩阵的简单线性效应表示一个对象或者对象的部分与观察者之间的关系。胶囊的目的是充分利用这种潜在的线性,既可以处理视点变化,也可以改善分割决策。
胶囊使用高维重合过滤:可以通过寻找其pose矩阵的投票之间的一致性来检测熟悉的对象。 这些投票来自已经检测到的部分。一部分通过将其自己的pose矩阵乘以学习的变换矩阵来产生投票,该变换矩阵表示部分和整体之间的视点不变关系。 随着观点的变化,部分和整体的pose矩阵将以协调的方式改变,以便来自不同部分的投票之间的任何协议将持续存在。
寻找在无关投票的迷雾中达成一致的高维度投票的紧密集群是解决将部分分配给整体的问题的一种方法。这是非平凡的,因为我们不能以低维平移空间被网格化以促进卷积的方式对高维姿势空间进行网格化。为了解决这一挑战,我们使用称为“路由协议”的快速迭代过程,根据来自该部分的投票与来自分配给该整体的其他部分的投票的接近程度,更新部分分配给整体的概率。这是一个强大的分割原则,它允许熟悉的形状知识导出分割,而不是仅使用低级别的线索,如颜色或速度的接近度或一致。胶囊和标准神经网络之间的重要区别在于胶囊的激活基于多个输入pose预测之间的比较,而在标准神经网络中,它基于单个输入活动矢量和学习重量矢量之间的比较。
2 胶囊的工作原理
神经网络通常使用简单的非线性,其中非线性函数应用于线性滤波器的标量输出。 它们还可以使用softmax非线性,将整个logits向量转换为概率向量。 胶囊使用更复杂的非线性,其将一层胶囊的整组激活概率和pose转换成下一层中的胶囊的激活概率和pose。
胶囊网络由多层胶囊组成。 层L中的胶囊组表示为ΩL.每个胶囊具有4×4 pose矩阵M和激活概率a。这些就像标准神经网络中的活动:它们依赖于当前输入而不是存储。在层L中的每个胶囊i和层L+1中的每个胶囊j之间是4×4可训练变换矩阵Wij。这些WijS(以及每个胶囊的两个学习偏差)是唯一存储的参数,并且它们是有区别地学习的。 胶囊i的pose矩阵由Wij变换以对胶囊j的pose矩阵投票Vij = MiWij。 层L+1中所有胶囊的pose和激活是通过使用非线性路由过程计算的,该过程得到所有i∈ΩL,j∈ΩL+1的输入Vij和ai。
非线性过程是期望最大化过程的一个版本。它迭代地调整层L+1中胶囊的平均值,方差和激活概率以及所有i∈ΩL,j∈ΩL+1(L层胶囊和L+1层胶囊)之间的分配概率。 在附录1中,我们给出了routing-by-agreement的温和直观的介绍,并详细描述了它如何与EM算法相结合以拟合高斯混合。
3使用EM进行路由协议
让我们假设我们已经决定了一层中所有胶囊的pose和激活概率,我们现在想要决定在上面的层中激活哪些胶囊,以及如何将每个活动的下层胶囊分配给一个活跃的高层胶囊。 较高层中的每个胶囊对应于高斯,并且较低层中的每个活动胶囊的pose(转换为向量)对应于数据点(或者如果胶囊部分活动则对应于数据点的一部分)。
我们在决定是否激活更高级别的胶囊时可以选择使用最小描述长度原则。选择0:如果我们不激活它,我们必须为每个数据点支付固定的-βu成本,用于描述分配给更高级别的胶囊的所有较低级别胶囊的pose。该成本是在不合适的统一先验下数据点的负对数概率密度。对于小数分配,我们支付固定成本的一小部分。选择1:如果我们确实激活更高级别的胶囊,我们必须支付固定的-βa成本来编码其均值和方差以及它是活跃的,然后支付额外费用,通过分配概率按比例分摊,用于描述较低级胶囊的平均值与为其预测的值之间的差异,利用较高级别胶囊的平均值通过变换矩阵的逆进行预测。计算描述数据点的成本的一种更简单的方法是在高斯分布下使用该数据点投票的负对数概率密度,该高斯分布由它分配给它的任何更高级别的数据包拟合。由于附录1中解释的原因是不正确的,但我们使用它是因为它的计算量更少(在附录中也有解释)。然后,选择0和选择1之间的成本差异是在每次迭代时,都通过逻辑函数来确定更高级别的胶囊的激活概率。附录1解释了为什么使用逻辑函数是正确的。
使用上