1. 程式人生 > >論文閱讀:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba

論文閱讀:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba

阿里在KDD 2018上開放了它們的方法:《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》, 我們來看下:同時本文使用了公開資料集對原文的內容進行復現。

介紹

網際網路技術持續改變著商業版圖,電商變得無處不在。Alibaba blala,10億使用者,2017 GMV是37670億rmb,2017收入是1580億rmb。blala。

淘寶有10億users和2億items,最重要的問題是,如何幫助使用者快速發現需要和感興趣的items。推薦系統對於達成這個目標來說至關重要。例如,淘寶移動APP的主頁(圖1),會基於使用者過去的行為結合推薦技術生成,貢獻了40%的總推薦流量。再者,在淘寶上,收入和流量的大頭都來自推薦。簡言之,推薦是taobao和alibaba的GMV和收入的核心引擎。儘管在學術界和工業界大多數推薦方法都能獲得成功(例如:CF,基於內容的方法,基於deeplearning的方法),但是在淘寶,這些方法面對的問題變得更嚴峻,因為有海量的使用者和海量的items存在。

圖1: 虛線框的區域對於淘寶10億使用者來說是個性化的。為了更好的使用者體驗,吸引人的圖片和方案描述也同樣是生成的。注意,Taobao移動端主頁貢獻了40%的總推薦流量

這裡淘寶推薦系統有三個主要的技術挑戰:

  • 可擴充套件性(Scalability):儘量許多已經存在的推薦方法可以在小規模資料集上能很好工作(例如:數百萬的users和items),但它們通常會在淘寶的海量資料集上試驗失敗。
  • 稀疏性(Sparsity):由於使用者趨向於只與小部分的items互動,特別是當users或items只有少量互動時,很難訓練一個精準的推薦模型。這通常被稱為“sparsity”問題。
  • 冷啟動(cold start):在淘寶,數百萬的新items會在每小時持續被上傳。這些items沒有使用者行為。處理這些items、或者預測使用者對這些items的偏好是個挑戰,這被稱為“cold start”問題。

為了解決這些挑戰,我們在淘寶技術平臺上設計了two-stage推薦框架。第一階段稱為matching,第二階段為ranking。在matching階段,我們會生成一個候選集,它的items會與使用者接觸過的每個item具有相似性;接著在ranking階段,我們會訓練一個深度神經網路模型,它會為每個使用者根據他的偏好對候選items進行排序。由於上述挑戰的存在,在兩個階段都會面臨不同的問題。另外,每個階段的目標不同,會導致技術解決方案的不同。

在本paper中,我們主要關注如何解決在matching階段的挑戰,其中,核心任務是,基於使用者行為,計算所有items的兩兩(pairwise)相似度。在獲取items的pairwise相似度後,我們可以生成一個items候選集合,進一步在ranking階段使用。為了達到該目的,我們提出了根據使用者行為歷史構建一個item graph,接著使用state-of-art的graph embedding方法[8,15,17]來學習每個item的embedding,這被稱為BGE(Base Graph Embedding)。在這種方式下,我們可以基於items的embeddings向量進行點乘來計算候選items集合的相似度。注意,在之前的工作中,基於CF的方法來計算這些相似度。然而,基於CF的方法只考慮了在使用者行為歷史上的items的共現率。在我們的工作中,會在item graph中使用random walk,來捕獲items間的高維相似性。這樣,它比基於CF的方法要好。然而,為少量或者沒有互動行為的items學到精準的embeddings仍是個挑戰。為了減輕該問題,我們提供了使用side information來增強embedding過程,這被稱為使用Side information的Graph Embedding(Graph Embedding with Side information (GES))。例如,屬於相似的類目或品牌的items在embedding space空間應更接近。在這種方式下,即使items只有少數互交或沒有互動,我們也可以獲取精確的items embedding。然而在淘寶,有許多種型別的side information。比如類目(category)、品牌(brand)、或價格(price)等,直覺上不同的side information對於學習items的embeddings的貢獻也不一樣。因而,我們進一步提出了一種加權機制來使用,這被稱為Enhanced Graph Embedding with Side information(EGES)

總之,matching階段有三個重要的部分:

  • (1) 基於在淘寶這些年的實踐,我們設計了一個有效的啟發式方法,基於在淘寶上10億多使用者的行為歷史來構建item graph。
  • (2) 我們提供了BGE,GES和EGES,來學習在淘寶上20億items的embeddings。我們進行離線實驗來演示:GES和EGES與BGE、以及其它embedding方法對比的效果。
  • (3) 為了部署十億級users和items的方法,我們基於baobao XTensorflow(XTF)平臺來構建graph embedding systems。我們展示了提出的框架可以極大提升在taobao移動端app上的推薦效果,同時能滿足在雙十一節上的訓練效率和實時服務。

