MEIRec-Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation意圖推薦 KDD2019

在這裏插入圖片描述
論文來源:KDD2019
論文鏈接
代碼鏈接

1、摘要

本文是通過學習到節點的表示,解決意圖推薦問題

什麼是意圖推薦:意圖推薦在電商領域應用廣泛,是指在用戶沒有輸入的前提下,根據用戶的歷史行爲爲用戶做推薦。淘寶的搜索欄在你沒有輸入的時候,會有一些灰色的字,這就是意圖推薦。

作者提出,將意圖推薦中的複雜對象和豐富的交互信息建模爲HIN。爲了充分利用HIN中豐富的結構信息,作者設計了metapath-guided的異質GNN,以學習意圖推薦中節點的嵌入表示,提出了Metapath-guided Embedding method for Intent Recommendation (MEIRec)模型。

作者在真實數據集上進行了線下實驗,並且在淘寶上進行了線上實驗,證明了MEIRec的有效性。

2、引言

2.1、 什麼是意圖推薦?意圖推薦有什麼意義?

推薦系統已成爲電商平臺的一項基本業務,近兩年來意圖推薦開始興起。意圖推薦通過分析用戶的歷史行爲,揣測出用戶的搜索意圖,用幾個單詞概括,在App搜索欄自動地爲用戶預先輸入搜索詞。

意圖推薦節省了用戶輸入的時間,當用戶不知道用什麼詞描述想要搜索的商品時,意圖推薦也有助於幫助用戶找到他們想要的商品。

圖1就是淘寶上進行意圖推薦的例子,搜索欄裏就是意圖推薦的結果,點擊搜索按鈕就會自動跳轉到相關商品的頁面。
在這裏插入圖片描述

2.2、什麼是歷史數據?

歷史數據可以粗略分爲兩類

  • 屬性數據:節點的屬性信息,比如用戶的個人信息、商品的屬性信息;
  • 交互數據:由users, items, queries組成的三元組數據,例如用戶點擊(item)日誌、用戶搜索(query)日誌、query guide(item)日誌。

2.3、本文的意圖推薦和傳統的查詢推薦的不同之處

  • 根據用戶的行爲數據做推薦,而不是做與之前類似的查詢,也就是說推薦的query可能不是先前的query;
  • 不需要用戶提供任何輸入信息。

2.4、本文的意圖推薦與商品推薦的不同之處

  • 商品推薦考慮的是users和items的二元交互信息,而本文的意圖推薦考慮的是三元組的交互關係,例如 users, items, queries。
  • 和靜態的推薦不同,意圖是不斷動態變化的。

2.5、現有的意圖推薦方法

淘寶和亞馬遜通常採用人工抽取特徵的方法,然後將這些特徵輸入到例如GBDT, XGBoost的分類器中。

這些方法非常依賴於專業的領域知識,而且耗費人工。而且現有的方法僅僅使用靜態的users, queries的信息和屬性信息,不能充分利用實體間豐富的交互信息。

2.6、HIN的引入

將豐富的交互信息構建成HIN,如圖2(a)所示,HIN可以清晰地刻畫出節點和它們之間的各種關係,例如“用戶點擊商品”、“用戶搜索商品”、“查詢搜索出商品”(query guide item)。

也有一些方法使用HIN進行推薦,基於元路徑挖掘出users和items的交互信息,但是這些方法不能處理三元組的交互信息。
在這裏插入圖片描述

2.7、作者提出

作者提出MEIRec模型用於意圖推薦,使用異質的GNN學習users和queries的結構特徵表示。

作者還使用了metapath-guided的鄰居,以聚合豐富的鄰居信息。另外,針對鄰居的不同類型的信息,設計不同的聚合函數。

爲了能夠處理大規模數據,減少參數量,作者設計了統一的嵌入機制,讓users和querise映射到term的嵌入空間,users和queries都是由多個term組成的。

同時使用 靜態的特徵 以及 從交互信息中學習到的users和queries的嵌入表示,構建預測模型以用於意圖推薦。

