深度CTR之Graph Embedding:阿里電商推薦中億級商品的Graph Embedding

介紹

阿里巴巴團隊發表於KDD 2018,文章題目-《Attentional Factorization Machines:Learning the Weight of Feature Interactions via Attention Networks》。阿里的推薦系統是按照matching + ranking的兩步策略,本文解決的是matching階段的問題,即商品召回階段的問題。

paper中說到taobao的推薦系統主要面臨了3個主要問題:

  1. 可擴展性:十億用戶,二十億商品的量級;
  2. 稀疏性:有些用戶和商品之間的交互信息特別少,導致無法精確的訓練推薦模型;
  3. 冷啓動:新商品的冷啓動問題,taobao上每小時會上線百萬級的新商品,而用戶與新商品之間沒有交互信息,因此無法很好建模用戶對商品偏好。

paper主要解決的是matching階段中對應上面的3類問題。在這之前,taobao的推薦系統在召回階段主要是使用協同過濾的方法,計算不同商品之間的相似性,來生成商品候選集合。這篇文章中主要是用Graph技術來學習商品的embedding向量,但是考慮到前人工作中Graph embedding的缺點,paper作者引入了輔助信息來學習商品向量表達,再計算商品之間的相似性。作者在構建商品Graph的時候,使用了啓發式的方法,從數十億的用戶歷史行爲中構建商品Graph。paper中先後實驗的方案爲:

  1. Base Graph Embedding (BGE);
  2. Graph Embedding with Side information (GES);
  3. Enhanced Graph Embedding with Side information (EGES)。

最後作者也介紹了在taobao的大規模的用戶和商品量級的規模下,他們也構建了graph embedding系統XTensorflow來支持算法的上線。

框架

這篇文章的思路也是受到最原始的Graph Embedding方法的啓發,例如DeepWalk方法,DeepWalk方法就是先通過在graph中隨機遊走來生成節點的序列,然後應用Skip-gram算法來學習graph中節點的Embeddding表示。沿着這個思路,paper中也是按照兩步來介紹的,1)基於用戶歷史行爲構建圖結構,2)學習圖中item的embedding表示。

基於用戶歷史行爲的 Item Graph的構建

在淘寶中,用戶的歷史行爲都是具有時間序列特點的,例如圖2(a)所示,而協同過濾算法中只考慮到商品之間的共現性,而沒有將商品的序列關係納入考慮,而在我們的item graph構建過程中,會考慮商品的序列信息,但是由於計算量和存儲空間的成本高、以及用戶的興趣具有隨着時間而漂移的特點,因此我們在使用用戶歷史行爲信息時,基於以前的經驗,只使用一個小時時間窗口內的歷史行爲item用於構建item graph,paper中也提到,對於這種一個小時的時間窗口稱之爲session

在這裏插入圖片描述

當我們得到基於session的用戶歷史行爲時,在一個session中,我們可以得到item之間的順序關係,例如在圖2(a)中的順序關係已經反映在了圖2(b)中了,而在圖2(b)中,節點之間的連接權重被賦值爲兩個item共現的次數。但是在構建item graph時,對於下面的三類髒數據和不正常行爲會過濾掉:

  1. 點擊後停留時間太短,例如不超過1秒的;
  2. 三個月內購買超過1000個商品或者點擊次數大於3500次的,這種過於活躍的用戶,有可能是刷單等異常行爲;
  3. 由於商家會給同一個標誌碼的商品不斷地做一些細節上的更新,但是有可能一段時期後,同一個標誌碼的商品已經變得完全不一樣了,對於這種情況,我們會直接去除。

Base版的Graph Embedding

基於圖2(b)中的權重有向item graph,paper中使用DeepWalk的隨機遊走方法生成節點序列,並在序列上運行Skip-gram算法來學習節點的Embedding表示,按照節點間的權重關係將隨機遊走的節點轉移概率定義爲:
在這裏插入圖片描述

我們使用Skip-gram算法學習Embedding向量,該算法是最大化序列中兩個節點的共現概率,因此我們可以關聯到下面的負數似然概率的優化問題:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DErwibt8-1582962385069)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p548)]
其中,w表示序列中上下文節點的窗口大小,如果假設節點之間是相互獨立的,即獨立性假設的情況下,可以得到下面的公式:
在這裏插入圖片描述