paper的其餘部分組織如下:第2節介紹三種embedding方法。第3節介紹離線和線上實驗結果。第4節介紹在taobao上的系統部署。第5節回顧相關工作。第6節收尾。

2.框架

這一節,首先引入graph embedding的基礎,接著詳述如何從使用者行為歷史上構建item graph。最後,我們研究了在淘寶上進行學習items embeddings的方法。

2.1 前提條件

本節,我們會給出一個關於graph embedding的總覽,會採用一個很流行的方法:DeepWalk;在此基礎上,我們提出了在matching階段我們的graph embedding方法。給定一個graph:G=(V,E)G=(V,E),其中V和E分別表示節點集合和邊集合。Graph embedding會為空間RdRd上的每個節點v∈Vv∈V學習一個低維表示,其中d≪∣V∣d≪∣V∣。換句話說,我們的目的是,學習一個對映函式:Φ:V→RdΦ:V→Rd,(即:在V中的每個節點表示成一個d維向量)。

在[13,14]中,提出了word2vec來學習在語料中的每個詞的embedding。受word2vec的啟發,Perozzi等提出了DeepWalk來學習在graph中每個節點的embedding。首先通過執行在graph中的random walk來生成節點序列,接著應用Skip-Gram演算法來學習在graph中的每個節點表示。為了維持該graph的拓樸結構,他們需要解決以下的優化問題:

minimizeΦ∑v∈V∑c∈N(v)−logPr(c|Φ(v))minimizeΦ∑v∈V∑c∈N(v)−logPr(c|Φ(v)) …(1)

其中,N(v)N(v)是節點v的鄰節點,可以被定義為從v開始在一跳或兩跳內的節點。Pr(c∣Φ(v))Pr(c∣Φ(v))定義了給定一個節點v後,具有上下文節點c的條件概率。

在本節的其它部分,我們首先會介紹如何從使用者行為中構建item graph,接著提供了基於DeepWalk的graph embedding方法來生成在taobao上20億item上的低維表示。

2.2 根據使用者行為構建item graph

圖2: 淘寶graph embedding總覽: a) **使用者行為序列:使用者u1對應一個session,u2和u3分別各對應一個session;這些序列被用於構建item graph;b) 有向加權item graph(weighted directed item graph)G=(V,E)G=(V,E); **c)在item graph上由random walk生成的序列; d) **使用Skip-Gram生成embedding

在本節,我們詳述了從使用者行為構建item graph。現實中,在淘寶上一個使用者的行為趨向於如圖2(a)所示的序列。之前基於CF的方法只考慮了items的共現,但忽略了順序資訊(可以更精準地影響使用者的偏好)。然而,不可能使用一個使用者的整個歷史,因為:

  • 1.計算開銷和儲存開銷會非常大
  • 2.一個使用者的興趣趨向於隨時間漂移

因此,實際上,我們設定了一個時間視窗,只選擇使用者在該視窗內的行為。這被稱為是基於session的使用者行為(session-based)。經驗上,該時間視窗的區間是一個小時。

如果我們獲取基於session的使用者行為,如果兩個items它們連續出現,會通過一個有向邊進行連線,例如:圖2(b)的item D和item A是連線的,因為在圖2(a)中使用者u1u1順序訪問了item D和A。通過利用在淘寶上所有使用者的協同行為,我們會為每條邊eijeij基於在所有使用者行為的行連線items中的出現總數分配一個權重。特別的,在所有使用者行為歷史中,該邊的權重等於item i轉向item j的頻次。這種方法中,構建的item graph可以基於所有使用者行為表示不同items間的相似度。

實際上,在我們抽取了使用者行為序列之前,我們需要過濾一些非法資料和異常行為來為我們的方法消除噪聲。下述行為會被我們的系統認定為噪聲:

  • 如果在一次點選後的停留時長少於1秒,該點選可能是無意識的,需要被移除。
  • 在淘寶中有許多”過度活躍(over-active)”使用者,它們實際上是有害使用者(spam users)。根據我們在淘寶上的時長觀察,如果在三個月內,單個使用者購買1000個items或者他/她的總點選數超過3500個items,該使用者非常可能是一個spam user。我們需要過濾掉這些使用者的行為。
  • 淘寶零售商們(Retailers)會保持更新一個商品(commodity)的詳情。極端情況下,在淘寶上的一個商品可能在一連串更新後,雖然相同的id,但很可能變成了不同的item。因而,這種item也會根據id進行移除。

