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


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

1. 權重衰減(weight decay)

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

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

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

C=C_{0}+\frac{\lambda}{2n}\sum_{w}^{}{w^2}

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

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

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

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

在不使用L2正則化時,求導結果中w前系數為1,現在w前面系數為1-\frac{\eta\lambda}{n} ,因為η、λ、n都是正的,所以 1-\frac{\eta\lambda}{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)的衰減

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM