直播回顧 | 圖推薦算法在E&E問題上的應用

導讀:本次分享將圍繞以圖爲基礎衍生的一類推薦算法原理和應用,以及 E&E 問題 ( 如何應對新用戶和新內容 ) 的一些處理方法。E&E 指探索與利用,是推薦系統當中的兩個核心問題。

主要內容包括:

  • Background

  • Related Work

  • Our Work

01

Background

1. 推薦系統在 E&E 上的兩大難點

在建立推薦系統的模型之前,我們需要獲得用戶和內容的相關數據。可是在推薦系統的實踐中,經常會遇到冷啓動的問題,即缺少新進入的用戶信息和新進入的內容信息。對於用戶信息,很多公司都會有市場部從市場上的各個渠道導入進來,成本較高,且無法完全覆蓋。對於新進入的用戶,他們往往是沒有歷史行爲的,而這個行爲特徵卻是推薦系統中最重要的特徵之一。而新用戶的留存對於公司是至關重要的,所以對於新用戶的推薦要求儘可能的精準,使其對於平臺產生忠誠度。新用戶的推薦是推薦系統的第一個難題。第二個難點則是新內容的推薦,新內容首先是沒有用戶的反饋,沒有用戶的反饋也就無法利用相應的評估體系總結內容的真實價值。同時,新內容還存在難曝光的問題。現存的推薦系統,從比較傳統的推薦系統,到 Word2Vec,再到現在各種各樣的神經網絡,在召回階段都無法很好的召回新內容, 所以很難進入到訓練樣本中去,這是新內容的長尾問題。

2. 經典圖模型—協同過濾

我們可以把協同過濾認爲是一種圖推薦模型, 因爲用戶和內容可以認爲是二分圖結構。推薦系統的宗旨是建立更多的用戶到內容的鏈接,隨着圖越來越大,就可以抽取到更多的信息, 從而服務更多的用戶。以 item-based CF 爲例,通過計算 item 之間的相似度,從而計算出最相似的 topK 內容,把它們當作當前 item 的鄰接點,構成物與物相連的有向圖保存在起來。推薦時快速定位用戶接觸過的 seeds 列表:在"一推多"場景直接查找節點的鄰邊。 在 "n 推 n" 場景根據多節點對各鄰邊加權求和。在多樣性推薦中將 seeds 分組並執行多個"一推多"操作。

CF 的缺點也很明顯,首先,由於算法的設計問題,導致了它是一種偏熱門推薦。在數據過濾的初期,沒有達到某種閾值的 user 和 item 將會被過濾掉,形成馬太效應。第二,容易形成內部環路。比如某些很受歡迎的主播,他們互爲 topK,導致一直在他們內部互推。

這時,我們可以通過知識圖譜和 node2vec 來拓展圖的泛化能力。

3. Graph Embedding

我們都知道在 NLP 任務中,word2vec 是一種常用的 word embedding 方法,來源於神經網絡模型,是神經網絡的一種中間結構的簡化。結構如上圖所示:

word2vec 通過語料庫中的句子序列來描述詞與詞的共現關係,進而學習到詞語的向量表示。它是將序列向量化的一個淺層神經網絡,通常只需要有效行爲的序列就可以快速得到一個以 id 爲單特徵 item2vec 召回模型。

Graph Embedding 的思想類似 word2vec,使用圖中節點與節點的共現關係來學習節點的向量表示。在 graph 中隨機遊走生成頂點序列,構成訓練集,然後採用 skip-gram 算法,訓練出低維稠密向量來表示頂點。這種思想與傳統的協同過濾相比有兩個比較明顯的特點:

  • 序列保留了時序信息

  • 內容覆蓋率提升,相關性略降低

在 graph 中主要存在兩種關係,homophily 和 structural equivalence。所謂 homophily,即是在 graph 中緊密相連的鄰域。具有這種關係的頂點之間,學習出來的向量應該接近或者相似。structural equivalence,就是指在圖中具有相似作用的頂點,他們之間未必相鄰,甚至可能相隔較遠,都是所在鄰域的中心頂點。滿足這種關係的頂點之間,特徵向量也應該接近或者相似。通常在現實世界的 graph 中,會同時存在這兩種關係。可以表示如下結構:

但是在不同的任務中需要關注的重點不同,可能有些任務需要關注網絡 homophily,而有些任務比較關注網絡的 structural equivalence,可能還有些任務兩者兼而有之。那麼關鍵的問題就是如何來描述節點與節點的共現關係。RandomWalk 是一種可重複訪問已訪問節點的深度優先遍歷算法。給定當前訪問起始節點,從其鄰居中隨機採樣節點作爲下一個訪問節點,重複此過程,直到訪問序列長度滿足預設條件。

DeepWalk 從一個節點開始採樣,跳到下一個節點的概率完全取決於鄰邊的權重, 無法靈活地捕捉這兩種關係,在這兩種關係中有所側重。而實際上,對於這兩種關係的偏好,可以通過不同的序列採樣方式來實現。有兩種極端的方式,一種是 Breadth-First Sampling ( BFS ),廣度優先搜索,如圖中紅色箭頭所示,從 u 出發做隨機遊走,但是每次都只採樣頂點 u 的直接鄰域,這樣生成的序列通過無監督訓練之後,特徵向量表現出來的是 structural equivalence 特性。另外一種是 Depth-First Sampling ( DFS ),深度優先搜索,如圖中藍色箭頭所示,從 u 出發越走越遠,學習得到的特徵向量反應的是圖中的 homophily 關係。Node2vec 則額外定義了參數 p、q,用於控制回退、BFS、DFS 動作。

02

Related Work

1. Alibaba graph-embedding

首先我們介紹一篇阿里巴巴的圖嵌入技術論文 "Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba ( kdd 2018 )", 其流程如下圖所示:

首先如圖 (a),假設每個用戶有不同的用戶行爲,每個用戶瀏覽過不同的 item 按時間順序排列。這裏有一個業務上的技巧,就是把用戶在某個時間窗內的連續行爲作爲一個 session,例如一個小時,如果超過時間窗,就劃分爲不同的 session。通常在短週期內訪問的商品更具有相似性。每個 session 構成一個 sampled sequence,將所有 sampled sequence 構成有向圖,圖邊表示該方向流過的次數,得到的 graph。

如圖 (b),邊權重記錄了商品的出現次數。計算商品的轉移概率,並根據轉移概率做遊走,生成商品序列,圖 (c)。最後通過 skip-gram 訓練出 embedding。

新商品沒有用戶行爲,因此無法根據 Base Graph Embedding ( BGE ) 訓練得出向量。爲了解決物品的冷啓動問題,阿里加上了物品的邊信息 Side Information ( SI ),例如品牌,類別,商店等信息。SI 相似的商品,在向量空間中也應該接近。如下圖所示:

在最下面的 Sparse Features 中, SI0 表示商品本身的 one-hot 特徵, SI1 到 SIn 表示 n 個邊信息的 one-hot 特徵,阿里採用了13種邊信息特徵。每個特徵都索引到對應的 embedding 向量,得到第二層的 Dense Embeddings,然後將這 (n+1) 個向量做平均來表示這個商品,公式如下圖。 其中,Wvs 表示商品 v 的第 s 個邊信息向量, Hv 是隱向量。

剩下的事情就和 BGE 相同了。這個做法叫 Graph Embedding with Side Information ( GES )。不同的邊信息對於商品的向量可能會有不同的貢獻,可以另外學習一個權重矩陣 A∈R|V|×(n+1),其中 |V| 表示商品集合 V 的數量,Aij 表示第 i 個商品的第 j 個邊信息權重。計算方法如下所示,從平均變成了加權求和。對權重取 e 的指數是爲了保證所有邊信息的權重大於0。

這個方法叫做 Enhanced Graph Embedding with Side Information ( EGES )。

2. Airbnb Word2Vec

Airbnb 提出的冷啓動和採樣方式同樣值得我們借鑑。首先,它同樣是採用 session 進行分割的,而且明確指出 30mins 內的連續有序 sequences。同時提出了一個新的負採樣策略,即從與當前 item 的同一個 cluster 裏面採樣負樣本。而且 Airbnb 強化了付費行爲的訓練。點擊序列中若有付費行爲,則將這個 item 強制納入該序列每個 item 的上下文窗口。

Airbnb 的冷啓動策略很簡單, 他並沒有做 end2end 的學習屬性的 embedding,而是直接把 new item 按主要屬性 ( 房間數,地域,地段等等 ) 檢索到最相似的 top3 個已知的 item,取3個 item 向量的平均值初始化 new item embedding。

更多詳情,請參考:

Real-time Personalization using Embeddings for Search Ranking at Airbnb ( kdd 2018 )

03

Our Work

1. Mixed Graph-Vector model

