日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

推荐系统里,你是怎么Embedding的?

發布時間:2025/3/8 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推荐系统里,你是怎么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是如何編碼的呢?

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. arxiv.org/pdf/2010.1078

更多干貨,請關注煉丹筆記


總結

以上是生活随笔為你收集整理的推荐系统里,你是怎么Embedding的?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。