1. 程式人生 > >基於神經網路的目標檢測論文之神經網路基礎:神經網路的優化方法

基於神經網路的目標檢測論文之神經網路基礎:神經網路的優化方法

注:本文源自本人的碩士畢業論文,未經許可,嚴禁轉載!
原文請參考知網:知網地址
本章節有部分公式無法顯示,詳見原版論文

2.4 神經網路的優化方法

2.4.1 過擬合與規範化

物理學家費米曾說過,如果有四個引數,我可以模擬一頭大象,而如果有五個引數,我還能讓他卷鼻子。這裡其實是說擁有大量的自由引數的模型能夠描述特別神奇的現象。但是這樣的模型能夠很好的擬合已有的資料,但並不表示這是一個好的模型。因為這可能只是因為模型中有足夠的自由度使得它可以描述幾乎所有給定大小的資料集,但並沒有真正洞察現象的本質。機器學習的主要挑戰是我們的演算法必須能夠在先前未觀測的新輸入上表現良好,而不只是在訓練集上表現良好。在先前未觀測到的輸入上表現良好的能力被稱為泛化(generalization)。

當我們使用機器學習演算法時,我們不會提前固定引數,然後取樣得到兩個資料集。我們取樣得到訓練集,然後挑選引數去降低訓練集誤差,然後取樣得到測試集。在這個過程中,測試誤差期望會大於或等於訓練誤差期望。以下兩點是用來評判一個機器學習演算法好壞的因素:

1、對於原始輸入資料訓練誤差較小。

2、訓練模型產生的誤差和測試模型產生的誤差,這兩者的差別要小。

這兩個因素對應機器學習的兩個主要挑戰,即欠擬合和過擬合。欠擬合是指模型在訓練集上學習時與標籤資料產生的誤差較大。過擬合的意思是指訓練模型產生的誤差和測試模型產生的誤差,這兩者的差別同樣較大。

增加訓練樣本的數量是一種減輕過度擬合的⽅法。模型的容量代表了模型本身擬合各種函式的能力。一種可行的方式就是降低網路的規模。然而大的網路擁有比小網路更強的擬合能力,我們不能背離這個原則。

幸運的是,還有其他的技術能夠緩解過度擬合,即使只有⼀個固定的網路和固定的訓練集合,這種技術就是規範化。本節將會詳細介紹L2規範化。L2作為一種最為常用的規範化方法,思路是在代價函式上增加額外的規範化項。公式(2-12)是規範化的代價函式:
(2-12)
其中第一項就是常規的交叉熵的表示式。第二項就是規範項,形式是權重的平方和。規範項中 是引數。下面討論 的選擇策略。

公式(2-13)和(2-14)是一個規範化的確減輕過度擬合的例子。首先需要弄清楚如何將隨機梯度下降演算法應用在規範化網路上。特別地,我們需要知道如何計算對網路中所有權重和偏置的偏導數,對方稱(3-1)進⾏求偏導數得:
(2-13)
(2-14)
梯度可以通過反向傳播計算,正如上一章中描述的那樣。所以其實計算規範化的代價函式的梯度是很簡單的:僅僅需要反向傳播,然後加上 得到所有權重的偏導數。在加入了規範化項之後,權重的學習規則發生了變化:
(2-15)

由公式(2-15)得出,正則化因子 更新了權重w。加入正則化的更新使得權重變小。這樣會導致權重會不斷下降到0。但是實際不是這樣的,因為如果在原始代價函式中造成下降的話其他的項可能會讓權重增加。這就是梯度下降工作的原理。為什麼規範化能夠減小過擬合?通常的解釋是,小的權重在某種程度上意味著更低的複雜性。小權重使得網路的行為更加健壯,不會因為隨機改變一個輸入而隨之鉅變。這只是一個實驗事實。另一種解釋是提高機器學習模型泛化的現代思想遵循一個簡約原則,現在廣泛被稱為“奧卡姆剃刀”。該原則指出,在同樣能夠解釋已知觀測現象的假設中,我們應該挑選最簡單的那個。

2.4.2 Dropout

Dropout (Srivastava et al., 2014) 提供了正則化的另一種方法,計算方便但功能強大。在一種近似的理論觀點下,Dropout可以被認為是整合大量深層神經網路的實用方法。演算法涉及訓練多個模型,並在每個測試樣本上評估多個模型。假如每個模型都很大時,這種操作很難行得通,顯然訓練和評估大網路代價太大。通常我們只能整合五至十個神經網路,超過這個數量就會迅速變得難以處理。Dropout機制模擬了一個簡單的近似,使得訓練和評估大量神經網路變得可能。

具體而言,Dropout訓練的整合包括所有從基礎網路除去非輸出單元后形成的子網路,如圖3-3所示。最先進的神經網路基於一系列仿射變換和非線性變換,只需將一些單元的輸出乘以零就能有效地刪除一個單元。這個過程需要對模型(如徑向基函式網路,單元的狀態和參考值之間存在一定區別)進行一些修改。為了簡單起見,我們在這裡提出乘零的簡單Dropout演算法,但是它被簡單修改後,可以與從網路中移除單元的其他操作結合使用。我們定義k個不同的模型,從訓練集有放回取樣構造k個不同的資料集,然後在訓練集i 上訓練模型i。Dropout的目標是在指數級數量的神經網路上近似這個過程。具體來說,在訓練中使用Dropout時,我們會使用基於小批量產生較小步長的學習演算法,如隨機梯度下降等。我們每次在小批量中載入一個樣本,然後隨機抽樣應用於網路中所有輸入和隱藏單元的不同二值掩碼。對於每個單元,掩碼是獨立取樣的。掩碼值為1 的取樣概率(導致包含一個單元)是訓練開始前一個固定的超引數。它不是模型當前引數值或輸入樣本的函式。通常在每一個小批量訓練的神經網路中,一個輸入單元被包括的概率為0.8,一個隱藏單元被包括的概率為0.5。然後,我們執行和之前一樣的前向傳播、反向傳播以及學習更新。

