原文链接:漫谈池化层 | Hey~YaHei!
参考:
- 《Hands-On Machine Learning with Scikit-Learn and TensorFlow(2017)》Chap13
《Hands-On Machine Learning with Scikit-Learn and TensorFlow》笔记 - 《卷积神经网络——深度学习实践手册(2017.05)》
- 《Deep Learning 深度学习(2017)》
基本的池化操作
简单的聚合操作,取均值、取最值等,分别称为平均池化(Average Pooling)和最大池化(Max Pooling);
一般使池化核的大小与步长相等,不重叠、全覆盖地进行降采样;
平均池化和最大池化的tensorflow实现参见 卷积神经网络CNN / tensorflow实现 / 池化层 | Hey~YaHei!
池化的意义
既对数据进行降采样(down-sampling)操作,又可以用p范数(p-norm)作非线性映射的“卷积”
p 范 数 : ∣ ∣ A ∣ ∣ p = ( ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ p ) 1 / p , p > = 1 p范数:||A||_p = (\sum_{i=1}^m \sum_{j=1}^n |a_{ij}|^p)^{1/p}, p>=1 p范数:∣∣A∣∣p=(i=1∑mj=1∑n∣aij∣p)1/p,p>=1
当 p → ∞ p \to \infty p→∞ 时即为最大池化
具体作用为:
- 特征不变性
使模型更关注包含一定的自由度,能容忍特征微小的位移 - 特征降维
降采样使后续操作的计算量得到减少 - 一定程度防止过拟合
平均池化和最大池化的区别
论文 Learning Mid-Level Features For Recognition(2010) 第5节
CNN特征提取的误差主要来自两个方面:
- 邻域大小受限造成的估计值方差增大
平均池化能有效减少该误差,更多的保留图像的背景信息;
均匀采样的方差只有总体方差的 1 N \frac{1}{N} N1;
但如果模型中杂波方差较大(也即第二个误差明显),最后输出类别的概率分布将出现明显的混叠,导致分类准确率下降 - 卷积层参数误差造成估计值均值偏移
最大池化能有效减少该误差,更多的保留图像纹理信息;
最大值采样的方差为总体方差的 1 l o g ( N ) \frac{1}{\sqrt{log(N)}} log(N)