大家好,今天我們學習【機器學習速成】之 稀疏性正則化:L1正則化。
我們 馬上學三點 ,
- 稀疏特徵的組合問題
- L1正則化
- L1和L2正則化區別
大家可以點選下面的“ 瞭解更多 ”,或搜尋“ 馬上學123 ”,線上觀看PPT講義。
稀疏特徵的組合: 舉例
我們之前的教程中, 學習了特徵組合好處。 特徵組合可能很棒, 但也可能會帶來一些問題。 尤其是將 稀疏特徵組合 起來的時候。
舉例:
假如我們有一個全球的的住房資料集, 如果按分(360度,每度為 60 分)對全球緯度進行分桶, 則在一次稀疏編碼過程中會產生大約 1 萬個維度; 如果按分對全球經度進行分桶, 則在一次稀疏編碼過程中會產生大約 2 萬個維度。 經緯度的特徵組合會產生大約 2 億個維度。 這 2 億個維度中的很多維度 代表 非常有限的居住區域(例如海洋裡) , 很難使用這些資料進行有效泛化。
稀疏特徵的組合問題
稀疏特徵組合可能會大大 增加特徵空間 ,
這也意味著, 模型大小會驟然增大, 侵佔記憶體 , 還可能會減緩執行時間。
即便我們擁有大量的訓練資料, 但其中仍有許多組合會非常罕見, 因此我們最終可能會 得到一些噪聲係數 , 並可能遇到 過擬合問題 。
可想而知,如果遇到過擬合問題, 我們就要進行正則化。 現在我們要說的是, 能不能以特定方式進行正則化, 既能縮減模型大小,又能降低記憶體使用量 ?
我們要做的就是將部分權重設為0, 這樣就不必處理其中的一些特定組合了。 這樣既節省了記憶體, 還有可能幫助我們解決過擬合問題。 不過必須小心一點, 因為我們只想去掉那些額外的噪音係數, 而不想失去正確的係數。
L0 正則化
所以我們要做的就是明確地 將權重設為0 , 也就是所謂的L0正則化。
L0正則化減少模型中的非零係數值的計數, 只有在模型能夠與資料擬合時增加此計數才有意義。 這種方式只會因存在不為0的權重而處罰您。
但是,它 沒有凸性、難以優化 , 並存在某種逗號尾隨問題。
L1正則化
要是我們改為將條件放寬至L1正則化, 只對 權重的絕對值總和進行處罰 。 那麼我們仍可以促使模型變得非常稀疏, L1正則化會讓其中的 許多係數歸零 。
您可以將 L1 的導數 的作用理解為 每次從權重中 減去一個常數 。 不過,由於減去的是絕對值, L1 在0處具有不連續性, 這會導致與0相交的減法結果變為0。 例如,如果減法使權重從 +0.1 變為 -0.2, L1 便會將權重設為 0。 就這樣,L1 使權重變為 0 了。
L1 正則化,減少所有權重的絕對值, 證明對寬度模型非常有效。
L1 和 L2 正則化
這種正則化與L2正則化略有不同, 後者也會嘗試設定較小的權重, 但實際上並不會幫助您讓權重歸零。
比較 L1 和 L2 正則化對權重網路的影響:
L2 和 L1 採用不同的方式降低權重:
- L2 會降低權重2。
- L1 會降低 |權重|。
因此,L2 和 L1 具有不同的導數:
- L2 的導數為 2 * 權重。
- L1 的導數為 k(一個常數,其值與權重無關)。
您可以將 L2 的導數的作用理解為 每次移除權重的 x% 。對於任意數字,即使按每次減去 x% 的幅度執行數十億次減法計算,最後得出的值也絕不會正好為 0,L2 通常不會使權重變為 0。
總結:
- 稀疏特徵組合可能會大大增加特徵空間,模型大小可能會變得龐大
- L1 正則化,對絕對值(權重)之和進行懲罰
- L1 的導數的作用理解為每次從權重中減去一個常數
- L2 的導數的作用理解為每次移除權重的 x%,L2 通常不會使權重變為 0
這裡講了三點,關鍵詞有哪幾個?
提問!我們應該如何選擇L1和L2正則化?