【5】如何理解CNN中的池化?

1、什麼是池化?

我們之所以使用卷積後的特徵,是因為圖像具有「靜態型」的屬性,也就意味著在一個圖像區域的特徵極有可能在另一個區域同樣適用。所以,當我們描述一個大的圖像的時候就可以對不同位置的特徵進行聚合統計(例如:可以計算圖像一個區域上的某個特定特徵的平均值 or 最大值)這種統計方式不僅可以降低緯度,還不容易過擬合。這種聚合統計的操作就稱之為池化,或平均池化、最大池化。

2、池化的作用?

(1)保留主要特徵的同時減少參數(降低緯度,類似PCA)和計算量,防止過擬合

在通過卷積獲得了特徵 (features) 之後,下一步用這些特徵去做分類。我們可以用所有提取到的特徵去訓練分類器,但是這樣計算成本比較高。例如softmax分類器,例如:對於一個 96X96 像素的圖像,假設我們已經學習得到了400個定義在8X8輸入上的特徵,每一個特徵和圖像卷積都會得到一個 (96 ? 8 + 1) * (96 ? 8 + 1) = 7921 維的卷積特徵,由於有 400 個特徵,所以每個樣例 (example) 都會得到一個 892 * 400 = 3,168,400 維的卷積特徵向量。學習一個擁有超過 3 百萬特徵輸入的分類器十分不便,並且容易出現過擬合 (over-fitting)。

(2)invariance(不變性),這種不變性包括translation(平移),rotation(旋轉),scale(尺度)

a、 translation invariance:

這裡舉一個直觀的例子(數字識別),假設有一個16x16的圖片,裡面有個數字1,我們需要識別出來,這個數字1可能寫的偏左一點(圖1),這個數字1可能偏右一點(圖2),圖1到圖2相當於向右平移了一個單位,但是圖1和圖2經過max pooling之後它們都變成了相同的8x8特徵矩陣,主要的特徵我們捕獲到了,同時又將問題的規模從16x16降到了8x8,而且具有平移不變性的特點。圖中的a(或b)表示,在原始圖片中的這些a(或b)位置,最終都會映射到相同的位置。

b、rotation invariance:

下圖表示漢字「一」的識別,第一張相對於x軸有傾斜角,第二張是平行於x軸,兩張圖片相當於做了旋轉,經過多次max pooling後具有相同的特徵

c、 scale invariance:

下圖表示數字「0」的識別,第一張的「0」比較大,第二張的「0」進行了較小,相當於作了縮放,同樣地,經過多次max pooling後具有相同的特徵

推薦閱讀:

TAG:深度學習DeepLearning | 卷積神經網路CNN | 機器學習 |