炼丹秘术:给Embedding插上翅膀
在實踐中,推薦系統利用Deep Learning去生成Embedding,然后通過Embedding在召回層進行召回是一種常用的方法,而且這種方法在效果和響應速度上也不比多路召回差。
同時,在局部敏感哈希方法快速近鄰計算的加持下,Embedding表現亮眼,本文作為“煉丹知識點”系列的第6期,我們來聊一聊到底Embedding的相關知識點。
煉丹知識點:模型評估里的陷阱
煉丹知識點:那些決定模型上限的操作
煉丹知識點:模型的燃料,數據采樣的秘密
煉丹知識點:深度模型的起跑線,初始化的意義
煉丹知識點:秘制Normalization
局部敏感哈希,英文locality-sensetive hashing,常簡稱為LSH。主要運用到高維海量數據的快速近似查找,近似查找便是比較數據點之間的距離或者是相似度。主要思想是,高維空間中,兩點若距離很近,那么設計一種哈希函數對這兩點進行哈希值計算,使得他們哈希值有很大的概率是一樣的。同時若兩點之間的距離較遠,他們哈希值相同的概率會很小。
對于電商平臺而言,商品搜索服務已經是人們日常購物中重中之重的服務了,商品的召回決定了搜索系統的質量。商品搜索需要從一個巨大的語料庫中找到最相關的商品,同時還要保證個性化。系統的表現主要受到搜索query和召回商品相關性,還有訓練和預估不一致的影響。這篇論文就提出了一種多粒度的深度語義召回系統,保證了訓練預估一致性,并使用softmax cross-entropy loss作為訓練目標,使得最終召回效果更好,模型收斂速度更快。
我們先看下淘寶商品搜索系統的全貌,每個環都是一個階段:
我們可以看到retrieval階段有億級別的商品,通過我們的深度語義召回系統最終召回上萬個相關商品。接下來開始介紹深度語義商品召回模型,我們有用戶全集U={u1,u2,...,UN},還有query集合Q={q1, q2, ..., qN},同時還有商品集合I={i1, i2, ..., iM}。我們把用戶歷史行為序列參照時間區間分到3個子集,實時集合R = {i1, i2, ..., iT},短期集合 S = {i1, i2, ..., iT},長期集合L = {i1, i2, ..., iT},所以任務就是給定一個用戶u的(R,S,L),以及query,返回top-K items:
用戶塔:淘寶中的query多為中文,在切詞后平均長度小于3,因此我們提出了多粒度的語義單元,從不同的語義粒度挖掘query含義,提升query的表達精度。給定一個query的切詞q={w1, ..., wn}(e.g. {紅色,連衣裙}),每個單詞可以拆成字粒度w = {c1, ..., cm},同時我們還能拿到歷史query qhis = {q1, ..., qk},所以我們可以得到6種粒度的表達:
Trm用的transformer,最后把6種粒度的embedding都concat在一起。
用戶行為注意力機制: 用戶歷史點擊購買的items,和每個item的side information,都可以通過embedding的方式將每個item都映射成固定長度的向量,這里我們用query與歷史行為items做attention,找到相關items。對于實時集合,使用LSTM進行編碼,然后套用個self-attention層,并在序列最前面加上0向量(以防歷史行為沒一個相關的),最后用一個attention操作獲得最終embedding,如下公式所示:
對于短期行為使用多頭self-attention,頭部添加0向量,并計算attention:
對于長期行為(一個月內)而言,分別對點擊,購買,加購集合進行mean pooling,再與query進行attention:
對長期行為的item的店鋪,類目,品牌做同樣的操作,最后把embeding進行sum pooling:
最后再把以上所有進行融合:
商品塔:商品塔只需要把itemID和標題進行融合得到最終embedding,如下式所示:
e表示商品embedding,wi表示標題切詞,wt是轉移矩陣。
綜上整個模型如下所示:
論文分析到hing loss只能做local的比較,由此會產生預估與訓練的diff,所以該文直接用softmax cross-entropy loss,定義如下:
實踐中論文使用的sampled softmax。
因為存在很多噪音數據,導致query和商品完全不相關,所以論文在softmax函數引入了一個溫度:
在樣本上,需要構造強負例,本文提出的強負例構造方法是在樣本空間中構造,給定訓練樣本(qu, i+, i-),i-是在樣本池隨機負采樣,為了簡化,i-在負樣本池找到和qu點積最大的topN,并和i+進行融合成強負例,定義如下:
最終融合了強負例的softmax函數如下:
論文后面還有很多工程介紹,感興趣可以參考原文。
煉丹秘術:給Embedding插上翅膀總結
以上是生活随笔為你收集整理的炼丹秘术:给Embedding插上翅膀的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于知识蒸馏,你想知道的都在这里!
- 下一篇: 从用户反馈的可解释性提升推荐模型