L1,L2正則化

正則化引入的思想其實和奧卡姆剃刀原理很相像,奧卡姆剃刀原理:切勿浪費較多東西,去做,用較少的東西,同樣可以做好的事情。

正則化的目的:避免出現過擬合(over-fitting)
經驗風險最小化 + 正則化項 = 結構風險最小化
經驗風險最小化(ERM),是爲了讓擬合的誤差足夠小,即:對訓練數據的預測誤差很小。
但是,我們學習得到的模型,當然是希望對未知數據有很好的預測能力(泛化能力),這樣才更有意義。
當擬合的誤差足夠小的時候,可能是模型參數較多,模型比較複雜,此時模型的泛化能力一般。於是,我們增加一個正則化項,它是一個正的常數乘以模型複雜度的函數,aJ(f),a>=0 用於調整ERM與模型複雜度的關係。
結構風險最小化(SRM),相當於是要求擬合的誤差足夠小,同時模型不要太複雜(正則化項的極小化),這樣得到的模型具有較強的泛化能力。

L1正則化表示各個參數絕對值之和。它會讓各個參數的值趨向於0,從而達到減少參數個數的目的。

L2正則化標識各個參數的平方的和的開方值。它不會讓參數的值趨向於0,但會改變參數的權重,減小參數的大小,從而簡化模型。



****************關於參數的大小稀疏問題********************

1)實現參數的稀疏有什麼好處嗎?

一個好處是可以簡化模型,避免過擬合。因爲一個模型中真正重要的參數可能並不多,如果考慮所有的參數起作用,那麼可以對訓練數據可以預測的很好,但是對測試數據就只能呵呵了。另一個好處是參數變少可以使整個模型獲得更好的可解釋性。

2)參數值越小代表模型越簡單嗎?

是的。爲什麼參數越小,說明模型越簡單呢,這是因爲越複雜的模型,越是會嘗試對所有的樣本進行擬合,甚至包括一些異常樣本點,這就容易造成在較小的區間裏預測值產生較大的波動,這種較大的波動也反映了在這個區間裏的導數很大,而只有較大的參數值才能產生較大的導數。因此複雜的模型,其參數值會比較大。


*********************L1範數正則化*************************
在上面提到過了的正則化是爲了防止過擬合,同時奧卡姆剃刀原理和上面關於兩個參數的問題同樣給了我們啓示,是否能在保證模型誤差很小的情況下又能解決模型的過擬合問題呢?L1範數正則化的思想就是給我們的模型誤差函數加上一個關於參數的懲罰項,我們現在的目標就是找到參數,使得這個和最小,這樣很完美的平衡了兩者的關係,模型擬合得好,又不會發生過擬合,推廣能力也強,這不正是我們想要的模型嗎?


L1 regularization

在原始的代價函數後面加上一個L1正則化項。即全部權重w的絕對值的和。乘以λ/n(這裏不像L2正則化項那樣,須要再乘以1/2。詳細原因上面已經說過。)

相同先計算導數:

上式中sgn(w)表示w的符號。那麼權重w的更新規則爲:

比原始的更新規則多出了η * λ * sgn(w)/n這一項。

當w爲正時,更新後的w變小。

當w爲負時。更新後的w變大——因此它的效果就是讓w往0靠。使網絡中的權重儘可能爲0,也就相當於減小了網絡複雜度,防止過擬合。

另外,上面沒有提到一個問題,當w爲0時怎麼辦?當w等於0時,|W|是不可導的。所以我們僅僅能依照原始的未經正則化的方法去更新w,這就相當於去掉η*λ*sgn(w)/n這一項,所以我們能夠規定sgn(0)=0,這樣就把w=0的情況也統一進來了。

(在編程的時候,令sgn(0)=0,sgn(w>0)=1,sgn(w<0)=-1)


***************************L2正則化**************************************

L2 regularization(權重衰減)

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

C0代表原始的代價函數,後面那一項就是L2正則化項。它是這樣來的:全部參數w的平方的和,除以訓練集的樣本大小n。

λ就是正則項係數,權衡正則項與C0項的比重。另外另一個係數1/2,1/2經常會看到,主要是爲了後面求導的結果方便,後面那一項求導會產生一個2。與1/2相乘剛好湊整。

L2正則化項是怎麼避免overfitting的呢?我們推導一下看看,先求導:

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

在不使用L2正則化時。求導結果中w前係數爲1,如今w前面係數爲 1−ηλ/n ,由於η、λ、n都是正的。所以 1−ηλ/n小於1,它的效果是減小w。這也就是權重衰減(weight decay)的由來。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章