1. 程式人生 > >神經網路九:Regularization(正則化)與Dropout

神經網路九:Regularization(正則化)與Dropout

本文主要講解神經網路中的正則化(Regularization)和Dropout,都是用了減小過擬合。正則化在機器學習領域中很重要。主要針對模型過擬合問題而提出來的。本文是觀看麥子學院的視訊整理而來。下面開始介紹。

1 正則化

機器學學習中的正則化相關的內容可以參見李航的書:統計學習方法。參閱者可以先了解有關的內容。正則化是用來降低overfitting(過擬合)的,減少過擬合的的其他方法有:增加訓練集數量,等等。對於資料集梳理有限的情況下,防止過擬合的另外一種方式就是降低模型的複雜度,怎麼降低?一種方式就是在cost函式中加入正則化項,正則化項可以理解為複雜度,cost越小越好,但cost加上正則項之後,為了使cost小,就不能讓正則項變大,也就是不能讓模型更復雜,這樣就降低了模型複雜度,也就降低了過擬合。這就是正則化。正則化也有很多種,常見為兩種L2和L1。

1.1  L2 Regularization

下面先定義Regularization cross-entropy 函式:
相比於cross-entropy函式,這裡多了最後一項,也就是正則化項。該項就是神經網路中的權重之和,其中λ>0為Regularization引數,n為訓練集包含的例項個數。L2正則化項這裡是指最後一項的w的平方項。 而對於二次cost,也可以加上正則化項: Regularization quadratic cost:
概括上面兩種函式為:
可以看出來,Regularization的cost偏向於讓神經網路學習比較小的權重w,否則第一項的C0明顯減小。 λ:調整兩項的相對重要程度,較小的λ偏向於讓第一項C0最小化,較大的λ傾向於最小化增大的項:權重值和。

對上面公式求導得:
相比於沒有正則項時,對w的偏導多了一項λw/n,而對偏向b不變。 對於隨機梯度演算法來說,權重w和偏向b的更新法則變為:
對於隨機梯度下降演算法變為:
其中m為mini_batch_size的大小。下面簡單分析Regularization能降低overfitting的原因: 在神經網路中,正則化網路更傾向於小的權重,在權重小的情況下,資料x隨機的變化不會對神經網路的模型造成太大的影響,所以可能性更小的受到資料區域性噪音的影響。而未加入正則化的神經網路,權重大,容易通過較大的模型改變來適應資料,更容易學習到區域性的噪音。

1.2 L1 Regularization

先介紹L1 Regularization cost函式為:

對C關於w求偏導得:
sgn(w)表示為符號函式,w為正,結果為1,w為負結果為-1。權重的更新法則為:
與L2 Regularization對比: 兩者都是減小權重,但方式不同: L1減少一個常量(η,λ,n根據輸入都是固定的,sgn(w)為1或-1,故為常量),而L2減少的是權重的一個固定的比例;如果權重本身很大的話,L2減少的比L1減少的多,若權重小,則L1減少的更多。多以L1傾向於集中在少部分重要的連線上(w小)。這裡要注意的是:sgn(w)在w=0時不可導,故要事先令sgn(w)在w=0時的導數為0。

2 Dropout

Dropout的目的也是用來減少overfitting(過擬合)。而和L1,L2Regularization不同的是,Dropout不是針對cost函式,而是改變神經網路本身的結構。下面開始簡單的假設Dropout。 假設有一個神經網路:
按照之前的方法,根據輸入X,先正向更新神經網路,得到輸出值,然後反向根據backpropagation演算法來更新權重和偏向。而Dropout不同的是, 1)在開始,隨機刪除掉隱藏層一半的神經元,如圖,虛線部分為開始時隨機刪除的神經元:
2)然後,在刪除後的剩下一半的神經元上正向和反向更新權重和偏向; 3)再恢復之前刪除的神經元,再重新隨機刪除一半的神經元,進行正向和反向更新w和b; 4)重複上述過程。 最後,學習出來的神經網路中的每個神經元都是在只有一半的神經元的基礎上學習的,因為更新次數減半,那麼學習的權重會偏大,所以當所有神經元被回覆後(上述步驟2)),把得到的隱藏層的權重減半。 對於Dropout為什麼可以減少overfitting的原因如下: 一般情況下,對於同一組訓練資料,利用不同的神經網路訓練之後,求其輸出的平均值可以減少overfitting。Dropout就是利用這個原理,每次丟掉一半的一隱藏層神經元,相當於在不同的神經網路上進行訓練,這樣就減少了神經元之間的依賴性,即每個神經元不能依賴於某幾個其他的神經元(指層與層之間相連線的神經元),使神經網路更加能學習到與其他神經元之間的更加健壯robust的特徵。在Dropout的作者文章中,測試手寫數字的準確率達到了98.7%!所以Dropout不僅減少overfitting,還能提高準確率。