【深度學習之美】激活引入非線性,池化預防過擬合(入門系列之十二)

12.1 兩個看似閒扯的問題

在開講本章內容之前,先請你思考兩個問題唄:第一個問題,你能用直線畫出一張漂亮的笑臉嗎?第二個問題是,你知道那副著名的對聯:“諸葛一生唯謹慎,呂端大事不糊塗”,說得是什麼典故嗎?

如果你不是擡槓的話,我想你第一個問題的答案,應該是不能。因爲直線的表現力非常有限,只有曲線才能畫出更美的線條。因此,纔有英國畫家和美學家威廉•荷加茲(William Hogarth,1697~1764)這個的結論:“世界上最美的線條是曲線”。

a0f4ebdbd6708d2a80863eeeb3610f4353e66d57

諸葛亮的“過度擬合”

第二問題說的是,諸葛當然是指“諸葛亮”。其人掌軍理政之謹慎,史家已有共識。但過於謹慎是有代價的,那就是面臨新情況做決策時,考慮因素過多,思前顧後,從而使其判斷力(或稱之爲預測力)大打折扣。而同樣身居高位的呂端則不同。呂端是宋朝一個名宰相,別看他平時是糊里糊塗的,很多雞零狗碎之事,他從不斤斤計較。但一旦涉及原則性、重要關鍵決策點時,呂端從不馬虎,其風格有點像“大行不顧細謹”。

12.2 追尋問題的本質

前面我們提了兩個問題,看似閒扯,其實不然。因爲它們的答案都和今天的主題相關。問題一的答案其實是想說明一個結論,就是線性的事物,表達能力不強,而非線性則相反。我們知道,從宏觀來將,在本質上,人工神經網絡就分爲兩大類層:顯層和隱層。“顯層”就是我們能感知到的輸入層和輸出層,而“隱層”則是除了輸入輸出之外的無法被我們感知的層,它可以理解爲數據的內在表達[1]

