Pooling层概述
Pooling层是CNN中的重要组成部分,通常用来实现对网络中Feature Map的降维,减少参数数量的同时,为网络后面各个层增加感受野,保留Feature Map的显著特征。Pooling层根据计算方式不同,划分为最大池化层(Max Pooling)、局部平均池化层(Local Mean Pooling)、全局平均池化层(Global Mean Pooling)
Pooling层的输出计算
Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在n的样本中取最大值,作为采样后的样本值。下图是22 Max Pooling:
![](https://i-blog.csdnimg.cn/blog_migrate/01962ad441972a3f5ad507ed759e0ed3.png)
根据上图我们用表示上一层的加权输入;用l表示下一层的加权输入,即
层经过Max Pooling计算的输出
层。我们先来考察一个具体的例子,然后再总结一般性的规律。对于max pooling:
可总结
, ,k为Max Pooling的池化核大小
除了Max Pooing之外,常用的还有Mean Pooling——取各样本的平均值。
![](https://i-blog.csdnimg.cn/blog_migrate/3e33dd9fbf60198e89f9fe077e057277.png)
对于深度为D的Feature Map,各层独立做Pooling,因此Pooling后的深度仍然为D。
Pooling层的训练
无论max Pooling还是Mean Pooling,都没有需要学习的参数。因此,在卷积神经网络的训练中,Pooling层需要做的仅仅是将误差项传递到上一层,而没有参数梯度的计算(因为没有参数需要更新)。
![](https://i-blog.csdnimg.cn/blog_migrate/e04141e11e47a53ac6303efe0a8f7a39.png)
我们用表示上一层的加权输入;用l表示下一层的加权输入,。通过上面那个的例子推导结果,可以看出,只有区块中最大的才会对的值产生影响。假如针对中的最大值为,则上式相当于:
现在,我们发现了规律:对于max pooling,下一层的误差项的值会原封不动的传递到上一层对应区块中的最大值所对应的神经元,而其他神经元的误差项的值都是0。如下图所示(假设、、、为所在区块中的最大输出值):
![](https://i-blog.csdnimg.cn/blog_migrate/f3f10c518d367736ae36b5114f2ab88a.png)
Mean Pooling误差项的传递
同理我们通过上面一个的例子,先来看看是如何影响的,假如针对
同样,我们很容易求得下面几个偏导数:
根据链式求导法则,我们可以进一步算出:
通过上面推导我们发现了规律:对于mean pooling,下一层的误差项的值会平均分配到上一层对应区块中的所有神经元。如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/2fb86a164268630fbad7aab97802965e.png)
作者:城市郊区的牧羊人
链接:https://www.jianshu.com/p/4060600f711e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。