原文:Inception深度网络家族盘点 | Inception v4 和Inception-ResNet未来走向何方 ?
多融合和标准化的网络是深度架构未来的可见趋势 — David 9
Inception深度网络架构 已经走过4个版本,AI的空前热潮,让业内期待新网络架构的心情如同当年期待Window系统版本一样。
Inception V1的想法其实很简单:一方面,我们人工地调整每层卷积窗口的尺寸(真麻烦!); 另一方面,我们又想让深度网络更“深”,为什么不让同一层就有各种大小卷积可以学习?
是不是轻松多了?仅仅一层 block 就包含 1x1卷积,3x3卷积,5x5卷积,3x3池化.
这样,网络中每一层都能学习到“稀疏”或者“不稀疏”的特征:
另外,Inception V1开创了两个变化:
[1] - 以前每一层线性卷积需要之后跟一个 Relu 激活函数或者 pooling 层增加非线性。而 Inception V1 直接通过 DepthConcat 在每个block后合成特征,获得非线性属性。
[2] - 最后阶段的全连层FC不再是必要的,传说中的global average pooling 可以替代 FC 减少过拟合的风险。
Inception V2 和 V3讨论集成了 Inception 中的许多 Tricks,包括在 Inception block 中,与其用7×7 尺寸的卷积,不如用一对 1×7 和 7×1 卷积更高效。另外引入Batch Normalize 等等。但是,我们都知道:是金子总会发光的,好的 Tricks 总能到处通用 !而不是在一个架构中才能用!
终于,我们要请出主角 Inception V4 和 Inception-ResNet, 是不是有人要打我了?恭喜你有耐心看到这里。
其实Inception V4改动也不大,但是它告诉懒人们一个很重要的信息:什么样的输出应该用什么样Inception Block。 连Block都懒得调了,这群人简直了 !
比如要输出35x35尺寸的特征图,你不用费心调了,我告诉你,这个 Inception Block最好:
来自:https://arxiv.org/pdf/1602.07261v2.pdf
如果要输出17x17尺寸的特征图?没关系,这个 Inception Block最好:
另外,注意到每组卷积之前都有1x1卷积,之前我们说过,1x1的卷积是为了降低输入特征图个数,不至于到最后特征图泛滥。于是,就像拼积木一样,把上述 Blocks 拼到 Inception V4 中就可以了:
Inception V4总体架构
其中,Inception-A 的 block 和 Inception-B 的 block 展开,正是上一张和上上一张图片的架构。可见,Inception V4 的 Block 更像是模块化的拼接,具体其他 Block 的设置读者可以参考原始论文 - Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning。
除了Inception V4 的标准化,可用性,和高效性的增强,文章提出的 Inception-ResNet 的思想就更加直接:我们何不搞个Inception和ResNet的混合体?
我们知道ResNet通过跳层连接使得深度网络信号传递更深,可构建更深和收敛更快的网络:
ResNet跳层示例
在“胖胖”的Inception Block基础上,加上跳层,即是 Inception-ResNet 的思想**:
这种混合架构能有多大的准确率提高呢?实话说不是特别大的提高:
以上是top-5,top-1上的错误率比较。可见 Inception-v4 和 Inception-v3 之间的改进并不大,对应的Inception-ResNet 改进版 Inception-ResNet-v2 和 Inception-ResNet-v1的改进更是不大。无论如何,也许这称不上 smart work,但还是感谢作者的 hard work。另外可以看到的是,多架构融合和标准化的网络是深度架构未来的可见趋势。
参考文献:
[1] - Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
[3] - http://nicolovaligi.com/history-inception-deep-learning-architecture.html