1. 程式人生 > >機器學習中的正則化(Regularization)

機器學習中的正則化(Regularization)

參考知乎回答:https://www.zhihu.com/question/20924039 

以及部落格  https://blog.csdn.net/jinping_shi/article/details/52433975

定義&用途

經常能在LOSS函式的後面看到額外加了一項,這一項就是用來正則化的,為了限制損失函式中一些引數

正則化是用來幹什麼的呢?--是用來防止過擬合的

這個圖表示的就是過擬合的狀態,這樣對訓練資料的擬合度是很高的,但是換成測試資料的時候可能就準確率不夠了

防止過擬合的一種方法就是減小選擇的特徵數量,也就是讓這些特徵的係數向量中一部分變為0,

n個特徵前面的向量:W = {w0,w1,w2.....wn}

這就符合0範數的定義了

0範數:向量中非0元素的個數

1範數:絕對值之和   -- L1 norm L1正則化

2範數:向量的模     -- L2正則化

 

所以後面新增的項為 r(d) = “讓W向量中項的個數最小化” = \left| W \right| _{0}

在訓練中,要讓loss變小,也要讓W向量中項的個數變小,所以兩者求和最小就好了

一般都會在正則化項之前新增一個係數

由於0範數很難求,實踐中是NP完全問題,所以1範數應用的更廣泛

而2範數相當於求模運算,也就是個向量的平方求和在開算術平方根,讓L2範數的正則項最小,可以使得向量中各項都很小,但不會為0

 

 

解釋

帶L1正則項的損失函式;也就是在後面絕對值函式的約束下,求解J的最小解

L1正則化可以產生一個稀疏權重矩陣,可以用作特徵選擇,一定程度上可以防止過擬合;

L2正則化也可以防止過擬合

只考慮二維(w1,w2)的情況,圖片來自部落格:https://blog.csdn.net/jinping_shi/article/details/52433975

圖中的等值線為J0等值線,黑色直線為後面新增項的的圖形,在圖中,J0與新增項的圖形首次相交的點即為最優解。圖中可以看出,此時的交點為菱形上面那個頂點,也就是第一個w為0;

擴充套件到多維的情況,後面新增項的圖形依然是有很多突出的“角”(絕對值函式),而與這些角相交的概率更大,而在這些角上會有很多權值為0,這就是為什麼L1正規化會產生稀疏的權值矩陣以及適合進行特徵選擇

 

類似的,L2正規化的圖形也可以畫出來,但是圖形不再是充滿了稜角,而是如下所示:

所以L2正規化不會出現很多0的情況

在正則項前面的係數選擇上,通常越大的係數,會讓w衰減越快