Inception深度网络家族盘点 | Inception v4 和Inception-ResNet未来走向何方 ?
原文转自 Inception深度网络家族盘点 | Inception v4 和Inception-ResNet未来走向何方 ?
著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:[email protected]
多融合和标准化的网络是深度架构未来的可见趋势
Inception深度网络架构已经走过4个版本,AI的空前热潮,让业内期待新网络架构的心情如同当年期待Window系统版本一样。
Inception V1的想法其实很简单:一方面我们人工地调整每层卷积窗口的尺寸(真麻烦!)另一方面,我们又想让深度网络更“深”,为什么不让同一层就有各种大小卷积可以学习?
是不是轻松多了?仅仅一层block就包含1*1卷积,3*3卷积,5*5卷积,3*3池化。
这样,网络中每一层都能学习到“稀疏”或者“不稀疏”的特征:
另外,Inception V1开创了两个变化:
- 以前每一层线性卷积需要之后跟一个Relu**函数或者pooling层增加非线性。而Inception V1直接通过DepthConcat在每个block后合成特征,获得非线性属性。
- 最后阶段的全连层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都懒得调了,这群人简直了 !
比如要输出35*35尺寸的特征图,你不用费心调了,我告诉你,这个Inception Block最好:
来自:https://arxiv.org/pdf/1602.07261v2.pdf
如果要输出17*17尺寸的特征图?没关系,这个Inception Block最好:
另外,注意到每组卷积之前都有1*1卷积,之前我们说过,1*1的卷积是为了降低输入特征图个数,不至于到最后特征图泛滥。于是,我就像拼积木一样,把上述Blocks拼到Inception V4 中就可以了:
Inception V4总体架构
其中,Inception-A的block和Inception-B的block展开,正是上一张和上上一张图片的架构。可见,Inception V4的Block更像是模块化的拼接,具体其他Block的设置读者可以参考原始文章。
除了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。另外可以看到的是,多架构融合和标准化的网络是深度架构未来的可见趋势。
参考文献: