推薦系統裏,你是怎麼 Embedding 的?
作者:十方
平時大家是如何做推薦系統的 Embedding 的呢?是不是這樣:
layers.Embedding(vocab_size, dim_size, dtype='float32')
如果是很高維度的類別特徵呢?比如電商場景下的 itemid,可以有上億,然後可能會這樣:
hash_itemid = hash(itemid, vocab_size)
layers.Embedding(vocab_size, dim_size, dtype='float32')(hash_itemid)
就這樣嗎?效果好嗎?不知道,反正跑起來了,看着 AUC 也不錯。
《Learning to Embed Categorical Features without Embeeding Tables for Recommendation》這篇論文告訴我們,別再瞎操作了,用 Deep Hash Embedding(DHE) 就對了,AUC 也有保障。
看下之前 embedding 和 DHE 的大致對比:
對比下左右兩邊很容易看出兩者 Embedding 的區別, 左邊就是傳統的 embedding, 先 one-hot 再 lookup, 這裏 vocab 有 2 百萬, 32 維度, 對於一個 ID 會映射成 32 維. 右邊就是用 DHE 的方式, 先通過 Identifier Vector 映射成 1024 維度的向量, 這個向量並不會接受梯度, 然後這個向量會通過多個 mlp 映射成 32 維度. 你能相信 DHE 只用了傳統方式 1/4 的參數卻達到了相同的 AUC 嗎.
爲什麼要用 DHE
其實在背景中已經說了一部分理由了, 主要總結爲以下 3 點:
-
字典大小過大: 推薦系統中像是 videoid,itemid,advertiserid 都很大, 不像 NLP 的 bert, 字典只有 30K(因爲 bert 用了 word-piece), 我們無法用 NLP 的方法對推薦領域的 ID 特徵進行降維, 也沒辦法直接 Lookup 一張巨大的詞表.
-
動態輸入: 這裏可能很多煉丹師沒有切身體會, 十方作爲廣告領域的煉丹師深有體會, bert 可以一直用一張詞表, 因爲 word-piece 後的 word segment 基本不會變化. 但是像廣告, 廣告主每天都在創建廣告, id 每天都在更新, 與此同時很多廣告 id 也被廢棄 (廣告主停投).
-
數據分佈不均: 類別特徵也總是分佈不均的, 長尾的特徵對 embedding 極其不友好.
總結下來用 DHE 就對了.
Deep Hash Embedding
先看下什麼是好的 encoding?
唯一性 (U): 好的 encoding 對每一個不同的特徵編碼都要是唯一的. 如果這個保證不了, 後續的 decoding 就沒辦法區分不同的特徵了, 那模型效果也大打折扣.
相似性 (E-S): 有唯一性並不足夠, 相似特徵編碼後也要足夠相似. 比如二進制編碼, 8(1000) 和 9(1001) 就比 8(1000) 和 7(0111) 看着相似, 這就會給模型帶來困擾, 誤導後面的 decoding 過程.
高維性 (H-D): 這個很容易理解, 越高維區分度越高, 極端情況就是 one-hot 了, 區分度最強.
高熵性 (H-D): 衆所周知, 熵越高信息量越高, 我們肯定不希望有哪一位編碼是冗餘的.
瞭解了什麼是好的 encoding, 我們看看哪些 encoding 滿足這些條件:
好吧, 說來說去只有 DHE 滿足了好的 encoding 的所有條件
DHE 先用 k 個全域哈希函數, 把 id 映射成 k 維, 每一維度都是 1~m, 這時候相當於把 id 映射成了 k 維度的 INT, 但是這樣是不能夠餵給 Decoding(DNN) 的, 這裏有兩個方案:
1、Uniform Distribution: 因爲每一維都可以看作 1~m 均勻分佈, 所以直接把這 k 維度 INT normalize 了.
2、Gaussian Distribution: 先用第一種方式, 再用 Box-Muller 處理, 把均勻分佈轉變爲正太分佈.
論文說實踐證明兩種效果都很好, 所以大家用第一種, 簡單快捷. 這裏需要注意, k 需要很大效果纔好, 論文裏的 k 用了 1024.
至於 decoding(就是個 DNN) 就不過多介紹了, 這裏用了 h 層網絡. 需要注意的是, 論文提到這種 encoding-decoding 方式很容易造成欠擬合, 論文中的解決方案是把激活函數從 ReLU 換成了 MISH(如下圖), 同時這裏 DNN 增加 dropout, 正則化也不會有什麼增益.
實驗效果也不贅述了, 可以參考原文, 在 AUC 各項指標中, DHE 都優於各種 hash 方法.
參考文獻
1、Learning to Embed Categorical Features without Embeeding Tables for Recommendation
https://arxiv.org/pdf/2010.10784.pdf
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/kj2CMTEuDC1SfAUGBDnS4g