Advertisement

学习笔记4-inception v3

阅读量:

本周主要对论文** Rethinking the Inception Architecture for Computer Vision** 进行学习,整理如下。

一、动机

之前Alex、VGGNet、googlenet网络方法的提出在分类领域取得了较高的性能,并且发现在分类性能上的收益可以转换成各种应用领域上的显著质量收益。相比于VGG和AlexNet,Inception方法的参数量有明显的降低,但是,单纯地放大Inception架构,大部分的计算收益可能会立即丢失。所以本文重新思考Inception架构,并利用一些一般原则和优化思想,来扩展卷积网络。

二、通用原则

1、避免表征瓶颈(representational bottlenecks)。避免极端压缩的瓶颈,表示大小(representation size)应该从输入到输出缓慢减小。信息内容不能仅通过表示的维度(维度仅提供信息内容的粗略估计)来评估,因为它丢弃了一些重要因素(如相关结构)。

简单的说:如果在网络一开始就极其压缩信息会使信息大量丢失。

原因:(参考了些别人的理解)表征瓶颈就是网络中间某层对特征在空间维度进行较大比例的压缩,比如使用pooling,导致很多特征丢失。

2、更高维度的表示(更大尺寸的特征)在网络中更容易局部处理。在卷积网络中增加每个tile的激活允许更多解耦的特征,使网络训练的更快。

局部处理指将耦合的特征分开来处理,解耦的特征指形成独立的特征。

解释:特征的数目越多收敛得越快。相互独立的特征越多,输入的信息就被分解得越彻底,分解的子特征 相关性低,子特征内部 相关性高,把相关性强的聚集在一起收敛将变快,所以网络训练变快。

3、空间聚合可以在较低维度嵌入上完成,而不会在表示能力上造成损失。如果在空间聚合上下文中使用输出,则相邻单元之间的强相关性会导致维度缩减期间的信息损失少得多。由于这些信号应该易于压缩,因此尺寸减小甚至会促进更快的学习。

解释:压缩特征维度数,来减少计算量。Inception V1中提出的用1*1卷积先降维再作特征提取就是利用这个原则。不同维度的信息有相关性,降维可以理解成一种无损或低损的压缩,即使维度降低了,仍然可以利用相关性恢复出原有的信息。

4、平衡网络的宽度和深度。通过平衡每个阶段的滤波器数量和网络的深度可以达到网络的最佳性能。

三、论文中提出的改进方法

1、基于大滤波器尺寸 分解卷积

通过适当的分解,我们可以得到更多的解耦参数,从而加快训练。

1)分解成更小的卷积

较大的过滤器尺寸往往很昂贵。提出问题:较大卷积是否可以被具有相同输入尺寸和输出深度的参数较小的多层网络所取代?

作者观点:任何大于33的卷积都可以分解为33的卷积序列,比如可以将一个55卷积层分解成两个33卷积层。

该图是5×5卷积的计算图,每个输出看起来像一个小的完全连接的网络,在其输入上滑过5×5的块。在构建视觉网络时,通过两层的卷积结构再次利用平移不变性来代替全连接的组件是很常用的。第一层是3×3卷积,第二层是在第一层的3×3输出网格之上的一个全连接层。

滑动网络可以由两个3×3的卷积层表示,并重用相邻图块之间的激活。最终得到一个计算量减少到(9+9)/25倍的网络,通过这种分解导致了28%的相对增益。

但该方法存在两个一般性的问题:这种替换是否会导致任何表征力的丧失?如果我们的主要目标是对计算的线性部分进行分解,是不是建议在第一层保持线性激活?为此,作者进行了几个控制实验,发现在分解的过程中使用线性激活的效果总是次于使用修正线性单元(rectified linear units)。作者认为这是因为分解扩大了网络学习的变量空间,尤其当对输出激活进行批标准化batch-normalize。

2)空间分解为不对称卷积

