池化层的知识

来源:互联网 发布:金思维软件 编辑:程序博客网 时间:2024/06/02 03:58

   卷积神经网络的一个重要概念就是池化层,一般是在卷积层之后。池化层对输入做降采样,常用的池化做法是对每个滤波器的输出求最大值,平均值,中位数等。

  

  池化的特点之一就是它输出一个固定大小的矩阵,这对分类问题很有必要。例如,如果你用了100个滤波器,并对每个输出使用最大池化,那么无论滤波器的尺寸是多大,也无论输入数据的维度如何变化,你都将得到一个100维的输出。这让你可以应用不同长度的句子和不同大小的滤波器,但总是得到一个相同维度的输出结果,传入下一层的分类器。

  池化还能降低输出结果的维度,(理想情况下)却能保留显著的特征。你可以认为每个滤波器都是检测一种特定的特征,例如检测句子是否包含诸如“not amazing”等否定意思。如果这个短语在句子中的某个位置出现,那么对应位置的滤波器的输出值将会非常大,而在其它位置的输出值非常小。通过采用取最大值的方式,能将某个特征是否出现在句子中的信息保留下来,但是无法确定它究竟在句子的哪个位置出现。所以这个信息出现的位置真的很重要吗,这有点类似于一组n-grams模型的行为。尽管丢失了关于位置的全局信息(在句子中的大致位置),但是滤波器捕捉到的局部信息却被保留下来了,比如“not amazing”和“amazing not”的意思就大相径庭。

  在图像识别领域,池化还能提供平移和旋转不变性。若对某个区域做了池化,即使图像平移/旋转几个像素,得到的输出值也基本一样,因为每次最大值运算得到的结果总是一样的。

  Dilated Convolution(扩张神经网络)的产生是为了解决全卷积网络在图像分割领域的问题,图像分割需要输入和输出在像素的shape保持一致,但由于池化层的存在导致需要通过上采样扩增size,但是上采样并不能将丢失的信息无损的找回所以存在不足。

  Dilated Convolution想法就是既然池化的下采样操作会带来信息损失,那么就把池化层去掉。但是池化层去掉随之带来的是网络各层的感受野变小,这样会降低整个模型的预测精度。Dilated convolution的主要贡献就是如何在去掉池化下采样操作的同时,而不降低网络的感受野。

  最后个人觉得虽然Dilated Convolution可以增大感受野,不损失信息,但是先前的池化层(pooling)还具有减小网络规模和参数的作用,较少特征冗余,防止过拟合的作用。