我們通過借鑑Word2vec中的負採樣算法,那麼方程(3)可以轉化爲下面的式子:
在這裏插入圖片描述
其中,
N(vi) N(v_i)'
表示v_i的負樣本,而 σ 表示sigmoid函數
σ(x)=11+ex \sigma (x) = \frac{1}{1 + e^{-x}}
理論上來說,
N(vi) |N(v_i)'|
越大越好,當然這也會帶來更大的計算量上的負擔。

加入輔助信息的Graph Embedding

雖然在基本的graph embedding方法中,通過用戶的行爲序列,可以學習到協同過濾方法無法學習到的高階相似性(因爲加入了點擊商品的序列信息),但是對於需要冷啓動的商品,由於其缺乏用戶和該商品之間的交互,因此仍舊無法較好的學習其embedding表示。因此這部分使用了item的輔助信息來學習item Embedding,用於解決item的冷啓動問題。

paper中舉了一些例子來說明當對item加入category、shop、price等輔助信息時的作用,例如來自於優衣庫(shop相同)的兩件外套(category相同),那麼他們的embedding表示應該比較相似。基於類似的假設,paper中提出了GES的方法,如圖3所示。
在這裏插入圖片描述

在GES中,使用W表示item及其輔助信息的embedding矩陣,W_v^0表示item v的embedding,W_v^s表示item v的第s個輔助信息的embedding,如果一共有n個輔助信息的話,那麼對item v來說,將會有 n+1 個向量
Wv0,,WvnRd W_v^0, \dots, W_v^n \in \mathbb{R}^d
其中d表示embedding向量的維度,在paper中,作者提到了經驗上的結論爲,把item和其輔助信息的embedding的維度設置成相同時的效果更好。

在圖3中可以看到,paper中的處理方式比較common,添加一個隱層,對這n+1個embedding向量做avg pooling的聚合操作,其中,H_v就表示item v的聚合embedding表示了。這樣的處理方式貌似可以較好的解決item的冷啓動問題了。
在這裏插入圖片描述

加入輔助信息的增強型Graph Embedding

上面GES算法中,雖然使用了輔助信息學習到了更好的item的embedding表示,而且一定成都上緩解了item的冷啓動問題,但是依然存在一些明顯的問題,就是item v的所有的輔助信息對於最終的embedding表示的貢獻不一定是完全相同的,但是在GES方法中是按照完全一樣來計算的。對於item v,
ARV(n+1) A \in \mathbb{R}^{|V|*(n+1)}
表示權重矩陣,A_ij 表示第i個item的第j個輔助信息,而A的第一列數值A_{*0} 表示item 自身的權重。也就是說,a_v^s表示item v的第s個輔助信息的權重,而a_v^0表示item v本身的權重值,而該層組合了不同的輔助信息的加權平均網絡定義如下:
在這裏插入圖片描述
paper中使用指數計算得到權重,即e^{a_v^j}代替a_v^j以確保每個輔助信息的權重貢獻值大於0。

在訓練樣本中,對於節點v和其上下文節點u,使用
ZuRd Z_u \in \mathbb{R}^d
來表示u的embedding表示,使用y來表示其label,那麼EGES的loss函數爲
在這裏插入圖片描述
上式對Z_u求導(其實就是交叉上損失函數的求一階導數)得到
在這裏插入圖片描述
如果公式(9)再進一步對輔助信息的權重求導的話,得到
在這裏插入圖片描述
而如果公式(9)再進一步對輔助信息的embedding表示求導的話,得到
在這裏插入圖片描述

下面是EGES的僞代碼,Alg1給出了EGES的整個框架,Alg2給出了權重Skip-gram算法的計算流程,Alg2的核心其實就在於根據正、負樣本更新參數輔助信息權重a_v^s和輔助信息embedding表示W_v^s
在這裏插入圖片描述
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vzdYQ6mD-1582962385073)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p561)]

實驗

離線評估

實驗中使用了比較common的鏈接預測任務,使用的數據集爲Amazon和Taobao的數據集,他們對應的節點數量、邊數量、輔助信息數量、稀疏度如表1所示,兩個數據集的稀疏性都非常高。其中Amazon數據集的item graph主要根據共現性來構造,而taobao數據集主要基於前面講到的session-based的歷史行爲來構造的。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QjFqoLm8-1582962385074)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p562)]

paper中主要實驗的方法爲BGE, LINE, GES, EGES,其中LINE方法是在graph embedding中捕獲一階和二階近似。

實驗結果如表2所示,結果顯示,GES和EGES方法在Amazon和Taobao數據集的效果均優於BGE、LINE(1st)、LINE(2nd)方法的效果。值得注意的地方爲:

  1. GES和EGES方法在 Taobao數據集相比於Amazon數據集上的效果提升更加明顯,這可能是由於Taobao數據集的輔助信息更加豐富和有效;
  2. EGES方法相比於GES方法,可以使得Amazon數據集的效果提升更加明顯,但是對於Taobao數據集的效果提升卻不那麼明顯,這可能是因爲GES的效果已經非常好了,所以EGES的提升也沒那麼顯著。
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-DYGFi2Vb-1582962385074)(evernotecid://AFC3459F-70B1-4432-9FEA-943ED3F7E284/appyinxiangcom/22185754/ENResource/p563)]

在線A/B測

因爲paper中學習到的item 的向量表示最終用於推薦系統中的item召回階段,因此最終評估item embedding的方式也是推薦系統中常見的點擊率評估方法,如果在召回階段通過使用graph embedding代替傳統的CF方法的召回物料質量更高的話,那麼對於最終線上的ctr一定會有提升的效果的。
在這裏插入圖片描述

而從結果上來看,基於引入輔助信息的GES和EGES方法確實能夠取得更好的線上點擊率效果。

Case Study

可視化:paper中使用了tensorflow中自帶的可視化工具進行embedding的可視化,從圖7(a)中可以看到不同種類的鞋子分佈在不同的簇中,而具有相似輔助信息的鞋子會更加相似;而圖7(b)中進一步分析了乒乓球、羽毛球、足球這三種不同運動的鞋子,並在圖中展示了乒乓球、羽毛球這兩種鞋子更加相近,而足球鞋子會距離更遠一些,這也更加符合中國人的特點,因爲乒乓球、羽毛球更偏向於室內運動(相似性更高),而足球更偏向於室外運動。
在這裏插入圖片描述

冷啓動item:對於沒有user和item之間交互信息的冷啓動item來說,可以使用其輔助信息向量的average pooling值來表示該冷啓動item,這在之前傳統的CF方法中無法實現。

EGES中的權重:圖6可視化了不同item的不同類型的輔助信息的權重,從圖中可以看到:

  1. 不同的item的輔助信息的權重大小是不同的;
  2. 所有的item中,Item自身embedding表示的權重是最大的;
  3. 除了Item自身embedding表示的權重外,Shop的embedding表示的權重是最大的,這是因爲對於Taobao的用戶來說,用戶會爲了方便性和低價的好處,更傾向於在同一店鋪中購買商品。
    在這裏插入圖片描述

系統部署和操作

在這裏插入圖片描述
在介紹Taobo的graph embedding學習系統之前,我們先了解下整個taobao的推薦系統,其分爲在線系統和離線系統。
在線系統包括Taobao個性化平臺(TPP)和排序服務平臺(RSP),其在線系統的整個工作流爲:

  1. 用戶打開app後,TPP會獲取用戶最新的數據特徵以及從離線系統中獲取item候選集,然後將item候選集喂入到RSP中,排序模型會對使用深度神經網絡對候選集的item進行打分和排序,並將排序結果返回給TPP,然後TPP再將排序結果展示到用戶app上。
  2. 用戶在使用過程中的行爲信息會被收集下來並保存成日誌數據,之後會再繼續服務於離線系統。

而對於離線系統中的graph embedding的工作流如下,這裏只簡單說下,具體可以參考下paper原文:

  1. 獲取到用戶行爲的日誌數據,取最近3個月的數據構建item graph。但是在此之前需要對用戶數據進行反爬蟲處理(以及其他去除髒數據的數據處理方法),然後才基於用戶行爲取生成sessin-based的序列。
  2. 然後就是實現item graph方法,再基於基於ODPS平臺的分佈式訓練來進行學習;
  3. 在XTF平臺上,整個的日誌獲取、反爬處理、item graph構建、隨機遊走生成session序列、item to item的相似性計算和映射生成這些過程只需要在6個小時內就可以計算完成。

總結和未來展望

總結:針對稀疏性、item冷啓動、大規模(十億用戶和二十億商品)這三個問題,作者分別提出瞭解決方案。對於稀疏性、item冷啓動問題,paper提出了將item的輔助信息融入到item graph中來學習的graph embedding,而對於大規模的數據量問題,則詳細介紹了訓練graph embedding所依託的阿里的各種計算平臺的優勢。

展望:paper中也提出了未來將要繼續探索的一些領域,一是將在graph embedding中加入attention機制,以更靈活地學習到輔助信息的權重;二是將item下的用戶評論中的文本信息數據加入到item graph中去學習graph embedding。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章