2.8、本文的貢獻

  • 提出意圖推薦問題,即根據用戶的歷史行爲對其進行自動的意圖推薦。
  • 提出基於GNN的模型MEIRec,將意圖推薦系統建模成HIN,利用元路徑指導下的鄰居的豐富信息。提出統一的嵌入機制以減少參數。
  • 線下實驗超過baselines,淘寶線上實驗也證明了模型的有效性。

3、一些定義

3.1、意圖推薦

給定集合 <U,I,Q,W,A,B><U,I,Q,W,A,B>,其中 U={u1,...,up}U=\{u_1,...,u_p\}表示pp個用戶, I={i1,,iq}I=\{i_1,\cdots,i_q\}表示qq個商品,Q={q1,,qr}Q=\{q_1,\cdots,q_r\}表示rr個請求,W={w1,,wn}W=\{w_1,\cdots,w_n\}表示nntermsAA表示節點的屬性,BB表示不同類的節點間的交互關係。

本文中的一個請求qq或者是一個商品ii,都是有多個terms ww組成的。

意圖推薦的目的是爲user推薦最貼合意圖的query。

3.2、元路徑指導的鄰居

從給定的節點oo出發,按照元路徑pp的模式訪問到的鄰居節點。定義第ii步訪問到的鄰居爲Npi(o)N_p^i(o)Np0(o)N_p^0(o)就是oo節點。

如圖2(a)所示,給定元路徑“User - Item - Query”和user u2u_2,可以得到metapath-guided neighbors NUIQ1(u2)={i1,i2},NUIQ2={q1,q2,q3}N_{UIQ}^1(u_2)=\{i_1,i_2\},N_{UIQ}^2=\{q_1,q_2,q_3\}。這樣,節點u2u_2在元路徑指導下的所有鄰居爲:{NUIQ0(u2),NUIQ1(u2),NUIQ2(u2)}={u2,i1,i2,q1,q2,q3}\{N_{UIQ}^0(u_2),N_{UIQ}^1(u_2),N_{UIQ}^2(u_2)\}=\{u_2,i_1,i_2,q_1,q_2,q_3\}

4、模型

4.1、模型概覽

MEIRec的基本思想是設計一個異質的GNN以學習到users和queries的豐富表示。模型在元路徑的指導下選擇每一步的鄰居節點。由於節點類型多樣,爲了減少參數,提出了統一的嵌入方法(uniform term embedding)。注意,queries和items的標題(titles)都是由一定數量的terms組成的

圖3展示了MEIRec的整體框架。首先,將三元組<user, item, query>作爲輸入。接着,使用統一的term embedding爲items和queries生成初始的嵌入。然後,聚合元路徑指導得到的鄰居信息,通過異質的GNN學習到users和queries的嵌入。再分別把基於不同元路徑得到的users和queries的嵌入融合。最後,同時利用融合後的users, queries的嵌入和它們的靜態特徵,預測user會搜索特定query的概率。接下來將對模型詳細介紹。
在這裏插入圖片描述

4.2、統一的嵌入方法

之前的基於神經網絡的推薦方法,爲每個user/query都提供一個唯一的嵌入表示。但是在意圖推薦場景下,有數以十億的users和queries,若使用傳統的協同過濾方法或者基於神經網絡的方法處理所有的users和queries,參數的規模將會非常非常大。

作者注意到,queries和items的標題都是由多個term組成的,而且term的數量並不是很多。所以,使用一定數量的term的嵌入表示作爲queries和items的嵌入表示,這樣就只需要學習term的嵌入就可以了,不需要學習所有節點的嵌入,參數量就大大減少了。而且之前沒有被搜索過的query也可以通過這些term表示。

個人感覺如果把query, item看成NLP中的單個詞語的話,term就可以看成是義原。

首先,要從queries和items的標題中抽取出terms,組成詞典 W={w1,w2,...,wn1,wn}W=\{w_1,w_2,...,w_{n−1},w_n\}

