1. 程式人生 > 其它 >關於L1正則化和L2正則化的一些理解

關於L1正則化和L2正則化的一些理解

首先,L1和L2正則化的目的都是減少過擬合,而正則化實際上是通過實現權重衰減而達成減少過擬合的目的的。

我們知道L1和L2正則化可以寫成這種形式:

我們在應用正則化的過程中實際上是在梯度下降法優化函式的過程中實現的。我們知道,損失函式可以定義為J(W,b),其中W是權重引數,b是偏置,一般不作考慮。每次梯度下降後都會對W進行更新,W=W-η·∇WJ(W),實際就是對損失函式求梯度,用梯度乘學習率然後對原W進行更新。

而我們應用正則化後 可以將上式改寫成,推導過程:

這裡將L2正則化寫成限制形式,對w進行約束,w的L2範數要小於C,展開後即為向量的平方再開方小於C,也就是向量的平方小於C的平方,再換回原式,就相當於用WT

W代替了W的L2正規化,將λ替換為a/2方便求導。

而此時對權重進行更新可以得到結果,多了一個對正則化項求的梯度,也就是的導數×學習率,合併項後得到一個新的權重更新方程,與未正則化的方程W=W-η·∇WJ(W)對比發現其W的係數每次更新都會減去一個學習率×a的係數,這就是權重衰減的原理。

接下來結合理論解釋為什麼權重衰減可以降低過擬合,用《統計學習方法》給出的案例,我們嘗試使用一個方程去擬合一些點。

當我們設定方程的次數為0次時,是一條直線,擬合效果很差,

當我們設定方程的次數是1次時,有了係數的影響,擬合效果稍微好了一些,但是還是欠擬合狀態。

當我們設定方程的次數是3次時,可以看到,擬合效果已經非常好了,

如果我們還想通過提高方程次數來增強擬合能力的話,雖然在訓練集上是可行的,但是會影響其泛化能力,進入過擬合狀態,在測試集的效果會大大降低。

比如我們將次數設定到9次,,可以看到如果我們理想曲線就是3次的曲線的話,那麼填充3次曲線的點驗證9次擬合會發現誤差很大。

這就是正則化的用途,正則化通過限定權重來限制高次項的過擬合,假定我們在9次給出的表示方程為:f(x)=ax+bx2+cx3+dx4+ex5+fx6+gx7+hx8+ix9,可以觀察到,主要影響我們擬合曲線的是越來越大的高次項,而應用正則化後他會使得高次項前面的權重係數逐漸衰減(1-ηa)w,這個衰減的值會逐步穩定在一個合理的範圍,使得曲線降低高次項過擬合的影響。

當然,在實際的學習過程中,我們往往不會出現太過極端的過擬合情況,通常訓練到符合某個誤差範圍或者說是一個最值點就會結束訓練,權重衰減也不會一直減少下去。