百面機器學習(9)——前向神經網絡

目錄

多層感知機與布爾函數

深度神經網絡中的激活函數

多層感知機的反向傳播算法

神經網絡訓練技巧

深度卷積神經網絡

深度殘差網絡


多層感知機與布爾函數

1. 多層感知機表示異或邏輯時最少需要幾個隱含層(僅考慮二元輸入)?(2)

 

 

2. 如果只使用一個隱層,需要多少隱節點能夠實現包含n元輸入的任意布爾函數?(3)

 

 

深度神經網絡中的激活函數

線性模型是機器學習領域中最基本也是最重要的工具,以邏輯迴歸和線性迴歸爲例,無論通過閉解形式還是使用凸優化,它們都能高效且可靠地擬合數據。然而真實情況中,我們往往會遇到線性不可分問題(如 XOR 異或函數),需要非線性變換對數據的分佈進行重新映射。 對於深度神經網絡,我們在每一層線性變換後疊加一個非線性激活函數,以避免多層網絡等效於單層線性函數,從而獲得更強大的學習與擬合能力。

1. 寫出常用的激活函數及其導數(1)

Sigmoid激活函數形式如下,對應的導函數爲:f`(z)=f(z)(1-f(z))。

Tanh激活函數的形式如下,對應的導函數爲f`(z)=1-(f(z))2。

ReLU的激活函數形式爲: f(z)=max(0, z),對應的導函數爲:

 

2. 爲什麼Sigmoid和Tanh激活函數會導致梯度消失的現象?(2)

Sigmoid 激活函數的曲線如下圖 9.7 所示。 它將輸入z映射到區間(0,1),當 z 很大時,f(z)趨近於 1;當 z 很小時, f(z)趨近於0。 其導數f'(z) = f(z)(1- f(z))在 z 很大或很小時都會趨近於 0 ,造成梯度消失的現象。

Tanh 激活函數的曲線如下圖9.8 所示。 當z很大時,f(z)趨近於 1,當 z 很小時, f(z) 趨近於-1 。 其導數f'(z) =1-(f(z))2在 z很大或很小時都會趨近於0,同樣會出現 “梯度消失” 。 實際上,Tanh 激活函數相當於 Sigmoid 的平移。

Tanh(x)=2sigmoid(2x)-1

 

3. ReLU系列的激活函數相對於Sigmoid和Tanh激活函數的優點是什麼?它們有什麼侷限性以及如何改進?(3)

優點

1)從計算的角度上, Sigmoid 和 Tanh 激活函數均需要計算指數,複雜度高,而 ReLU 只需要一個閾值即可得到激活值。

2)ReLU 的非飽和性可以有效地解決梯度消失的問題,提供相對寬的激活邊界。

3)ReLU 的單側仰制提供了網絡的稀疏表達能力。

侷限性

ReLU的侷限性在於其訓練過程中會導致神經元死亡的問題。 這是由於函數f(z) = max(0, z)導致負梯度在經過該 ReLU 單元時被置爲 0, 且在之後也不被任何數據激活,即流經該神經元的梯度永遠爲0,不對任何數據產生響應。 在實際訓練中,如果學習率 ( Learning Rate )設置較大,會導致超過一定比例的神經元不可逆死亡,進而參數梯度無法更新, 整個訓練過程失敗。

爲解決這一問題,人們設計了ReLU的變種Leaky ReLUctant(LReLU),其形式表示爲:

 

ReLU 和 LReLU 的函數曲線對比如圖 9.9 所示。 LReLU與ReLU的區別在於,當 z<0時其值不爲 0,而是一個斜率爲 α 的線性函數, 一般α爲一個很小的正常數,這樣既實現了單側抑制,又保留了部分負梯度信息以致不完全丟失。 但另一方面, α 值的選擇增加了問題難度,需要較強的人工先驗或多次重複訓練以確定合適的參數值。

基於此,參數化的 PReLU (Parametric ReLU )應運而生。它與LReLU 的主要區別是將負軸部分斜率 α 作爲網絡中一個可學習的參數,進行反向傳播訓練,與其它含參數網絡層聯合優化。而另一個 LReLU的變種增加了“隨機化”機制,具體地,在訓練過程中,斜率 α 作爲一個滿足某種分佈的隨機採樣,測試時再固定下來。 Random ReLU ( RReLU )在一定程度上能起到正則化的作用。關於 ReLU 系列激活函數,更多詳細內容及實驗性能對比可以參考相關論文。

 

多層感知機的反向傳播算法

1. 寫出多層感知機的平方誤差和交叉熵損失函數(2)

給定包含 m樣本的集合{(x(1),y(1)),… , (x(m),y(m))},其整體代價函數爲:

其中第一項爲平方誤差項,第二項L2正則化項,在功能上可稱作權重衰減項,目的是減小權重的幅度,防止過擬合。該項之前的係數λ爲權重衰減參數,用於控制損失函數中兩項的相對權重。

以二分類場景爲例,交叉熵損失函數定義爲:

真中正則項與上式是相同的,第一項衡量了預測o(i) 與真實類別y(i) 之間的交叉熵,當 y(i)與o(i) 相等時,熵最大,也就是損失函數達到最小。在多分類的場景中,可以類似地寫出相應的損失函數

 

 

2. 根據問題1中定義的損失函數,推導各層參數更新的梯度計算公式。(4)

 

 

3. 平方誤差損失函數和交叉熵損失函數分別適合什麼場景?(3)

一般來說,平方損失函數更適合輸出爲連續,並且最後一層不含 Sigmoid或Softmax激活函數的神經網絡;交叉捕損失則更適合二分類或多分類的場景。

 

 

神經網絡訓練技巧

1. 神經網絡訓練時是否可以將全部參數初始化爲0?(1)

考慮全連接的深度神經網絡,同一層中的任意神經元都是同構的,它們擁有相同的輸入和輸出,如果再將參數全部初始化爲同樣的值,那麼無論前向傳播還是反向傳播的取值都是完全相同的。學習過程將永遠無法打破這種對稱性,最終同一網絡層中的各個參數仍然是相同的。因此,我們需要隨機地初始化神經網絡參數的值,以打破這種對稱性。

 

2. 爲什麼Dropout可以抑制過擬合?它的工作原理和實現?(3)

Dropout 是指在深度網絡的訓練中,以一定的概率隨機地“臨時丟棄”一部分神經元節點。 具體來講, Dropout 作用於每份小批量訓練數據,由於其隨機丟棄部分神經元的機制,相當於每次迭代都在訓練不同結構的神經網絡。 類比於 Bagging 方法,Dropout 可被認爲是一種實用的大規模深度神經網絡的模型集成算法。 這是由於傳統意義上的Bagging 涉及多個模型的同時訓練與測試評估,當網絡與參數規模龐大時, 這種集成方式需要消耗大量的運算時間與空間。 Dropout 在小批量級別上的操作,提供了一種輕量級的 Bagging 集成近似,能夠實現指數級數量神經網絡的訓練與評測。

Dropout 的具體實現中,要求某個神經元節點激活值以一定的慨率p 被 “丟棄“,即該神經元暫時停止工作,如圖9.12所示。因此,對於包含 N個神經元節點的網絡,在 Dropout 的作用下可看作爲 2N 個模型的集成。這2N個模型可認爲是原始網絡的子網絡,它們共享部分權值,並且具有相同的網絡層數,而模型整體的參數數目不變,這就大大簡化了運算。 對於任意神經元,每次訓練中都與一組隨機挑選的不同的神經元集合共同進行優化,這個過程會減弱全體神經元之間的聯合適應性,減少過擬合的風險,增強泛化能力。

 

 

3. 批量歸一化的基本動機與原理是什麼?在卷積神經網絡中如何使用?(3)

神經網絡訓練過程的本質是學習數據分佈,如果訓練數據與測試數據的分佈不同將大大降低網絡的泛化能力,因此我們需要在訓練開始前對所有輸入數據進行歸一化處理。

然而隨着網絡訓練的進行,每個隱層的參數變化使得後一層的輸入發生變化,從而每-批訓練數據的分佈也隨之改變,致使網絡在每次迭代中都需要擬合不同的數據分佈,增大訓練的複雜度以及過擬合的風險。

批量歸一化可以看作在每一層輸入和上一層輸出之間加入了一個新的計算層,對數據的分佈進行額外的約束,從而增強模型的泛化能力。

 

深度卷積神經網絡

1. 卷積操作的本質特性包括稀疏交互和參數共享,具體解釋這兩種特性及其作用。(2)

稀疏交互

在傳統神經網絡中,網絡層之間輸入與輸出的連接關係可以由一個權值參數矩陣來表示, 其中每個單獨的參數值都表示了前後層某兩個神經元節點之間的交互。對於全連接網絡,任意一對輸入與輸出神經元之間都產生交互,形成稠密的連接結構。如圖 9.15 所示,神經元 Si與輸入的所有神經元主xj 均有連接。

而在卷積神經網絡中,卷積核尺度遠小於輸入的維度,這樣每個輸出神經元僅與前一層特定局部區域內的神經元存在連接權重(即產生交互),我們稱這種特性爲稀疏交互,如圖 9.16 所示。 可以看到與稠密的連接結構不同,神經元Si僅與前一層中的xi-1 、xi和 xi+1 相連。具體來講,假設網絡中相鄰兩層分別具有m個輸入和 n個輸出,全連接網絡中的權值參數矩陣將包含 mxn個參數。對於稀疏交互的卷積網絡,如果限定每個輸出與前一層神經元的連接數爲 k,那麼該層的參數總量爲kxn。在實際應用中,一般 k值遠小於 m 就可以取得較爲可觀的效果;而此時優化過程的時間複雜度將會減小几個數量級,過擬合的情況也得到了較好的改善。

稀疏交互的物理意義是,通常圖像、文本、語音等現實世界中的數據都具有局部的特徵結構,我們可以先學習局部的特徵,再將局部的特徵組合起來形成更復雜和抽象的特徵。

參數共享

