機器學習筆記:正則化項
在機器學習演算法中如果只使用經驗風險最小化去優化損失函式則很可能造成過擬合的問題,通常我們要在損失函式中加入一些描述模型複雜程度的正則化項,使得模型在擁有較好的預測能力的同時不會因為模型過於複雜而產生過擬合現象,即結構風險最小化
正則化項一般是模型複雜程度的單調遞增函式,因此可以使用模型引數向量的範數來計算
一部分內容在數學上的定義更為廣泛,大家可以看看相關資料。這裡只涉及了一些和機器學習有關的定義,可能不是很嚴謹
L-p範數
L-p範數定義如下
在機器學習中常見的有L0、L1和L2範數
L0範數
L0範數為引數向量中非零值的個數
其中 在 bool
的值為 True
時值為1,為 False
時值為0
因為L0範數沒有很好的數學表達形式,所以很少直接優化L0範數
L1範數
L1範數為引數向量中元素絕對值之和
L2範數
L2範數為引數向量的歐氏距離
通常直接使用L2範數的平方值
不同正則化項的區別
最常用的應該是使用L1範數的L1正則化和使用L2範數的L2正則化,二者都能對模型起到一定的防止過擬合的效果,但是在對引數的更新上,因為二者的梯度計算方式不同,使得二者的性質也有很大的不同
L1正則化
帶L1正則化項的損失函式
其中 為正則化引數,對其求導得到
因此引數更新方程為
這使得在梯度下降時,引數 w
的更新直接向著 w
反方向移動,在 w
大於零時減小,在 w
小於零時增大,最後的結果就是有更多的引數會等於零
因此L1正則化項能使得引數等於零,實現引數的稀疏化,也可以視為一種特徵的選擇,從而達到防止過擬合的作用
L1正則化因為存在絕對值函式,所以並不能保證所有點都可導,因此也有很多額外的理論研究
L2正則化
帶L2正則化的損失函式通常使用L2範數的平方
其中分母中的2是為了求導運算的方便而加入的,L2範數有較好的數學性質,也易於求導,對其求導得到
因此引數更新方程為
與L1正則化最大的不同是引數 w
在更新時是按比例 變化的,所以部分引數會減小,而不是變為0
很容易理解引數變為0可以防止過擬合,那麼減小引數是如何減小過擬合的呢?
直觀的講,過擬合就是對區域性的錯誤樣本進行擬合,這使得在錯誤樣本附近函式會劇烈的變化
如果所有引數都很小,那麼在輸入變化很小的情況下,輸出就很難有這麼大的變化,在一定程度上就能環節過擬合現象