在第二章中,我們已經提到,如果“隱層”有足夠多的神經元,那麼神經網絡能夠以任意精度逼近任意複雜度的連續函數,這就是大名鼎鼎的通用近似定理(Universal Approximation Theorem[2]。通過在第八章BP算法的講解中,我們可以看到,神經元與神經元的連接都是基於權值的線性組合。我們知道,線性的組合依然是線性的,那網絡的表達能力就非常有限了。這樣一來,通用近似定理又是如何起作用的呢?這就得請“激活”函數出馬了?神經元之間的連接是線性的,但激活函數可不一定是線性的啊,有了非線性的激活層在,多麼玄妙的函數,我們都能近似表徵出來。所以,在卷積神經網絡中,激活層是必須保留的。

第二個問題的答案,其實是想說明深度學習訓練的兩大難點:過擬合(overfitting)和欠擬合(underfitting)。那什麼是過擬合和欠擬合呢?圖12-2可形象地說明這兩個概念的差別。

03b3249c96724ffe0417ee8fa0e81fd6c6790b93

12-2 過擬合與欠擬合的直觀類比

“欠擬合”比較容易理解,就是樣本不夠,或學習算法不精,連已有數據中的特徵都沒有學習好,自然當面對新樣本做預測時,效果肯定也好不到哪裏去。比如說,在圖12-2中(右下圖),若果僅僅把樣本中的“四條腿”當作青蛙的特徵,這“欠缺”的特徵,就會把一隻四條腿的壁虎也當作青蛙。其實,欠擬合比較容易克服,比如在決策樹算法中擴展分枝,再比如在神經網絡中增加訓練的輪數,從而可以更加“細膩”地學習樣本種的特徵。

相比而言,要克服過擬合,就相對困難得多。在過擬合裏,構建的模型必須一絲不苟地反映已知的所有數據,但這樣一來,它對未知數據(新樣本)的預測能力就會比較差。

這是因爲,所謂的“已知”數據,其實也是有誤差的!精準的擬合會把這些數據的誤差給放大。從而導致,擬合得越精確,面對新樣本時,預測的效果反而會更加糟糕。比如說圖12-2中(右上圖),誤把背上斑點當做青蛙的特徵,當新來的樣本青蛙,僅僅由於背上沒有斑點(不同於樣本數據),就被判定爲非青蛙,這豈不是很荒誕?“諸葛一生唯謹慎”,說的就是諸葛亮陷入“過擬合”狀態,他容易被很多細節所迷惑,自然決策的質量就會受到影響。

“呂端大事不糊塗”說的就是,小事情上“難得糊塗”,大事情上“毫不含糊”。遇到新情況,呂端就不會受很多細節所左右。用機器學習的術語來講,呂端的“泛化能力”比較強。

卷積神經網絡也追求泛化(即防過擬合)能力,它是如何做到的呢?自然也得學習“呂端”的行爲——別管那麼多!

針對神經網絡,就是再次降低數據量,讓系統少學點。不要認爲,訓練數據越“全面”越好。想一想人類的學習就知道怎麼回事了。當孩子還小正處於學習階段時,媽媽們的濃濃愛意,總想通過“事無鉅細”地照顧孩子表達出來。但在這種環境下“學習”出來的孩子,一旦踏上社會,適應新環境的能力就差很多,並不值得提倡。神經網絡也是如此。

那該如何降低數據量呢?最簡單的策略自然就是“採樣(sampling)”了。其實,採樣的本質就是力圖以合理的方式“以偏概全”。這樣一來,數據量自然就降低了。

在卷積神經網絡中,採樣是針對若干個相鄰的神經元而言的,因此也稱爲“亞採樣(Subsampling)”。可能是“亞採樣”這個詞的逼格不夠高吧,於是研究者們又給它取了個更難懂的詞:“池化(Pooling)”。“池化”其實僅僅是個字面的翻譯,遠沒達不到“信達雅”的要求,如果非要向“採樣”的含義靠攏,中國那句古話,“弱水三千只取一瓢”,似乎更有韻味。南京大學周志華老師就將其的意譯爲“匯合”,這樣的翻譯似乎更加傳神。但拗不過太多人都把“Pooling”翻譯成“池化”,那我們也就“池化”叫下去吧。

接下來,我們就詳細說一說激活層和池化層到底是怎麼回事吧。

12.3 細說激活層

通過前面的鋪墊,現在我們應該知道,激活層存在的最大目的,莫過於引入非線性因素,以增加整個網絡的表徵能力。

這時,選取合適的“激活函數”就顯得非常重要了。在前面的章節中,我們提到了常用的激活函數Sigmoid(或tanh函數),也是可用的(如圖12-3所示)。

                                                             1d3fed3cd800355141f95429a25aacb66d2a9fc8            


12-3 激活函數Sigmoid

Sigmoid之類激活函數有個很大的缺點,就是它的導數值很小。比如說,Sigmoid的導數取值範圍僅爲[0, 1/4]。且當輸入數據(x)很大或者很小的時候,其導數趨都近於0。這就意味着,很容易產生所謂的梯度消失(vanishing gradient)現象。沒有了梯度的指導,那麼神經網絡的參數訓練,就如同“無頭的蒼蠅”,毫無方向感。

因此,如何防止深度神經網絡陷入梯度消失,或說如何提升網絡的訓練效率,一直都是深度學習非常熱門的研究課題。目前,在卷積神經網絡中,最常用的激活函數久是修正線性單元(Rectified Linear Unit,簡稱ReLU)。這個激活函數是由Hinton等人2010年提出來的[3]。標準的ReLU函數爲f(x)=max(x,0),即當x>0時,輸出xx<=0時,輸出0。如圖12-4所示,請注意,這是一條曲線啊,只不過它在原點處不夠那麼圓潤而已。


408e87fe4d45b8e71c7b733df1a81bff9d1f1f05

12-4 激活函數ReLU

不要小看這個看起來有點簡陋的模型,其實它的優點還不少。相比於Sigmoid類激活函數,ReLU激活函數的優點主要體現在如下三點。

1)單側抑制。觀察圖12-4可見,當輸入小於0時,神經元處於抑制狀態。反之,當輸入大於0,神經元處於激活狀態。

