深度学习技术之池化(Pooling)

标签:#coursera##深度学习##调优# 时间:2019/02/21 10:43:18 作者:小木

一、池化简介

池化在深度学习的卷积神经网络中经常用到的,它通常和卷积层一起,用来减小网络大小。池化最常用的是MaxPooling,其作用是把相关区域的最大值取出来。


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

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

二、池化的动机

一般来说池化的作用是减小图片的大小并保留原始的特征。以上述输入数据为例,这个输入数据可能是某次卷积的结果,我们可以把它看做是某个特征的集合。如果某个区域有个较大的数字,那么意味着它可能检测到了一个特征。每个部分可能都检测到了一个特征。比如左上角第一个可能是一个垂直线,右上角黄色区域可能是一个猫的耳朵。那么MaxPooling的结果就是保留任何区域的最大数值,来保存这个特征。

但是吴恩达也承认,这种解释只是一个解释,是不是真的也不确定。最重要的原因可能还是大量的实验表明,池化的效果确实很好。

池化的有个特点是尽管它有超参数,即上述滤波器的大小和步长,但是却无法使用梯度下降学习,这两个参数一旦确定,其MaxPooling的结果也就确定了。

三、总结

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

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送