Press "Enter" to skip to content

[Reading] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

1. 概述

 

Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 一文提交于 2016 年,文章将 Inception 架构和 ResNet 中的残差连接结合起来,提出了 Inception-ResNet 系列新的网络架构,大幅加快了 Inception 网络的训练速度。同时文章还对 Inception 模块进行了改进,提出了 Inception-v4 网络架构。

 

2. Inception-v4 网络架构

 

文章指出,之前在设计 Inception-v3 时受到了训练框架的限制,在实验中修改模型架构时比较保守,导致模型变得更复杂。在迁移到 TensorFlow 后,之前的限制不复存在,得以使用更统一的方式来设计不同尺寸的 block,以此构成 Inception-v4 的网络架构。

 

Inception-v4 和 Inception-ResNet-v2 的 stem 结构如 Figure 3 ,这里 stem 指的是在 Inception 模块之前的结构。

Figure 3

 

Inception-v4 中使用的 Inception-A、Inception-B、Inception-C 三种 block 如 Figure 4、5、6 所示。这些结构与 Inception v2/v3 中使用的对应结构非常相似。

Figure 4, 5, 6

 

Inception-v4 中使用的两种 reduction 模块 Reduction-A 和 Reduction-B 如 Figure 7、8 所示,也采用了 Inception v2/v3 中并行卷积和池化的方法,来实现进行高效的尺寸缩减。Figure 7 中的 $k, l, m, l$ 由 Table 1 查表得到。

Figure 7, 8

Table 1

 

结合以上结构,Inception-v4 的整体结构如 Figure 9 所示。

Figure 9

 

3. Inception-ResNet 网络架构

 

在本文之前,Inception-v3 和 ResNet 都取得了非常不错的效果。ResNet 中的残差连接(Figure 1、2)有助于训练更深的网络,Inception 网络具有很高的计算效率。文章通过将 Inception 模块中的过滤器拼接部分替换为残差连接,融合了两种结构的优点。

Figure 1, 2

 

文章给出了 Inception-ResNet-v1 和 Inception-ResNet-v2 两种网络架构,前者的计算量相当于 Inception-v3,后者的计算量相当于 Inception-v4。Inception-ResNet 中使用的 Inception block 更加简单,由于 Inception block 会压缩维度,每个 block 最后都会通过一个没有激活函数的 $1 \times 1$ 卷积,将输出的维度扩大到与输入相匹配,然后进行相加。由于受到内存限制,为了让模型能够在单个 GPU 上训练,Inception-ResNet 中的 Inception block 在相加后没有使用 batch norm。

 

Inception-ResNet-v1 的 stem 结构如 Figure 14 所示,Inception-ResNet-v2 的 stem 结构与 Inception-v4 相同,如 Figure 3 所示。

Figure 14

 

Inception-ResNet-v1 中使用的 Inception-ResNet-A、Inception-ResNet-B、Inception-ResNet-C 三种 block 如 Figure 10、11、13 所示,注意到在相加前都有一个 $1 \times 1$ 卷积。 使用的 Reduction-B 结构如 Figure 12 所示。

Figure 10, 11, 13

Figure 12

 

Inception-ResNet-v2 中使用的 Inception-ResNet-A、Inception-ResNet-B、Inception-ResNet-C 三种 block 如 Figure 16、17、19 所示。使用的 Reduction-B 结构如 Figure 18 所示。

Figure 16, 17, 19

Figure 18

 

结合以上结构,Inception-ResNet-v1/v2 的整体结构如 Figure 15 所示。

Figure 15

 

4. 残差缩放

 

文章发现,当过滤器数量超过 1000 时,残差会变得不稳定,平均池化前的输出在几万轮迭代后就会变成零,降低学习率或者使用额外的 batcn norm 都没有改善。文章发现在对残差进行相加前,先对残差进行缩小,如 Figure 20 所示,有助于训练的稳定。文章选择的缩小系数在 0.1 到 0.3 之间。

Figure 20

 

类似的问题在特别深的 ResNet 中也有出现,ResNet 的解决方法是分两步进行训练:先试用很低的学习率进行预热,再使用较高的学习率。文章发现如果过滤器数量非常多,即便使用极低的学习率也无法解决不稳定的问题,而且后续加大学习率时还会破坏已有的效果。文章认为缩小残差是更可靠的方法,这种方法不会降低最终的准确率,但会让训练更加稳定。

 

5. 实验结果

 

文章给出了 Inception-v3/v4 和 Inception-ResNet-v1/v2 在训练过程中的 top-5 和 top-1 错误率如 Figure 25、26 所示。可见 Inception-ResNet-v1 和 Inception-v3 性能相似,Inception-ResNet-v2 和 Inception-v4 性能相似,但使用了残差连接的网络训练速度要快于不使用的网络。

Figure 25, 26

 

文章还给出了 single/multi crop、模型融合下各种模型的对比,Inception-v4 和 Inception-ResNet-v2 都达到了当时的 SOTA 水平。

 

6. 总结

 

文章进一步改进了 Inception 模块,提出了 Inception-v4 网络架构,并通过结合 Inception 模块和残差连接,提出了 Inception-ResNet-v1/v2 网络架构。Inception-ResNet-v1 的计算量和性能与 Inception-v3 相似,Inception-ResNet-v1 的计算量和性能与 Inception-v4 相似,性能优于了当时的已有模型。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注