从GoogLeNet到Inception V4

本文主要参考《TensorFlow 实战》黄文坚、唐源著.

Inception V1

Google Inception Net V1和VGG同年面世,并且击败VGG夺得了ILSVRC 2014年比赛的第一名。Inception V1最大的特点是控制计算量和参数的同时,还获得了非常好的分类性能——Top5 错误率为6.67%,只有AlexNet的一半不到。

Inception V1只有22层(卷积层,包含池化层共27层),比AlexNet的8层或是VGG的19层都要深。但是其计算量只有15亿次浮点运算,同时只有500w参数数量,仅为AlexNet(6000w)的1/12,但是其准确率却远超AlexNet,可见Inception v1的性能非常优越。

一般来说,提升网络性能最直接的办法就是增加网络深度和宽度,深度指网络层次数量、宽度指神经元数量。但这种方式存在以下问题:

  • 参数太多,需要供模型学习的数据量就越大,如果训练数据集有限,很容易产生过拟合;
  • 参数越多模型越大,计算复杂度也越大,耗费计算资源也更大;
  • 网络越深,容易出现梯度弥散问题(梯度越往后穿越容易消失),难以优化模型。

Inception V1参数少但效果好的原因除了模型更深,表达能力更强外,还有两点:(1)其一是使用全局平均池化层来代替卷积层,这样不仅能减少模型参数数量,还能减轻过拟合;(2)第二个就是Inception系列中的反复堆叠的Inception module,这些结构借鉴了NIN的思想,提高了参数的利用效率,每个Inception module都相当于大网络中的小网络。一般来说,卷积层想要提高表达能力,主要依靠增加输出通道数,但副作用是计算量增大和过拟合,每一个输出通道对应一个滤波器,同一个滤波器共享参数,只能提取一类特征,因此一个输出通道只能作一个特征处理。

Inception module包括4个分支(如下图):第一个分支对输入进行1x1的卷积。1x1卷积是一个非常优秀的结构,他可以跨通道组织信息,提高网络的表达能力,同时可以对输出通道升维和降维,Inception module 的4个分支都用到了1x1卷积。第二个分支使用了1x1和3x3卷积,相当于进行了两次特征变换。第三支分支类似。最后一个分支则是3x3最大池化层后使用1x1卷积。最后通过一个聚合操作将这四个分支的输出通道合并。Inception module中包括3种不同的尺寸的卷积和1个最大池化,增加了网络对不同尺度的适应性,这一部分和Multi-Scale的思想类似。早期计算机视觉的研究中,受灵长类视觉神经系统的启发,Serre使用不同尺寸的Gabor滤波器处理不同尺寸的图片,Inception 借鉴了这种思想。论文中指出,Inception module可以让网络的深度和宽度高效率的扩充,提高准确率的同时还能防止过拟合。

Inception Module

人脑神经元的连接是稀疏的,因此研究者认为大型神经网络合理的连接方式应该也是稀疏的。稀疏结构是非常适合神经网络的一种结构,尤其是对非常大型、非常深的神经网络,可以减轻过拟合并降低计算量,如卷积神经就是稀疏连接。Inception Net的主要目标就是找到最优的稀疏结构单元(即Inception module),论文中提到的稀疏结构基于Hebbian原理——神经反射活动的持续与重复会导致神经元连接稳定性的持久提升,当两个神经元A和B距离很近,并且A参与了对B重复、持续的兴奋,那么某些代谢变化会导致A将作为能使B兴奋的细胞。总结一下即‘一起发射的神经元会连接在一起’(cells that fire together, wire together),学习过程中的刺激会使神经元间的突触强度增加。受Hebbian原理启发,另一篇文章Provable Bounds for Learning Some Deep Representations提出,如果数据集的概率分布可以被一个很大很稀疏的神经网络所表达,那么构筑这个网络的最佳方法是逐层构筑网络:将上一层高度相关的节点聚类,并将聚类出来的每一个小簇连接到一起,这个相关性高的节点应该被连接在一起的结论(如下图),即是从神经网络角度对Hebbian原理有效性的证明。