參數共享是指在同一個模型的不同模塊中使用相同的參數,它是卷積運算的固有屬性。全連接網絡中, 計算每層的輸出時,權值參數矩陣中的每個元素只作用於某個輸入元素一次; 而在卷積神經網絡中,卷積核中的每一個元素將作用於每一次局部輸入的特定位置上。根據參數共享的思想,我們只需要學習一組參數集合,而不需要針對每個位置的每個參數都進行優化,從而大大降低了模型的存儲需求。

參數共享的物理意義是使得卷積層具有平移等變性。假如圖像中有一隻貓,那麼無論它出現在圖像中的任何位置,我們都應該將它識別爲貓,也就是說神經網絡的輸出對於平移變換來說應當是等變的。

 

2. 常用的池化操作有哪些?池化的作用是什麼?(3)

常用的池化操作主要針對非重疊區域,包括均值池化( mean pooling )、最大池化( max pooling)等。其中均值池化通過對鄰域內特徵數值求平均來實現,能夠抑制由於鄰域大小受限造成估計值方差增大的現象,特點是對背景的保留效果更好。最大池化則通過取鄰域內特徵的最大值來實現,能夠抑制網絡參數誤差造成估計均值偏移的現象,特點是更好地提取紋理信息。池化操作的本質是降採樣。

此外,特殊的池化方式還包括對相鄰重疊區域的池化以及空間金字塔池化。相鄰重疊區域的池化,顧名思義,是採用比窗口寬度更小的步長,使得窗口在每次滑動時存在重疊的區域。 空間金字塔池化主要考慮了多尺度信息的描述,例如同時計算 1 ×1 、 2×2、 4×4 的矩陣的池化並將結果拼接在一起作爲下一網絡層的輸入。

池化操作除了能顯著降低參數量外,還能夠保持對平移、伸縮、旋轉操作的不變性。平移不變性是指輸出結果對輸入的小量平移基本保持不變。

例如,輸入爲( 1,5,3 ),最大池化將會取5,如果將輸入右移一位得到( 0,1,5 ),輸出的結果仍將爲 5。對伸縮的不變性(一般稱爲尺度不變性)可以這樣理解,如果原先神經元在最大池化操作之後輸出 5, 那麼在經過伸縮(尺度變換)之後,最大池化操作在該神經元上很大概率的輸出仍然是 5。因爲神經元感受的是鄰域輸入的最大值,而並非某一個確定的值。 旋轉不變性可以參照圖 9. 19 。圖中的神經網絡由 3 個學得的過濾器和一個最大池化層組成。這 3 個過濾器分別學習到不同旋轉方向的“5” 。當輸入中出現“5”時,無論進行何種方向的旋轉,都會有一個對應的過濾器與之匹配並在對應的神經元中引起大的激活。最終,無論哪個神經元獲得了激活,在經過最大池化操作之後輸出都會具有大的激活。

 

3. 卷積神經網絡如何用於文本分類任務?(3)

卷積神經網絡的核心思想是捕捉局部特徵,對於文本來說,局部特徵就是由若干單詞組成的滑動窗口,類似於N-gram。卷積神經網絡的優勢在於能夠自動地對 N-gram 特徵進行組合和篩選,獲得不同抽象層次的語義信息。 由於在每次卷積中採用了共享權重的機制,因此它的訓練速度相對較快,在實際的文本分類任務中取得了非常不錯的效果。

 

 

深度殘差網絡

深度神經網絡的層數決定了模型的容量, 然而隨着神經網絡層數的加深,優化函數越來越陷入局部最優解。同時,隨着網絡層數的增加,梯度消失的問題更加嚴重,這是因爲梯度在反向傳播時會逐漸衰減。特別是利用 Sigmoid激活函數時,使得遠離輸出層(即接近輸入層)的網絡層不能夠得到高效的學習,影響了模型泛化的效果。爲了改善這一問題,深度學習領域的研究員們在過去十幾年間嘗試了許多方法,包括改進訓練算法、利用正則化、設計特殊的網絡結構等。其中,深度殘差網絡( Deep Residual Network, ResNet )是一種非常高效的網絡結構改進,極大地提高了可以高效訓練的深度神經網絡層數。

1. ResNet的提出背景核心理論是什麼?(3)

ResNet 的提出背景是解決或緩解深層的神經網絡訓練中的梯度消失問題。

 

後記

從開始接觸《百面機器學習》,當把全部章節看完,覺得這本書寫的特別深入淺出,把很多機器學習的基礎知識給串聯起來了,雖然用電子書閱讀完畢,仍然忍不住入手紙質版書本,好書就需要多看!

百面系列鏈接:

百面機器學習(2)——模型評估

百面機器學習(3)——經典算法

百面機器學習(4)——降維

百面機器學習(5)——非監督學習

百面機器學習(6)——概率圖模型

百面機器學習(7)——優化算法

百面機器學習(8)——採樣

百面機器學習(9)——前向神經網絡

百面機器學習(10)——循環神經網絡

百面機器學習(11)——強化學習

百面機器學習(12)——集成學習

百面機器學習(13)——生成式對抗網絡

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