【推荐系统】推荐系统里,你是怎么Embedding的?
作者:十方
平時大家是如何做推薦系統(tǒng)的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的區(qū)別,左邊就是傳統(tǒng)的embedding,先one-hot再lookup,這里vocab有2百萬,32維度,對于一個ID會映射成32維.右邊就是用DHE的方式,先通過Identifier?Vector映射成1024維度的向量,這個向量并不會接受梯度,然后這個向量會通過多個mlp映射成32維度.你能相信DHE只用了傳統(tǒng)方式1/4的參數(shù)卻達(dá)到了相同的AUC嗎.
為什么要用DHE
其實在背景中已經(jīng)說了一部分理由了,主要總結(jié)為以下3點:
字典大小過大:推薦系統(tǒng)中像是videoid,itemid,advertiserid都很大,不像NLP的bert,字典只有30K(因為bert用了word-piece),我們無法用NLP的方法對推薦領(lǐng)域的ID特征進(jìn)行降維,也沒辦法直接Lookup一張巨大的詞表.
動態(tài)輸入:這里可能很多煉丹師沒有切身體會,十方作為廣告領(lǐng)域的煉丹師深有體會,bert可以一直用一張詞表,因為word-piece后的word segment基本不會變化.但是像廣告,廣告主每天都在創(chuàng)建廣告,id每天都在更新,與此同時很多廣告id也被廢棄(廣告主停投).
數(shù)據(jù)分布不均:類別特征也總是分布不均的,長尾的特征對embedding極其不友好.
總結(jié)下來用DHE就對了.
Deep Hash Embedding
先看下什么是好的encoding?
唯一性(U):好的encoding對每一個不同的特征編碼都要是唯一的.如果這個保證不了,后續(xù)的decoding就沒辦法區(qū)分不同的特征了,那模型效果也大打折扣.
相似性(E-S):有唯一性并不足夠,相似特征編碼后也要足夠相似.比如二進(jìn)制編碼,8(1000)和9(1001)就比8(1000)和7(0111)看著相似,這就會給模型帶來困擾,誤導(dǎo)后面的decoding過程.
高維性(H-D):這個很容易理解,越高維區(qū)分度越高,極端情況就是one-hot了,區(qū)分度最強(qiáng).
高熵性(H-D):眾所周知,熵越高信息量越高,我們肯定不希望有哪一位編碼是冗余的.
了解了什么是好的encoding,我們看看哪些encoding滿足這些條件:
好吧,說來說去只有DHE滿足了好的encoding的所有條件,所以DHE是如何編碼的呢?
DHE先用k個全域哈希函數(shù),把id映射成k維,每一維度都是1~m,這時候相當(dāng)于把id映射成了k維度的INT,但是這樣是不能夠喂給Decoding(DNN)的,這里有兩個方案:
1、Uniform Distribution:因為每一維都可以看作1~m均勻分布,所以直接把這k維度INT normalize了.
2、Gaussian Distribution:先用第一種方式,再用Box-Muller處理,把均勻分布轉(zhuǎn)變?yōu)檎植?
論文說實踐證明兩種效果都很好,所以大家用第一種,簡單快捷.這里需要注意,k需要很大效果才好,論文里的k用了1024.
至于decoding(就是個DNN)就不過多介紹了,這里用了h層網(wǎng)絡(luò).需要注意的是,論文提到這種encoding-decoding方式很容易造成欠擬合,論文中的解決方案是把激活函數(shù)從ReLU換成了MISH(如下圖),同時這里DNN增加dropout,正則化也不會有什么增益.
實驗效果也不贅述了,可以參考原文,在AUC各項指標(biāo)中,DHE都優(yōu)于各種hash方法.
參考文獻(xiàn)
1、Learning to Embed Categorical Features without Embeeding Tables for Recommendation
https://arxiv.org/pdf/2010.10784.pdf
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機(jī)器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請掃碼:總結(jié)
以上是生活随笔為你收集整理的【推荐系统】推荐系统里,你是怎么Embedding的?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正则基本知识和常用正则
- 下一篇: vant+cell+picker+级联选