Inception系列之Batch-Normalization
git
引言:网络
Inception_v2和Inception_v3是在同一篇论文中,提出BN的论文并非Inception_v2。二者的区别在于《Rethinking the Inception Architecture for Computer Vision》这篇论文里提到了多种设计和改进技术,使用其中某部分结构和改进技术的是Inception_v2, 所有使用了的是Inception_v3。函数
模型设计原则性能
Inception_v1结构因为比较复杂,很难在其基础上有所改变,若是随意更改其结构,则很容易直接丧失一部分计算收益。同时,Inception_v1论文中没有详细各个决策设计的因素的描述,这使得它很难去简单调整以便适应一些新的应用。为此,Inception_v2论文里详细介绍了以下的设计基本原则,并基于这些原则提出了一些新的结构。学习
1.避免表示瓶颈,特别是在网络的浅层。一个前向网络每层表示的尺寸应该是从输入到输出逐渐变小的。(当尺寸不是这种变化时就会出现瓶颈)设计
2.高维度的表示很容易在网络中处理,增长激活函数的次数会更容易解析特征,也会使网络训练的更快。(这条原则的意思是表示维度越高,越适合用网络来处理,像二维平面上的数据分类反而就不适合用网络来处理,增长激活函数的次数会使得网络更容易学到其表示特征)orm
3. 能够在较低维的嵌入上进行空间聚合,而不会损失不少表示能力。例如,在执行更分散(例如3×3)的卷积以前,能够在空间汇集以前(浅层)减少输入表示的尺寸,而不会出现严重的不利影响。咱们假设这样作的缘由是,若是在空间聚合环境中(中高层)使用输出,则相邻单元之间的强相关性会致使在尺寸缩减期间信息损失少得多。鉴于这些信号应易于压缩,所以减少尺寸甚至能够促进更快的学习。htm
4. 平衡网络的宽度和深度。经过平衡每一个阶段的滤波器数量和网络深度,能够达到网络的最佳性能。增长网络的宽度和深度能够有助于提升网络质量。可是,若是并行增长二者,则能够达到恒定计算量的最佳改进。所以,应在网络的深度和宽度之间以平衡的方式分配计算预算。blog
一些特殊的结构
01 卷积分解
一个5x5的卷积核可经过两个连续的3x3卷积核来代替,其中第一个是正常的3x3卷积,第二个卷积是在上一层3x3卷积的基础上进行全链接。这样作的好处是既实现了5x5卷积该有的感觉野,又实现了更小的参数2x9/25,大概缩小了28%。具体以下左图fig1所示。更进一步,采用非对称分解,将一个3x3的卷积分解为3x1和1x3。具体以下右图fig2.
所以原来的Inception结构(左图fig3)就能够变成以下所示的结构(中图fig5)和(右图fig6)。
最终还衍生出了以下图所示(fig7)一种混合两种分解方式的结构。
在实际应用中,使用这样的分解结构在网络低层的效果并很差。它在中等尺寸大小(mxm的feature map 其中m在12到20范围内)的层中会有比较好的效果。这是考虑到第二条原则,这样的Inception结构将会放在网络中间层,而在网络低层仍然使用通常卷积网络的结构。
02 辅助分类器的效用
辅助分类器在训练的前期并无起什么做用,到了训练的后期才开始在精度上超过没有辅助分类器的网络,并达到稍微高的平稳期。而且,在去除这两个辅助分类器后并无不利的影响,所以在Inception_v1中提到的帮助低层网络更快训练的观点是有问题的。若是这两个分支有BN或Dropout,主分类器的效果会更好,这是BN可充当正则化器的一个微弱证据。
03 高效下降Grid Size
关于下降Grid Size大小的方式,有如上图所示两种作法。左边这种违背了第一条原则,即尺寸应该逐层递减,不然会出现bottleneck。右图符合第一条原则,然而这样参数量巨大。为此做者提出了一种以下图(fig10)所示的新方式。即并行操做,利用步长都为2的卷积和池化操做,在不违背第一条原则的基础上实现下降Grid Size。
完整的Inception_v2结构图以下:
整个结构中都没有用到padding, 提出的fig10结构用在了中间每一个Inception模块之间。
04
经过标签平滑化的模型正则化
若是模型在训练过程当中学习使得所有几率值给ground truth标签,或者使得最大的Logit输出值与其余的值差异尽量地大,直观来讲就是模型预测的时候更自信,这样将会出现过拟合,不能保证泛化能力。所以标签平滑化颇有必要。
前面的δk,y 是狄拉克函数,即类别k = y,即为1,不然为0。本来的标签向量q(k|x) = δk,y。而标签平滑化后的标签向量变为以下公式。
这里的∈为超参数,u(k)取1/k,k表示类别数。即新的标签向量(假定是三分类)将变为(∈/3, ∈/3, 1-2∈/3 ),而原来的标签向量是(0,0,1)。
结论
实际效果如图所示,在这里说明Inception_v2与Inception_v3的区别,Inception_v2指的是使用了Label Smoothing 或BN-auxiliary或RMSProp或Factorized技术中的一种或多种的Inception模块。而Inception_v3指的是这些技术全用了的Inception模块。
若有错误或不合理之处,欢迎在评论中指正。
欢迎关注公众号“CV技术指南”,主要进行计算机视觉方向的论文解读,最新技术跟踪,以及CV技术的总结。