2.3 基於圖的Embedding(BGE)

在我們獲取weighted directed item graph後,表示G=(V,E)G=(V,E)。我們採用DeepWalk來學習在圖G中的每個節點的embedding。假設M表示G的鄰近矩陣(adjacency matrix),MijMij表示從節點i指向節點j的加權邊。我們首先基於隨機遊走生成節點序列,接著在這些序列上執行Skip-Gram演算法。隨機遊走的轉移概率定義如下:

P(vj|vi)={Mij∑j∈N+(vi)Mij,0,vj∈N+(vi)eij∉EP(vj|vi)={Mij∑j∈N+(vi)Mij,vj∈N+(vi)0,eij∉E …(2)

其中,N+(vi)N+(vi)表示出鏈(outlink)的鄰節點集合,例如,從vivi出發指向在N+(vi)N+(vi)所有節點的邊。通過執行隨機遊走,我們可以生成如圖2(c)所示的許多序列。

接著,我們使用Skip-Gram演算法來學習embeddings,它會最大化在獲取序列上的兩個節點間的共現概率。這會生成以下的優化問題:

minimizeΦ−logPr({vi−w,...,vi+w}∖vi|Φ(vi))minimizeΦ−logPr({vi−w,...,vi+w}∖vi|Φ(vi)) …(3)

其中,w是在序列中上下文節點的window size。使用獨立假設,我們具有:

Pr({vi−w,...,vi+w}∖vi|Φ(vi))=∏i+wj=i−w,j≠iPr(vj|Φ(vi))Pr({vi−w,...,vi+w}∖vi|Φ(vi))=∏j=i−w,j≠ii+wPr(vj|Φ(vi)) …(4)

應用negative sampling,等式4可以轉換成:

minimizelogσ(Φ(vj)TΦ(vi))+∑t∈N(vi)′logσ(−Φ(vt)TΦ(vi))minimizelogσ(Φ(vj)TΦ(vi))+∑t∈N(vi)′logσ(−Φ(vt)TΦ(vi)) …(5)

其中,V(vi)′V(vi)′是對於vivi的負取樣,σ()σ()是sigmoid函式。經驗上,∣N(vi)′∣∣N(vi)′∣越大,獲得的結果越好。

2.4 使用Side Information的GE(GES)

通過應用2.3節的embedding方法,我們可以學到在淘寶上的所有items的embedding,來捕獲在使用者行為序列上的更高階相似度,這種特性會被基於CF的方法忽略。然而,對於“冷啟動(cold-start)”的items,學到精準的embeddings仍然是個挑戰。

為了解決冷啟動問題,我們提出了增強式BGE,它會使用side information來與冷啟動items做繫結。在商業推薦系統的場景中,side information常指關於一個item的:類目(category),shop(商名),價格(price)等,它們常被當成是ranking階段的關鍵特徵而廣泛使用,但很少用於matching階段。我們可以通過將side information合併到graph embedding中來緩合cold-start問題。例如,優衣庫(UNIQLO:相同店)的兩款衛衣(相同類目)可能很相似,一個喜歡Nikon鏡頭的使用者,也可能對Canon相機感興趣(相似類目和相似品牌)。這意味著這些具有相似的side information的items也可在embedding空間中更接近。基於這個猜想,我們提出瞭如圖3的GES方法。

圖3: GES和EGES的總框架。SI表示side information,其中”SI 0”表示item自身。慣例上,1)對於items和不同的SIs,稀疏特徵趨向於one-hot-encoder vectors。 2) Dense embeddings是items和相應的SI的表示 3) hidden representation是一個item和它相應的SI的聚合embedding

為了清晰些,我們對概念做了精微調整。我們使用W來表示items或者side information的embedding matrix。特別的,W0vWv0表示item v的embedding,WSvWvS表示繫結到item v上的第s個型別的side information的embedding。接著,對於item v,使用n種類型的side information,我們具有n+1個向量w0v,...,Wnv∈Rdwv0,...,Wvn∈Rd,其中,d是embedding的維度。注意,item embeddings和side information embeddings的維度,經驗上設定為相同的值。

如圖3所示,為了合併side information,我們為item v將n+1個embedding vectors進行拼接,增加一個layer,使用average-pooling操作來將所有與item v的embeddings進行聚合,它是:

Hv=1n+1∑ns=0WsvHv=1n+1∑s=0nWvs …(6)

其中,HvHv是item v的聚合embeddings。這種方法中,我們將side information以這樣的方式合併,從而使具有相近side information的items可以在embedding空間內更接近。這會為cold-start items的embeddings更精準些,並且提升了線上和離線的效果。(見第3節)

2.5 增強型EGS(EGES)

儘管GES可以獲得收益,但在embedding過程中整合不同型別的side information時,仍存在一個問題。等式(6)中,不同型別的side information對最終的embedding的貢獻是相等的,在現實中這不可能。例如,一個購買了IPhone的使用者,趨向於會瀏覽Macbook或者Ipad,因為品牌都是”Apple”;而一個購買了多個不同品牌衣服的使用者,出於便利和更低價格,還會在相同的淘寶店上繼續購買。因此,不同型別的side information對於在使用者行為中的共現items的貢獻各不相同。

為了解決該問題,我們提出了EGES方法來聚合不同型別的side information。該框架與GES相同(見圖3)。不同之處是,當embeddings聚合時,不同型別的side information具有不同貢獻。 因而,我們提出了一個加權平均的average layer來聚合與items相關的side information的embeddings。給定一個item v,假設A∈R∣V∣×(n+1)A∈R∣V∣×(n+1)是權重矩陣(weight matrix),條目AijAij是第i個item、第j個型別side information的權重。注意,A∗0A∗0,例如,A的第一列,表示item v的許可權自身。出於簡潔性,我們使用asvavs來表示關於第v個item的第s個型別的side information的權重,a0vav0表示item v自身的權重。加權平均層(weighted average layer)會結合不同的side information,定義如下:

Hv=∑nj=0eajvWjv∑nj=0eajvHv=∑j=0neavjWvj∑j=0neavj

…(7)

其中,我們使用eajveavj來替代ajvavj,以確保每個side information的貢獻大於0, ∑nj=0eajv∑j=0neavj被用於歸一化不同型別side information的embeddings的相關權重。

在訓練資料中,對於節點v和它的上下文節點u,我們使用Zu∈RdZu∈Rd來表示它的embedding,y來表示label。接著,EGES的目標函式變為:

L(v,u,y)=−[ylog(σ(HTvZu))+(1−y)log(1−σ(HTvzu))]L(v,u,y)=−[ylog(σ(HvTZu))+(1−y)log(1−σ(HvTzu))]

…(8)

為了求解它,梯度求導如下:

∂LZu=(σ(HTvZu)−y)Hv∂LZu=(σ(HvTZu)−y)Hv

…(9)

對於第s個side information:

∂L∂asv=∂L∂Hv∂Hv∂asv=(σ(HTvZu)−y)Zu(∑nj=0eajv)easvWsv−easv∑nj=0eajvWjv(∑nj=0eajv)2∂L∂avs=∂L∂Hv∂Hv∂avs=(σ(HvTZu)−y)Zu(∑j=0neavj)eavsWvs−eavs∑j=0neavjWvj(∑j=0neavj)2

…(10)

∂L∂Wsv=∂L∂Hv∂L∂Wsv=easv∑nj=0eajv(σ(HTvZu)−y)Zu∂L∂Wvs=∂L∂Hv∂L∂Wvs=eavs∑j=0neavj(σ(HvTZu)−y)Zu

…(11)

EGES的虛擬碼如演算法1如示,加權Skip-Gram updater的虛擬碼如演算法2所示。最終每個item的隱表示通過等式(7)來計算:

演算法一:

演算法二:

3.實驗

本節中,我們引入大量實驗來演示這些方法的效果。首先通過連結預測任務評估方法,然後是在Taobao移動端APP上的線上實驗。最終,我們提出一些真實case來進一步深入這些方法。

3.1 離線評估

連結預測(Link Prediction)。連結預測任務被用於離線實驗,因為它是在網路中的一個基礎問題。給定移除某些邊的一個網路,預測任務是預測這些連結的出現概率。根據在[30]中相似的實驗設定,1/3的邊被隨機選中及移除,在測試集中作為ground truth,圖中剩餘的邊作為訓練集。在測試集中,相同數目的沒有邊連線的節點對(node pairs)會被隨機選中作為負樣本。為了評估連結預測的效果,使用AUC得分作為metric。

