池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。
池化层通常会分别作用于每个输入的特征并减小其大小。目前最常用形式的池化层是每隔2个元素从图像划分出的区块,然后对每个区块中的4个数取最大值。这将会减少75%的数据量。
除了最大池化之外,池化层也可以使用其他池化函数,例如“平均池化”甚至“L2-范数池化”等。
下图为最大池化过程的示意图:
[描述来源:维基百科;URL:https://zh.wikipedia.org/wiki/%E5%8D%B7%E7%A7%AF%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C]
[图片来源:http://cs231n.github.io/convolutional-networks/]
发展历史
描述
过去,平均池化的使用较为广泛,但是由于最大池化在实践中的表现更好,所以平均池化已经不太常用。由于池化层过快地减少了数据的大小,目前文献中的趋势是使用较小的池化滤镜,甚至不再使用池化层。
主要事件
年份 | 事件 | 相关论文/Reference |
2012 | 采用重叠池化方法,降低了图像识别的错误率 | Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems (pp. 1097-1105). |
2014 | 将空金字塔池化方法用于CNN,可以处理任意尺度的图像 | He, K., Zhang, X., Ren, S., & Sun, J. (2014, September). Spatial pyramid pooling in deep convolutional networks for visual recognition. In european conference on computer vision (pp. 346-361). Springer, Cham. |
2014 | 提出了一种简单有效的多规模无序池化方法 | Gong, Y., Wang, L., Guo, R., & Lazebnik, S. (2014, September). Multi-scale orderless pooling of deep convolutional activation features. In European conference on computer vision (pp. 392-407). Springer, Cham. |
2014 | 使用较小的池化滤镜 | Graham, B. (2014). Fractional max-pooling. arXiv preprint arXiv:1412.6071. |
2017 | 提出一种Learning Pooling方法 | Sun, M., Song, Z., Jiang, X., Pan, J., & Pang, Y. (2017). Learning pooling for convolutional neural network. Neurocomputing, 224, 96-104. |
发展分析
瓶颈
容易过快减小数据尺寸
未来发展方向
目前趋势是用其他方法代替池化的作用,比如胶囊网络推荐采用动态路由来代替传统池化方法,原因是池化会带来一定程度上表征的位移不变性,传统观点认为这是一个优势,但是胶囊网络的作者Hinton et al.认为图像中位置信息是应该保留的有价值信息,利用特别的聚类评分算法和动态路由的方式可以学习到更高级且灵活的表征,有望冲破目前卷积网络构架的瓶颈。
Contributor: Yueqin Li