1. 介绍
分类性能的提升往往会转化为各种应用领域中显着的质量提升,深度卷积架构的架构改进可用于提高大多数其他计算机视觉任务的性能,这些任务越来越依赖于高质量的学习视觉特征。在 AlexNet 功能无法与手工设计、制作的解决方案竞争的情况下,网络质量的改进为卷积网络带来了新的应用领域。
GoogleNet 使用了大约 700 万个参数,比其前身 AlexNet(使用 6000 万个参数)减少了 9 倍。此外,VGGNet 使用的参数比 AlexNet 多大约 3 倍。
Inception 架构的复杂性使得对网络进行更改变得更加困难。如果单纯地扩展架构,则很大一部分计算收益可能会立即丢失。如果认为有必要增加某些 Inception 式模型的容量,那么只需将所有 滤波器组大小 的数量加倍的简单变换将导致计算成本和参数数量增加 4 倍。
2. 通用设计原则
避免表示瓶颈,尤其是在网络早期。前馈网络可以用从输入层到分类器或回归器的非循环图来表示。这为信息流定义了明确的方向。对于网络中的任何一个分割(即将网络分成两部分,一边是输入,一边是输出),都可以评估通过该分割的信息量。
从输入到输出,表示的大小(即特征的数量或维度)应该逐渐减小,直到达到用于特定任务的最终表示。这种逐渐减小的过程有助于网络逐步提取和精炼关键信息,同时避免不必要的复杂性。理论上,信息内容不能仅仅通过表示的维度来评估,因为它抛弃了相关结构等重要因素;维度仅提供信息内容的粗略估计。
更高维度的表示更容易在网络中进行 局部处理。增加卷积网络中每个图块的激活可以实现更多独立的特征。由此产生的网络将训练得更快。
空间聚合(如池化或者更复杂的聚合函数)可以在较低维度的嵌入上完成,而不会损失太多或任何表示能力。在执行更分散的(例如 3 × 3)卷积之前,可以在空间聚合之前减小输入表示的维度,而不会产生严重的不利影响。如果在 空间聚合 上下文中使用输出,则相邻单元之间的强相关性会导致降维期间的信息损失会较少。
平衡网络的宽度和深度。通过平衡 每个阶段 滤波器的数量和网络的深度可以达到网络的最佳性能。增加网络的宽度和深度有助于提高网络质量。然而,如果两者并行增加,则可以达到恒定计算量的最佳改进。
一个阶段可以是一个卷积层或者一组卷积层。
3. 使用大卷积核尺寸分解卷积
由于 Inception 网络是完全卷积的,因此每个权重对应于每次激活的一次乘法。因此,计算成本的任何减少都会导致参数数量的减少。这意味着通过适当的因子分解,我们最终可以获得更多 解耦 的参数,从而加快训练速度。此外,我们可以利用计算和内存节省来增加网络的滤波器组大小,同时保持在单台计算机上训练每个模型副本的能力。
解耦(Decoupling)是指降低系统组件之间的依赖程度。
解耦是希望减少各个模块之间的依赖关系,使模块间尽可能的独立存在
3.1 因式分解为更小的卷积
具有较大空间滤波器(例如 5 × 5 或 7 × 7)的卷积在计算方面往往会非常昂贵。例如,在输入数据有 m 个特征图或通道时 使用 n 个卷积核的 5 × 5 卷积的计算成本是具有相同数量卷积核的 3 × 3 卷积的 25 / 9 = 2.78 倍。当然,5×5 卷积核可以捕获较早层中较远的单元激活之间的信号之间的依赖关系,因此卷积核几何尺寸的减小会导致表达能力的巨大损失。
3.2 空间分解为不对称卷积
通过使用非对称卷积,可以做得比 2 × 2 更好,例如n × 1。例如,使用 3 × 1 卷积后跟 1 × 3 卷积相当于滑动具有与 3 × 3 卷积相同的感受野的两层网络。
如果输入和输出 卷积核 的数量相等,那么对于相同数量的输出 卷积核 ,两层解决方案的成本仍然要低 33%。相比之下,将一个 3 × 3 卷积分解为两个 2 × 2 卷积仅节省 11% 的计算量。
理论上,我们可以更进一步,认为可以用 1 × n 卷积,然后是 n × 1 卷积来替换任何 n × n 卷积,并且随着 n 的增长,计算成本节省会急剧增加。
n × n 卷积分解后的 Inception 模块
为 17 × 17 的特征图选择 n = 7
在中等网格大小上(在 m×m 特征图上,其中 m 范围在 12 到 20 之间)给出了非常好的结果。在这个层面上,通过使用 1 × 7 卷积,然后使用 7 × 1 卷积可以获得非常好的结果。
4. 辅助分类器的实用性
引入了辅助分类器的概念来提高非常深的网络的收敛性。最初的动机是将有用的梯度推到较低层,使它们立即有用,并通过解决非常深的网络中的梯度消失问题来提高训练期间的收敛性。在训练接近结束时,具有辅助分支的网络开始超过没有任何辅助分支的网络的准确性,并达到稍高的平台。
5. 有效减小网格(特征图)尺寸
在传统的卷积网络中,通常会使用某种池化操作(如最大池化或平均池化)来减小特征图的网格大小。在应用最大池化或平均池化之前,通常需要扩展网络滤波器的激活维度,以避免所谓的“表达瓶颈”。
例如,从一个具有 个 卷积核 的 网格开始,如果希望得到一个具有 个 卷积核 的 网格,首先需要在更大的网格上进行一个步长为1的卷积,使用 个卷积核,然后应用一个额外的池化步骤。这意味着整体的计算成本主要由在较大网格上使用 操作的昂贵卷积所决定。
使用卷积替代池化:
一种可能的解决方案是使用卷积来替代池化,这可以将计算成本减少到 ,即减少到原来的四分之一。然而,这种替代方案会导致表示的整体维度降低到 ,从而导致网络表达能力下降(即出现表达瓶颈)。