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