Going Deeper with Convolutions学习笔记

  1. 摘要

    本模型的主要特色是改进了对计算资源的利用,在同等计算负担下,增加了网络的深度和宽度。

    在ILSVRC14数据集上进行测试的,采用了22层深度网络。

  2. 相关工作

    对于像Imagenet大规模数据集,当前的趋势是增加神经网络的深度和宽度,使用dropout解决过拟合的问题。

    Lin etal提出的Network-in-Network(M. Lin, Q. Chen, and S. Yan. Network in network.CoRR, abs/1312.4400, 2013)中,增加了1*1卷积层。1*1卷积层主要有两个作用,一是通过卷积核通道数进行降维、升维,二是跨通道交互和信息整合。此模型中用来降维,可以用来在增加深度宽度的情况下,降低计算量。

    举例说明,以GoogLeNet的3a模块为例,输入的feature map是28×28×192,3a模块中1×1卷积通道为64,3×3卷积通道为128,5×5卷积通道为32,如果是上图结构,那么卷积核参数为1×1×192×64+3×3×192×128+5×5×192×32,而下图对3×3和5×5卷积层前分别加入了通道数为96和16的1×1卷积层,这样卷积核参数就变成了1×1×192×64+(1×1×192×96+3×3×96×128)+(1×1×192×16+5×5×16×32),参数大约减少到原来的三分之一。

    Going Deeper with Convolutions学习笔记_第1张图片

    Going Deeper with Convolutions学习笔记_第2张图片

    目前,物体检测的现状是采用R-CNN。R-CNN将所有的检测问题分解为两个子问题:一是使用低水平的特征(如:颜色、质地)以一种不可知的方式生成对物体定位的建议,二是使用CNN在这些定位的地方对物体进行识别。

     

  3. 高层次的思考

    最直接的改进性能的方法就是增加网络的层数,增加每一层神经元的数量。但这种方法有两个缺点:一个是网络规模越大,参数越多,越容易出现过拟合现象;一个是计算量会增大。

    解决这两个缺陷的根本方法是采用稀疏连接代替全连接。现实中,生物神经系统的连接也是稀疏的。大规模稀疏的神经网络,可以分析激活值的统计特性和对高度相关的输出进行聚类来构建一个最优的网络。

     

  4. 该网络结构的一些实现

    Inception结构的主要思想是如何找出最优的局部稀疏结构并将其覆盖为近似的稠密组价。某个文献提出一个层与层的结构,结构的最后一层进行相关性统计,将高相关性的聚合在一起,这些簇构成下一层的单元,与上一层的单元相连接。假设上一层的每个单元对应输入图像的某些区域,这些单元被滤波器进行分组。低层(接近input层)的单元集中在某些局部区域,意味着在最终会得到在单个区域的大量群,他们能在下一层通过1*1卷积覆盖。然而也可以通过一个簇覆盖更大的空间来减小簇的数量。为了避免块对齐问题,现在滤波器大小限制在1*13*35*5(主要是为了方便也非必要)。在pooling层添加一个备用的pooling路径可以增强效率。

    随着Inception一层层地堆在上面,他们相关输出统计也会发生变化。由于较高抽象的特征被较高层捕获,其空间浓度预计会降低。因此建议在高层增加使用3*35*5滤波器的比例。

    由于规模较大,滤波器的计算量花费就很大。我们还可以考虑在计算量大的地方进行慎重降维,经常低维的嵌入也包含大量的图像的碎片信息。然而,嵌入的代表这一种密集压缩形式的信息。尽管压缩的信息比较难处理。1*1卷积不仅用来降维,还用来修正线性特性。

    只在高层做这个,底层还是普通的卷积。

    Going Deeper with Convolutions学习笔记_第3张图片

    所有的卷积包括在Inception中的模型都使用了修正线性激活,输入的是224*224的零均值RGB图像。#3×3 reduce" 和"#5×5 reduce"代表着在 3×3 和5×5 滤波器前面降维层中 1×1 滤波器的数量。

    网络一共有22层。这项任务中浅层神经网络的良好表现,建议中间神经网络的层所提取的特征应十分具有区分性。可以增加连向这些中间层的辅助分类器。这些分类器以这种形式存在,在Inception(4a)和(4d)的输出上面放置较小的卷积网络。在训练期间,它们的损失以一定的折扣比例被添加到网络的总损失(辅助类别的损失权重为0.3)。在预测时,这些辅助网络被丢弃。 后期控制实验表明辅助网络的影响相对较小(约0.5%),只需要其中一个达到同样的效果。额外增加的网络,包括辅助分类器,如下所示:

            •一个5×5的平均池化层,stride3,为(4a)产生的4×4×512的输出,为(4b)产生4*4*528的输出。

            •具有128个1×1卷积滤波器,用来进行维数消减和修正线性激活。。

    •一个1024个单元完全连接和修正线性线性激活。

    •一个dropout层,丢掉了70%的输出。

    •一个使用softmax损失作为分类器的线性层(作为主要分类器预测这相同的1000个类,但是在推理时移除)。

     

    我们训练使用异步随机梯度下降法(冲量为0.9),固定了学习率(每8个周期学习率降低4%)。最后用Polyak averaging [13]来创建最后用来测试的模型。

  5. 结论

    实验结果证明,通过易于得到的稠密数据块近似预期最佳的稀疏结构是一种可行的方法。这种方法的优势是在相同深度狭窄的神经网络中只增加适当的计算量。

你可能感兴趣的:(深度学习)