我們來描述一下棄權基本的工作機制。特別地,假設我們有一個訓練資料x和對應的目標輸出y。通常我們會通過在網路中前向傳播x ,然後進行反向傳播來確定對梯度的貢獻。使用Dropout技術,這個過程就改了。Dropout機制會臨時遮蔽掉每層中的一半數量的單元,並且保持其他單元不變。在此之後我們會得到最終如圖2-14右邊的網路。注意那些被棄權的神經元,即那些臨時被刪除的神經元,在圖中被標為虛線。

我們前向傳播輸入x,通過修改後的網路,然後反向傳播結果,同樣通過這個修改後的網路。在一個小批量資料的若干樣本上進行這些步驟後,我們對有關的權重和偏置進行更新。然後重複這個過程,通過不斷地重複,我們的網路會學到一個權重和偏置的集合。當然,這些權重和偏置也是在一半的隱藏神經元被棄權的情形下學到的。當我們實際執行整個網路時,是指兩倍的隱藏神經元將會被啟用。為了補償這個,我們將從隱藏神經元出去的權重減半。

這個棄權過程可能看起來奇怪,像是臨時安排的。為什麼我們會指望這樣的方法能夠進行規範化呢?想象一下標準的,沒有棄權的訓練方式。特別地,想象我們訓練不同的網路,都使用同一個訓練資料。網路可能不是從同一初始狀態開始的,最終的結果也會有一些差異。出現這種情況時,我們可以使用一些平均或者投票的方式來確定接受哪個輸出。例如,如果我們訓練了五個網路,其中三個把一個數字分類成“3”,那很可能它就是“3”。另外兩個可能就犯了錯誤。原因在於不同的模型因為各自的原因產生了過度擬合,將這些過擬合現象平均一下可能會幫助消除過度擬合問題。換句話說,如果將網路看做一個預測模型,棄權就可以在丟失資訊的情況下仍保持一定的泛化性。Dropout和規範化有不少相似之處,這兩種方法都是讓模型學習小權重。Dropout技術已經成功應用在提升神經網路效能上。對我們來說,特別感興趣的是他們應用棄權在大部分影象分類任務上,並使用了一個和我們之前介紹的那種普通的前向神經網路。的組合將其提高到98.7%。類似重要的結果在其他不同的任務上也取得了一定的成效,包括影象和語音識別、自然語言處理。棄權技術在訓練大規模深度網路時尤其有用,這樣的網路中過度擬合問題經常出現。
在這裡插入圖片描述
圖2-14 全連線(左)與dropout(右)模型示意圖

2.4.3 消失的梯度問題

一個深度網路可以使用隱藏層構建出多層網路。利用網路進行影象識別的研究,那麼第一層識別畫素點,第二層在畫素的基礎上增加線條,第三層將識別更加複雜的形狀。多層抽象可以解決複雜問題,深層網路有更好的擬合能力。通常使用反向傳播來訓練網路會產生一系列的問題,尤其是前後層學習速度不一致的情況多次出現。那麼我們就要深入理解是什麼原因使得深度網路訓練變得困難。實驗表明,網路中不同層的梯度變化差異很大。能夠清晰地觀察到,後面層的梯度變化較大,先前的層次卻在訓練時變化很小,甚至沒有變化。這種停滯並不是隨機出現的,每一次實驗都出現這種情況。根本原因是學習速度下降了。

我們繼續做實驗,構造一個包含兩個隱藏層的神經網路,觀察每個神經元在學習過程中改變的速度。網路隨機初始化,可以觀察到的現象是神經元學習的速度差異比較大,而且第二個隱藏層上的神經元基本都比第一個隱藏層上神經元的變化速度大。因此,後面層的神經元學習的更快。如果新增更多的隱藏層,結果還是一樣的。

觀察結果顯示:訓練過程中,中間層在反向傳播的時候梯度變小了。事實上這種現象並非偶然發生,稱為消失的梯度問題。

是什麼導致了消失的梯度問題?為了弄清楚這個問題,構建一個有簡單的網路,網路有三層,每層只有一個神經元。現在我們來研究一下第一個隱藏層神經元的梯度 ,下面給出具體的表示式:
(2-16)
假如對偏置 進行一個微調 ,這會導致網路中剩下的元素產生一系列的變化。最終會對代價函式產生 的變化,如下所示:
(2-17)

公式(2-16)中除了最後一項,其他是一系列形如 的乘積。S函式導數的影象是在 時達到最大值。標準化初始化網路中的權重保證所有的權重都會滿足 。於是發現了梯度消失的原因: <0.25,最終多個項的乘積後,結果會產生飛速下降。

不穩定的梯度問題本質在於前面層的梯度與後面的梯度直接相關。唯一的方法是讓所有的層都以大致相同的速度進行學習,即讓所有這些項的乘積都能達到一個平衡。例如上一節講的幾種常見網路都是用了ReLU啟用函式,該啟用函式能確保各層間大致相同的學習速度。

2.5 本章小結

本章主要介紹神經網路的由來,原理以及結構,並著重介紹了神經網路是如何工作的。然後介紹了在計算機視覺方面大放異彩的卷積神經網路演算法,詳細講述了其結構和原理。本章還詳細講述了一些經典的卷積網路結構,最後重點介紹了這些網路中用到的一些改進方法,以及這些改進能帶來的效益。