因此一个好的稀疏结构,应该是符合Hebbian原理的,相关性高的一簇神经元节点应该连接在一起。在普通的数据集中,这可能需要对神经元节点聚类,但是在图片数据中,天然就是邻近区域的数据相关性高,因此相邻的像素点被卷积操作连接在一起。而我们可能有多个核,同一空间位置但在不同通道的卷积核的输出结果相关性极高。因此,一个1x1的卷积就可以很自然地把这些相关性很高的、在同一个空间位置但是不同通道的特征连接在一起,这就是为什么1x1卷积这么频繁地被应用到Inception中的原因。1x1卷积所连接的节点的相关性是最高的,而稍微大一点尺寸的卷积,比如3x3、5x5的卷积所连接的节点相关性也很高,因此可以适当地使用一些大尺寸的卷积、增加多样性。最后Inception Module通过4各分支中不同尺寸的1x1, 3x3、5x5等小型卷积将相关性很高的节点连接到一起,就完成了其设计初衷,构建出了很高效的符合Hebbian原理的稀疏结构。

在Inception module中,通常1x1卷积的比例(输出通道数占比)最高,3x3卷积和5x5卷积稍低。而在整个网络中,会有多个堆叠的Inception module,我们希望靠后的Inception module可以捕捉更高阶的抽象特征,因此靠后的Inception module的卷积的空间集中度应该逐渐降低,这样可以捕获更大面积的特征。因此,越靠后的Inception module中,3x3,5x5这两个大面积的卷积核的占比(输出通道)应该更多。

Inception Net有22层(只包括卷积层,加上池化层后共27层),除了最后一层的输出,其中间节点的分类效果也很好。因此在Inception Net中,还使用到了辅助分类节点,即将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中。这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,但是这个辅助loss对于整个Inception Net的作用貌似较为有限,论文中提出使用辅助loss后准确率仅提升了0.6%。

Inception V1是在CPU上面进行训练的。使用了异步SGD训练,学习速率每迭代8个epoch降低4%。同时,Inception V1也使用了Multi-Scale、Multi-crop等数据增强方法,还尝试了模型融合,最后的ILSVRC 2014的比赛成绩为top5错误率6.67%。

Inception V2

Inception V2学习VGG使用两个3x3卷积来代替5x5的大卷积用以减少参数并减轻过拟合,同时提出了著名的Batch Normalization方法。BN是一个非常有效的正则化方法,可以让网络的训练速度加快很多倍,同时收敛后的分类准确率也可以得到大幅提高。BN在用于神经网络时,会对每一个mini-batch数据的内部进行标准化(normalization 处理),使输出规范到N(0,1)的正态分布,减少了Internal covariate shift(内部神经元分布的改变)。BN论文指出,传统的深度神经网络在训练时,每一层输入的分布都在变化,导致训练变得困难,我们只能使用一个小的学习率解决这个问题。而对每一层使用BN之后,我们就可以较有效的解决这个问题,学习率可以增大多倍,而达到之前准确率所需要的迭代次数更少,训练时间大大缩短。最后使用BN的模型的top5准确率为4.8%,远超Inception V1。

什么是Internal covariate shift?
随着训练的进行,神经网络中的参数也随着梯度下降在不停更新。一方面,当底层网络中参数发生微弱变化时,由于每一层中的线性变换与非线性激活映射,这些微弱变化随着网络层数的加深而被放大(类似蝴蝶效应);另一方面,参数的变化导致每一层的输入分布会发生改变,进而上层的网络需要不停地去适应这些分布变化,使得我们的模型训练变得困难。上述这一现象叫做Internal Covariate Shift。

