Matrix Capsule with EM Routing

摘要

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解释了为什么使用逻辑函数是正确的。

 

使用上面选择1的有效近似,通过使用具有轴对齐协方差矩阵的活跃胶囊j来解释整个数据点i的增量成本,仅仅是解释每个维度的成本的所有维度的总和,投票Vij的h。 这只是-ln(Phi|j),其中Phi|j是矢量化投票Vij的第h个分量的概率密度,在j的高斯模型下,维度h具有方差(σhj2和平均值μhj其中μj是j的pose的矢量化版本矩阵Mj

Matrix Capsule with EM Routing

对于j的单个维度h的所有较低级别的胶囊求和,我们得到:

Matrix Capsule with EM Routing

其中Σirij是分配给j的数据量,Vhij是Vij的维度h上的值。启用胶囊j增加了指定为j的低水平胶囊的装置的描述长度,从每个较低级别胶囊的-βu到-βa加上所有维度的成本之和,因此我们将胶囊j的**函数定义为:

Matrix Capsule with EM Routing

其中βa对于所有胶囊都是一样的,λ是一个逆温度参数。我们区分地学习βa和βu,并为λ设置一个固定的时间表(schedule)作为超参数。

 

为了最终确定层L + 1中的胶囊的pose参数和**值,我们在确定L层的pose参数和**值之后运行EM算法几次迭代(通常为3次)。由整个胶囊层实现的非线性是使用EM算法进行聚类查找的一种形式,因此我们将其称为EM Routing。

 

步骤1路由算法是根据给定的L层中胶囊的**值和投票返回层L + 1中胶囊的**值和pose参数。 Vhij是L层中**值为ai的胶囊i对L+1层中的胶囊j的投票的第h个维度。βa、βu是有区别地学习的,在每次迭代时,在一个固定的schedule下,反向温度λ增加。

Matrix Capsule with EM Routing

4 胶囊建筑

我们模型的一般结构如图1所示。该模型以5x5卷积层开始,具有32个通道(A = 32),步幅为2,具有ReLU非线性。 所有其他层是从初级胶囊层开始的胶囊层。 B = 32个主要胶囊类型中的每一个的4×4 pose是以该位置为中心的所有下层ReLU的输出的学习线性变换。主胶囊的**是通过将sigmoid函数应用于同一组较低层ReLUs的加权和而产生的。

Matrix Capsule with EM Routing

图1:具有一个ReLU卷积层的网络,其后是主卷积囊层和另外两个卷积囊层。

image-->Relu_conv1:对原图片进行普通卷积操作,原图片input=[32,32,1],卷积核大小5×5,卷积核个数32,stride=2,output=[14,14,32]。

PrimaryCaps:和上一篇论文中一样,是分组的卷积层,从而实现capsule matrix的表达形式。也即在ReLU Conv1得到的featuremap中的每个1*1的位置(深度为A=32),用B=32种capsule去检测一些entity。其中每种capsule其实就是一个kernel为1*1的卷积层,channels = 4*4+1=17(4*4用于计算pose matrix,1是activation)。所以,经过了PrimaryCaps的输出其实就是一个正常的feature map,只不过在深度上每17个数字组成了一组capsule而已。这一层的参数为A*B*(4*4+1)。

Matrix Capsule with EM Routing

主要胶囊之后是两个3x3卷积胶囊层(K = 3),每个胶囊层有32个胶囊类型(C = D = 32),步幅分别为2和1。 最后一层卷积胶囊连接到最终的胶囊层,每个输出级别有一个胶囊。

 

当将最后一个卷积胶囊层连接到最后一层时,我们不想丢弃有关卷积胶囊位置的信息,但我们也想利用所有相同类型的胶囊在不同位置时提取相同实体的事实。因此,我们共享相同胶囊类型的不同位置之间的变换矩阵,并将每个胶囊的感受野中心的缩放坐标(行,列)添加到其投票矩阵的右手列的前两个元素。 我们将此技术称为坐标添加。这应该鼓励共享的最终变换为这两个元素生成值,这两个元素表示实体相对于胶囊感受野中心的精确位置。

 

在每对相邻的胶囊层之间使用路由过程。 对于卷积胶囊,层L + 1中的每个胶囊仅向层L中的接收场内的胶囊发送反馈。因此,层L + 1中的胶囊的每个卷积实例接收来自层L中的每个胶囊类型的最多kernel size X kernel size反馈。靠近图像边界的实例接收较少的反馈,而角落的反馈仅在层L + 1中每个胶囊类型接收一个反馈。

4.1传播损失

为了使训练对模型的初始化和超参数不那么敏感,我们使用“传播损失”来直接最大化目标类(at)的**和其他类的**之间的差距。如果错误的等级ai的**比边距m更接近at那么它将被边距的平方距离处罚:

Matrix Capsule with EM Routing

通过从0.2的小范围开始并在训练期间将其线性增加到0.9,我们避免在早期层中使用死胶囊。 传播损失相当于平方Hinge损失,m = 1.Guermeur&Monfrini(2011)研究了多类SVM背景下这种损失的变种。

5 实验

smallNORB数据集(LeCun等人(2004))具有5类玩具的灰度立体图像:飞机,汽车,卡车,人类和动物。 每个类有10个物理实例,涂成亚光绿色。 为训练数据选择5个物理实例,为测试数据选择其他5个物理实例。 每个玩具都在18个不同的方位角(0-340),9个高度和6个光照条件下进行描绘,因此训练和测试集各包含24,300对立体对96x96图像。 我们选择smallNORB作为开发胶囊系统的基准,因为它经过精心设计,是一种纯粹的形状识别任务,不会受到背景和颜色的影响,但它比MNIST更接近自然图像。

表1:我们的胶囊结构的不同组分对smallNORB的影响。

Matrix Capsule with EM Routing

我们将smallNORB下采样到48X48像素,并将每个图像标准化为零均值和单位方差。在训练过程中,我们随机裁剪32X32补丁并为裁剪后的图像添加随机亮度和对比度。在测试期间,我们从图像中心裁剪32X32补丁,并在smallNORB上实现1.8%的测试错误。如果我们在测试时平均多次作物的类别**,我们达到1.4%。不使用元数据的smallNORB报告的最佳结果是2.56%(Cires¸an等人(2011))。为实现这一目标,他们增加了两个额外的立体声输入图像对,这些输入图像是通过使用中心偏离环绕滤波器和偏心环绕滤波器创建的。他们还对图像应用了仿射失真。我们的工作也胜过Sabour等人(2017)胶囊工作在smallNORB上达到2.7%。我们还在NORB上测试了我们的模型,这是一个增加了背景抖动的smallNORB版本,我们实现了2.6%的错误率,与2.7%的现有技术相当(Ciresan等人(2012))。

 

作为我们对新视点概括的实验的基线,我们训练CNN,其具有分别具有32和64个通道的两个卷积层。 两层的内核大小均为5,步长为1,内存为2X2最大池。 第三层是1024单元全连接层,具有压降并连接到5路softmax输出层。 所有隐藏单元都使用ReLU非线性。 如上所述,我们对胶囊网络使用与CNN基线相同的图像准备。 我们的基线CNN是对过滤器大小,通道数量和学习率进行广泛的超参数搜索的结果。

 

CNN基线在smallNORB上达到5.2%的测试错误率,并具有4.2M参数。 我们推断出Cires¸an等人(2011)的网络有2.7M参数。 通过使用小矩阵乘法,与我们的基线CNN相比,我们将参数数量减少了15到310K(并且因为9w.r.tCires¸an等人(2011))。 较小的胶囊网络A = 64; B = 8; C = D = 16,只有68K可训练参数,可达到2.2%的测试误差率,这也超过了现有技术水平。

 

图2显示了EM路由如何调整投票分配,胶囊意味着如何在投票中找到紧密集群。 直方图显示在路由迭代期间投票距离与每个类别包的平均值(pose)的分布。 在第一次迭代中,投票在5个最终层胶囊之间平均分配。 因此,所有胶囊接收的投票均接近其计算平均值0.05。 在第二次迭代中,同意投票的分配概率增加。 因此,大多数投票被分配给检测到的集群,中间行中的动物和人类和其他胶囊只能获得分散的票数,这些票数与计算出的平均值相差超过0.05。 附录中图2的缩小版本显示了每次路由迭代时投票距离的完整分布。

Matrix Capsule with EM Routing

图2:在每次路由迭代之后,投票距离与5个最终胶囊中每一个的平均值的直方图。 每个距离点由其分配概率加权。 所有三个图像都是从smallNORB测试集中选择的。 路由过程正确地在卡车和人类示例中路由投票。飞机示例显示了模型的罕见故障情况,其中飞机在第三次路线迭代中与汽车混淆。直方图被放大以仅可视化距离小于0.05的投票。 图B.2显示了“人”胶囊的完整直方图,没有剪切x轴或固定y轴的比例。

 

我们可以将胶囊**视为高斯混合中的混合比例,并将它们设置为与胶囊的分配概率之和成比例,并在一层中的所有胶囊上加1,而不是使用我们的MDL衍生胶囊**项来计算每个胶囊的单独**概率。 这会将smallNORB上的测试错误率提高到4.5%。 表1总结了路由迭代次数,损失类型以及矩阵的使用而不是pose向量的影响。

表2:当两个模型在熟悉的观点的错误率上匹配时,基线CNN和胶囊模型的smallNORB测试错误率在新观点上的比较。

Matrix Capsule with EM Routing

与图1相同的胶囊架构在MNIST上实现了0.44%的测试错误率。 如果第一个隐藏层中的通道数增加到256,则在Cifar10上实现11.9%的测试错误率(Krizhevsky&Hinton(2009))。

5.1推广到新的观点

更严格的推广测试是使用有限范围的观点进行训练并在更广泛的范围内进行测试。 我们对包含(300,320,340,0,20,40)方位角的训练数据的三分之一训练我们的卷积基线和我们的胶囊模型,并测试了包含方位角从60到280的三分之二的测试数据。在另一项实验中,我们对3个较小的高程进行了训练,并对6个较大的高程进行了测试。

 

很难确定胶囊模型是否更好地推广到新的观点,因为它在所有观点上实现了更好的测试精度。为了消除这种混淆因素,当其性能与使用训练观点的测试集的第三个上的基线CNN相匹配时,我们停止训练胶囊模型。然后,我们将测试集的三分之二上的这些匹配模型与新观点进行了比较。Tab2中的结果显示,与在熟悉的观点上具有匹配性能的基线CNN胶囊相比,在新颖视角和新颖高度上的新观点的测试误差率降低约30%。

6 对抗的健壮性

人们越来越关注神经网络在对抗示例中的脆弱性;攻击者稍微改变了一些输入,以欺骗神经网络分类器进行错误的分类。这些输入可以以多种方式创建,但是诸如FGSM(Goodfellow等人(2014))之类的简单策略已经显示出在图像分类任务中大幅度的降低卷积神经网络的准确性。我们针对抵御这种攻击的能力,比较了我们的胶囊模型和传统的卷积模型。

 

FGSM根据每个像素强度计算损失的梯度,然后在增加损失的方向上将像素强度改变一个固定量∈。因此,变化仅取决于每个像素的梯度符号。通过更新输入以最大化特定错误类的分类概率,可以将其扩展到目标攻击。 我们使用FGSM生成对抗攻击,因为它只有一个超参数(hyper-parameter),并且比较具有非常不同梯度大小的模型是很容易的。为了测试我们模型的健壮性,我们使用完全训练的模型从测试集生成了对抗图像。然后,我们记录了在这些图像上模型的准确性。

 

我们发现,我们的模型对于一般的和把FGSM作为目标的对抗性攻击来说都明显地不那么容易受到攻击;对于胶囊模型 (图3),相比同等的∈,小的∈更可以用来降低卷积模型的准确性。还需要注意的是,胶囊模型在无目标攻击后的准确度从不低于概率(20%),而卷积模型的准确度则大大低于概率,∈的值小到0.2

 

我们还针对基本迭代法(Kurakin等人(2016))的稍微复杂的对抗性攻击测试了我们的模型,这只是前面提到的攻击,此外,在创建对抗图像时需要多个更小的步骤。在这里我们也发现我们的模型比传统的卷积模型更具对抗性。

Matrix Capsule with EM Routing

图3: 对∈对抗性攻击后的准确性(左)和目标对抗性攻击后的成功率(右)。目标攻击的结果通过平均每个5个可能的类的攻击后的成功率来评估。

 

已经表明,模型中对抗性攻击的一些稳健性可以归因于梯度Brendel & Bethge(2017)的计算中简单的数值不稳定性。为了确保这不是我们模型健壮性的唯一原因,我们计算了梯度中零值相对于胶囊模型中图像的百分比,发现它小于CNN的值。此外,胶囊梯度小于CNN梯度,与Brendel&Bethge(2017)工作中的16个数量级相比,尽管只小2个数量级。

 

最后,我们通过使用CNN生成对抗性示例,并在我们的胶囊模型和不同的CNN上测试它们,从而测试我们的模型对黑盒攻击的健壮性。我们发现胶囊模型在此任务上的表现并不比CNN明显好。

7 相关工作

在最近多次尝试提高神经网络处理视点变化的能力中,有两个主流。一个流试图实现视点不变性,另一个流旨在实现视点等效性。Jaderberg等人提出的工作(2015),空间变换器网络,通过选择仿射变换来改变CNN的采样来寻求视点不变性。De Brabandere等(2016)扩展空间变换器网络,其中根据输入在推理期间调整滤波器。它们为特征图中的每个位置生成不同的过滤器,而不是将相同的变换应用于所有过滤器。他们的方法是从传统模式匹配框架(如标准CNN(LeCun等人(1990)))进行输入协方差检测的一步。Dai等人(2017)通过归纳滤波器的采样方法改进了空间变换器网络。我们的工作有很大的不同,因为一个单元不是基于与过滤器匹配的分数而被**的(在推理过程中,要么是固定的,要么是动态的)。在我们的例子中,只有当来自下面的层的变形poses相互匹配时才**胶囊。这是捕获协方差的更有效方法,并且导致具有更少参数的模型更好地归纳。

 

CNN的成功促使许多研究人员将CNN中内置的平移等效性扩展到包括旋转等效性(Cohen&Welling(2016),Dieleman等人(2016),Oyallon&Mallat(2015))。谐波网络中最近的方法(Worrall等人(2017))通过使用圆形谐波滤波器并使用复数返回最大响应和方向来实现旋转等效特征图。这共享了胶囊的基本表征思想:假设某个位置只有一个实体实例,我们可以使用几个不同的数字来表示它的属性。他们使用固定数量的旋转orders流。通过强制使任意路径上的旋转顺序的和相等,它们实现了补丁式的旋转等效。这种方法比数据增强方法,复制特征图或重复过滤器更具参数效率(Fasel&Gatica-Perez(2006),Laptev等人(2016))。我们的方法编码一般视点等价而不是仅仅仿射2D旋转。对称网络(Gens&Domingos(2014))使用迭代Lucas-Kanade优化来查找最低级别特征支持的poses。他们的关键弱点是迭代算法始终以相同的pose开始,而不是自下而上投票的平均值。

 

Lenc&Vedaldi(2016)提出了一种与仿射变换等效的特征检测机制(DetNet)。DetNet旨在检测不同视点变化下图像中的相同点。这项工作与我们的工作正交,但DetNet可能是实现**主要胶囊层的去渲染第一阶段的好方法。

 

我们的路由算法可以看作是一种注意机制。在这种观点中,它与Gregor等人(2015)的工作有关。他们通过使用高斯kernels来处理编码器生成的特征映射的不同部分,从而提高了生成模型中的解码器性能。 Vaswani等人(2017)使用softmax注意机制在为查询生成编码时,将查询序列的部分与翻译任务的输入序列的部分匹配。它们显示了根据使用循环架构的先前翻译工作的改进。我们的算法在相反的方向上有所关注。竞争不是在较低级别的胶囊之间,因为一个较高级别的胶囊可能参加。它位于较高级别的胶囊之间,较低级别的胶囊可能会投票给它。

7.1胶囊的先前工作

Hinton等人(2011)在一个变换自编码器中使用了一个变换矩阵,它可以将立体图像对变换成来自稍微不同视角的立体对。但是,这种系统需要由外部提供变换矩阵。最近,按一致性路由(routing-by-agreement)在分割高度重叠的数字上得到了非常好的效果(Sabouret al. (2017)),但这个系统还有一些不足之处,而我们的研究成果已经解决了这些问题:

1、它使用了姿态向量(pose vector)的长度来表示由一个 capsule所表示的实体存在的概率。为了让该长度小于 1,需要一种无原则的非线性(unprincipled non-linearity),这可以防止其成为任何可感知的目标函数,它由迭代式的路由过程(routingprocedure)最小化。

2、它使用了两个姿态向量之间的角的余弦来测量它们之间的一致性。和高斯聚类的对数方差不一样,余弦并不非常适用于区分相当好的一致性与非常好的一致性。

3、它使用了长度为 n 的向量,而不是有 n 个元素的矩阵来表示一个姿态,所以其变换矩阵具有 n2个参数,而不只是 n 个。

8 总结

基于Sabour等人(2017)的工作,我们提出了一种新型的胶囊系统,其中每个胶囊都有一个逻辑单元来表示实体的存在,以及一个表示该实体pose的4x4 pose矩阵。我们还介绍了一种新的基于EM算法的胶囊层之间的迭代路由程序,该程序允许将每个较低级别胶囊的输出路由到上面层的胶囊中,以这样的方式使活性胶囊获得一组类似的pose投票。与最先进的CNN相比,这个新系统在smallNORB数据集上的准确度显著提高,减少了45%的错误。我们也已经证明,它比CNN的基线在白盒对抗攻击中显著更健壮。

 

SmallNORB是开发新形状识别模型的理想数据集,因为它缺乏许多在自然环境下的图像的附加特性。现在我们的胶囊模型在NORB上运行良好,我们计划实现一个高效版本,以在更大的数据集(如ImageNet)上测试更大的模型。