雷锋网按:本文为雷锋字幕组编译的技术博客 A Simple Guide to the Versions of the Inception Network,原标题,作者为 Bharath Raj。

翻译 | 胡瑛皓 乔月 整理 | 凡江

Inception 网络是卷积神经网络 (CNN) 分类器发展中的一个重要里程碑。在 inception 之前, 大多数流行的 CNN 只是将卷积层堆叠得越来越深,以期获得更好的效果。

nginx reactor模型(InceptionNetwork各版本演进史)(1)

这就是 CNN 架构设计。有趣的是这个说法在第一篇 inception 网络的论文(https://arxiv.org/pdf/1409.4842v1.pdf)中被引用。

从另个方面来看 Inception network 是复杂的(大量工程优化)。使用很多的技巧以提高其性能 (同时从速度和准确率)。随着不断演进,也产生了几个不同版本的网络。以下是几个流行的版本:

上面每个版本均是对其前一个版本的迭代改进。理解版本升级的细节可以帮助我们构建自定义分类器,同时提高速度和准确率。另外,依赖于你的数据,低版本可能实际上效果更好。

本文旨在阐明 inception network 的演进。

Inception v1

这个版本是一切开始的地方。让我们分析一下,最初的版本打算解决什么问题,以及它是如何解决问题的。(https://arxiv.org/pdf/1409.4842v1.pdf)

前提:

nginx reactor模型(InceptionNetwork各版本演进史)(2)

从左边到右:狗占据了图片的大部分,狗占据了图片的一部分,狗仅占据了图片的很小一部分(图片来自 Unsplash)。

解决方案:

那为什么不能在同一层上采用多个尺寸的过滤器呢?网络本质上会变得更宽一些,而不是更深。作者设计 inception 模块就是用了这个想法。

下图就是「最初的」inception 模块。在输入图像上用 3 个不同尺寸的过滤器(1x1, 3x3, 5x5)实施卷积操作。然后,执行了最大池化操作 (max pooling)。输出被连接(concatenated)后,送往下一层 inception 模块。

nginx reactor模型(InceptionNetwork各版本演进史)(3)

最初的 inception 模块(原文:Inception v1:https://arxiv.org/pdf/1409.4842v1.pdf)。

如前所述,深度神经网络计算非常昂贵。为了使计算更快,作者通过在 3x3 和 5x5 卷积操作前增加一个额外的 1x1 卷积,限制输入通道数量。虽然增加一个额外的操作看起来与直觉相反,1x1 卷积比 5x5 卷积操作快很多,减少输入通道数量也有帮助。值得注意的是,1x1 卷积是在最大池化后执行,而不是之前。

nginx reactor模型(InceptionNetwork各版本演进史)(4)

降维的 inception 模块(原文:Inception v1:https://arxiv.org/pdf/1409.4842v1.pdf)

采用降维的 inception 模块构建神经网络,这就是我们知道的 GoogLeNet(Inception v1)。网络架构如下:

nginx reactor模型(InceptionNetwork各版本演进史)(5)

GoogLeNet. 橙色框是 stem,包含一些基础的卷积操作。紫色框是辅助分类器。网络中宽阔部分是 inception 模块(原文:Inception v1:https://arxiv.org/pdf/1409.4842v1.pdf)

GoogLeNet 由 9 组 inception 模块线性堆叠组成。深 22 层(如算上池化层共 27 层)。在最后一个 inception 模块,采用了全局平均池化操作。

它确实是一个很深的深度分类器。对于任意深度神经网络都会发生梯度消失问题。

为防止网络中间部分不会「梯度消失」,作者引入了 2 个辅助分类器(图中紫色框)。它们本质上对 2 个 inception 模块的输出执行 softmax,并计算对同一个标签的 1 个辅助损失值。总损失函数是对辅助损失值和真实损失值的加权和。论文中辅助损失值的权值取 0.3。

毋庸置疑,辅助损失值纯粹是为训练构建,分类推断时将被忽略。

Inception v2

Inception v2 、Inception v3 出现在同一篇论文(https://arxiv.org/pdf/1512.00567v3.pdf)。作者提出了大量的改进以提升准确度同时降低计算复杂度。Inception v2 探索了以下内容:

前提:

解决方案:

nginx reactor模型(InceptionNetwork各版本演进史)(6)

最左边 inception v1 模块中的 5x5 卷积现在表示为 2 个 3x3 卷积(原文: Inception v2:https://arxiv.org/pdf/1512.00567v3.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(7)

这里,假设 n=3 获得与之前等价的图像。最左边 5x5 的卷积可以表示为 2 个 3x3 卷积,然后进一步表示为 1x3、3x1 卷积组合(原文:Inception v2:https://arxiv.org/pdf/1512.00567v3.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(8)

使 inception 模块更宽。这种类型等同于上面显示的模块。(原文: Incpetion v2:https://arxiv.org/pdf/1512.00567v3.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(9)

这里,图 5是模块 A,图 6是模块 B,图 7是模块 C。(原文: Incpetion v2:https://arxiv.org/pdf/1512.00567v3.pdf)

Inception v3

前提:

解决方案:

  1. RMSProp 优化器。

  2. 分解为 7x7 卷积。

  3. 辅助分类 BatchNorm。

  4. 标签平滑(添加到损失公式中的正则化组件类型,防止网络过于准确,防止过度拟合。)

Inception v4

Inception v4 和 Inception-ResNet 被介绍在同一篇论文。为了清晰起见,让我们分别讨论他们。

前提:

为了使模块更加统一,作者还注意到一些模块比必要的还要复杂。这可以使我们通过添加更多的统一模块提高其性能。

解决方案:

nginx reactor模型(InceptionNetwork各版本演进史)(10)

上图是 Inception-ResNet v1 的 stem,底部图像是 Inception v4 和 Inception-ResNet v2 的 stem (原文: Inception v4:https://arxiv.org/pdf/1602.07261.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(11)

(左图)Inception 模块 A,B,C 使用 Inception v4。注意它们与 Inception v2(或 v3)模块相似。(原文: Inception v4:https://arxiv.org/pdf/1602.07261.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(12)

(左图) Reduction Block A (将 35x35 尺寸缩小至 17x17 ) Reduction Block B (将 17x17 尺寸缩小至 8x8)。请参阅本文以获取确切的超参数设置 (V,l,k). (原文: Inception v4:https://arxiv.org/pdf/1602.07261.pdf)

Inception-ResNet v1 and v2

受到 ResNet 性能的启发,提出一种混合 inception 模块。Inception ResNet 有两个子版本分布为 v1 和 v2。在我们检查显著特征之前,让我们看看这两个版本之间的细微差别。

前提:

解决方案:

nginx reactor模型(InceptionNetwork各版本演进史)(13)

(左图) 在 Inception ResNet 中初始化 Inception 模块 A,B,C。注意如何用残差连接(residual connection)代替池化层(pooling layer),另外在增加前,注意附加 1x1 卷积。(原文: Inception v4:https://arxiv.org/pdf/1602.07261.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(14)

(左图) Reduction Block A (35x35 尺寸缩小至 17x17 ) Reduction Block B (17x17 尺寸缩小至 8x8 )。请参阅本文中的精确超参数设置 (V,l,k). (原文: Inception v4:https://arxiv.org/pdf/1602.07261.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(15)

激活按常数缩放,以防止网络崩溃。(原文:Inception v4https://arxiv.org/pdf/1602.07261.pdf)

nginx reactor模型(InceptionNetwork各版本演进史)(16)

顶部图像是 Inception v4 的布局,底部图像是 Inception-ResNet 的布局。(Source: Inception v4:https://arxiv.org/pdf/1602.07261.pdf)

原文链接:https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202

雷锋网雷锋网

,