L0、L一、L2範數正則化

1、範數的概念

向量範數是定義了向量的相似於長度的性質,知足正定,齊次,三角不等式的關係就稱做範數。html

通常分爲L0、L一、L2與L_infinity範數。vim

 

2、範數正則化背景

1. 監督機器學習問題無非就是「minimizeyour error while regularizing your parameters」,也就是在規則化參數的同時最小化偏差。最小化偏差是爲了讓咱們的模型擬合咱們的訓練數據,而規則化參數是防止咱們的模型過度擬合咱們的訓練數據。機器學習

2. 由於參數太多,會致使咱們的模型複雜度上升,容易過擬合,也就是咱們的訓練偏差會很小。但訓練偏差小並非咱們的最終目標,咱們的目標是但願模型的測試偏差小,也就是能準確的預測新的樣本。因此,咱們須要保證模型「簡單」的基礎上最小化訓練偏差,這樣獲得的參數才具備好的泛化性能(也就是測試偏差也小),而模型「簡單」就是經過規則函數來實現的。另外,規則項的使用還能夠約束咱們的模型的特性這樣就能夠將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具備人想要的特性,例如稀疏、低秩、平滑等等。要知道,有時候人的先驗是很是重要的。前人的經驗會讓你少走不少彎路,這就是爲何咱們平時學習最好找個大牛帶帶的緣由。一句點撥能夠爲咱們撥開眼前烏雲,還咱們一片晴空萬里,醍醐灌頂。對機器學習也是同樣,若是被咱們人稍微點撥一下,它確定能更快的學習相應的任務。只是因爲人和機器的交流目前尚未那麼直接的方法,目前這個媒介只能由規則項來擔當了。函數

3. 知識點2的主要內容就是闡述了正則化或者是規則項的做用post

  • 約束參數,下降模型複雜度。
  • 規則項的使用還能夠約束咱們的模型的特性。這樣就能夠將人對這個模型的先驗知識融入到模型的學習當中,強行地讓學習到的模型具備人想要的特性,例如稀疏、低秩、平滑等等。

 

3、監督學習與正則化(規則化)

通常來講,監督學習能夠看作最小化下面的目標函數:性能

 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、L一、L2這3個最多見的範數以及他們的做用。編碼

 

4、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種因素,累覺不愛。

 

5、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範數不但能夠防止過擬合,提高模型的泛化能力,還可讓咱們的優化求解變得穩定和快速。

 

6、L1範數和L2範數的對比

  使用機器學習方法解決實際問題時,咱們一般要用L1或L2範數作正則化(regularization),從而限制權值大小,減小過擬合風險。特別是在使用梯度降低來作目標函數優化時,很常見的說法是,  L1正則化產生稀疏的權值, L2正則化產平生滑的權值

1.  爲何L1正則化產生稀疏的權值, L2正則化產平生滑的權值?

(1) 角度一:數學公式

這個角度從權值的更新公式來看權值的收斂結果。

首先來看看L1和L2的梯度(導數的反方向):

gif

因此(不失通常性,咱們假定: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。

下面的圖很直觀的說明了這個變化趨勢:

1111

L1能產生等於0的權值,即可以剔除某些特徵在模型中的做用(特徵選擇),即產生稀疏的效果。

L2能夠得迅速獲得比較小的權值,可是難以收斂到0,因此產生的不是稀疏而是平滑的效果。

(2) 角度二:幾何空間

這個角度從幾何位置關係來看權值的取值狀況。

直接來看下面這張圖:

Screen Shot 2015-08-26 at 21.56.02

  • 高維咱們沒法想象,簡化到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範數

相關文章
相關標籤/搜索