稀疏度正規化:L1 正規化

稀疏向量通常包含許多維度。建立交集特徵可以獲得更多維度。由於這類高維度特徵向量,模型大小可能會變得相當龐大,並需要大量的 RAM。

在高維度稀疏向量中,建議盡可能將權重降至剛好 0。權重剛好為 0 時,基本上會從模型中移除對應的特徵。將功能完全零,可節省 RAM,並可能減少模型中的雜訊。

舉例來說,假設某個住宅資料集不僅涵蓋加州,也涵蓋整個全球。在每分鐘層級 (每分鐘 60 分鐘) 將全域緯度,在稀疏編碼中大約會有 10,000 個維度,全域經度則可提供約 20,000 個維度。將上述兩個特徵交疊成多個地圖項目時,會產生約 200,000,000 個維度。其中有許多 20 萬個維度代表有限居所的區域 (例如海洋中),您難以有效運用這些資料來一般化。儲存這些不需要的維度時,可以自行支付 RAM 成本,是可以自由的。因此,建議將無意義維度的權重降到完全等於 0,這樣我們就不必在推論時為這些模型係數支付儲存成本。

我們可以透過新增適當選擇的正則化字詞,將這個概念編碼為訓練期間完成的最佳化問題。

L2 正則化工作是否會完成這項工作?很抱歉,目前不行。L2 正則化建議縮減權重,但不強制將權重設為 0.0。

另一個替代方式是嘗試建立正規化字詞,對模型中非零係數值的計數進行懲罰。唯有讓模型能夠符合資料條件,增加這個數量時,我們才會增加這個數量。遺憾的是,雖然這個以計數為基礎的方法很容易上手,但我們的 convex 最佳化問題,可能會變成非凸顯式最佳化問題。因此,這個概念稱為 L0 正則化並非實務上可以有效使用的應用。

不過,有一個正規化詞彙稱為 L1 正規化,這與 L0 的近似值,但比較具有凸面,因此可以有效計算運算。因此,我們可以使用 L1 正則化,將模型中許多不具資訊的係數設為完全 0,藉此在推論時間節省 RAM。

L1 與 L2 正則化。

L2 和 L1 會以不同方式計算權重:

  • L2 會認定體重2
  • L1 罰球 |重量|。

因此,L2 和 L1 的導數不同:

  • L2 的導數為 2 * 重量
  • L1 的導數為「k」 (常數,其值與權重無關)。

您可以將 L2 的導數視為每次都移除 x% 權重的力。如同 Zeno 所知,即使移除數十億次的 x% 數,去識別化的數字還是不會達到零。(Zeno 不太熟悉浮點精確度限制,這可能會完全產生零)。不論速率,L2 通常都不會將權重轉換為零。

您可以將 L1 的導數理解為每次從權重中減去某些常數的力。不過,由於絕對值,L1 的不連續率為 0,因此減去 0 的減去結果將歸零。舉例來說,如果減法會強制將權重設為 +0.1 到 -0.2,L1 會將權重設為完全 0。Eureka,L1 排除了體重。

L1 正則化 (除去所有權重的絕對值) 後,對於寬幅模型來說效率相當高。

請注意,如果是單維模型,則此說明為 true。

點選下方的「播放」按鈕 (),即可比較 L1 和 L2 正則化在權重網路中的效果。