CNN入門講解:什麼是採樣層(pooling)
各位看官老爺們
好久不見
這裡是波波給大家帶來的CNN卷積神經網路入門講解
每周我將給大家帶來絕對原創,腦洞大開,幽默風趣的深度學習知識點入門講解
希望大家多多支持,多多關注
微信公眾號:follow_bobo
今天是平安夜,希望大家未來的日子裡平平安安
今年第一次聖誕節在新加坡過
先讓我們來看看新加坡的聖誕
看看就好了
上一次我們講到哪了
嗯,對了,講到卷積輸出了,輸出的特徵圖(feature map)到了採樣(pooling,有些也叫subsample)層手上,
採樣層實際上就是一個特徵選擇的過程
假設我們用邊緣濾波器去卷積輸入圖片,得到的特徵值矩陣如下:
其實採樣層(pooling)非常好理解,我們這裡特指maxpooling
什麼是maxpooling 呢
實際操作就是在四個方格里選最大的那個,對,就是9
這個矩陣就是特徵圖
數字的含義,你可以理解為能代表這個特徵的程度
比如上一層卷積層的卷積核或者說過濾器是邊緣過濾器
9的意思就代表在這個區域,這一塊部位最符合邊緣特徵
Maxpooling 就是在這個區域內選出最能代表邊緣的值,也就是9,然後丟掉那些沒多大用的信息
為什麼要這麼做
舉個例子
下面四個美女,如果非要你選,你娶誰
你肯定會選最漂亮的(最符合的特徵)
其他的你會想要嗎?
不想了吧
我相信這個選擇應該有標準答案了,如果你選的不是標準答案
不好意思
這位同學,我教不了你,你不用往下看了
『那個,我要是想把4個都娶了呢』(不做maxpooling)
這位同學,要求挺多啊
首先你娶回4個,她們會各種勾心鬥角,讓你崩潰(overfitting)
然後你會有巨大的經濟壓力,身體也吃不消(參數過多導致運算量大)
最後可能還會難以平衡婆(上一次卷積層)媳或者母子(下一層卷積層)關係(無法滿足模型結構需求)
現在,你還想娶4個嗎
池化是怎麼進行的呢
非常類似卷積層的卷積核
你就可以理解為卷積核每空兩格做一次卷積,卷積核的大小是2x2, 但是卷積核的作用是取這個核裡面最大的值(即特徵最明顯的值),而不是做卷積運算
池化層還有什麼性質
它可以一定程度提高空間不變性,比如說平移不變性,尺度不變性,形變不變性
對,一定程度上
為什麼會有空間不變性呢
因為上一層卷積本身就是對圖像一個區域一個區域去卷積
因此對於CNN來說
重要是單獨區域的特徵,以及特徵之間的相對位置(而不是絕對位置)
圖像細微的變換
經過卷積,maxpooling之後,輸出結果和原來差別可能不算大,或者沒有差別
比如平移不變性(translation invariant)
意思就是圖像經過一個小小的平移之後,依然產生相同的池化特徵
這個小小的平移要注意了
這個平移是在你的池化矩陣的範圍
對於單個像素,有8個變換的方向(上、下、左、右、左上、左下、右上、右下),如果最大層是在2*2的窗口上面實現,這8個可能的配置中,有3個可以準確的產生和平移前相同的結果(filter size 2x2)
說明魯棒性還行
為什麼我們想要平移不變性
舉個例子:
『2』的位置發生了變化,我們仍然希望分類器能正確分別出他們
Pooling 層說到底還是一個特徵選擇,信息過濾的過程,也就是說我們損失了一部分信息,這是一個和計算性能的一個妥協,隨著運算速度的不斷提高,我覺得這個妥協會越來越小。
現在有些網路都開始少用或者不用pooling層了
關於,average pooling
實際上就是把filter 裡面的所以值求一個平均值
特徵提取的誤差主要來自兩個方面:
(1)鄰域大小受限;
(2)卷積層權值參數誤差。
目前主流上對於average pooling 和max-pooling 的主要區別在於
average -pooling能減小第一種誤差,更多的保留圖像的背景信
max-pooling能減小第二種誤差,更多的保留紋理信息
平安夜還看我的教程的
多半是單身狗
當然,平安夜寫教程的,多半也是
那麼
祝點贊的各位,女朋友長得和裡面最漂亮的一樣
推薦閱讀: