前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AI | 重访Inception系列--Why it works?

AI | 重访Inception系列--Why it works?

作者头像
马上科普尚尚
发布2020-05-13 18:02:21
4930
发布2020-05-13 18:02:21
举报

编者按:Inception系列是卷积神经网络家族中一支举足重轻的力量。关于Inception性能优异的解释主要集中在它的multi-branch的结构和multi-size filter的运用。这篇文章从一个新颖的角度揭示了why Inception works,以及Inception与ResNet之间的深刻关联。

文章转载自运筹OR帷幄(id:ORAI_China)

作者:Orange 计算机视觉博士,研究方向为深度学习、对象检测和实例分割,目前在国内某CV独角兽企业担任算法研究员。

引言

自2012年AlexNet在ImageNet图像分类竞赛中大放异彩,关于卷积神经网络(CNN)基础结构的研究可谓是群雄并起,百花齐放;其间,诞生了很多里程碑式的工作,包括VGG,Inception,ResNet,DenseNet等。CNN基础结构的革新对于整个AI领域(特别是CV领域)有着无与伦比的意义:在逼近甚至超越人类在ImageNet上的识别精度的同时,也推动着所有“下游”研究(比如物体检测和语义分割)的进步。

本文是关于Google的当家力作Inception系列的重新思考。从2014年GoogleNet [1](Inception v1)诞生开始,Google差不多保持一年一更的节奏,陆续推出了BN-Inception [2],Inception v2和v3 [3],Inception v4和Inception-ResNet [4]。关于Inception系列的“进化史”,包括每个版本的结构细节,网上已经有很多分析文章。那么,为什么还要写一篇文章来重谈Inception呢?主要有以下两点原因:

  1. 网上关于Inception为么能work的解释是比较趋同的:Inception使用split-transform-merge策略把multi-scale filter生成的不同感受野的特征融合到一起,有利于识别不同尺度的对象。但另一方面,很多state-of-the-art的网络没有使用multi-scale filters,但也取得了非常好的结果,比如VGG和ResNet。所以,multi-scale filters是Inception成功的关键吗?
  2. 自ResNet [5]横空出世,后续CNN基本上都会使用identity shortcut,包括DenseNet、DPN(dual path net)和ResNeXt等。然而,Inceptiont系列始终坚持不用identity shortcut,但在性能上却能跟用了identity shortcut的网络打得难解难分。更奇怪的是,Inception v4这篇paper中验证了增加identity shortcut对于Inception精度的提升非常有限,仅仅是加速了训练而已。为什么对其它结构可以立竿见影涨点的identity shortcut,对于Inception来说却略显无力?

以上两个问题曾经困扰过我很长时间,直到最近才慢慢梳理出自己的理解,并从大佬的发言中得到了一些验证。下面,我们先简述一下Inception系列的进化史,梳理一下关于Inception的主流解读,然后从自己的角度分析一下Inception成功的关键并回答上面这两个问题。

Inception的进化史

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

Inception v1

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

  • Multi-branch结构。每个inception module分为四个branch,输出时对所有branch的输出做concatenation。
  • Heterogeneous branch结构。每个branch的结构都是不一样的,主要表现在branch的depth和kernel size两方面。

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(3*3)的卷积来替代Inception v1中的大kernel size(5*5)卷积;2)引入了空间分离卷积(Factorized Convolution)来进一步降低网络的复杂度。

Inception v4 Inception-ResNet

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

Inception的主流解释

从上面的进化史可以看出,Inception系列的结构框架在v1的时候就基本确定下来的,后续的版本是对v1上的迭代升级,而非颠覆。所以,大家关于Inception的解读也都侧重于v1。总的来说,大家普遍认为Inception module的两个设计原则是它成功的关键:

  • Multi-branch结构。Inception v1的作者受人脑结构的启发,认为CNN内部的连接应该具有一定的稀疏性,所以在Inception module中引入了multi-branch的结构。因为每个branch内部1*1conv的应用,使得Inception module相比single branch结构的FLOPs要低。
  • Heterogeneous branch结构。Inception中每个branch的结构都是不一样的,特别是kernel size。作者认为同类别的对象在不同图片中的size可能是不同的,所以应该在同一个module内部融合不同size的kernel产生的feature,有利于CNN识别不同size的对象。

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

另一种可能的解释

虽然Inception家族人丁兴旺,但相比光芒万丈的ResNet家族,Inception的人气还是略逊一筹。长久以来,大家都认为Inception和ResNet属于泾渭分明的两大流派,但笔者经过长时间的思考却发现这两大流派背后蕴含的思想是非常相近的,并且沿着这样的思路,之前的一些疑问也可以迎刃而解。

Identity shortcuts

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

  • 降低了网络在加深时的优化难度;
  • 缓解了BP时的梯度消失问题;
  • 实现了前馈过程中的低层特征的复用。

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

从shortcut的角度解释疑问

如果大家能接受Inception module中的1*1 conv branch是一种近似的identity shortcut这个观点,很多疑问就可以迎刃而解。

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

结束语

一开始我对于自己的上述观点并没有很确信,毕竟目前还没看到从这个角度对Inception的解读。直到有一天,我看到一篇关于ResNet二作张祥雨的报道(https://zhuanlan.zhihu.com/p/63270486),才发现大神的观点与我非常相像。其实不管是Inception还是ResNet,都是在强调“信息直路”对于深层卷积网络训练的重要性。在这个层面上,目前所有state-of-the-art的网络结构都达成了共识。

参考文献

[1] Szegedy, Christian, et al. "Going deeper with convolutions." Proceedings of the IEEE conference on computer vision and pattern recognition. 2015. [2] Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." ICML. 2015.

[3] Szegedy, Christian, et al. "Rethinking the inception architecture for computer vision." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

[4] Szegedy, Christian, et al. "Inception-v4, inception-resnet and the impact of residual connections on learning." Thirty-First AAAI Conference on Artificial Intelligence. 2017.

[5] He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

[6] Ioannou, Yani, et al. "Deep roots: Improving cnn efficiency with hierarchical filter groups." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能前沿讲习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档