BN具有一定的正则化效果
在Batch Normalization中,由于我们使用mini-batch的均值与方差作为对整体训练样本均值与方差的估计,尽管每一个batch中的数据都是从总体样本中抽样得到,但不同mini-batch的均值与方差会有所不同,这就为网络的学习过程中增加了随机噪音,与Dropout通过关闭神经元给网络训练带来噪音类似,在一定程度上对模型起到了正则化的效果。
更多BN详细解释可见Batch Normalization原理与实战

当然,单纯使用BN获得的增益还不明显,还需要做一些相应的调整:增大学习率并加快学习衰减速度以适应BN规范后的数据;去除dropout并减轻L2正则(因为BN已经起到正则化的作用);去除LRN;更彻底的对样本进行shuffle;减少数据增强过程中对数据的光学畸变(因为BN训练更快,每个样本被训练的次数更少,因此更真实的样本对训练更有帮助)。在使用了这些措施后,Inception V2训练达到Inception V1的准确率时快了14倍,并且模型在收敛时的准确率上限更高。

Inception V3

Inception V3网络主要有两方面的改造:一是引入了Factorization into small convolutions的思想,将一个较大的二维卷积拆成两个较小的一维卷积,比如将7x7卷积拆成1x7和7x1的卷积,或者将3x3的卷积拆成3x1的卷积和1x3的卷积(如下图所示)。这种方法一方面减少了大量参数,加速运算并减轻了过拟合(将7x7卷积拆成1x7和7x1的卷积比拆成两个3x3的卷积更节约参数),同时还增加了一层非线性扩展模型表达能力。论文中指出,这种非对称的卷积结构拆分,其结果比对称的拆分几个相同的小卷积效果更好,可以处理更多,更丰富的空间特征,增加特征多样性。


另一方面,Inception V3优化了Inception module的结构,现在Inception module有35x35(输入module的feature map大小)、17x17和8x8三种结构,如下图所示。这些Inception module只在网络的后半部分出现,前面还是普通的卷积层。并且Inception v3除了在Inception module中使用分支,还在分支中使用分支(8x8结构中),可以说是Network In Network In Network。

在论文中还提及了网络设计的原则:

  • 1、避免特征表示瓶颈,尤其是在网络的前面。前馈网络可以通过一个无环图来表示,该图定义的是从输入层到分类器或回归器的信息流动。要避免严重压缩导致的瓶颈。特征表示尺寸应该温和的减少,从输入端到输出端。特征表示的维度只是一个粗浅的信息量表示,它丢掉了一些重要的因素如相关性结构;
  • 2、高维信息更适合在网络的局部处理。在卷积网络中逐步增加非线性激活响应可以解耦合更多的特征,那么网络就会训练的更快;
  • 3、空间聚合可以通过低维嵌入,不会导致网络表达能力的降低。例如在进行大尺寸的卷积(如3*3)之前,我们可以在空间聚合前先对输入信息进行降维处理,如果这些信号是容易压缩的,那么降维甚至可以加快学习速度;
  • 4、平衡好网络的深度和宽度。通过平衡网络每层滤波器的个数和网络的层数可以使网络达到最佳性能。增加网络的宽度和深度都会提升网络的性能,但是两者并行增加获得的性能提升是最大的。所以计算资源应该被合理的分配到网络的宽度和深度。

最后,文中还提出了一种模型正则化方法 Label Smoothing Regularization,具体解释可参见优化策略5 Label Smoothing Regularization_LSR原理分析

Inception V4

Inception V4相比V3主要是结合了微软的ResNet,添加了残差单元,方便训练更深的网络。

参考:
Going Deeper with Convolutions.
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.
Rethinking the Inception Architecture for Computer Vision.
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning.
《TensorFlow 实战》 黄文坚,唐源.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,983评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,354评论 3 403
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,216评论 0 367
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,061评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,073评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,541评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,906评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,881评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,428评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,460评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,578评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,176评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,913评论 3 339
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,348评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,490评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,142评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,650评论 2 366

推荐阅读更多精彩内容