深度神經網路之正則化
來自專欄謂之小一
1 人贊了文章
由於較多公式,所以我將部分內容轉為圖片進行上傳,請見諒。清晰版請訪問https://weizhixiaoyi.com查看,你也可以關注我公眾號謂之小一,後台直接向我要pdf版本,如有相關問題可公眾號後台詢問,隨時回答。
1.正則化
之前介紹的文章之中,我們已多次接觸到正則化方法,但沒有詳細的解釋為什麼要正則化,什麼是正則化,以及L1正則化和L2正則化的區別。本次文章之中,我們將詳解機器學習中正則化的概念和深度神經網路中的正則化方法。
1.1 為什麼要正則化?
講到為什麼需要正則化,就需要了解什麼是過擬合問題。以下面圖片為例,我們能夠看到有兩個類別,其中以X代表男生,O代表女生。

我們想要通過學習來得到分類曲線,其中分類曲線能夠有效區分男生和女生,現在來分析下上面的三種分類結果。
- 欠擬合:圖1分類明顯欠缺,有些男生被分為女生,有些女生被分為男生。
- 正擬合:圖2雖然有兩個男生被分類為女生,但能夠理解,畢竟我們人類自己也有分類錯誤的情況,比如通過化妝,女裝等方法。
- 過擬合:圖3雖然能夠全部分類正確,但結果全部正確就一定好嗎?不一定,我們能夠看到分類曲線明顯過於複雜,模型學習的時候學習了過多的參數項,但其中某些參數項是無用的特徵,比如眼睛大小。當我們進行識別測試集數據時,就需要提供更多的特徵,如果測試集包含海量的數據,模型的時間複雜度可想而知。
1.2 什麼是正則化?
既然我們已經知道什麼是過擬合,那麼怎麼解決過擬合問題呢?上面有介紹到,模型出現過擬合,是在模型特徵上過於複雜。而特徵又包含在我們的目標函數f(x)之中,那麼只能從目標函數f(x)中尋找解決問題的方法。假設目標函數f(x)和損失函數J0為

如果從X入手解決問題,但訓練過程中我們不知道下一個樣本X是什麼,會怎樣的影響目標函數,所以此路不通。那麼W如何呢?我們知道W係數是訓練過程中通過學習歷史數據得到的,和歷史數據有關,所以應該可以。現在再回到我們原來的問題,希望減少N的數目,而讓N最小化,其實就是讓X向量或W向量中項的個數最小化,既然X不行,那麼我們可以嘗試讓W向量中項的個數最小化。如何求解才能讓W向量中項的個數最小,我們先簡單介紹下0、1、2範數的概念。


說完L0範數和L1範數,就不得不提L2範數。L2範數是指先求向量各元素的平方和,然後再進行求平方根,也就是通常意義上的模。同樣,對於正則化問題,我們的目標是讓W向量中的每個元素都很小,也就是讓L2範數最小。L1範數和L2範數的不同點在於,L1範數會讓其中某些元素等於0,而L2範數只是讓其中元素接近0,這裡有很大不同,我們在後面會進行詳細講解。最後損失函數後面添加的額外項||W||2,也就是我們稱作的L2正則化。

1.3 L1正則化和L2正則化
L1正則化可以產生稀疏值矩陣,即產生一個稀疏模型,可以用於特徵選擇和解決過擬合。那什麼是稀疏值矩陣呢?稀疏矩陣是矩陣中很多元素為0,只有少數元素是非零值的矩陣,稀疏矩陣的好處就是能夠幫助模型找到重要特徵,而去掉無用特徵或影響甚小的特徵。
比如在分類或預測時,很多特徵難以選擇,如果代入稀疏矩陣,能夠篩選出少數對目標函數有貢獻的特徵,去掉絕大部分貢獻很小或沒有貢獻的特徵(因為稀疏矩陣很多值是0或是很小值)。因此我們只需要關注係數是非零值的特徵,從而達到特徵選擇和解決過擬合的問題。那麼為什麼L1正則化可以產生稀疏模型呢?


從上圖可以看出,當J0等值線與L1圖形首次相交的點就是最優解,也就是上圖中的(0,w)。而對於L1函數有許多突出的點(二維情況下是4個),J0函數與這些頂點接觸的概率遠大於與L1其他部分接觸的概率,恰好在這些頂點上會有很多權值等於0,這就是為什麼L1正則化可以產生稀疏模型,進而可以用於特徵選擇。最後針對L1正則化再介紹下係數α,其目的是控制L1圖形的大小。當α越小,L1的圖形越大,α越大,L1圖形也就越小。L1圖形可以小到在原點附近,這也就是為什麼w可以取到很小的原因。
另外L2正則化也可以很好的解決過擬合問題。從上面得知,擬合過程中通常都傾向於讓權值儘可能小,最後構造出一個讓所有參數都比較小的模型。因為一般認為參數值小的模型比較簡單,能夠適應於不同的數據集,比如對於目標方程,若參數很大,那麼數據只要偏倚一點點,那麼對結果的影響就很大。如果參數很小的話,即使數據變化範圍比較大,對結果影響也不是很大。相對來說,參數較小的話,對模型的抗擾動能力強。那麼為什麼L2正則化可以獲得很小的參數值呢?我們假設帶有L2正則化的損失函數方程如下所示,並對損失函數進行求導。

