圖機器學習在螞蟻集團推薦業務中的應用

語言: CN / TW / HK

分享嘉賓 :塗珂 博士 螞蟻集團 高階演算法工程師

編輯整理:楊佳燁 電子科技大學

出品平臺:DataFunTalk

導讀: 本文將介紹圖機器學習在螞蟻推薦系統中的應用。在螞蟻的實際業務中,有大量的額外資訊,比如知識圖譜、其他業務的使用者行為等,這些資訊通常對推薦業務很有幫助,我們利用圖演算法連線這些資訊和推薦系統,來增強使用者興趣的表達。

全文主要圍繞以下幾方面內容展開:

  • 背景

  • 基於圖譜的推薦

  • 基於社交和文字的推薦

  • 基於跨域的推薦

01

背景

支付寶除了最主要的支付功能外還有大量的推薦場景,包括腰封推薦、基金推薦和消費券推薦等等。支付寶域內的推薦相比於其他推薦最大的區別是使用者的行為稀疏,活躍度較低,很多使用者開啟支付寶只是為了支付,不會關注其他東西。所以 推薦網路中UI邊的記錄是非常少的,我們的關注點也是低活目標的推薦。 比如為了提升DAU,可能只會給低活使用者在腰封投放內容,正常使用者是看不到的;基金推薦板塊我們更關注的是那些沒有理財或理財持倉金額較低的使用者,引導他們買一些基金進行交易;消費券的推薦也是為了促進低活使用者的線下消費。

低活使用者歷史行為序列資訊很少,一些直接根據UI歷史行為序列來推薦的方法可能不太適用於我們的場景。 因此我們引入了下面三個場景資訊來增強支付寶域內的UI關係資訊:

  • 社交網路的UU關係

  • II圖譜關係

  • 其他場景的UI關係

通過社交網路的UU關係可以獲取低活使用者好友的點選偏好,根據同質性就可以推斷出該使用者的點選偏好,物品與物品之間的圖譜關係可以發現、擴充套件使用者對相似物品的喜好資訊,最後跨域場景下的使用者行為對當前場景的推薦任務也有很大幫助。

02

基於圖譜的推薦

很多推薦場景中使用者的行為是稀疏的,尤其是在對新使用者進行刻畫時,可利用的行為資訊很少,所以通常要引入很多輔助資訊,比如attribute、contexts、images等等,我們這裡引入的是knowledge graph—知識圖譜。

1 現存挑戰

知識圖譜是一個大而全的歷史專家知識,有助於我們的演算法推薦,但是還存在兩個問題:

一是 圖譜本身可能並不是為了這個業務而設計的,所以裡面包含很多無用資訊,訓練過程也非常耗時。 一個常用的解決辦法是隻保留圖譜中能關聯上我們商品的邊,把其他邊都刪掉,但這又可能會造成一些資訊損失,因為其他邊也是有用的。

二是圖譜用做輔助資訊時,沒辦法將使用者的偏好聚合到圖譜內部的邊上 。如上圖所示,使用者1喜歡電影1和電影2的原因可能是因為它們有同一個主演,而使用者2喜歡電影2和電影3的原因是它們的型別相同。如果只用普通的圖模型的UI、II關係來建模,只能得到使用者和電影的相關性,而沒辦法將使用者的這些潛在意圖聚合到圖譜中。

所以我們後面主要解決圖譜蒸餾和圖譜精煉這兩個問題。

2 現有方法

  基於Embedding的模型

基於Embedding的方法先通過圖譜表徵學習的方法把圖譜中的節點轉化為一個Embedding,然後將Embedding直接接入到UI模型中。這類方法提前學習了圖譜中的相關性,並把其轉為一個Embedding,所以很難再衡量使用者與知識邊的相似性,沒有解決圖譜蒸餾和圖譜精煉的問題。

② 基於Path的模型

基於Path的方法根據圖譜中的知識邊把圖譜分解為多條meta-path,但是構建meta-path 的過程需要很多專家知識,同時也沒有體現出使用者對知識邊的偏好。

  基於GCN的模型

基於GCN 的方法通過UI和II關係建模,一般通過attention的方法根據不同型別的邊取不同的權重,但邊的權重只和邊兩端的節點表徵相關,與目標節點的表徵無關。

3 解決方案

我們提出的模型主要分為4個部分,首先通過圖譜表徵學習得到圖譜表徵,利用知識依賴傳播來學習、聚合得到不同邊的重要性,然後通過一個蒸餾模組對圖譜中的邊取樣、去噪,再加入條件注意力做圖譜精煉,最後做一個雙塔模型得到結果。