由圖3(a)-(b)所示,query "Hand Bag"由"Hand"和"Bag"兩個term組成,item “LV Hand Bag"由"LV”, “Hand”, "Bag"三個term組成。
在這裏插入圖片描述
以圖3(b)種的q2,i2q_2,i_2爲例,q2q_2{w1,wn}\{w_1,w_n\}組成,i2i_2{w1,wn1,wn}\{w_1,w_{n-1},w_n\}組成。使用multi-hot編碼來表示q2,i2q_2,i_2
在這裏插入圖片描述
term embedding映射函數將所有term映射成了dd維的向量表示ewie_{w_i}。在look-up層,queries/items被表示成term embedding的組合,使用函數g()g(⋅)(文章中使用的是取平均)聚合這些term embeddings就可以得到queries/items的embeddings:
在這裏插入圖片描述
這樣就將queries, items的嵌入表示統一到了term的嵌入空間中。而且可以同時利用所有的節點嵌入來優化term embeddings,這樣就可以得到包含user-query, user-item交互信息的term embeddings。

4.3、Metapath-guided Heterogeneous Graph Neural Network

受GCN的啓發,提出元路徑指導的異質GNN。利用元路徑來獲得在遊走過程中,從初始節點出發,在不同步下的鄰居節點。通過聚合在不同元路徑下得到的鄰居信息,得到uers, queries的嵌入。
在這裏插入圖片描述
圖4就描述了基於多個元路徑(UIQ, UQI)得到u2u_2的嵌入U2U_2的過程。

(1)首先根據元路徑UIQ聚合鄰居信息:先使用統一的term embedding獲得queries的初始嵌入。

(2)然後根據元路徑UIQ得到鄰居節點 NUIQ1(u2)={i1,i2},NUIQ2(u2)={q1,q2,q3}N^1_{UIQ}(u_2)=\{i_1, i_2\}, N^2_{UIQ}(u_2)=\{q_1, q_2, q_3\}

(3)接着,聚合二階鄰居的嵌入來得到一階鄰居的嵌入。也就是聚合q1q_1的嵌入得到i1i_1的嵌入,聚合q2,q3q_2, q_3的嵌入得到i2i_2的嵌入。

(4)最後,聚合一階鄰居{i1,i2}\{i_1, i_2\}的嵌入得到目標節點u2u_2的嵌入U2UIQU^{UIQ}_2

(5)按照上述方法得到在多條元路徑指導下的u2u_2嵌入,然後再將它們聚合成user u2u_2的最終嵌入表示U2U_2

4.4 User Modeling

本小節介紹MEIRec建模user嵌入的細節。

基於元路徑UIQUIQ得到的節點uiu_i的二階鄰居節點集合{q1,q2,...}\{q_1,q_2,...\},聚合它們的嵌入表示,得到uiu_i的一階鄰居節點集合{i1,i2,...}\{i_1,i_2,...\}的嵌入表示。例如item iji_j的嵌入IjUIQI^{UIQ}_j表示爲:
在這裏插入圖片描述
其中g()g(\cdot)是聚合函數,針對不同類型的鄰居,使用不同的聚合形式,上式使用的是求平均值。queries集合{q1,q2,...}\{q_1,q_2,...\}是item iji_j的鄰居。

接着聚合uiu_i的一階鄰居節點集合{i1,i2,...}\{i_1,i_2,...\},得到uiu_i的嵌入表示:
在這裏插入圖片描述
注意,由於users不同時間和不同的queries, items有交互(帶有時間戳),所以users的鄰居節點(例如 items, queries)被建模成序列。

RNN更適合處理序列數據,所以MEIRec使用LSTM動態建模users的鄰居節點,也就是說(4)式中的g()g(\cdot)指的是LSTM。

最後,聚合基於不同元路徑{p1,p2,...,pk}\{p_1, p_2,..., p_k\}(均以user節點爲起始點)的user嵌入,得到最終的混合的user嵌入表示:
在這裏插入圖片描述

4.5、Query Modeling

像user信息聚合一樣,對於query也是同樣的操作。基於不同元路徑{p1,p2,...,pk}\{p_1, p_2,..., p_k\}(均以query節點爲起始點),得到混合後的query嵌入QiQ_i
在這裏插入圖片描述
注意,queries的鄰居節點(例如 items, users)沒有時間順序,所以使用CNN爲queries的鄰居節點動態建模,聚合函數g()g(\cdot)指的是CNN。

4.6、優化目標

