深度学习-池化

池化简介

     CNN的池化(图像下采样)方法很多:Mean pooling(均值采样)、Max pooling(最大值采样)、Overlapping (重叠采样)、L2 pooling(均方采样)、Local Contrast Normalization(归一化采样)、Stochasticpooling(随即采样)、Def-pooling(形变约束采样)。其中最经典的是最大池化,
     池化在深度学习的卷积神经网络中经常用到的,它通常和卷积层一起,用来减小网络大小。池化最常用的是MaxPooling,其作用是把相关区域的最大值取出来。

       如上图所示,这里采用一个池化层,将原来4×4的输入数据变成一个2×2的数据。其做法是首先将原始数据划分成4个区域,然后将每个区域的最大值拿出来作为新数据的结果。如左上角第一块区域(粉色区域)最大值是6,那么该位置输出的数据就是6,这就是MaxPooling。

       这里池化的作用相当于给了一个f=2×2大小的卷积核(滤波器)以步长为stride=2来扫描原来的4×4的数据,最终得到了一个新的2×2的数据。所以,池化的维度计算和卷积层的维度计算一样。参考深度学习卷积操作的维度计算。对于三维数据的池化也是类似卷积的操作,注意的是,一个卷积核对输入数据进行卷积操作,不论输入数据的通道数有多少个,最终只会产生一个单通道的结果,即一个二维数据,因此要求卷积核的第三个维度和输入数据的通道数一样。最终计算的结果是每个通道的卷积操作的结果相加。而池化的时候,卷积核第三个维度和输入数据的通道数也是一样的。只是取完区域最大值之后,几个通道结果不在一起取最大值,因此MaxPooling输出的结果是一个多通道的数据,即三维的,第三个维度表示通道数,和输入数据一致。

池化的动机

       pooling池化的作用则体现在降采样:保留显著特征、降低特征维度,增大kernel的感受野。另外一点值得注意:pooling也可以提供一些旋转不变性。

  池化层可对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度并在一定程度上避免过拟合的出现;一方面进行特征压缩,提取主要特征。 
  最大池采样在计算机视觉中的价值体现在两个方面:(1)、它减小了来自上层隐藏层的计算复杂度;(2)、这些池化单元具有平移不变性,即使图像有小的位移,提取到的特征依然会保持不变。由于增强了对位移的鲁棒性,这样可以忽略目标的倾斜、旋转之类的相对位置的变化,以此提高精度,最大池采样方法是一个高效的降低数据维度的采样方法。 
  需要注意的是:这里的pooling操作是特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的深度来弥补(这里的深度变为原来的2倍)。

        一般来说池化的作用是减小图片的大小并保留原始的特征。以上述输入数据为例,这个输入数据可能是某次卷积的结果,我们可以把它看做是某个特征的集合。如果某个区域有个较大的数字,那么意味着它可能检测到了一个特征。每个部分可能都检测到了一个特征。比如左上角第一个可能是一个垂直线,右上角黄色区域可能是一个猫的耳朵。那么MaxPooling的结果就是保留任何区域的最大数值,来保存这个特征。
        但是吴恩达也承认,这种解释只是一个解释,是不是真的也不确定。最重要的原因可能还是大量的实验表明,池化的效果确实很好。
       池化的有个特点是尽管它有超参数,即上述滤波器的大小和步长,但是却无法使用梯度下降学习,这两个参数一旦确定,其MaxPooling的结果也就确定了。

总结

        除了MaxPooling外也有其他的池化方式。例如AveragePooling。也就是取区域的平均值了。此外,池化操作通常不会对数据做Padding操作,显然MaxPooling取最大值的时候一般边缘数据如果大的话,肯定也会在输出中体现,不大的话说明特征不重要。做Padding效果不大。

发布了142 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_30460949/article/details/100523590