下面介紹每一部分的具體細節:

  圖譜表徵學習層

我們這裡使用的是傳統的TransH圖譜表徵模型,因為我們的圖譜中有很多many-to-one和one-to-many的邊。通過TransH把每一個節點都對映到邊對應的空間中,在這個空間上衡量兩個邊的相似性。

  圖譜表徵學習層

學習完圖譜邊的表徵後,在鄰居內聚合圖譜邊的表徵,再通過求不同的邊空間的cos距離作為點的加權聚合圖譜點的表徵。因為圖譜中的邊的噪聲很大,所以我們會做一個額外的取樣,根據我們學到的權重在目標子圖上進行取樣,目標子圖就是使用者和商品的二階子圖合在一起,經過取樣得到更小的子圖。

  圖譜表徵學習層

得到子圖之後,我們做一個條件注意力,在給定使用者和商品的情況下衡量邊的重要性。邊的重要性可以分為兩部分,一部分是這個邊本身很重要,另一部分是使用者很關注這個邊。邊本身的重要性已經在上一步中的知識依賴注意力中學習了,不用再做額外訓練,使用者對邊的重要性是通過將所有目標集合的表徵和邊兩端點的表徵拼接做一個注意力得到條件注意力,再根據條件注意力做點的聚合。

④ 雙塔 模型  

最後做一個雙塔模型衡量pairwise loss,用類Adam方法同時優化圖譜表徵學習loss和推薦系統的目標loss,我們的演算法複雜度與點和邊的數量呈線性關係。

4 實驗結果

  實驗資料集和基準模型選擇

 

我們選取了一些推薦系統加知識圖譜的資料集和我們業務的基金推薦資料集,baseline主要有基於正則的CKE方法,基於矩陣分解的NMF方法,基於Path的異構圖的方法RippleNet和基於GCN的KGAT。

②注意力視覺化  

左邊的Knowledge attention中,每條邊上的數值只和兩端節點相關,在右上角的 U 532 i 1678 上的值很小,後面就不容易取樣到這條邊。右邊的兩個圖使用者都是 U 0 ,但商品不一樣,整個圖的權重就完全不同。在預測 U 0 - i 2466 以及 U 0 - i 780 的相關性時,兩個圖最右一條路的權重就完全不同,並且 U 0 - i 2466 的最右一條路徑的權重更大一些,因為在預測 U 0 - i 2466 的相關性時最右邊的一條路要更重要一些。

模型評價

我們在Top-K推薦和CTR點選任務上衡量了模型效果,相比於baseline模型都有很大提升,在線上做基金推薦A/B testing實驗也帶來效果的提升。最後我們做了消融實驗,結果顯示去掉條件注意力或知識注意力模型效果都會下降,證明了我們所做改進的有效性。

03

基於社交和文字的推薦

我們這裡的基於社交和文字的推薦不是一個傳統意義上的推薦場景,主要是為了幫助運營理解使用者意圖,給使用者創造一些新內容、新廣告來引導使用者增長 。比如腰封推薦的封面如何設計,運營只有在充分理解使用者意圖後才能設計出符合使用者心理預期的內容。

1 現存挑戰

一個自然的方法就是使用Topic Model來衡量使用者到意圖,意圖到商品的分佈,把使用者當做一個文件,商品當做一個單詞分解出使用者意圖。但實際上使用者的點選是稀疏的,尤其是我們的目標客戶是低活使用者時,並且商品的點選服從長尾分佈,也很難獲取使用者的興趣和意圖。

2 解決方案  

首先我們將UU關係和UI關係都加入到GNN中來學習,衡量使用者的點選行為,然後我們對學習到的使用者—意圖先驗分佈做一個近似,傳統的Topic Model的先驗分佈是一個狄利克雷分佈,我們這裡用的是一個Logistic Normal的分佈,它和狄利克雷分佈長得很像,可以通過一些重引數化的工作使得這個分佈的學習是可導的。

學習完使用者與使用者之間的關係後,下一步學習語料間的關係。上圖中有一個小程式,裡面有一段文字描述,利用skip-gram模型計算item與正、負樣本的相似度,得到單詞的相似度,並通過一個DNN將單詞的相似度對映為使用者意圖表徵,最後通過KL散度約束分佈調整為我們想要的形式。

3 實驗結果

我們的資料集是使用者的連續7天的點選資料,其中包括大約50萬用戶,9206件商品和2億使用者歷史點選行為,社交網路中包括700萬條邊,每個使用者平均有14-15個鄰居節點。