在實踐中,我們發現 CF 算法用於實時召回表現出的點擊率較高,但召回存在上限,word2vec 算法表現出的泛化能力較好,可以讓更多的內容得到召回,但也就帶了泛化提升後的不確定性。兩個召回策略是存在很多數據重疊,思考能否從精簡算法的角度將兩者合併起來,並各取所長。

具體來說,生成策略可以表示爲下圖:

先利用之前 CF 算法的計算得到的內容相似度矩陣,取最相似的 topK 重建一個 item 間相似性關聯圖,採用 node2vec 算法,對上圖進行隨機遊走生成序列,再使用 word2vec 完成 graph embedding。所以我們最終可以得到兩個產物,一個 item similarity graph,即原來的協同過濾圖。第二個則是由 graph embedding 產生的 item embedding。

在推薦時,先通過用戶觸摸過的 item seed 定位到圖節點,如果 item 不在模型則終止。然後獲取到圖節點距離1的鄰接點,如果已推薦則擴展到距離2的鄰接點,此時會進行一個過濾操作,已推薦的不會再推。如果推薦數據不足則使用圖節點向量進行 vector search,運用向量最簡單的方法就是內積或者餘弦相似度,尋找出 N 個與其最相似的 item 進行補充。所以最終的推薦結果,結合了 CF 與 Graph embedding 兩者的優勢。

2. Side Info Graph

上述的混合模型在性能上的提升僅來自其模型層面做的 graph embedding,即圖中的節點爲所有內容的邊界,帶來的覆蓋提升也不會突破這個邊界。因此對於冷啓動內容的處理,我們將標籤作爲一種冷啓動參數參與到模型訓練,使得新內容可以被高級模型接受。

這裏與阿里巴巴的 EGES 構建圖的策略不同,我們沿用了協同過濾生成的 item 相似矩陣構建 graph。在 embedding 和權重的訓練過程與 EGES 過程一樣。訓練完之後,我們可以獲得特徵的 embedding 和權重矩陣。這個方法主要是針對新內容的冷啓動問題。

3. Two tower DSSM

對於 user 和 item 的匹配,我們採用的是雙塔結構進行匹配,具體結構如下:

雙塔結構很簡單,左側爲 user 的行爲特徵和基本特徵的 embedding,拼接後經過全連接層和激活層的特徵融合和提取,形成 user vector。同理右側的 item network,可以通過之前 GES 計算的 item 的 embedding,進行特徵融合。最後將 user vector 和 item vector 進行內積和 sigmoid 函數輸出匹配分數。

在工程上,由於用戶行爲的實時性,user vector 需要進行實時計算。但 item 側的相關 embedding 可以通過查表得到,節省資源和計算時間。

4. Graph Restrict Vector Search

我們採用圖來約束推薦的搜索範圍。我們的新用戶面臨兩種類型:

  • 第一種是他可能有標籤但是沒有行爲,或者行爲很少。

  • 第二種是完全沒有行爲,需要我們去探索。

我們主要利用圖結構 item 之間的約束關係,比如說我們剛剛生成的用戶向量,它的搜索結果僅限於用戶剛剛點擊或者瀏覽的 item 相鄰的節點,而這些節點是我們通過大量的用戶反饋所生成的邊的關係。所以用圖約束進行搜索,一方面可以加快計算速度,還可以進一步探索下一個曝光 item 的性質。

04

問答環節

問:構建 session 過程中怎麼過濾異常的數據?

答:這裏我提出幾個比較典型的異常情況:

  • 異常點擊 ( 時間太短的點擊 )

  • 異常 item ( 更新異常頻繁的 item )

  • 異常用戶 ( 點擊量異常多的 user )

問:Two tower 中的 user scene vector 和 item scene vector 的區別?

答:這兩個是 user 和 item 的 feature field,可以根據需要進行整理。比如 user scene 包括 location、time、event、weather 等, item scene 包括 location、upload、division 等。

問:圖不是全連通的,有多個子圖,這種怎麼樣做 embedding 比較好?

答:如果圖是隔斷的,那直接當作兩個圖來做兩次 embedding,因爲很難有額外信息通過邊把兩個圖聯繫起來。 

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

分享嘉賓

莊正中

前荔枝FM | 資深數據挖掘工程師

現於某互聯網公司任資深推薦算法工程師,負責直播產品推薦系統的設計開發工作。曾在荔枝FM和酷狗音樂負責推薦算法和文本處理相關工作,擅長神經網絡的數據建模。

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