當利用梯度下降演算法進行更新w時,w變化如下所示,其中α是學習速率。

可以看到在梯度下降演算法過程中,w是不斷進行減小的,也就是權重衰減,這樣也就能得到一個讓所有參數都比較小的模型,也就能解決過擬合問題。最後再解釋下為什麼L2正則化不具有稀疏性的原因,如下圖所示,二維平面下L2正則化的函數圖形是圓,與L1圖形相比,沒有了菱角。因此J0與L2接觸時,使w1或w2等於0的機率就小了很多,所以L2正則化不具有稀疏性。
2.DNN之L1和L2正則化
和普通機器學習演算法一樣,DNN也會遇到過擬合的問題,因此需要考慮泛化。結合我們上面講到的L1和L2正則化,這裡對深度神經網路中的正則化做個總結,其中L1正則化和L2正則化原理類似,這裡主要介紹L2正則化方法。通過深度神經網路之前向傳播演算法的學習,我們知道前向傳播過程中損失函數為

加入L2正則化後,損失函數如下所示。其中λ是正則化參數,實際使用時需要我們進行調參。

如果使用上式的損失函數,進行反向傳播演算法時,流程和沒有正則化時的反向傳播演算法相同。區別在於進行梯度下降時,W更新公式會進行改變。在深度神經網路之反向傳播演算法中,W的梯度下降更新公式為

加入L2正則化後,W迭代更新公式如下所示

類似的正則化方法,同樣可以用於其他損失函數,在這裡不再介紹。
3.DNN之Dropout正則化
Dropout指的是在用前向傳播演算法和反向傳播演算法訓練模型時,隨機的從全連接DNN網路中去掉一部分隱含層的神經元。比如我們完整的DNN模型如下所示
然後隨機的去掉部分隱含層的神經元,利用數據進行訓練模型,更新所有的W,b。
總結下Dropout方法就是,每輪梯度下降迭代時,將訓練數據分成若干批,然後分批進行迭代。每批數據迭代時,將原始的DNN模型隨機去掉部分隱含層的神經元,然後用殘缺的DNN模型來迭代更新W,b。每批數據迭代完成之後,將殘缺的DNN模型恢復成原始的DNN模型,接著去訓練模型,更新W,b。當然,運用Dropout正則化方法,需要有較大數據量支持,否則可能會出現欠擬合的情況。
4.DNN之集成學習正則化
在機器學習之隨機森林和機器學習之梯度提升決策樹之中,我們已經學習集成學習中的Bagging和Boosting方法,而DNN可以用Bagging方法來正則化。隨機森林中,Bagging方法通過隨機採樣構建若干個相互獨立的弱決策樹學習器,最後通過採用加權平均法或者投票法決定集成的輸出。
DNN中我們採用的是若干個DNN的網路,首先對原始的訓練樣本進行有放回的隨機採樣,構建N組m個樣本的數據集,然後分別用這N組數據集去訓練我們的DNN。通過利用前向傳播演算法和反向傳播演算法得到N個DNN模型的W,b參數組合,然後對N個DNN模型的輸出用加權平均法或者投票法決定最後的輸出。最後,因為DNN模型比較複雜,通過Bagging後模型參數會增加N倍,從而導致訓練模型需要花費較長的時間,因此一般N的取值不能太大,5-10個即可。
5.DNN之增強數據集正則化
增強模型泛化能力最好的方法,是有更多更好的訓練數據,但實際情況之中,對於某些數據,我們很難能夠得到。那麼,我們不如去構造一些數據,來讓模型得到更強的泛化能力。對於傳統的機器學習演算法,比如上面提到的機器學習之隨機森林和機器學習之梯度提升決策樹演算法,想要構造數據的話,能夠很方便的構造輸入數據,但是很難構造出對應的輸出數據。
但對於深度神經網路來說,比如圖像識別領域,對於原始數據集的圖像,我們可以偏倚或者旋轉圖像之後,得到新的數據集。顯然原始數據和新構造的數據輸入是不同的圖像,但輸出是相同的,因此通過訓練後,模型的泛化便能夠增強。對應的例子,比如利用DNN識別手寫數字,數字5旋轉15度之後,識別之後還是5。
參考
深度神經網路(DNN)的正則化-劉建平Pinard
機器學習中正則化項L1和L2的直觀理解-阿拉丁吃米粉機器學習中常常提到的正則化到底是什麼意思?-陶輕鬆
6.推廣
更多內容請關注公眾號謂之小一,若有疑問可在公眾號後台提問,隨時回答,歡迎關注,內容轉載請註明出處。
http://weixin.qq.com/r/Ty_4oDPE2W6mrXfD93pd (二維碼自動識別)
推薦閱讀:
※支持向量機SVM總結之問題描述
※深度學習實踐 & 自然場景下的文本檢測與識別(2)
※EdX-Columbia機器學習課第10講筆記:核方法與高斯過程
※文本主題發現(一)-- 數據預處理
※python3機器學習經典實例-第八章解剖時間序列和時序數據29
TAG:深度學習DeepLearning | 神經網路 | 機器學習 |




