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

「微信公衆號」

1. 權重衰減(weight decay)

L2正則化的目的就是爲了讓權重衰減到更小的值,在必定程度上減小模型過擬合的問題,因此權重衰減也叫L2正則化。

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

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

其中C0表明原始的代價函數,後面那一項就是L2正則化項,它是這樣來的:全部參數w的平方的和,除以訓練集的樣本大小n。λ就是正則項係數,權衡正則項與C0項的比重。另外還有一個係數1/2,1/2 1/211常常會看到,主要是爲了後面求導的結果方便,後面那一項求導會產生一個2,與1/2相乘恰好湊整爲1。係數λ就是權重衰減係數

1.2 爲何能夠對權重進行衰減

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

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

在不使用L2正則化時,求導結果中w前係數爲1,如今w前面係數爲1-ηλ/n,由於η、λ、n都是正的,因此1-ηλ/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)從數學方面的解釋:過擬合的時候,擬合函數的係數每每很是大,爲何?以下圖所示,過擬合,就是擬合函數須要顧忌每個點,最終造成的擬合函數波動很大。在某些很小的區間裏,函數值的變化很劇烈。這就意味着函數在某些小區間裏的導數值(絕對值)很是大,因爲自變量值可大可小,因此只有係數足夠大,才能保證導數值很大。而正則化是經過約束參數的範數使其不要太大,因此能夠在必定程度上減小過擬合狀況。

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)