L2正則化、L1正則化與稀疏性
[抄書] 《百面機器學習:算法工程師帶你去面試》
為什么希望模型參數具有稀疏性呢?稀疏性,說白了就是模型的很多參數是0。這相當於對模型進行了一次特征選擇,只留下一些比較重要的特征,提高模型的泛化能力,降低過擬合的可能。在實際應用中,機器學習模型的輸入動輒幾百上千萬維,稀疏性就顯得更加重要,誰也不希望把這上千萬維的特征全部搬到線上去。如果你真的要這樣做的話,負責線上系統的同事可能會聯合運維的同學一起拿着報磚來找你了。 要在線上毫秒級的響應時間要求下完成干萬維特征的提取以及模型的預測,還要在分布式環境下在內存中駐留那么大一個模型,估計他們只能高呼“臣妾做不到啊”。
L2正則化、L1正則化與稀疏性的原理是什么?
角度 1:解空間形狀
如圖1所示,在二維的情況下,黃色的部分是L2和L1正則項約束后的解空間,綠色的等高線是凸優化問題中目標函數的等高線。由圖1可知,L2正則項約束后的解空間是圓形,而L1正則項約束的解空間是多邊形。顯然,多邊形的解空間更容易在尖角處與等高線碰撞出稀疏解。

圖1 L2正則化約束與L1正則化約束
上述這個解釋無疑是正確的,但卻不夠精確,其中忽視了幾個關鍵問題。比如,為什么加入正則項就是定義了一個解空間約束?為什么L1和L2的解空間是不同的?其實可以通過拉格朗日函數的KKT條件給出一種解釋。
事實上,“帶正則項”和“帶約束條件”是等價的。為了約束\(w\)的可能取值空間從而防止過擬合,我們為此最優化問題加上一個約束,就是\(w\)的L2范數的平方不能大於\(m\):
為了求解帶約束條件的凸優化問題,寫出拉格朗日函數
若\(w^*\)和\(\lambda^*\)分別是原問題和對偶問題的最優解,則根據KKT條件,它們應滿足
仔細一看,式\((3)\)中的第一個式子不就是\(w^*\)為帶L2正則項的優化問題的最優解條件嘛,而\(\lambda^*\)就是L2正則項前面的正則參數。
這時回頭再看開頭的問題就清晰了。 L2正則化相當於為參數定義了一個圓形的解空間(因為必須保證L2范數不能大於m),而L1正則化相當於為參數定義了一個棱形的解空間。 如果原問題目標函數的最優解不是恰好落在解空間內,那么約束條件下的最優解一定是在解空間的邊界上, 而L1 “棱角分明”的解空間顯然更容易與目標函數等高線在角點碰撞,從而產生稀疏解。
角度 2:函數疊加
第二個角度試圖用更直觀的圖示來解釋L1產生稀疏性這一現象。僅考慮一維的情況,多維情況是類似的,如圖2所示。假設棕線是原始目標函數\(L(w)\)的曲線圖,顯然最小值點在藍點處,且對應的\(w^*\)值非0。

圖2 函數曲線圖
首先,考慮加上L2正則化項,目標函數變成\(L(w)_Cw^2\),其函數曲線為黃色。此時,最小值點在黃點處,對應的\(w^*\)的絕對值減小了,但仍然非0。
然后,考慮加上Ll正則化頃,目標函數變成\(L(w)+C|w|\),其函數曲線為綠色。此時, 最小值點在紅點處,對應的\(w^*\)是0,產生了稀疏性。
產生上述現象的原因也很直觀。加入L1正則頂后,對帶正則項的目標函數求導,正則項部分產生的導數在原點左邊部分是\(-C\),在原點右邊部分是\(C\),因此,只要原目標函數的導數絕對值小於\(C\),那么帶正則項的目標函數在原點左邊部分始終是遞減的,在原點右邊部分始終是遞增的,最小值點自然在原點處。相反,L2正則項在原點處的導數是0,只要原目標函數在原點處的導數不為0,那么最小值點就不會在原點,所以L2只有減小 \(w\)絕對值的作用,對解空間的稀疏性沒有貢獻。
在一些在線梯度下降算法中,往往會采用截斷梯度法來產生稀疏性,這同L1正則頂產生稀疏性的原理是類似的。
角度 3:貝葉斯先驗
從貝葉斯的角度來理解L1正則化和L2正則化,簡單的解釋是,L1正則化相當於對模型參數\(w\)引入了拉普拉斯先驗,L2正則化相當於引入了高斯先驗,而拉普拉斯先驗使參數為0的可能性更大。圖3是高斯分布曲線圖。由圖可見,高斯分布在極值點(0點)處是平滑的,也就是高斯先驗分布認為\(w\)在極值點附近取不同值的可能性是接近的。這就是L2正則化只會讓\(w\)更接近0點,但不會等於0的原因。

圖3 高斯分布曲線
相反,圖4是拉普拉斯分布曲線圖。由圖可見,拉普拉斯分布在極值點(0點)處是一個尖峰,所以拉普拉斯先驗分布中參數\(w\)取值為0的可能性要更高。在此我們不再給出L1 和L2正則化分別對應拉普拉斯先驗分布和高斯先驗分布的詳細證明。

圖4 拉普拉斯分布曲線圖