2)相對寬闊的興奮邊界。觀察圖12-3和圖12-4可見,Sigmoid的激活態(即f(x)的取值)集中在中間的狹小空間,而ReLU這不同,只要輸入大於0,神經元一直都處於激活狀態。

3)稀疏激活性。相比於Sigmoid之類的激活函數,稀疏性是ReLU的優勢所在[4]Sigmoid把抑制狀態的神經元設置一個非常小的值,但即使這個值再小,後續的計算還少不了它們的參與,計算負擔很大。但考察圖12-4可知,ReLU直接把抑制態的神經元“簡單粗暴”地設置爲0,這樣一來,就使得這些神經元不再參與後續的計算,從而造成網絡的稀疏性,如圖12-5所示。

920c739f81f619d532db6776fbb7289f56c95890

12-5  ReLU激活函數產生稀疏連接關係

這個細小的變化,讓ReLU在實際應用中大放異彩,除了減少了計算量,還減少了參數的相互依存關係(網絡瘦身了不少),使其收斂速度遠遠快於其他激活函數,最後還在一定程度上緩解了過擬合問題的發生(對Dropout機制比較熟悉的讀者可能會發現,圖12-5Dropout的迭代過程何其神似!)。ReLU的卓越表現,讓深度學習的三位大咖Yann LeCunYoshua BengioGeoffery Hinton2015年表示,ReLU是深度學習領域最受歡迎的激活函數。

前面的描述可能還過於抽象,下面我們再用一個更爲生動的案例來理解ReLU的操作,圖12-6演示了ReLU“修正”前後的特徵圖譜。

5ea58de0b74115f7533689c01eb8d75a971b6d7d

12-6  ReLU“修正”前後的特徵圖譜

說到ReLU激活函數有如此神奇作用,其實還有一個原因,那就是這樣的模型正好“暗合”生物神經網絡工作機理。2003年紐約大學教授Peter Lennie的研究發現[5],大腦同時被激活的神經元只有1~4%,即神經元同時只對輸入信號的少部分選擇性響應,大量信號被刻意地屏蔽了,這進一步表明神經元工作的稀疏性。其實,這是容易理解的,因爲生物運算也是需要成本的。進化論告訴我們,作爲人體最爲耗能的器官,大腦盡要可能節能,才能在惡劣的環境中“適者生存”。

當然,LeRU的這種簡單直接的處理方式,也帶來一些副作用。最突出的問題就是,會導致網絡在訓練後期表現得非常脆弱,以至於這時的ReLU也被戲稱爲“死掉的ReLUdying ReLU)”。目前,也有一些對研究工作對ReLU實施改進,分別提出了一系列諸如leaky-ReLUrandom ReLUPReLU[6]等優化方案,有興趣的讀者可自行前往查閱相關文獻。

前面說完了激活層,下面我們再聊聊池化層。

12.4 詳解池化層

池化層亦稱子採樣層,它也是卷積神經網絡的另外一個“神來之筆”。通常來說,當卷積層提取目標的某個特徵之後,我們都要在兩個相鄰的卷積層之間安排一個池化層。

池化層函數實際上是一個統計函數。以如圖12-7所示的二維數據爲例,如果輸入數據的維度大小爲W×H,給定一個池化過濾器,其大小爲w×h。池化函數考察的是在輸入數據中,大小爲w×h的子區域之內,所有元素具有的某一種特性。常見的統計特性包括最大值、均值、累加和及L2範數等。池化層函數力圖用統計特性反應出來的1個值,來代替原來w×h的整個子區域。

c77299ce46fbcfa930549ce4de9a1477b7fd8557

12-7 池化操作:將池化濾波器內的所有元素用某個統計量來代替