我們分別做了離線和線上實驗測試,離線實驗衡量了不同數量Topic下的使用者間的相似性和語義間的相似性。線上實驗通過我們的模型預測出的使用者意圖反饋給運營,運營根據使用者意圖設計描述文字和展示頁面做線上推薦。整體模型的實驗鏈路可能比較長,因為運營中間會產出一些素材,線上A/B實驗的目標分為兩部分,一部分是運營根據我們的模型反饋設計素材,一部分是利用歷史專家經驗做產出。實驗結果顯示我們的模型在離線、線上實驗中都相較於之前有了很大提升。

04

基於跨域的推薦

我們的推薦目標是低活使用者,他們可能沒有標籤,沒有特徵,甚至從來沒有使用過支付寶。上圖中我們首先分析了使用者之間的相似性,其中與藍色代表陌生人的行為相似性,紅色代表與朋友的行為相似性,結果顯示關係更接近的朋友行為重疊度更高,所以我們可以使用使用者的好友行為資訊作為使用者資訊的一個補充。然後我們分析了活躍使用者和不活躍使用者的好友數量,發現活躍使用者的好友數量是遠多於不活躍使用者的,所以我們想能不能 把活躍使用者的點選資訊遷移到其不活躍的好友資訊上來輔助推薦。

所以我們模型的一個核心思想就是對齊活躍使用者和不活躍使用者的特徵空間, 因為不活躍使用者在很多特徵上都是缺失的,所以他和活躍使用者的特徵空間本質上是不一樣的。這裡我們使用GNN學習使用者的表徵,將使用者的表徵對映到一個共同空間。如上圖所示,CD-GNN的結構上層是我們想預測的一個活躍使用者,下層是我們想預測的一個不活躍使用者,他們經過兩個GNN的學習再通過一個領域不變層對映到一個共享的表徵上,最後對活躍使用者和非活躍使用者都做一個label的預測。

具體來說,圖模型包括Social網路和User-Page網路,對兩個網路做不同的聚合,通過Domain Invariant Layer將活躍使用者和非活躍使用者對映到同一空間,最終的loss=Source loss+Target loss-Domain invariant loss。 線上的A/B實驗效果顯示我們的模型相較於GCN在CTR上提升很大,在行為稀疏的情況下我們的模型仍然能取得一個好的效果。

上面是我們團隊近期發表的一些成果,我講的主要是上面3篇的工作。

05

互動問答

Q1:CD-GNN層的引數是不是共享的?

A1:不是共享的,因為活躍使用者的一些特徵,比如ID特徵是遠多於不活躍使用者的,兩者的特徵分佈並不一致,所以這裡我們沒有做共享 。

Q2:跨域推薦的問題中不活躍使用者的Target Label數量很少,導致模型對不活躍使用者的Target Embedding學習很差,這類問題應該怎麼考慮?

A2:可以用一些pre-trained方法來提前增加一些表徵資訊,或者把缺失的特徵通過一些方法補充上。可以邊做圖模型邊做特徵的補充,把鄰居的特徵也補充過來,而不是隻簡單把鄰居特徵聚合,其中再新增類似於特徵重構的loss可能會幫助解決這個問題。

Q3:第一個基於圖譜的方法是在精排場景落地的?裡面的GNN一般做到幾階?

A3:我們的基金推薦板塊給使用者曝光的只有5個基金,不像其他場景下推薦出一個列表,底下可能有幾百條資訊,使用者可以一眼看到這5個基金,重排的影響不是很大。我們模型的結果直接接到線上,是一個精排模型。一般就做到兩階GNN,三階在一些任務上的提升不是很大,並且線上的時延太長了。

今天的分享就到這裡,謝謝大家。

在文末分享、點贊、在看,給個3連擊唄~

01 / 分享嘉賓

塗珂 博士

螞蟻集團  高階演算法工程師

塗珂,2020年博士畢業於清華大學計算機系,主要研究方向為圖機器學習,推薦系統等等,在kdd,aaai,cikm等國際頂級會議發表多篇文章,畢業後加入螞蟻圖學習團隊工作一年半到現在,主要從事營銷,搜尋,推薦相關業務,將圖學習在這些應用場景中落地。

02 / 專題電子書 限時免費送

03 / 報名看直播 免費領PPT

04 / 關於我們

DataFun: 專注於大資料、人工智慧技術應用的分享與交流。發起於2017年,在北京、上海、深圳、杭州等城市舉辦超過100+線下和100+線上沙龍、論壇及峰會,已邀請超過2000位專家和學者參與分享。其公眾號 DataFunTalk 累計生產原創文章800+,百萬+閱讀,14萬+精準粉絲

  分享、點贊、在看 ,給個 3連擊 :point_down: