(转)如何解析深度学习 Inception 从 v1 到 v4

2021-04-25  本文已影响0人  zelda2333

原链接:如何解析深度学习 Inception 从 v1 到 v4 的演化? - 运筹OR帷幄的回答 - 知乎

关于 Inception有2点疑问:

Inception的进化史

这里我们只关心Inception在结构上的演化,而忽略一些训练上的细节(auxiliary loss和label smoothing等)。

Inception v1

Inception v1即大名鼎鼎的GoogLeNet,Google在2014年ImageNet比赛中夺冠的大杀器。相比之前的AlexNet和ZFNet,Inception v1在结构上有两个突出的特点:

Inception v1的这两个特点被后续的Inception版本一直沿续,可以看作是Inception系列的标志。

BN-Inception

BN-Inception在Inception v1的基础上引入了Batch Normalization(BN)操作,提高训练效率的同时也大幅提升了Inception的性能

Inception v2 v3

Inception v2和v3是在同一篇文章中提出来的。相比Inception v1,结构上的改变主要有两点:
1)用堆叠的小kernel size(33)的卷积来替代Inception v1中的大kernel size(55)卷积;
2)引入了空间分离卷积(Factorized Convolution)来进一步降低网络的复杂度。

Inception v4 Inception-ResNet

Inception v4在模块设计上并没有提出非常有insight的princple,感觉只是把之前的Inception module变得更复杂了,然后对网络的stem进行了一定的修改。Inception-ResNet在Inception module中引入了residual connection。

上述两种理解都是非常符合直觉的,但是仔细想想却又不完全经得起推敲。首先,multi-branch结构在实现上等于组卷积(group convoltuion),而CVPR17的一篇叫deep root的文章已经证实了单纯使用group convolution可以有效降低CNN的复杂度,对于性能提升并没有明显帮助。其次,在CNN内部集成不同size的kernel更像是一种锦上添花的做法,而非不可或缺。因为VGG、ResNet和ResNeXt都只用了11(VGG没有用)和33卷积,但性能并不差于同时期的Inception。所以,除了上述这两种直觉上的解释,是否还存在更深层的原因?

Identity shortcuts
ResNet提出时,大家纷纷被kaiming天外飞仙般的identity shortcut操作所折服了。但关于identity shortcut为什么能work的解释有很多种,比较主流的解释有:

不管大家认可哪一种具体的解释,ResNet超高的性能让大家相信identity shortcut应该成为state-of-the-art网络的标配。事实上,后来的DenseNet,ResNeXt,SE-ResNet,SE-ResNeXt都可以看作是ResNet的扩展。

Inception中隐含的shortcut
在这样的大背景下,Inception家族却始终不采纳identity short,但性能上又能与ResNet打得难解难分,不由让人好奇。另一方面,Inception-ResNet在加上identity shortcut后性能并没有明显提升(但训练速度加快了),仿佛Inception本身并不太需要identity short,这又是为何?

Inception module中本来就有近似的identity shortcut。

大家之前对于Inception module的关注点主要集中在包含33和55的branch,忽略了另外两条只包含11的branch。11 branch是对前层feature的融合,然后与其它branch的feature concat到一起作为Inception module的输出。大家有没有想过,11 conv只是在input feature的channel方向上做了简单的融合,所以其输出在很大程度上是携带了原始input feature的信息的。也就是说11 conv其实可以看作是一种近似的identity branch,可以有效地实现低层特征的复用。大家可能会说,Inception module在output是用的是concatenation,而residual block用的是element-wise addition,怎么能说它们近似呢。其实,这两种融合的方式并没有很大差别。事实上,ShuffleNet v2用的就是Inception的这种融合方式。

因此,正是因为Inception中有近似的identity shortcut,所以Inception v3 v4才可以搭建那么深却依然能够训练;因为Inception中有近似的identity shortcut,所以Inception-ResNet中添加一条shortcut并没有带来明显的涨点(相当于多了一条功能上重复的shortcut)。

其实不管是Inception还是ResNet,都是在强调“信息直路”对于深层卷积网络训练的重要性。在这个层面上,目前所有state-of-the-art的网络结构都达成了共识。

上一篇下一篇

猜你喜欢

热点阅读