卷積神經網路為什麼要加一層降採樣層呢?

卷積神經網路的結構是,第一層輸入層,第二層卷積層,第三層採樣層,第四層卷積層,第五層採樣層,等等。這裡面為什麼要一個採樣層呢?如果是為了降低維度為什麼不加大卷積核的大小呢?畢竟卷積輸出包含了局部信息,而採樣則是直接丟棄了一部分局部信息。剛剛研究卷積神經網路,如有不對的地方請各位大大不吝賜教。


一般來說,採用max pooling有以下原因:

1. 略微提高transformation invariance

2. 視皮層有類似的側抑制效應

3. 減少參數防止過擬合

本質上說,1和2是justification,3才是目的。至於這些justification是否成立,沒人能證明,但實踐上看效果不錯。

如果是為了降低維度為什麼不加大卷積核的大小呢?

加大卷積核會增加參數,南轅北轍。不過加大stride是可行的。

畢竟卷積輸出包含了局部信息,而採樣則是直接丟棄了一部分局部信息。

首先,好的regularization就是要減少無關信息,去掉無用操作。保留的信息多不見得是好事。

其次,一般來說pooling size等於stride,而且是max 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能減小第二種誤差,更多的保留紋理信息

平安夜還看我的教程的

多半是單身狗

當然,平安夜寫教程的,多半也是

那麼

祝點贊的各位,女朋友長得和裡面最漂亮的一樣


簡單來說,可以看成在降維

作用,減少參數和計算量,又可以起到一定防止過擬合的作用


降採樣層不是必須的,一個很重要的原因就是圖像縮小時我們人眼獲得的信息幾乎是不變的,也就是視覺的冗餘性。所以我們可以通過降採樣來減少網路的參數。

但是有些情況下,比如alphago的架構中,就沒有降採樣,因為這樣做的話改變了棋局。具體情況具體分析吧


去看看那種類似測色盲的圖,就明白了,大腦需要的是抽象的信息,而非具體


我覺得卷積的時候加一個步長就可以做到卷積+採樣。

可以看卷積網路 - Deeplearning4j: Open-source, distributed deep learning for the JVM 里的動態圖,它的卷積過程就是步長為2。我認為最高贊下的評論說的對,增加步長相當於固定點的pool

增大卷積核的大小的話,試想當卷積核和輸入圖一樣大,那麼豈不是相當於全連接了。卷積就是為了減少連接的。在LeNet-5中,卷積核的大小是5*5的。

採樣並非丟棄了局部信息,如果用max polling,採樣反而會使特徵更突出,具有了一定的旋轉不變性。

我研究的卷積神經網路的時間也不長,如果理解的不對,請指出


同意最高贊的回答

一邊是為了提高平移/伸縮不變性(實際效果一般般)

最主要是為了減少參數


推薦閱讀:

如何看待李沐MXNet公開課這件事?
在NLP領域,現階段最有希望突破深度學習牢籠的研究/思路有哪些?
為什麼支持向量機(SVM)被命名被「機器(Machine)」?
人臉驗證任務中的目標方程為什麼還要加入分類誤差?
tensorflow等框架是如何處理大數據的(數據無法一次性讀入機器內存)?

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