一、范數的概念
向量范數是定義了向量的類似於長度的性質,滿足正定,齊次,三角不等式的關系就稱作范數。
一般分為L0、L1、L2與L_infinity范數。
二、范數正則化背景
1. 監督機器學習問題無非就是“minimizeyour error while regularizing your parameters”,也就是在規則化參數的同時最小化誤差。最小化誤差是為了讓我們的模型擬合我們的訓練數據,而規則化參數是防止我們的模型過分擬合我們的訓練數據。
2. 因為參數太多,會導致我們的模型復雜度上升,容易過擬合,也就是我們的訓練誤差會很小。但訓練誤差小並不是我們的最終目標,我們的目標是希望模型的測試誤差小,也就是能准確的預測新的樣本。所以,我們需要保證模型“簡單”的基礎上最小化訓練誤差,這樣得到的參數才具有好的泛化性能(也就是測試誤差也小),而模型“簡單”就是通過規則函數來實現的。另外,規則項的使用還可以約束我們的模型的特性。這樣就可以將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。要知道,有時候人的先驗是非常重要的。前人的經驗會讓你少走很多彎路,這就是為什么我們平時學習最好找個大牛帶帶的原因。一句點撥可以為我們撥開眼前烏雲,還我們一片晴空萬里,醍醐灌頂。對機器學習也是一樣,如果被我們人稍微點撥一下,它肯定能更快的學習相應的任務。只是由於人和機器的交流目前還沒有那么直接的方法,目前這個媒介只能由規則項來擔當了。
3. 知識點2的主要內容就是闡述了正則化或者是規則項的作用:
- 約束參數,降低模型復雜度。
- 規則項的使用還可以約束我們的模型的特性。這樣就可以將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。
三、監督學習與正則化(規則化)
一般來說,監督學習可以看做最小化下面的目標函數:
L(yi,f(xi;w)) :衡量我們的模型(分類或者回歸)對第i個樣本的預測值f(xi;w)和真實的標簽yi之前的誤差。因為我們的模型是要擬合我們的訓練樣本的嘛,所以我們要求這一項最小,也就是要求我們的模型盡量的擬合我們的訓練數據。
:但正如上面說言,我們不僅要保證訓練誤差最小,我們更希望我們的模型測試誤差小,所以我們需要加上第二項,也就是對參數w的規則化函數Ω(w)去約束我們的模型盡量的簡單。
OK,到這里,如果你在機器學習浴血奮戰多年,你會發現,哎喲喲,機器學習的大部分帶參模型都和這個不但形似,而且神似。是的,其實大部分無非就是變換這兩項而已。
1. 第一項-Loss函數
- 如果是Square loss,那就是最小二乘了;
- 如果是Hinge Loss,那就是著名的SVM了;
- 如果是exp-Loss,那就是牛逼的 Boosting了;
- 如果是log-Loss,那就是Logistic Regression了;還有等等。不同的loss函數,具有不同的擬合特性,這個也得就具體問題具體分析的。
2. 第二項-規則化函數Ω(w)
規則化函數Ω(w)也有很多種選擇,一般是模型復雜度的單調遞增函數,模型越復雜,規則化值就越大。比如,規則化項可以是模型參數向量的范數。然而,不同的選擇對參數w的約束不同,取得的效果也不同,但我們在論文中常見的都聚集在:零范數、一范數、二范數、跡范數、Frobenius范數和核范數等等。這么多范數,到底它們表達啥意思?具有啥能力?什么時候才能用?什么時候需要用呢?今天就讓我們了解一下L0、L1、L2這3個最常見的范數以及他們的作用。
四、L0與L1范數
1. L0范數:
- L0范數:表示向量中非零元素的個數。如果我們使用L0來規則化參數向量w,就是希望w的元素大部分都為零。換句話說,就是讓參數W是稀疏的。
- L0范數的這個屬性,使其非常適用於機器學習中的稀疏編碼。在特征選擇中,通過最小化L0范數可以尋找最少最優的稀疏特征項。
2. L1范數(曼哈頓距離):
- L1范數:表示向量中各個元素絕對值之和,也被稱作“Lasso regularization”(稀疏規則算子)。
- 為什么L1范數可以使得使權值稀疏?不要急,詳情在后文分析。
3. 既然L0范數和L1范數都可以實現稀疏,為什么不用L0,而要用L1呢?
- 因為L0范數很難優化求解(NP難問題)
- L1范數是L0范數的最優凸近似,而且它比L0范數要容易優化求解。所以大家才把目光和萬千寵愛轉於L1范數。
OK,來個一句話總結:L1范數和L0范數可以實現稀疏,L1因具有比L0更好的優化求解特性而被廣泛應用。
4. 我們大概知道了L1可以實現稀疏,但我們會想呀,為什么要稀疏?讓我們的參數稀疏有什么好處呢?
(1)特征選擇(Feature Selection):
大家對稀疏規則化趨之若鶩的一個關鍵原因在於它能實現特征的自動選擇。一般來說,xi的大部分元素(也就是特征)都是和最終的輸出yi沒有關系或者不提供任何信息的,在最小化目標函數的時候考慮xi這些額外的特征,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的信息反而會被考慮,從而干擾了對正確yi的預測。稀疏規則化算子的引入就是為了完成特征自動選擇的光榮使命,它會學習地去掉這些沒有信息的特征,也就是把這些特征對應的權重置為0。
(2)可解釋性(Interpretability):
另一個青睞於稀疏的理由是,模型更容易解釋。例如患某種病的概率是y,然后我們收集到的數據x是1000維的,也就是我們需要尋找這1000種因素到底是怎么影響患上這種病的概率的。假設我們這個是個回歸模型:y=w1*x1+w2*x2+…+w1000*x1000+b(當然了,為了讓y限定在[0,1]的范圍,一般還得加個Logistic函數)。通過學習,如果最后學習到的w*就只有很少的非零元素,例如只有5個非零的wi,那么我們就有理由相信,這些對應的特征在患病分析上面提供的信息是巨大的,決策性的。也就是說,患不患這種病只和這5個因素有關,那醫生就好分析多了。但如果1000個wi都非0,醫生面對這1000種因素,累覺不愛。
五、L2范數
1. L2范數(歐式距離):指向量各元素的平方和然后求平方根。
它也不遜於L1范數,它有兩個美稱,在回歸里面,有人把有它的回歸叫“嶺回歸”(Ridge Regression),有人也叫它“權值衰減weight decay”。這用的很多吧,因為它的強大功效是改善機器學習里面一個非常重要的問題:過擬合。至於過擬合是什么,上面也解釋了,就是模型訓練時候的誤差很小,但在測試的時候誤差很大,也就是我們的模型復雜到可以擬合到我們的所有訓練樣本了,但在實際預測新的樣本的時候,糟糕的一塌糊塗。通俗的講就是應試能力很強,實際應用能力很差。擅長背誦知識,卻不懂得靈活利用知識。例如下圖所示(來自Ng的course):
上面的圖是線性回歸,下面的圖是Logistic回歸,也可以說是分類的情況。從左到右分別是欠擬合(underfitting,也稱High-bias)、合適的擬合和過擬合(overfitting,也稱High variance)三種情況。可以看到,如果模型復雜(可以擬合任意的復雜函數),它可以讓我們的模型擬合所有的數據點,也就是基本上沒有誤差。對於回歸來說,就是我們的函數曲線通過了所有的數據點,如上圖右。對分類來說,就是我們的函數曲線要把所有的數據點都分類正確,如下圖右。這兩種情況很明顯過擬合了。
2. 為什么L2范數可以防止過擬合?
- 版本一:我們讓L2范數的規則項||W||2最小,可以使得W的每個元素都很小,都接近於0,但與L1范數不同,它不會讓它等於0,而是接近於0,這里是有很大的區別的哦。而越小的參數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。限制了參數很小,實際上就限制了多項式某些分量的影響很小(看上面線性回歸的模型的那個擬合的圖),這樣就相當於減少參數個數
- 版本二:一文搞懂L2范數為什么能防止過擬合
3. L2范數的益處
(1)學習理論的角度:
從學習理論的角度來說,L2范數可以防止過擬合,提升模型的泛化能力。
(2)優化計算的角度:
從優化或者數值計算的角度來說,L2范數有助於處理 condition number不好的情況下矩陣求逆很困難的問題。
L2范數如何解救病態矩陣?如何加速病態矩陣的求解?L2范數之解救矩陣病態
4. 來個一句話總結:L2范數不但可以防止過擬合,提升模型的泛化能力,還可以讓我們的優化求解變得穩定和快速。
六、L1范數和L2范數的對比
使用機器學習方法解決實際問題時,我們通常要用L1或L2范數做正則化(regularization),從而限制權值大小,減少過擬合風險。特別是在使用梯度下降來做目標函數優化時,很常見的說法是, L1正則化產生稀疏的權值, L2正則化產生平滑的權值。
1. 為什么L1正則化產生稀疏的權值, L2正則化產生平滑的權值?
(1) 角度一:數學公式
這個角度從權值的更新公式來看權值的收斂結果。
首先來看看L1和L2的梯度(導數的反方向):
所以(不失一般性,我們假定:wi等於不為0的某個正的浮點數,學習速率η 為0.5):
L1的權值更新公式為wi = wi - η * 1 = wi - 0.5 * 1,也就是說權值每次更新都固定減少一個特定的值(比如0.5),那么經過若干次迭代之后,權值就有可能減少到0。
L2的權值更新公式為wi = wi - η * wi = wi - 0.5 * wi,也就是說權值每次都等於上一次的1/2,那么,雖然權值不斷變小,但是因為每次都等於上一次的一半,所以很快會收斂到較小的值但不為0。
下面的圖很直觀的說明了這個變化趨勢:
L1能產生等於0的權值,即能夠剔除某些特征在模型中的作用(特征選擇),即產生稀疏的效果。
L2可以得迅速得到比較小的權值,但是難以收斂到0,所以產生的不是稀疏而是平滑的效果。
(2) 角度二:幾何空間
這個角度從幾何位置關系來看權值的取值情況。
直接來看下面這張圖:
- 高維我們無法想象,簡化到2維的情形,如上圖所示。其中,左邊是L1圖示,右邊是L2圖示,左邊的方形線上是L1中w1/w2取值區間,右邊得圓形線上是L2中w1/w2的取值區間,綠色的圓圈表示w1/w2取不同值時整個正則化項的值的等高線(凸函數)
- 可以看到,L1與L2的不同就在於L1在和每個坐標軸相交的地方都有“角”出現,而目標函數的測地線除非位置擺得非常好,大部分時候都會在角的地方相交。注意到在角的位置就會產生稀疏性,例如圖中的相交點就有w1=0,而更高維的時候(想象一下三維的L1是什么樣的?)除了角點以外,還有很多邊的輪廓也是既有很大的概率成為第一次相交的地方,又會產生稀疏性。
- 相比之下,L2就沒有這樣的性質,因為沒有角,所以第一次相交的地方出現在具有稀疏性的位置的概率就變得非常小了。這就從直觀上來解釋了為什么L1-regularization 能產生稀疏性,而L2-regularization 能產生平滑性。
2. 一句話總結:L1會趨向於產生少量的特征,而其他的特征都是0(稀疏性),而L2會選擇更多的特征,這些特征都會接近於0(平滑性)。Lasso在特征選擇時候非常有用,而Ridge就只是一種規則化而已。
3. L1范數可以使權值稀疏,方便特征提取。L2范數可以防止過擬合,提升模型的泛化能力。
4. L1與L2正則化的對比及多角度闡述為什么正則化可以解決過擬合問題
參考資料:機器學習中的范數規則化之(一)L0、L1與L2范數