L1正則化與L2正則化
在騰訊互娛的兩面,和百度的一面中,都問到了這個問題:
講講正則化為什麼能降低過擬合程度,並且說明下下L1正則化和L2正則化。
(要想看答案請直接看文章結尾)
L1和L2正則化:
我們所說的正則化,就是在原來的loss function的基礎上,加上了一些正則化項或者稱為模型複雜度懲罰項。現在我們還是以最熟悉的線性回歸為例子。
優化目標:
min 式子(1)
加上L1正則項(lasso回歸):
min加上L2正則項(嶺回歸):
min 式子(3)
結構風險最小化角度:
結構風險最小化: 在經驗風險最小化的基礎上(也就是訓練誤差最小化),儘可能採用簡單的模型,以此提高泛化預測精度。
那現在我們就看看加了L1正則化和L2正則化之後,目標函數求解的時候,最終解有什麼變化。
圖像解釋(假設X為一個二維樣本,那麼要求解參數 也是二維):
- 原函數曲線等高線(同顏色曲線上,每一組
,
帶入值都相同)
- L1和L2加入後的函數圖像:
從上邊兩幅圖中我們可以看出:
- 如果不加L1和L2正則化的時候,對於線性回歸這種目標函數凸函數的話,我們最終的結果就是最裡邊的紫色的小圈圈等高線上的點。
- 當加入L1正則化的時候,我們先畫出
的圖像,也就是一個菱形,代表這些曲線上的點算出來的 1範數
都為F。那我們現在的目標是不僅是原曲線算得值要小(越來越接近中心的紫色圈圈),還要使得這個菱形越小越好(F越小越好)。那麼還和原來一樣的話,過中心紫色圈圈的那個菱形明顯很大,因此我們要取到一個恰好的值。那麼如何求值呢?
1. 以同一條原曲線目標等高線來說,現在以最外圈的紅色等高線為
例,我們看到,對於紅色曲線上的每個點都可以做一個菱形,根據
上圖可知,當這個菱形與某條等高線相切(僅有一個交點)的時候,
這個菱形最小,上圖相割對比較大的兩個菱形對應的1範數更大。
用公式說這個時候能使得在相同的 下,
由於相切的時候的 小,即
小,所以:
能夠使得 更小。
2. 有了1.的說明,我們可以看出,最終加入L1範數得到的解,一定是某個
菱形和某條原函數等高線的切點。現在有個比較重要的結論來了,我們
經過觀察可以看到,幾乎對於很多原函數等高曲線,和某個菱形相交的
時候及其容易相交在坐標軸(比如上圖),也就是說最終的結果,解的 某些維度及其容易是0,比如上圖最終解是3. 當然了,光看著圖說,L1的菱形更容易和等高線相交在坐標軸,一點都沒
說服力,只是個感性的認識,不過不要緊,其實是很嚴謹的,我們直接用
求導來證明,具體的證明這裡有一個很好的答案了,簡而言之就是假設現在 我們是一維的情況下 ,其中
是目標函數,
是沒加L1正則化項前的目標函數, 是L1正則項,那麼要使得0點
成為最值可能的點,雖然在0點不可導,但是我們只需要讓0點左右的導數
異號,即 即可
也就是 的情況下,0點都是可能的最值點。