使用非对称卷积,把 n*n 的卷积层替换为一个1×n卷积和后面接一个n×1卷积。例如使用3×1卷积后接一个1×3卷积,相当于以与3×3卷积相同的感受野滑动两层网络。该不对称分解解决方案节省33%,而将3×3卷积分解为两个2×2卷积仅节省11%的计算量。

研究发现,采用这种非对称卷积分解在前面的层次上不能很好地工作,但是对于中等网格尺寸(m在12到20之间)得到非常好的结果。

2、辅助分类器

动机:将有用的梯度推向较低层,使其立即有用,并通过对抗非常深的网络中的消失梯度问题来提高训练过程中的收敛。

但实验发现辅助分类器在训练早期没有导致改善收敛,当接近训练结束时,辅助分支网络比没有任何分支的网络的准确性更高。

文中提到Inception_v1的最初的假设,这些分支有助于演变低级特征很可能是不适当的。

作者认为辅助分类器起着正则化项的作用。同时也为推测批标准化作为正则化项给出了一个弱支持证据。

3、有效的网格尺寸减少

传统上,卷积网络使用一些池化操作来缩减特征图的网格大小。为了避免表示瓶颈,在应用最大池化或平均池化之前,需要扩展网络滤波器的激活维度。

图9左侧是转换为带有卷积的池化,虽然计算成本降低,但是由于表示的整体维度下降,会导致表示能力变弱,这会产生一个表示瓶颈。右侧图是先使用扩大滤波器的卷积(由320到640)再应用一个额外的池化步骤,这会造成昂贵的计算成本。

提出方法:能够进一步降低了计算成本,同时消除了表示瓶颈。使用两个平行的步长为2的block:P和C。P是一个池化层(平均池化或最大池化)的激活。

4、标签平滑进行模型正则化

softmax层输出为:

从输出公式可以反推出训练过程中网络收敛时Softmax的正确分类的输入 Z k __(logit)是无穷大的(因为输出概率需要是1或接近1的数值)。如果让所有的训练输入都产生这种理想的输出,就会造成overfitting。

为了克服overfitting,文中提出将 q(k) 换成 q’(k) 来计算loss

四、Inception_v3

将传统的7x7卷积分解为3个3x3卷积,用了文中提到的不同结构的Inception模块,用0填充标记了卷积,用于保持网格大小,网络一共42层,计算代价只比v1高2.5倍,但比之前的网络高效很多。

图7所示的Inception模块被用于最粗糙的(8×8)网格,以提升高维表示。

训练方法:随机梯度方法。使用了50个副本,每个副本在一个GPU上运行,批处理大小为32,100个epoch。最好的模型是用RMSProp实现的,衰减值为0.9,ϵ=1.0。我们使用0.045的学习率,每两个epoch以0.94的指数速率衰减。此外,阈值为2.0的梯度裁剪被发现对于稳定训练是有用的。使用随时间计算的运行参数的平均值来执行模型评估。

五、低分辨率输入上的性能

用于检测的后期分类:确定图像块的中心部分是否对应某个对象,如果是,则确定该对象的类别。

区分这是增加第一层感受野的效果还是使用更大的模型容量和计算量的效果很重要。为此进行了三个对比实验。

结果显示:虽然分辨率较低的网络需要更长时间去训练,但最终结果却与较高分辨率网络的质量相当接近。但是,如果只是单纯地按照输入分辨率减少网络尺寸,那么网络的性能就会差得多。

小结:

Inception-v3在ILSVR 2012分类上取得了更好的成绩,该论文中的一些通用原则值得我们学习并运用到平常的实验中。

最后简单总结一下inception v1 v2 v3网络的inception模块:

Inception v1:核心是将某一些大的卷积层换成11, 33, 55的小卷积,这样能够大大的减小权值参数数量。并添加额外的11卷积层降维模块。

Inception v2:在输入的时候增加了Batch Normalization ,添加之后训练起来收敛更快,也可以减少dropout的使用。

Inception v3:把 n*n 的卷积层替换为一个1×n卷积和后面接一个n×1卷积。

全部评论 (0)

还没有任何评论哟~