1. 程式人生 > >權重衰減(weight decay)與學習率衰減(learning rate decay)

權重衰減(weight decay)與學習率衰減(learning rate decay)

導數 自變量 網絡 增加 梯度 mic out epo poc

文章來自Microstrong的知乎專欄,僅做搬運。原文鏈接

1. 權重衰減(weight decay)

L2正則化的目的就是為了讓權重衰減到更小的值,在一定程度上減少模型過擬合的問題,所以權重衰減也叫L2正則化。

1.1 L2正則化與權重衰減系數

L2正則化就是在代價函數後面再加上一個正則化項:

技術分享圖片

其中 技術分享圖片 代表原始的代價函數,後面那一項就是L2正則化項,它是這樣來的:所有參數w的平方的和,除以訓練集的樣本大小n。λ就是正則項系數,權衡正則項與 技術分享圖片 項的比重。另外還有一個系數 技術分享圖片技術分享圖片 經常會看到,主要是為了後面求導的結果方便,後面那一項求導會產生一個2,與 技術分享圖片 相乘剛好湊整為1。系數 技術分享圖片 就是權重衰減系數。

1.2 為什麽可以對權重進行衰減

我們對加入L2正則化後的代價函數進行推導,先求導:

技術分享圖片

可以發現L2正則化項對b的更新沒有影響,但是對於w的更新有影響:

技術分享圖片

在不使用L2正則化時,求導結果中w前系數為1,現在w前面系數為技術分享圖片 ,因為η、λ、n都是正的,所以 技術分享圖片 小於1,它的效果是減小w,這也就是權重衰減(weight decay)的由來。當然考慮到後面的導數項,w最終的值可能增大也可能減小。

另外,需要提一下,對於基於mini-batch的隨機梯度下降,w和b更新的公式跟上面給出的有點不同:

技術分享圖片技術分享圖片

對比上面w的更新公式,可以發現後面那一項變了,變成所有導數加和,乘以η再除以m,m是一個mini-batch中樣本的個數。

1.3 權重衰減(L2正則化)的作用

作用:權重衰減(L2正則化)可以避免模型過擬合問題。

思考:L2正則化項有讓w變小的效果,但是為什麽w變小可以防止過擬合呢?

原理:(1)從模型的復雜度上解釋:更小的權值w,從某種意義上說,表示網絡的復雜度更低,對數據的擬合更好(這個法則也叫做奧卡姆剃刀),而在實際應用中,也驗證了這一點,L2正則化的效果往往好於未經正則化的效果。(2)從數學方面的解釋:過擬合的時候,擬合函數的系數往往非常大,為什麽?如下圖所示,過擬合,就是擬合函數需要顧忌每一個點,最終形成的擬合函數波動很大。在某些很小的區間裏,函數值的變化很劇烈。這就意味著函數在某些小區間裏的導數值(絕對值)非常大,由於自變量值可大可小,所以只有系數足夠大,才能保證導數值很大。而正則化是通過約束參數的範數使其不要太大,所以可以在一定程度上減少過擬合情況。

技術分享圖片

內容來自:正則化方法:L1和L2 regularization、數據集擴增、dropout

2. 學習率衰減(learning rate decay)

在訓練模型的時候,通常會遇到這種情況:我們平衡模型的訓練速度和損失(loss)後選擇了相對合適的學習率(learning rate),但是訓練集的損失下降到一定的程度後就不在下降了,比如training loss一直在0.7和0.9之間來回震蕩,不能進一步下降。如下圖所示:

技術分享圖片

遇到這種情況通常可以通過適當降低學習率(learning rate)來實現。但是,降低學習率又會延長訓練所需的時間。

學習率衰減(learning rate decay)就是一種可以平衡這兩者之間矛盾的解決方案。學習率衰減的基本思想是:學習率隨著訓練的進行逐漸衰減。

學習率衰減基本有兩種實現方法:

  1. 線性衰減。例如:每過5個epochs學習率減半。
  2. 指數衰減。例如:隨著叠代輪數的增加學習率自動發生衰減,每過5個epochs將學習率乘以0.9998。具體算法如下:

decayed_learning_rate=learning_rate*decay_rate^(global_step/decay_steps)

其中decayed_learning_rate為每一輪優化時使用的學習率,learning_rate為事先設定的初始學習率,decay_rate為衰減系數,decay_steps為衰減速度。

Reference:

(1)學習率衰減部分內容和圖片來自: 學習率衰減(learning rate decay)

(2)神經網絡學習率(learning rate)的衰減

權重衰減(weight decay)與學習率衰減(learning rate decay)