inception(也称GoogLeNet)是2014年Christian Szegedy提出的一种全新的深度学习结构,在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果,但层数的增加会带来很多负作用,比如overfit、梯度消失、梯度爆炸等。inception的提出则从另一种角度来提升训练结果:能更高效的利用计算资源,在相同的计算量下能提取到更多的特征,从而提升训练结果。
inception原文链接:https://arxiv.org/pdf/1409.4842.pdf
网上关于inception的文章一大堆,大部分都是互相抄袭,少数原创的文章也只局限于结构的描述,或者只是机械的翻译下paper,并没有告诉你这个结构是怎么来的,看完后仍是一头雾水。本文重点聚焦于inception背后的原理,有部分是自己的理解,如果理解有误也请指正。
一、核心思想
inception模块的基本机构如下图,整个inception结构就是由多个这样的inception模块串联起来的。inception结构的主要贡献有两个:一是使用1x1的卷积来进行升降维;二是在多个尺寸上同时进行卷积再聚合。
1、1x1卷积
可以看到图1中有多个黄色的1x1卷积模块,这样的卷积有什么用处呢?
作用1:在相同尺寸的感受野中叠加更多的卷积,能提取到更丰富的特征。这个观点来自于Network in Network(NIN, https://arxiv.org/pdf/1312.4400.pdf),图1里三个1x1卷积都起到了该作用。