因此,可以這麼說,池化層設計的目的主要有兩個。最直接的目的,就是降低了下一層待處理的數據量。比如說,當卷積層的輸出大小是32×32時,如果池化層過濾器的大小爲2×2時,那麼經過池化層處理後,輸出數據的大小爲16×16,也就是說現有的數據量一下子減少到池化前的1/4。當池化層最直接的目的達到了,那麼它的間接目的也達到了:減少了參數數量,從而可以預防網絡過擬合。

下面我們舉例說明常用的池化策略最大化和平均化是如何工作的。我們以一維向量數據[1, 2, 3, 2]爲例,來說明兩種不同的池化策略在正向傳播和方向傳播中的差異[7]

1)最大池化函數(max pooling

前向傳播操作:取濾波器最大值作爲輸出結果,因此有forward(1, 2, 3, 2) = 3.

反向傳播操作:濾波器的最大值不變,其餘元素置0。因此有backward(3) = [0, 0, 3, 0]

2)平均池化函數(average pooling

前向傳播操作:取濾波器範圍所有元素的平均值作爲數據結果,因此有forward(1, 2, 3, 2) = 2.

後向傳播操作:濾波器中所有元素的值,都取平均值,因此有backward(2) = [2, 2, 2, 2]

有了上面的解釋,我們很容易得出圖12-7中所示的池化策略前向傳播結果,如圖12-8所示。

08210bb388f27d72fff82a1f543679d8eb25ae7c

12-8 兩種不同的池化策略結果比對圖

閱讀到此,讀者可能會有個疑問?對於處理圖片而言,如果池化層的過濾器2×2,就相當於將上一層4個像素合併到一個1像素。如果過濾器的大小是6×6,那就相當於將上一層36個像素合併到一個1像素,這也豈不是讓圖像更加模糊了。的確是這樣,通過池化操作後,原始圖像就好像被打上了一層馬賽克,如圖12-9所示。對池化如何影響可視化圖像的理論分析,感興趣的讀者可參閱LeCun團隊的論文[8]

5d4e01fc38ccdc9afffaae29b567b1eeac1a97e2

12-9  池化前後的特徵圖譜變化(繪圖參考了Facebook團隊的資料

12-9給出了池化之後的“馬賽克”類的圖片,很顯然,人類是不喜歡這樣模糊圖片的。但請注意,計算機的“視界”和人類完全不同,池化後的圖片,絲毫不會影響它們對圖片的特徵提取。

這麼說是有理論支撐的。這個理論就是局部線性變換的不變性(invariant)。它說的是,如果輸入數據的局部進行了線性變換操作(如平移或旋轉等),那麼經過池化操作後,輸出的結果並不會發生變化。局部平移“不變性”特別有用,尤其是我們關心某個特徵是否出現,而不關心它出現的位置時。例如,在模式識別場景中,當我們檢測人臉時,我們只關心圖像中是否具備人臉的特徵,而並不關心人臉是在圖像的左上角和右下角。

因爲池化綜合了(過濾核範圍內的)全部鄰居的反饋,即通過k個像素的統計特性而不是單個像素來提取特徵,自然這種方法能夠大大提高神經網絡的性能[9]

12.5 勿忘全連接層

前面我們講解了卷積層、激活層和池化層。但別忘了,在卷積神經網絡的最後,還有一個至關重要的“全連接層(Fully Connected Layer,簡稱FC)”。“全連接”意味着,前層網絡中的所有神經元都與下一層的所有神經元連接。全連接層設計目的在於,它將前面各個層學習到的“分佈式特徵表示”,映射到樣本標記空間,然後利用損失函數來調控學習過程,最後給出對象的分類預測。

實際上,全連接層是就是傳統的多層感知器(類似於我們在第八章學過的BP網絡,不熟悉的讀者可以前往查閱)。不同於BP全連接網絡的是,卷積神經網絡在輸出層使用的激活函數不同,比如說它可能會使用Softmax函數。

這裏,我們簡單介紹一下這個Softmax函數。在數學上,Softmax函數又稱歸一化指數函數,它是邏輯函數的一種推廣,其公式如(12-2)所示。

1a43cbf62ea565dbcac409fc16fc97538cb4da7c                                                                        12-2

我們常用SVM(支持向量機)來做分類器,SVM在分類的最後,會給一系列的標籤如“貓”“狗”“船”等打一個具體分值,如[4, 1, -2],而Softmax函數有所不同,它把這些分值實施規則化(regularization),也就是說,將這些實分值轉換爲一系列的概率值(信任度),如[0.95, 0.04, 0.0],如圖12-10所示。由此可見,其實SVMSoftmax是高度相互兼容的,不過是表現形式不同而已。

8d018fd077098a57b2590036e937eb9f8c79bdee

12-10  Softmax輸出層示意圖(繪圖參考了臺灣大學李宏毅博士的工作

雖然全連接層處於卷積神經網絡最末的位置,看起來貌不驚人似的,但由於全連接層的參數冗餘,導致該層的參數個數佔據整個網絡參數的絕大部分。這樣一來,稍有不慎,全連接層就容易陷入過擬合的窘境,導致網絡的泛化能力難盡人意。

12.7 小結與思考

到此爲止,我們介紹完畢了卷積神經網絡的所有核心層。各個層各司其職,概括起來,卷積層從數據中提取有用的特徵;激活層爲網絡中引入非線性,增強網絡表徵能力;池化層通過採樣減少特徵維度,並保持這些特徵具有某種程度上的尺度變化不變性。在全連接層實施對象的分類預測。

通過上面的學習,請你思考如下問題。

1)由於全連接層因爲參數個數太多,容易出現過擬合的現象,你知道Hinton教授的團隊採取的是什麼措施來弱化過擬合的嗎?(提示:Dropout

2)全連接層的性能不甚如人意,很多研究人員做了改進。比如,現任360公司首席科學家顏水成博士團隊曾發表了論文“網中網(Network In NetworkNIN[10]”。文中提出了用全局均值池化策略(Global Average PoolingGAP),取代全連接層,你知道它的工作原理是什麼嗎?

此外,向推薦讀者學習李飛飛(Feifei Li)教授團隊在斯坦福大學開設的公開課:面向可視化識別的卷積神經網絡(CS231n: Convolutional Neural Networks for Visual Recognition),課程極其精彩。毫不誇張地說,比Ian Goodfellow等人所著的《深度學習》可讀性要高很多[9]

寫下你的感悟,祝你每天都有收穫。

參考文獻

[1] 周志華.機器學習.清華大學出版社.2016.1

[2] Hornik K, Stinchcombe M, White H. Multilayer feedforward networks are universal approximators[J]. Neural networks, 1989, 2(5): 359-366.

[3] Nair V, Hinton G E. Rectified linear units improve restricted boltzmann machines[C]// International Conference on International Conference on Machine Learning. Omnipress, 2010:807-814.

[4] Glorot X, Bordes A, Bengio Y. Deep Sparse Rectifier Neural Networks[C]// International Conference on Artificial Intelligence and Statistics. 2011.

[5] Lennie P. The Cost of Cortical Computation[J]. Current Biology Cb, 2003, 13(6):493-7.

[6] He K, Zhang X, Ren S, et al. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification[C]// IEEE International Conference on Computer Vision. IEEE, 2015:1026-1034.

[7] 黃安埠. 深入淺出深度學習.中國工信出版社.2017.6

[8] Boureau Y L, Ponce J, Lecun Y. A Theoretical Analysis of Feature Pooling in Visual Recognition[C]// International Conference on Machine Learning. DBLP, 2010:111-118.

[9] Ian Goodfellow, Yoshua Bengio, Aaron Courville. 深度學習.人民郵電出版社。 2017.8

[10] Lin M, Chen Q, Yan S. Network In Network[J]. Computer Science, 2013.


文章作者:張玉宏,著有《品味大數據》一書。

本文節選自《深度學習之美》一書,電子工業出版社2018年7月出版。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章