首先我們來看一下什麼是正則化
正則化的作用就是緩解模型的過拟合。它通常會添加在損失函數的後面,然後通過縮小模型參數來減小模型的複雜度,進而達到提高模型泛化性的效果。因為如果模型的參數很大的話,feature值的一個小小的變化會對模型的結果産生很大的影響,這樣就不利于模型的泛化。其實正則化就相當于一個懲罰項。在正則化項前面還會乘上一個正則化系數用來決定懲罰的力度。L1正則化和L2正則化就是正則化的兩種具體實作方式。
接着我們來看一下什麼是L1正則化和L2正則化
- L1正則化(L1範數):權值向量W中各個元素的絕對值之和,表示為
- L2正則化(L2範數):權值向量W中各個元素的平方和再開平方根,表示為
但是在實際運用中,為了友善計算我們沒有對L2正則化開平方,因為在算梯度的時候這樣友善求導,同時出來的結果更加友善計算。
假設現在權值向量W=
,下圖左邊為L1正則化在
兩個次元下的形狀,右邊為L2正則化在
兩個次元下的形狀,
L1正則化往往突出的地方取得最小值,這就會使一部分權值為0,這樣就會有些特征不會對模型産生影響也就是稀疏模型。這也是L1正則化可以用來做特征選擇的原因。實際上L1也是一種妥協的做法,要獲得真正sparse模型,要用L0正則化。但是要注意的是,L1沒有選到的特征不代表不重要,原因是兩個具有高相關性的特征隻能保留一個,如果要确定那個特征重要應在通過L2正則化方法交叉驗證。因為L1正則化是絕對值之和,目标函數加入L1後,在原點不可導,需要做特殊處理。
L2正則化會縮小權值的大小,但是不會像L1一樣将權值變為0,L1會比L2将參數收縮的更小. 是以它沒有變量選擇的功能。相比于L1正則化,因為L2正則化存在解析解,是以計算更加友善和高效。但同時它也對outlier更敏感。
對于更詳細的解釋大家可以參考下面的連結
https://blog.csdn.net/jinping_shi/article/details/52433975
https://www.cnblogs.com/stevenlk/p/6247992.html
https://www.cnblogs.com/jclian91/p/9824310.html