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、意圖推薦
給定集合 ,其中 表示個用戶, 表示個商品,表示個請求,表示個terms,表示節點的屬性,表示不同類的節點間的交互關係。
本文中的一個請求或者是一個商品,都是有多個terms 組成的。
意圖推薦的目的是爲user推薦最貼合意圖的query。
3.2、元路徑指導的鄰居
從給定的節點出發,按照元路徑的模式訪問到的鄰居節點。定義第步訪問到的鄰居爲,就是節點。
如圖2(a)所示,給定元路徑“User - Item - Query”和user ,可以得到metapath-guided neighbors 。這樣,節點在元路徑指導下的所有鄰居爲:。
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,組成詞典 。
由圖3(a)-(b)所示,query "Hand Bag"由"Hand"和"Bag"兩個term組成,item “LV Hand Bag"由"LV”, “Hand”, "Bag"三個term組成。
以圖3(b)種的爲例,由組成,由組成。使用multi-hot編碼來表示:
term embedding映射函數將所有term映射成了維的向量表示。在look-up層,queries/items被表示成term embedding的組合,使用函數(文章中使用的是取平均)聚合這些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)得到的嵌入的過程。
(1)首先根據元路徑UIQ聚合鄰居信息:先使用統一的term embedding獲得queries的初始嵌入。
(2)然後根據元路徑UIQ得到鄰居節點 。
(3)接着,聚合二階鄰居的嵌入來得到一階鄰居的嵌入。也就是聚合的嵌入得到的嵌入,聚合的嵌入得到的嵌入。
(4)最後,聚合一階鄰居的嵌入得到目標節點的嵌入。
(5)按照上述方法得到在多條元路徑指導下的嵌入,然後再將它們聚合成user 的最終嵌入表示。
4.4 User Modeling
本小節介紹MEIRec建模user嵌入的細節。
基於元路徑得到的節點的二階鄰居節點集合,聚合它們的嵌入表示,得到的一階鄰居節點集合的嵌入表示。例如item 的嵌入表示爲:
其中是聚合函數,針對不同類型的鄰居,使用不同的聚合形式,上式使用的是求平均值。queries集合是item 的鄰居。
接着聚合的一階鄰居節點集合,得到的嵌入表示:
注意,由於users不同時間和不同的queries, items有交互(帶有時間戳),所以users的鄰居節點(例如 items, queries)被建模成序列。
RNN更適合處理序列數據,所以MEIRec使用LSTM動態建模users的鄰居節點,也就是說(4)式中的指的是LSTM。
最後,聚合基於不同元路徑(均以user節點爲起始點)的user嵌入,得到最終的混合的user嵌入表示:
4.5、Query Modeling
像user信息聚合一樣,對於query也是同樣的操作。基於不同元路徑(均以query節點爲起始點),得到混合後的query嵌入:
注意,queries的鄰居節點(例如 items, users)沒有時間順序,所以使用CNN爲queries的鄰居節點動態建模,聚合函數指的是CNN。
4.6、優化目標
首先計算出靜態特徵,包括users, queries的屬性特徵和交互信息中的靜態特徵。然後將這些特徵輸入到多層感知機(MLP),得到靜態特徵。
接着,將作爲輸入,對於user 預測其搜索query 的概率爲。
其中,就是MLP,是向量拼接操作。
採樣正樣本和負樣本,表示真實標籤,最終的損失函數如下:
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間的交互信息),不能輸入靜態特徵
實驗結果:
文章中還進行實驗研究了不同聚合函數的影響、不同元路徑的影響、不同數目的鄰居的影響。
不同聚合函數的影響:
這裏,表示只使用靜態特徵;表示只使用結構特徵;表示靜態特徵和結構特徵都使用,但是使用平均函數AVG來聚合本模型中用戶users和查詢queries的鄰居節點;使用靜態特徵和結構特徵,但是使用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種。就算人爲設定,工作量也不是很大。