首先計算出靜態特徵,包括users, queries的屬性特徵和交互信息中的靜態特徵。然後將這些特徵輸入到多層感知機(MLP),得到靜態特徵SijS_{ij}

接着,將Ui,Qj,SijU_i,Q_j,S_{ij}作爲輸入,對於user uiu_i預測其搜索query qjq_j的概率爲y^ij\hat{y}_{ij}
在這裏插入圖片描述
其中,f()f(\cdot)就是MLP,\oplus是向量拼接操作。

採樣正樣本和負樣本,yij{0,1}y_{ij}\in \{0, 1\}表示真實標籤,最終的損失函數如下:
在這裏插入圖片描述

5、實驗

5.1、離線實驗

數據集:
從淘寶客戶端收集了真實的5天的交互數據。
在這裏插入圖片描述
對比方法:

  • LR:使用靜態特徵的線性模型
  • DNN:輸入同LR,3層MLP
  • GBDT:基於樹的模型,輸入靜態特徵
  • LR/DNN/GBDT+DW:輸入users, queires的靜態特徵,以及DeepWalk得到的預訓練的帶有結構信息的embedding
  • LR/DNN/GBDT+MP:同上,區別在於使用MeataPath2vec得到預訓練的embedding
  • NeuMF:top-N推薦的state-of-the-art,輸入結構信息(users, queries間的交互信息),不能輸入靜態特徵

實驗結果:
在這裏插入圖片描述
文章中還進行實驗研究了不同聚合函數的影響、不同元路徑的影響、不同數目的鄰居的影響。

不同聚合函數的影響
在這裏插入圖片描述
這裏,MEIRecstatsMEIRec_{stats}表示只使用靜態特徵;MEIRecstruMEIRec_{stru}表示只使用結構特徵;MEIRecavgMEIRec_{avg}表示靜態特徵和結構特徵都使用,但是使用平均函數AVG來聚合本模型中用戶users和查詢queries的鄰居節點;MEIReclstmMEIRec_{lstm}使用靜態特徵和結構特徵,但是使用LSTM來聚合用戶users的鄰居節點,使用平均函數AVG來聚合查詢queries的鄰居。MEIRec是本文提出的模型。

不同元路徑的影響:
在這裏插入圖片描述

不同數目的鄰居的影響:
在這裏插入圖片描述

5.2、在線實驗

在淘寶移動客戶端上進行了在線實驗
在這裏插入圖片描述

6、總結

本文研究的是電商領域中的意圖推薦,並且成功運用到了淘寶App中。

意圖推薦指的是通過分析用戶的歷史行爲,揣測用戶的搜索意圖,在搜索欄自動生成搜索詞(query),節省了打字的時間,同時也爲不知道如何描述想搜索的商品的用戶提供了便利。

模型思路清晰,首先建立起user, item, query爲節點的HIN,然後按照預先定義的元路徑獲得目標節點的多階鄰居節點,將其按照GNN迭代的方式逐層聚合,得到目標節點的嵌入表示。然後再將不同元路徑下得到的user, query的嵌入表示據聚合,和節點的靜態特徵一起輸入進多層感知機中,預測出user發出該query的概率。最後優化目標函數並調參,以更準確地進行意圖推薦。

有兩點需要注意:

(1)由於節點數目非常多,數以十億,爲每個節點都學習到唯一的嵌入表示的話,參數量是非常巨大的。所以作者提出了term embedding的概念,即query和item的題目都是由幾個term組成的,只爲每個term學習到唯一的嵌入表示,再將其組合就可以得到對應的query和item的嵌入表示了,這就大大減少了參數量,增加了應用落地的可行性。

(2)對於不同類型的節點的鄰居,採用的聚合函數是不同的。例如對user來說,用戶的行爲是有時序性的特徵的,所以它的鄰居節點就被建模成了序列,自然用LSTM這種RNN的方法聚合效果更好。而對於query來說,它的鄰居節點沒有順序性,文章中顯示採用CNN聚合效果更好。

元路徑需要提前定義好,不過對於電商平臺來說,節點類別和邊類別沒有那麼多,例如文章中節點一共有3中,邊有3種。就算人爲設定,工作量也不是很大。

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