機器學習中幾乎均可以看到損失函數後面會添加一個額外項,經常使用的額外項通常有兩種,通常英文稱做ℓ1-norm和ℓ2-norm,中文稱做L1正則化和L2正則化,或者L1範數和L2範數。機器學習
L1正則化和L2正則化能夠看作是損失函數的懲罰項。所謂『懲罰』是指對損失函數中的某些參數作一些限制。對於線性迴歸模型,使用L1正則化的模型建叫作Lasso迴歸,使用L2正則化的模型叫作Ridge迴歸(嶺迴歸)。下圖是Python中Lasso迴歸的損失函數,式中加號後面一項α||w||1即爲L1正則化項。函數
下圖是Python中Ridge迴歸的損失函數,式中加號後面一項α||w||2即爲L2正則化項。學習
通常回歸分析中迴歸w表示特徵的係數,從上式能夠看到正則化項是對係數作了處理(限制)。L1正則化和L2正則化的說明以下:atom
通常都會在正則化項以前添加一個係數,Python中用α表示,一些文章也用λ表示。這個係數須要用戶指定。spa
那添加L1和L2正則化有什麼用?下面是L1正則化和L2正則化的做用,這些表述能夠在不少文章中找到。orm
上面提到L1正則化有助於生成一個稀疏權值矩陣,進而能夠用於特徵選擇。爲何要生成一個稀疏矩陣?xml
稀疏矩陣指的是不少元素爲0,只有少數元素是非零值的矩陣,即獲得的線性迴歸模型的大部分系數都是0. 一般機器學習中特徵數量不少,例如文本處理時,若是將一個詞組(term)做爲一個特徵,那麼特徵數量會達到上萬個(bigram)。在預測或分類時,那麼多特徵顯然難以選擇,可是若是代入這些特徵獲得的模型是一個稀疏模型,表示只有少數特徵對這個模型有貢獻,絕大部分特徵是沒有貢獻的,或者貢獻微小(由於它們前面的係數是0或者是很小的值,即便去掉對模型也沒有什麼影響),此時咱們就能夠只關注係數是非零值的特徵。這就是稀疏模型與特徵選擇的關係。blog
這部份內容將解釋爲何L1正則化能夠產生稀疏模型(L1是怎麼讓係數等於零的),以及爲何L2正則化能夠防止過擬合。get
假設有以下帶L1正則化的損失函數: it
其中J0是原始的損失函數,加號後面的一項是L1正則化項,α是正則化係數。注意到L1正則化是權值的絕對值之和,J是帶有絕對值符號的函數,所以JJ是不徹底可微的。機器學習的任務就是要經過一些方法(好比梯度降低)求出損失函數的最小值。當咱們在原始損失函數J0後添加L1正則化項時,至關於對J0作了一個約束。令L=α∑w|w|,則J=J0+L,此時咱們的任務變成在LL約束下求出J0取最小值的解。考慮二維的狀況,即只有兩個權值w1和w2,此時L=|w1|+|w2|對於梯度降低法,求解J0J0的過程能夠畫出等值線,同時L1正則化的函數LL也能夠在w1w2w1w2的二維平面上畫出來。以下圖:
圖1 L1正則化
圖中等值線是J0的等值線,黑色方形是L函數的圖形。在圖中,當J0等值線與L圖形首次相交的地方就是最優解。上圖中J0與L在L的一個頂點處相交,這個頂點就是最優解。注意到這個頂點的值是(w1,w2)=(0,w)。能夠直觀想象,由於LL函數有不少『突出的角』(二維狀況下四個,多維狀況下更多),J0與這些角接觸的機率會遠大於與LL其它部位接觸的機率,而在這些角上,會有不少權值等於0,這就是爲何L1正則化能夠產生稀疏模型,進而能夠用於特徵選擇。
而正則化前面的係數α,能夠控制LL圖形的大小。α越小,L的圖形越大(上圖中的黑色方框);α越大,L的圖形就越小,能夠小到黑色方框只超出原點範圍一點點,這是最優勢的值(w1,w2)=(0,w)中的w能夠取到很小的值。
相似,假設有以下帶L2正則化的損失函數:
一樣能夠畫出他們在二維平面上的圖形,以下:
圖2 L2正則化
二維平面下L2正則化的函數圖形是個圓,與方形相比,被磨去了棱角。所以J0與LL相交時使得w1或w2等於零的機率小了許多,這就是爲何L2正則化不具備稀疏性的緣由。
擬合過程當中一般都傾向於讓權值儘量小,最後構造一個全部參數都比較小的模型。由於通常認爲參數值小的模型比較簡單,能適應不一樣的數據集,也在必定程度上避免了過擬合現象。能夠設想一下對於一個線性迴歸方程,若參數很大,那麼只要數據偏移一點點,就會對結果形成很大的影響;但若是參數足夠小,數據偏移得多一點也不會對結果形成什麼影響,專業一點的說法是『抗擾動能力強』。
那爲何L2正則化能夠得到值很小的參數?
以線性迴歸中的梯度降低法爲例。假設要求的參數爲θθ,hθ(x)是咱們的假設函數,那麼線性迴歸的代價函數以下:
那麼在梯度降低法中,最終用於迭代計算參數θθ的迭代式爲:
其中α是learning rate. 上式是沒有添加L2正則化項的迭代公式,若是在原始代價函數以後添加L2正則化,則迭代公式會變成下面的樣子:
其中λ就是正則化參數。從上式能夠看到,與未添加L2正則化的迭代公式相比,每一次迭代,θj都要先乘以一個小於1的因子,從而使得θjθj不斷減少,所以總得來看,θ是不斷減少的。
最開始也提到L1正則化必定程度上也能夠防止過擬合。以前作了解釋,當L1的正則化係數很小時,獲得的最優解會很小,能夠達到和L2正則化相似的效果。
一般越大的λλ可讓代價函數在參數爲0時取到最小值。下面是一個簡單的例子,這個例子來自Quora上的問答。爲了方便敘述,一些符號跟這篇帖子的符號保持一致。
假設有以下帶L1正則化項的代價函數:
其中x是要估計的參數,至關於上文中提到的w以及θ. 注意到L1正則化在某些位置是不可導的,當λ足夠大時可使得F(x)在x=0時取到最小值。以下圖:
圖3 L1正則化參數的選擇
分別取λ=0.5和λ=2,能夠看到越大的λ越容易使F(x)在x=0時取到最小值。
從公式5能夠看到,λ越大,θj衰減得越快。另外一個理解能夠參考圖2,λ越大,L2圓的半徑越小,最後求得代價函數最值時各參數也會變得很小。