1. 程式人生 > >GAP全域性池化替代全連線層的分析

GAP全域性池化替代全連線層的分析

首先我們來看一下全連線層的缺點:

在AlexNet及其之前的大抵上所有的基於神經網路的機器學習演算法都要在卷積層之後新增上全連線層來進行特徵的向量化,此外出於神經網路黑盒子的考慮,有時設計幾個全連線網路還可以提升卷積神經網路的分類效能,一度成為神經網路使用的標配。

但是,我們同時也注意到,全連線層有一個非常致命的弱點就是引數量過大,特別是與最後一個卷積層相連的全連線層。一方面增加了Training以及testing的計算量,降低了速度;另外一方面引數量過大容易過擬合。雖然使用了類似dropout等手段去處理,但是畢竟dropout是hyper-parameter, 不夠優美也不好實踐。

那麼我們有沒有辦法將其替代呢?當然有,就是GAP(Global Average Pooling)。

我們要明確以下,全連線層將卷積層展開成向量之後不還是要針對每個feature map進行分類嗎,GAP的思路就是將上述兩個過程合二為一,一起做了。如圖所示:

這裡寫圖片描述

由此就可以比較直觀地說明了。這兩者合二為一的過程我們可以探索到GAP的真正意義是:對整個網路在結構上做正則化防止過擬合。其直接剔除了全連線層中黑箱的特徵,直接賦予了每個channel實際的類別意義。做法是在最後卷積層輸出多少類別就多少map,然後直接分別對map進行平均值計算得到結果最後用softmax進行分類。

實踐證明其效果還是比較可觀的,同時GAP可以實現任意影象大小的輸入。但是值得我們注意的是,使用gap可能會造成收斂速度減慢。