文章來自Microstrong的知乎專欄,僅作搬運。原文連接html
L2正則化的目的就是爲了讓權重衰減到更小的值,在必定程度上減小模型過擬合的問題,因此權重衰減也叫L2正則化。算法
1.1 L2正則化與權重衰減係數網絡
L2正則化就是在代價函數後面再加上一個正則化項:函數
其中 表明原始的代價函數,後面那一項就是L2正則化項,它是這樣來的:全部參數w的平方的和,除以訓練集的樣本大小n。λ就是正則項係數,權衡正則項與 項的比重。另外還有一個係數 , 常常會看到,主要是爲了後面求導的結果方便,後面那一項求導會產生一個2,與 相乘恰好湊整爲1。係數 就是權重衰減係數。學習
1.2 爲何能夠對權重進行衰減優化
咱們對加入L2正則化後的代價函數進行推導,先求導:.net
能夠發現L2正則化項對b的更新沒有影響,可是對於w的更新有影響:3d
在不使用L2正則化時,求導結果中w前係數爲1,如今w前面係數爲 ,由於η、λ、n都是正的,因此 小於1,它的效果是減少w,這也就是權重衰減(weight decay)的由來。固然考慮到後面的導數項,w最終的值可能增大也可能減少。orm
另外,須要提一下,對於基於mini-batch的隨機梯度降低,w和b更新的公式跟上面給出的有點不一樣:htm
對比上面w的更新公式,能夠發現後面那一項變了,變成全部導數加和,乘以η再除以m,m是一個mini-batch中樣本的個數。
1.3 權重衰減(L2正則化)的做用
做用:權重衰減(L2正則化)能夠避免模型過擬合問題。
思考:L2正則化項有讓w變小的效果,可是爲何w變小能夠防止過擬合呢?
原理:(1)從模型的複雜度上解釋:更小的權值w,從某種意義上說,表示網絡的複雜度更低,對數據的擬合更好(這個法則也叫作奧卡姆剃刀),而在實際應用中,也驗證了這一點,L2正則化的效果每每好於未經正則化的效果。(2)從數學方面的解釋:過擬合的時候,擬合函數的係數每每很是大,爲何?以下圖所示,過擬合,就是擬合函數須要顧忌每個點,最終造成的擬合函數波動很大。在某些很小的區間裏,函數值的變化很劇烈。這就意味着函數在某些小區間裏的導數值(絕對值)很是大,因爲自變量值可大可小,因此只有係數足夠大,才能保證導數值很大。而正則化是經過約束參數的範數使其不要太大,因此能夠在必定程度上減小過擬合狀況。
內容來自:正則化方法:L1和L2 regularization、數據集擴增、dropout
在訓練模型的時候,一般會遇到這種狀況:咱們平衡模型的訓練速度和損失(loss)後選擇了相對合適的學習率(learning rate),可是訓練集的損失降低到必定的程度後就不在降低了,好比training loss一直在0.7和0.9之間來回震盪,不能進一步降低。以下圖所示:
遇到這種狀況一般能夠經過適當下降學習率(learning rate)來實現。可是,下降學習率又會延長訓練所需的時間。
學習率衰減(learning rate decay)就是一種能夠平衡這二者之間矛盾的解決方案。學習率衰減的基本思想是:學習率隨着訓練的進行逐漸衰減。
學習率衰減基本有兩種實現方法:
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)