資料集:我們使用兩個資料集來進行連結預測任務。第一個是Amazon Electronics資料集。第二個從Taobao移動端APP抽取。兩個資料集都包含了不同型別的side information。對於Amazon資料集,item graph可以從“共同購買(co-purchasing)”的關係中被構建(在提供的資料中由also_bought表示),使用了三種類型的side information,例如:類目(category),子類目(sub-category)以及品牌。對於Taobao資料集,item graph通過第2.2節的方法購建。注意,為了效率和效果,在Taobao真實生產環境中,使用了12種類型的side information,包括:零售商(retailer), 品牌(brand), 購買級別(purchase level), 年代(age), 適用性別(gender), 風格(style), 等等。這些型別的side information根據這些年在taobao的實際經驗很有用。兩個資料集的統計如表1所示。我們可以看到兩個資料集的稀疏性大於99%。

表1

比較方法。引入了4種方法進行實驗:BGE, LINE, GES和EGES。LINE在[17]中被提出,它可以捕獲在graph embedding中的第一階和第二階的鄰近關係。我們使用由作者提供的實現,使用第一階和第二階鄰近(LINE(1st)和LINE(2nd))來執行它。我們實現了其它三種方法。所有這些方法的embedding維度都設定為160.對於我們的BGE、GES和EGES,隨機遊走的長度為10, 每個節點的walks數目為20, 上下文視窗為5.

表2

結果分析。結果如表2所示。我們可以看到GES和EGES的AUC效果在兩個資料集上都要好於BGE、LINE(1st)和LINE(2st)。另換,稀疏性問題也通過合併side information而緩合。當比較Amazon和Taobao的效果時,我們可以看到,在taobao資料集上的效果增益更大。我們將它歸功於在Taobao資料集上使用了更多型別的有效的、有資訊量的side information。當比較GES和EGES時,我們可以看到,在Amazon上的效果收益比在Taobao上的要大。這可能歸功於Taobao的效果已經非常好了,比如:0.97.因而,EGES的提升不顯著。在Amazon dataset上,EGES在AUC上的效果要好於GES。基於這些結果,我們可以觀察到合併side information對於graph embedding非常有效,準確率可以通過對多個side information的mebeddings進行加權聚合而提升。

圖4 2017年11月連續7天內不同方法的線上CTR

3.2 線上A/B test

我們在一個A/B testing框架下進行線上實驗。實驗的目標是在Taobao APP主頁上的CTR。我們實現了上述的graph embedding方法,接著為每個item生成多個相似的items作為推薦候選。最終在Taobao主頁(見圖1)上的推薦結果,由基於一個DNN模型的ranking引擎生成。在實驗中,我們在ranking上使用相同的方法對候選排序。如上所述,相似items的質量直接影響著推薦結果。因而,推薦效果(例如:CTR)可以受matching階段不同的方法而影響。我們在A/B test框架上部署了4個方法。並對2017年11月中的7天的結果進行展示(如圖4)。注意,“Base”表示一個item-based CF的方法,在graph embedding方法部署之前,它被廣泛用於淘寶上。它會根據item的共現以及使用者投票權重,計算兩個items間的相似度。該相似度可以很好地進行調參、並很適合淘寶電商。

從圖4我們可以看到,EGES和GES在CTR上的效果要好於BGE、以及Base方法,這展示了在graph embedding上合併side information的效果。另外,Base的CTR要大於BGE。這意味著,經過良好調參的CF-based方法可以戰勝簡單的embedding方法,因為在實際中會大量使用人工經驗的策略。另一方面,EGES會一直勝過GES,它在3.1節的離線實驗中一致。這進一步演示了,side information的加權聚合要勝過平均聚合。

3.2 案例研究

在本節中,我們提出了一些在taobao的真實案例,來展示這些方法的效果。這些case會檢查三個方面:

  • 1.通過EGES的embedding視覺化
  • 2.冷啟動items
  • 3.在EGES中的權重

3.3.1 視覺化

在本部分,我們會將由EGES學到的items的embeddings進行視覺化。我們使用由tensorflow提供的視覺化工具。結果如圖7所示。從圖7(a),我們可以看到不同類目(categories)的鞋子會在不同的聚類中。這裡一種顏色表示一個類目,比如:羽毛球,乒乓球,足球。它演示了學到的合併side information的embeddings的效果。例如,具有相似side information的items在embedding空間中應更接近。從圖7(b)看到,我們進一步分析三種鞋子的embeddings:羽毛球,乒乓球,足球。在embedding空間中,羽毛球和乒乓球相互很接近,而足球更更遠些。這可以被解釋成:在中國,喜歡羽毛球的人很多也喜歡打乒乓球。然而,喜歡足球的人與喜歡戶內運動(羽毛球和乒乓球)的人則相當不同。推薦羽毛球鞋給這些觀看過乒乓球鞋的人效果要好於推足球鞋的。

