機器學習------令人頭疼的正則化項

監督機器學習問題無非就是在規則化參數的同時最小化誤差。最小化誤差是為了讓模型擬合訓練數據,而規則化參數是防止模型過分擬合訓練數據,但訓練誤差小並不是最終目標,最終目標是希望模型的測試誤差小,也就是能準確的預測新的樣本。所以需要保證模型「簡單」的基礎上最小化訓練誤差,這樣得到的參數才具有好的泛化性能(也就是測試誤差也小),而模型「簡單」就是通過規則函數來實現的。

一般來說,監督學習可以看做最小化下面的目標函數:

(正則化代價函數)=(經驗代價函數)+(正則化參數)X(正則化項)

第一項是衡量模型預測與實際的誤差,因為要擬合訓練樣本,所以要求這一項最小,也就是要求模型盡量的擬合訓練數據。但不僅要保證訓練誤差最小,更希望模型測試誤差小,所以需要加上第二項去約束模型盡量的簡單。

機器學習的大部分帶參模型都和這個型很相似。其實大部分就是變換這兩項。對於第一項Loss函數,如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是Exp-Loss,那就是 Boosting了;如果是log-Loss,那就是Logistic Regression了,等等。不同的loss函數,具有不同的擬合特性,這個也得就具體問題具體分析的。

L0範數

L0範數是指向量中非0的元素的個數。如果用L0範數來規則化一個參數矩陣W的話,就是希望W的大部分元素都是0,換句話說,讓參數W是稀疏的。

但是一般稀疏都會想到L1範數,所以我來講講L1範數。

L1範數

L1範數是指向量中各個元素絕對值之和,也叫「稀疏規則運算元」(Lasso Regularization)。

L1範數會使權值稀疏?

因為它是L0範數的最優凸近似。實際上,任何的規則化運算元,如果它在W_{i}=0 的地方不可微,並且可以分解為一個「求和」的形式,那麼這個規則化運算元就可以實現稀疏。這說是這麼說,W的L1範數是絕對值,|w|在w=0處是不可微,但這還是不夠直觀,所以需要和L2範數進行對比分析。

既然L0可以實現稀疏,為什麼不用L0,而要用L1呢?

原因:一是因為L0範數很難優化求解(NP難問題),二是L1範數是L0範數的最優凸近似,而且它比L0範數要容易優化求解。

L2範數

L2範數:left| left| W right| right|_{2} ,在回歸裡面,它的回歸叫「嶺回歸」(Ridge Regression),也叫它「權值衰減weight decay」。這用的很多,因為它的強大功效是改善機器學習裡面一個非常重要的問題:過擬合。至於過擬合是什麼,自己查查(O(∩_∩)O~~,很簡單的知識點)。通俗的講就是應試能力很強,實際應用能力很差。例如下圖所示(來自Ng的course):

為什麼L2範數可以防止過擬合?

L2範數是指向量各元素的平方和然後求平方根。為了讓L2範數的規則項left| left| W right| right|_{2} 最小,可以使得W的每個元素都很小,都接近於0,但與L1範數不同,它不會讓它等於0,而是接近於0,這裡是有很大的區別。

而越小的參數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。為什麼越小的參數說明模型越簡單?原因:限制參數很小,實際上就限制了多項式某些分量的影響很小,這樣就相當於減少參數個數。

總結:通過L2範數,可以實現了對模型空間的限制,從而在一定程度上避免了過擬合。


推薦閱讀:

27個機器學習圖表,幫你作弊一般飛速成長!
有關anonymized data的競賽
Numpy複習總結(一)
《StackGAN: Text to Photo-realistic Image Synthesis with Stacked GAN》閱讀筆記
關於Kaggle的一些數據分析

TAG:机器学习 | 算法 |