# Hinton的胶囊网络不太行？CVPR Oral论文：不比卷积网络更「强」

> 在一篇 CVPR 2021 Oral 论文中，来自慕尼黑大学、微软亚研的研究者对胶囊网络和卷积网络进行了全面的对比。一系列实验表明，一些被认为对胶囊网络（CapsNet）至关重要的设计组件实际上会损害它的鲁棒性，而另一些设计则有利于 CapsNet 的鲁棒性。

卷积神经网络取得了很大的成功，也很受欢迎。但是它也并不适合所有的任务。架构上的一些缺陷导致它并不能很好地完成一些任务。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103438.png)

因此，Hinton 和他的同事们提出了胶囊网络 (CapsNet) 作为 CNN 模型的替代。胶囊具有等变性并且输入输出都是向量形式的神经元而不是 CNN 模型中的标量值。胶囊的这种特征表示形式可以允许它识别变化和不同视角。在胶囊网络中，每一个胶囊都由若干神经元组成，而这每个神经元的输出又代表着同一物体的不同属性。这就为识别物体提供了一个巨大的优势，即能通过识别一个物体的部分属性来识别整体。

一直以来，人们普遍认为 CapsNet 比卷积网络更鲁棒。然而，还没有研究对这两个网络进行全面的比较，也不知道 CapsNet 中的哪些组件影响其鲁棒性。

在本文中，来自慕尼黑大学、微软亚研的研究者首先仔细研究了 CapsNet 中不同于图像分类的 ConvNet 网络的特殊设计，揭示了 CapsNet 中五个主要的组成部分：变换过程、动态路由层、挤压函数、除交叉熵损失之外的边际损失以及用于正则化的附加类条件重构损失。除了这些主要差异之外，研究者还对三种鲁棒性进行了全面的消融实验，包括仿射变换的鲁棒性、识别重叠数字的能力和语义表征的紧凑性。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103518.png)

论文地址：[http://128.84.4.27/pdf/2103.15459](http://128.84.4.27/pdf/2103.15459)

该研究表明，一些被认为对 CapsNet 至关重要的设计，即动态路由层和变换过程，实际上会损害它的鲁棒性，而另一些设计则有利于 CapsNet 的鲁棒性。基于这些发现，他们通过引入 CapsNet 成功背后的关键组件来增强 ConvNet。与 CapsNet 相比，本文提出的简单 ConvNet 具有更好的鲁棒性。

**鲁棒性比较：胶囊网络 VS 卷积网络**

在这一部分中，研究者对 CapsNet 的鲁棒性进行了实证研究。在深入研究之前，他们首先介绍了 CapsNet 和 ConvNet 的体系架构。CapsNet 是一种具有动态路由的胶囊网络 [24]。由于对 CapsNet 的研究仍处于初级阶段，将 CapsNet 与 LeNet 类型的 ConvNet——ConvNet-FC 进行了比较。ConvNet-FC 和 CapsNet 如下图 1 所示，输入是 28×28 MNIST 数据集图像。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103620.png)

- ConvNet-FC：ConvNet 基准是 Conv(256, 5, 1) + Conv(256, 5, 1) + Conv(128, 5, 1) + FC(328) + FC(192) + Softmax(10) ）；
-  CapsNet：CapsNet 带有动态路由，是 Conv(256, 9, 1) + Conv(256, 9, 2) + 动态路由，后面是一个重构子网络，FC(512) + FC(1024) + FC （28×28）。特征映射是通过两个标准卷积层计算的。

**输入仿射变换的鲁棒性**

为了检查两种模型的变换鲁棒性，研究者使用流行的基准 [24, 3]，其中模型在 MNIST 上训练并在 AffNIST 上测试。数据集示例如下图 2 所示。除了 ConvNet-FC 和 CapsNet 之外，实验中还包括了基准上的 SOTA 模型，即 Aff-CapsNet。它通过消除动态路由和在转换过程中共享转换矩阵来简化 CapsNet。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103652.png)

结果如下表 1 所示，由结果可以得出，在 ConvNet-FC 和 CapsNet 之间存在差距。如文献 [24,3] 所述，CapsNet 优于 ConvNet-FC，Aff-CapsNet 优于 CapsNet。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103713.png)

研究者以 Aff-CapsNet（一个简化的 CapsNet）为基准，对下表 2 中 CapsNet 的组成部分进行了进一步的消融研究。其中，动态路由不利于变换的鲁棒性，这一结果在表 1 中也体现出来。此外，当不使用挤压函数时，CapsNet 必须将胶囊长度回归到极限值（例如 0 或 1），这是一项艰巨的任务，会导致性能不佳。边际损失（margin loss）会略微削弱 CapsNet 的变换鲁棒性，而重构对其没有影响。而非条件重构方法在每次训练迭代中更新所有的胶囊，因此性能略有提高。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103736.png)