3.3.2 冷啟動items

圖5: 冷啟動item的相似items。展示了top4相似的items。注意:這裡的”cat”表示category.

在本部分,我們展示了冷啟動的embeddings質量。對於在淘寶上剛更新的一個新item,在item graph中沒法學到embedding,之前基於CF的方法也不能處理冷啟動問題。然而,我們可以將一個冷啟動item使用它的side information進行表示。結果如圖5所示。我們可以看到,儘管對於兩個冷啟動items來說缺失使用者行為,但可以利用不同的side information來有效學習它們的embeddings,在top相似的items上。在圖中,我們為每個相似的item做了註釋,連線到冷啟動item上的side information的型別。我們可以看到,items的所屬商店(shops)是用於衡量兩個items相似度上非常重要的資訊,它也會在下面部分使和每個side information的權重進行對齊。

圖6: 不同items的不同side information的weights. 這裡的”Item”表示一個item本身的embedding

3.3.3 在EGES中的權重

我們會為不同的items作不同型別side information權重視覺化。每個在不同類目上的8個items會被選中,與這些items相關的所有side information的權重會從學到的weight matrix A中抽取。結果如圖6所示,其中,每一行記錄了一個item的結果。可以觀察到許多注意點:

  • 1.不同items的weight分佈很不同,它們會與我們的猜假一致,不同的side information對於最終的表示來說貢獻是不同的。
  • 2.在所有items中,”Item”的權重,表示了item自身的embeddings,會一直大於其它的side information的權重。必須承認的是,一個item自身的embedding仍然是使用者行為的主要源,其中side information提供了額外的提示來推斷使用者行為。
  • 3.除了”Item”外,”Shop”的權重會一直大於其它side information的權重。這與淘寶的使用者行為相一致,也就是說,使用者可能出於便利或更低價格因素,趨向於購買在相同店內的items。

圖7: 隨機選中的鞋子的一個集合的embedding視覺化。item embeddings通過PCA被投影到一個2D平面上。不同顏色表示不同的categories。相同category中的Item被一起分組。

4.系統部署和操作

本節中介紹graph embedding方法在淘寶的實現和部署。首先給出對淘寶整個推薦平臺的一個大體介紹,接著詳述與embedding方法相關的模組。

圖8: 淘寶推薦平臺的架構

在圖8中,我們展示了推薦平臺的架構。該平臺包含了兩個子系統:online和offline。對於online子系統,主要元件是TPP(Taobao Personality Platform:淘寶個性化平臺)和RSP(Ranking Service Platform: 排序服務平臺)。一個典型的workflow如下所示:

  • 當用戶載入淘寶移動APP時,TPP會抽取使用者最新的資訊,並從離線子系統中檢索一個items候選集,它們會接著被fed進RSP。RSP會使用一個fine-tuned DNN模型對items候選集進行排序,接著返回相應的排序結果給TPP。
  • 當用戶在淘寶內瀏覽時,它們的行為會被收集和儲存成離線子系統中的日誌。

offline子系統的workflow,包含了graph embedding的實現和部署,如下描述:

  • 包含使用者行為的日誌會被檢索。item graph會基於使用者行為進行構建。實際上,我們會選擇最近三個月的日誌。在生成基於session的使用者行為序列之前,會對資料進行anti-spam。留下的日誌包含了6000億條目。item graph會根據2.2節的方法進行構建。
  • 為了執行我們的graph embedding方法,會採用兩種實際方法:1) 整個graph劃分成許多個sub-graphs,它們可以通過Taobao的ODPs(Open Data Processing Service)分散式平臺進行處理。每個subgraph有將近5000w個節點。2)為了生成random walk序列,我們在ODPs中使用基於迭代的分散式圖框架。通過random walk生成的序列總是將近1500億。
  • 為了實現該embedding演算法,在我們的XTF平臺上使用了100個GPU。在部署平臺上,使用1500億樣本,在離線子系統中的所有模組,包含日誌檢索、anti-spam、item圖構建、通過random walk生成序列、embedding、item-to-item相似度計算以及map生成,執行過程小於6個小時。這樣,我們的推薦服務可以在非常短時間內響應使用者最近行為。

參考