AutoDim:自动Embedding维度寻优,如何节省70%的存储空间同时还能大幅提效?
Memory-efficient Embedding for Recommendations (WWW21)!
在工業界使用深度學習算法做大規模的搜索推薦問題,不可避免的都會碰到下面的幾個問題:
本文我們重點討論第二個問題,因為大量的特征Filed以及Embedding維數與特征分布和神經網絡結構之間的微妙關系,在實際的推薦系統中手工分Embedding的維數是非常困難的,本文提出了一個基于AutoML的框架AutoDim,該框架能夠以數據驅動的方式自動選擇不同特征Filed的維數 。
本文提出的框架如上所示,一共分為兩個階段:
1. 維度搜索階段
它的目的是為每個特征Field尋找最佳的Embedding維數。
更具體地說,我們首先通過embedding lookup 步將具有不同維度的候選嵌入分配給特定的分類特征;然后,我們通過一個變換步驟來統一這些候選嵌入的維數,這是因為第一個MLP層的輸入維數是固定的;
接下來,我們通過計算所有變換后的候選嵌入的加權和,得到該分類特征的形式化嵌入,并將其輸入到MLP組件中。在訓練集上學習DLRS參數,包括嵌入和MLP層,而在驗證集上優化候選嵌入的體系結構權重,從而防止框架選擇過擬合訓練集的嵌入維度[24,29]。
在實踐中,在DLRS參數和體系結構權重的替代訓練之前,我們首先為所有候選embeddings分配等效的體系結構權重。固定這些體系結構權重并預訓練DLRS,包括所有候選embedding。
2. 參數再訓練階段
根據在維度搜索階段學習到的框架的權重,為每個特征字段選擇embedding維度,并在訓練數據集上以端到端的方式重新訓練DLRS參數的參數(即MLPs和選定的embedding)。注意:
- 再訓練階段是必要的,因為在維數搜索階段,模型的性能也受到次優embedding維數的影響,而在實際的推薦系統中,次優embedding維數是不理想的;
- 由于大多數現有的深度推薦模型通過嵌入向量上的交互操作(如內積)捕獲兩個特征字段之間的交互,新的embedding仍然統一到同一維度。這些交互操作限制了embedding向量需要擁有相同的維數。
請注意,數值特征將通過bucketing轉換為類別特征。
不同的特征域具有不同的基數和對最終預測的不同貢獻。所以我們應該為不同的特征域提供不同的embedding維數。然而,由于特征域的數量龐大,以及embedding維數與特征分布和神經網絡結構之間的復雜關系,傳統的降維方法很難人工選擇emebdding維數。
- 一個直觀方法是為每個特征域分配多個不同維數的embedding空間,然后DLRS自動為每個特征域選擇最優的嵌入維數。
1. Embedding Lookup Trick
2. 權重共享embedding框架
對一個特征x,我們僅賦予d維度的emebdding,這么做的好處和壞處是:
- 大大節省了存儲空間;
- 增加了訓練時間;
由于現有DLRSs中第一MLP層的輸入維數通常是固定的,因此它們很難處理各種候選維數。此處我們使用兩種方式來處理
1. 線性變換
通過線性變化,我們將所有不同維度的向量映射到同一維度,然后我們再做BatchNormalization,并最終相加。
2. Zero填充
我們先做BatchNormalization, 然后通過使用0填充,得到相同的維度。
由于維度搜索階段的次優Embedding維數也會影響模型的訓練,因此需要一個只訓練最優維數模型的再訓練階段來消除這些次優影響。
1. 離散維數的推導
在在此訓練的階段,gumbel-softmax操作就不需要了,
2. 模型再訓練
此處我們注意:
- 現有的大多數深度推薦算法通過交互操作(如內積和Hadamard積)捕獲特征字段之間的交互。這些交互操作要求所有字段的嵌入向量具有相同的維數。
所以我們仍然需要轉化到相同的維度,此處類似的,我們使用:
- 線性變換:來自一個特征Field的所有嵌入共享相同的權重矩陣和偏差向量;
- 零填充:不引入額外的可訓練參數
- AutoDim可顯著提高推薦性能,并節省70%~ 80% embedding參數。
本文提出的AutoDim,通過數據驅動的方式自動為不同的特征字段分配不同的嵌入維數。在現實世界的推薦系統中,由于特征場的數量龐大,以及嵌入維數、特征分布和神經網絡結構之間的高度復雜關系,很難在可能的情況下將不同的維數手動分配給不同的特征場。因此,我們提出了一個基于AutoML的框架來自動選擇不同的嵌入維度。
具體地,本文首先提出了一種端到端的可微模型,該模型以軟連續的形式同時計算不同特征域在不同維度上的權重,并提出了一種基于AutoML的優化算法;然后根據最大權值,導出離散嵌入結構,并對DLRS參數進行重新訓練?;趶V泛使用的基準數據集,我們通過大量實驗對AutoDim框架進行了評估。結果表明,我們的框架可以保持或實現稍好的性能,同時embedding空間也小了很多。
AutoDim,如何節省70%的存儲空間同時還能大幅提效?總結
以上是生活随笔為你收集整理的AutoDim:自动Embedding维度寻优,如何节省70%的存储空间同时还能大幅提效?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做向量召回 All You Need i
- 下一篇: 用XGBoost调XGBoost?我调我