基于上述发现，研究者提出了一个新的简单的 ConvNet 基准——ConvNet-Avg。以两个卷积层开始，并以全局平均池化和输出层结束，这也是图像分类中常用的体系架构。利用交叉熵损失对模型进行训练，当模型达到测试性能（99.22%）时停止训练。如表 1 所示，该研究提出的简单的 ConvNet-Avg 在参数较少的情况下取得了略好的性能。

由输入仿射变换的鲁棒性实验可得：

- 与 ConvNet-FC 相比，CapsNet 在 AffNIST 上以较少的参数获得了更好的测试性能，研究者将差距归因于内核（kernel）大小；
- 动态路由会损害 CapsNet 的转换鲁棒性。当路由被移除时，统一的平均投票（NoR）能更好地汇集全局信息；
- 基准 ConvNet-Avg 显著优于 CapsNet。

**识别重叠数字**

文献 [24] 表明 CapsNet 通过分段能够识别重叠数字。为了检查这个属性，研究者使用 MultiMNIST 数据集进行测试，该数据集是通过将来自不同类的一个数字叠加在另一个数字之上生成的。具体来说，带有数字的 28×28 MNIST 图像，首先在每个方向上移动最多 4 个像素，从而得到 36×36 图像。生成的图像叠加到来自不同类别但相同集（训练数据集或测试数据集）的另一幅图像，具体示例如图 2c 所示。

下表 4 为识别重叠数字的性能结果，其中对 CapsNet 单个组件进行了消融实验。由结果可得，重构子网络有助于提高识别性能。然而，它不一定是类条件的。重构损失使训练过程规范化，使得关于两个数字的信息被编码在特征和高级胶囊中。边际损失可以直接应用于多目标分类任务，其性能优于标准的二值交叉熵损失。重构和边际损失都可以用于增强 ConvNet。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103816.png)

由识别重叠数字实验可以得到：

- 所有组件有助于 CapsNet 识别重叠数字；
- 非共享变换矩阵的变换过程和权重投票动态路由带来了较高的建模能力，这本质上有助于 CapsNet 在该任务上取得高性能；
- 在这个基准测试中，具有相似参数的简单 ConvNetFC(LK)的性能优于 CapsNet，说明 CapsNet 在识别重叠数字方面并不比 ConvNet 更具有鲁棒性。

**语义胶囊表征**

在 CapsNet 中，当胶囊中的单个元素受到扰动时，重构的图像在视觉上发生相应的变化[24]，见下图 4d。视觉上的变化往往对应于人类可以理解的语义对象的变化。在本实验中，研究者探索了哪个组件支持语义表征。由于这一特性主要通过重构子网络来实现，实验中介绍了 3 个模型：ConvNet-CR 、 ConvNet-R 和 ConvNet-CR-SF 。

训练之后，研究者在 160 种激活函数上执行了胶囊扰动实验。在 CapsNet 中，他们通过 0.05 的间隔（范围为[-0.2, 0.2]）轻微调整了胶囊表征的一个维度。重建图像如图 4d 所示，可以观察到图像的语义变化，如旋转和笔画粗细。

研究者发现，当在相同的范围内扰动相应函数时，ConvNets 中的重建图像在视觉上几乎保持不变，这可能是单位激活函数的扰动范围太小导致的。所以，他们逐步地扩大范围，直到重建图像无法被识别，这时范围为[-8, 8]。重建图像如图 4a、4b 和 4c 所示。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103843.png)

在下图 5 中，研究者使用具有一个 2D 输入空间和 3 个输出类的示例来说明这些函数的特征。ConvNet-R 从稍微纠缠的特征中重建了输入，在 ConvNet-CR 中，不同类的特征由于自身的类条件性实现了完美的分割。ConvNet-CR-CF 通过进一步挤压向量对特征空间进行限制，这样向量可以留在流形中。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103908.png)

下表 5 展示了各个模型的紧密度得分。研究者推测，正是这些限制提升了表征的紧密度。具体来讲，类条件重建和挤压函数帮助 CapsNet 学习有意义的语义表征，而动态路由甚至造成了损害。这两个组件都可以集成到 ConvNets 中，其中相较于 CapsNets，ConvNet-CR-SF 学习到了更好的语义紧密表征。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina1/20210617103934.png)

由语义胶囊表征实验可得：

类条件重构和挤压函数都有助于 CapsNet 学习有意义的语义表征，而动态路由则会起到相反的效果。这两个组件可以集成到 ConvNet，其中 ConvNet-CR-SF 比 CapsNet 学习到更好的语义紧凑表征。

![](https://maoxianxin1996.oss-accelerate.aliyuncs.com/codechina/20210615093836.png)