date: 2018/05/07

again - YUI:YUI的吉他弹唱赛高!~


参考:

  1. Hands-On Machine Learning with Scikit-Learn and TensorFlow(2017)》Chap13
  2. 卷积神经网络——深度学习实践手册(2017.05)
  3. Deep Learning 深度学习(2017)


基本的池化操作

简单的聚合操作,取均值、取最值等,分别称为平均池化(Average Pooling)和最大池化(Max Pooling);

一般使池化核的大小与步长相等,不重叠、全覆盖地进行降采样;


池化的意义

既对数据进行降采样(down-sampling)操作,又可以用p范数(p-norm)作非线性映射的“卷积”

p范数:

当  时即为平均池化;

时即为最大池化


具体作用为:

  1. 特征不变性
    使模型更关注包含一定的自由度,能容忍特征微小的位移
  2. 特征降维
    降采样使后续操作的计算量得到减少
  3. 一定程度防止过拟合


平均池化和最大池化的区别

论文 《Learning Mid-Level Features For Recognition(2010)》 第5节


CNN特征提取的误差主要来自两个方面:

  1. 邻域大小受限造成的估计值方差增大
    平均池化能有效减少该误差,更多的保留图像的背景信息;
    均匀采样的方差只有总体方差的
    但如果模型中杂波方差较大(也即第二个误差明显),最后输出类别的概率分布将出现明显的混叠,导致分类准确率下降
  2. 卷积层参数误差造成估计值均值偏移
    最大池化能有效减少该误差,更多的保留图像纹理信息;
    最大值采样的方差为总体方差的 (推导过程参见论文),受第一种误差影响较大;


改进的池化操作

重叠池化(Overlapping Pooling)

论文:《ImageNet Classification with Deep Convolutional Neural Networks(2012)》 第3.4节——

3.4 Overlapping Pooling

Pooling layers in CNNs summarize the outputs of neighboring groups of neurons in the same kernel map. Traditionally, the neighborhoods summarized by adjacent pooling units do not overlap (e.g., [17, 11, 4]). To be more precise, a pooling layer can be thought of as consisting of a grid of pooling units spaced s pixels apart, each summarizing a neighborhood of size z × z centered at the location of the pooling unit. If we set s = z, we obtain traditional local pooling as commonly employed in CNNs. If we set s < z, we obtain overlapping pooling. This is what we use throughout our network, with s = 2 and z = 3. This scheme reduces the top-1 and top-5 error rates by 0.4% and 0.3%, respectively, as compared with the non-overlapping scheme s = 2; z = 2, which produces output of equivalent dimensions. We generally observe during training that models with overlapping pooling find it slightly more difficult to overfit.


思路很简单,让池化的步长略小于池化核的大小,使相邻的池化图像块出现一定程度的重叠;

据论文介绍,相比于大小2x2、步长2的传统池化操作,3x3、步长2的重叠池化操作使他们的模型的分类错误率top-1和top-5分别降低0.4%和0.3%;

并且他们通过实验观察到(有点主观),重叠池化具有一定的正则化作用;


随机池化(Stochastic Pooling)

论文:《Stochastic Pooling for Regularization of Deep Convolutional Neural Networks(2013)


按一定概率随机选取其中一个元素,介于平均池化和最大池化之间,并且受dropout启发,具有更好的正则化效果;

可以看作是,在输入图片的许多副本(有一些小的局部变形)上进行标准的最大池化操作;


具体操作
    1. 归一化卷积层的输出计算,并以此作为每个元素的概率

      其中,
      是第i个输出的采样概率,
      是前层(卷积层)的第i个输出,
      是池化核扫过的第j个区域
    2. 用基于概率 的多项分布的随机数对池化核扫过的区域进行随机采样作为区域池化的输出

      其中,
      是第j个区域的输出,
      是随机采样抽中的前层的一个输出
    3. 反向传播时,将抽中的元素用于梯度计算


分析比较:


实验比较

SP_Reduced_Traing_Set_Size.png


空间金字塔池化(Spatial Pyramid Pooling, SPP)

论文:《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(2015)

Muti-scale_CNN.png


传统CNN中,输入的图片数据必须是特定尺度的,以确保进入FC或SVM前的尺寸固定(连接矩阵的大小固定);

因而往往在输入数据前需要对图片进行尺寸处理,比如裁剪、缩放;

而SPP操作不仅可以支持多尺度的图片输入,而且多方面特征提取更具鲁棒性,在目标检测任务上能够明显提高精度;

Spatial_Pyramid_Pooling.png



池化不是必要操作