池化操作時在卷積神經網絡中經常采用過的一個基本操作,一般在卷積層后面都會接一個池化操作,但是近些年比較主流的ImageNet上的分類算法模型都是使用的max-pooling,很少使用average-pooling,這對我們平時設計模型時確實有比較重要的參考作用,但是原因在哪里呢?
通常來講,max-pooling的效果更好,雖然max-pooling和average-pooling都對數據做了下采樣,但是max-pooling感覺更像是做了特征選擇,選出了分類辨識度更好的特征,提供了非線性,根據相關理論,特征提取的誤差主要來自兩個方面:(1)鄰域大小受限造成的估計值方差增大;(2)卷積層參數誤差造成估計均值的偏移。一般來說,average-pooling能減小第一種誤差,更多的保留圖像的背景信息,max-pooling能減小第二種誤差,更多的保留紋理信息。average-pooling更強調對整體特征信息進行一層下采樣,在減少參數維度的貢獻上更大一點,更多的體現在信息的完整傳遞這個維度上,在一個很大很有代表性的模型中,比如說DenseNet中的模塊之間的連接大多采用average-pooling,在減少維度的同時,更有利信息傳遞到下一個模塊進行特征提取。
但是average-pooling在全局平均池化操作中應用也比較廣,在ResNet和Inception結構中最后一層都使用了平均池化。有的時候在模型接近分類器的末端使用全局平均池化還可以代替Flatten操作,使輸入數據變成一位向量。
max-pooling和average-pooling的使用性能對於我們設計卷積網絡還是很有用的,雖然池化操作對於整體精度提升效果也不大,但是在減參,控制過擬合以及提高模型性能,節約計算力上的作用還是很明顯的,所以池化操作時卷積設計上不可缺少的一個操作。