機器學習之稀疏性正則化:L1 正則化

Lois發表於2020-06-28

稀疏向量通常包含許多維度。建立特徵組合會導致包含更多維度。由於使用此類高緯度特徵向量,因此模型可能會非常龐大,並且需要大量的 RAM。
在高緯度稀疏向量中,最好儘可能使權重正好降至 0 。正好為 0 的權重基本上會使相應特徵從模型中移除。將特徵設為 0 可節省 RAM 空間,且可減少模型中的噪點。
以一個涵蓋全球地區(不僅僅只是涵蓋加利福尼亞州)的住房資料集為例。如果按分 (每度為 60 分)對全球維度進行分桶,則在一次稀疏編碼過程中會產生大約 1 萬個緯度;如果按分對全球經度進行分痛,則在一次稀疏編碼過程中會產生大約 2 萬個維度。這兩種特徵的特徵組合會產生大約 2 個億個緯度。這 2 億個緯度中的很多緯度代表非常有限的居住區域(例如海洋裡),很難使用這些資料進行泛化。若為這些不需要的緯度支付 RAM 儲存費用就太不明智了。因此,最好是使無意義緯度的權重正好降至 0,這樣我們就可以避免在推理時支付這些模型係數的儲存費用。
我們或許可以新增適當選擇的正則化項,將這種想法變成在訓練期間解決的最佳化問題。
L_2正則化能完成此任務嗎?遺憾的是,不能。L_2正則化可以使權重變小,但是並不能使他們正好為 0.0 。
另一種方法是嘗試建立一個正則化項,減少模型中的非零係數值的計數。只有在模型能夠與資料擬合時增加此計數才有意義。遺憾的是,雖然這種計數的方法看起來很有吸引力,但它會將我們的凸最佳化問題變為非凸最佳化問題,即NP困難。(如果您仔細觀察,便會發現它與揹包問題關聯。)因此,L_0正則化這種想法在實踐中並不是一種有效的方法。
不過,L_1正則化這種正則化項的作用類似於L_0,但它具有凸最佳化的優勢,可有效進行計算。因此,我們可以使用L_1正則化使模型中的很多資訊缺乏的係數正好為 0,從而在推理時節省 RAM。

L1和L2正則化

L_1L_2採用不同的方式降低權重:

1.L_2會降低權重^2
2.L_1會降低|權重|。
因此,L_2L_1具有不同的導數:
1.L_2的導數為 2*權重。
2.L_1的導數為 k(一個常數,其他值與權重無關)。
您可將L_2的導數的作用理解為每次移除權重的 x% 。如 Zeno 所知,對於任意數字,即使按每次減去 x% 的幅度執行數十億次減法計算,最後得出的值也絕不會正好為 0.(Zeno 不太熟悉浮點經度限制,它可能會使結果正好為 0.)總而言之,L_2通常不會使權重變為 0。
您可以將L_1的導數的作用理解為每次從權重中減去一個常數。不過,由於減去的是絕對值,L_1在 0 處具有不連續性,這會導致與 0 相交的減法結果變為 -0.2,L_1便會將權重設為 0。就這樣,L_1使權重變為 0了。
L_1正則化-減少所有權重的絕對值-證明對寬度模型非常有效。
請注意,該說明適用於一維模型。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Hacking

相關文章