華為圖神經網路在推薦系統中的應用

語言: CN / TW / HK

分享嘉賓 :郭威 華為 高階工程師

編輯整理: 吳祺堯 加州大學聖地亞哥分校

出品平臺:DataFunTalk

導讀: 們目前處於資訊化社會,使用者希望從網際網路上海量的資訊中獲取到自己喜歡看到的內容,所以個性化推薦系統被廣泛應用。 推薦系統利用使用者與使用者,使用者與物品以及物品與物品之間的豐富關係,而這些關係可以天然地被建模成圖結構。 今天分享的主題是圖神經網路在推薦系統中的應用與探索。

今天的介紹會圍繞下面五點展開:

  • 推薦系統和圖神經網路

  • 圖神經網路用於召回

  • 圖神經網路用於精排

  • 圖神經網路用於重排

  • 總結與展望

01

推薦系統和圖神經網路

首先和大家分享下推薦系統和圖神經網路的背景。

個性化推薦系統可以看作一個“過濾器”,它針對使用者篩選他們想要獲取的資訊。華為在許多應用場景下都部署了推薦系統,如華為應用市場、華為遊戲中心、華為瀏覽器、華為應用、華為閱讀、華為視訊、華為雲、華為商城、華為負一屏等。

推薦系統利用使用者和物品的特徵,如使用者畫像、物品屬性、上下文資訊、歷史行為資訊等來為使用者做推薦。值得注意的是,使用者與使用者之間的聯絡、使用者與物品的互動、物品與物品的聯絡可以被天然建模為一個圖結構,而圖神經網路針對圖有優異的表徵學習能力。因此,圖神經網路近年來被大量應用於推薦系統,並取得了顯著的效能提升。

推薦系統的典型結構如下 。首先,系統在百萬級別的待推薦的物品池中召回千級別的物品;其次,系統進入排序階段,從上一階段召回的幾千個候選物品中選取幾百個物品;最後,重排序階段選擇幾十個物品組成輸出列表反饋給使用者。華為在推薦系統各個階段都嘗試使用了圖神經網路,並針對此進行了大量研究,接下來會逐一進行介紹。

02

圖神經網路用於召回

首先分享一下華為將圖神經網路用於召回階段的經驗。

早期將圖神經網路引入推薦系統的是在KDD2018上發表的Pinsage,它們構建了一個二部圖,對每個節點在圖上取樣鄰居做匯聚。Pinsage在線上取得了較大的收益。SIGIR2019的NGCF基於Graphsage,加入了中心節點與鄰居節點的互動。諾亞在ICDM2019提出了Multi-GCCF,在user-item二部圖的基礎上加入了user-user和item-item相似型圖,相較於NGCF有了進一步的效能提升。SIGIR2020的DGCF將使用者與商品的多種互動行為拆分為多個興趣子圖,在子圖上分別進行建模。諾亞在SIGIR2020提出了NIA-GCN,考慮到了鄰居間的互動資訊,在聚合時加入了它們可以提升聚合效果。LightGCN發現鄰居的非線性聚合函式和啟用函式是可以去除的,並通過這個做法達到了更好的效果。SGL和NCL將對比學習引入了圖的建模過程。SGL考慮了圖的節點dropout、邊的dropout以及隨機遊走來構建對比的檢視;NCL採用了空間上的鄰居節點以及語義上的鄰居節點來建立對比檢視,其中語義上的鄰居是通過聚類得到的。

1. 鄰居互動感知的圖卷積網路

華為在SIGIR2020提出的NIA-GCN這一工作,重點解決了已有GCN召回模型存在的幾個關鍵問題。

首先,user-item二部圖是一個異質圖,包含user和item兩種不同型別的節點。GCN、NGCF忽略了二部圖的異質性。

其次,圖卷積神經網路會經歷鄰居節點取樣+聚合函式進行資訊聚合,但是現有工作採用的聚合函式一般為mean、max、LSTM等,它們限制了模型的表達能力。比如上圖下側,左邊的圖結構若使用max函式則無法將兩種不同的圖結構進行區分;右邊的圖若使用mean函式也會得到相同的聚合結果;LSTM函式不是排列不變的,且難以訓練。  

針對以上兩個問題,我們提出了基於鄰居互動感知的圖卷積網路。

首先,我們引入了鄰居的互動,將每個鄰居作為中心節點的特徵,利用鄰居間的哈德瑪積來捕獲鄰居間的特徵互動。其中,在計算哈德瑪積時,我們借鑑了FM的做法,其時間複雜度可以有效地被降低。上圖下側展現了完整的鄰居匯聚以及中心節點-鄰居的聚合過程。首先,每一對鄰居之間都會進行互動,考慮了一階(求和)和二階(哈德瑪積)關係,之後對它們進行一個變換得到鄰居匯聚的表徵;在下一階段,華為將鄰居匯聚表徵和中心節點表徵進行組合,最終得到聚合特徵。  

我們還考慮到異質圖中鄰居節點的異質性,將逐級匯聚的鄰居聚合方式改變為一階鄰居節點與二階鄰居節點並行聚合的方式。此外,我們加入了一階鄰居和二階鄰居節點之間的互動資訊,使得我們可以更好地建模一階鄰居和二階鄰居的重要性,進行鄰居資訊的選擇。

上圖展示了NIA-GCN在四個資料集上的實驗結果。相較於基線,NIA-GCN擁有2.9%到21.8%的效果提升。從消融實驗的結果中,我們可以發現NIA-GCN的三個模組均可以在離線實驗中取得一定的效果提升。

2. GCN在召回場景的輕量化

由於工業場景下資料量非常大,如果我們每天都用過去30天的資料來訓練GCN模型,那麼訓練速度是不可以接受的。 為了使GCN在工業場景下可落地,我們採用了增量學習的思想 我們每一天只會使用到最新一天的資料來訓練GCN模型 。但是,增量學習容易遇到災難性遺忘的問題,即增量更新的模型在新資料上過擬合,忘記了在舊模型上學習到的知識。目前已有的增量學習解決方案為正則化和蓄水池。正則化指的是將舊模型上學習到的知識蒸餾到增量學習的新模型;蓄水池保留一部分舊資料,和新資料混合在一起用於增量學習。

我們提出了GraphSAIL,是GCN在召回場景下的輕量化優化方案,提出了全新的三種機制來防止GCN增量學習遇到災難性遺忘的問題。

首先,新學習得到的embedding不應該偏離舊的embedding太遠,正則化係數保證變化大的節點,權重蒸餾權重小。其次,我們考慮了局部結構的蒸餾,希望中心節點和一階鄰居的相似度在舊模型和增量學習的新模型之間不應該偏離太遠。

第三,我們考慮了全域性結構的蒸餾,舊模型和新模型的embedding在空間中的分佈位置不應該偏離太遠。首先將user節點和item節點進行聚類,得到K個類中心以及對應的平均embedding;然後我們計算每個節點和類中心的相對距離。蒸餾節點的全域性位置通過維持節點和類中心的相對距離,使得增量學習的新模型在全域性結構上不會大幅偏離舊模型。  

上圖展示了GraphSAIL和三個基線的實驗結果 。第一個基線直接用新資料來fine-tune舊模型,第二個基線是embedding蒸餾的不加權版本,第三個基線利用知識蒸餾來保留每個節點的一階區域性結構。從實驗結果來看,我們的模型在兩個資料集上對比三個基線都有更優異的表現,甚至在某些模型的實驗中能超過full batch的效果。值得一提的是,我們的訓練速度相較於full batch訓練有極大的提升。

03

圖神經網路用於精排

業界已有的研究工作可以分為兩大方向:基於特徵互動的建模和基於顯式關係的建模。 http://github.com/zziqi/CTR-Estimation 是我們整理了業界已有的CTR模型的連結。

CIKM2019中提出的FiGNN使用特徵之間的關係構建了一個全連線圖,在這個圖上做特徵互動,但是由於有些特徵之間是完全沒有聯絡的,這種做法會引入大量的噪聲。GraphFM在FiGNN的基礎上對全連線圖的每條邊的存在性進行判斷,最後在篩選後的特徵圖上進行圖卷積操作,建模特徵互動。AAAI2021提出的L0-SIGN使用L0正則,確保只有少部分邊參與特徵圖的構建。

精排中會考慮大量的特徵,如user id,item id以及一些feature,我們其實是可以得到它們之間的顯式關係,通過構建一個異質圖來做顯式關係建模。比較有代表性的工作有去年諾亞在KDD2021發表的DGENN,SIGIR2022發表的HIEN和GMT。其中,HIEN在DGENN的基礎上建模了層級關係,GMT將gnn和transformer結合在一起,利用圖取樣和GNN得到多個表徵,並在這個基礎上使用Transformer進行建模,取得了不錯的效果。  

在DGENN之前,CTR預估模型可以分為兩大類。首先,基於特徵互動建模的CTR模型的代表作為PNN,DeepFM和xDeepFM。第二類是基於使用者行為建模的CTR預估模型,如DIN,DIEN和SIM。CTR模型的趨勢是向著越來越複雜的資料的方向來發展,越來越多模型使用檢索的機制來找到使用者歷史行為中有用的資訊來建模,即通過尋找越來越複雜的特徵來提升效果。

但是已有的CTR預估模型存在兩個問題:特徵的稀疏性以及行為的稀疏性。在真實的業務資料上,我們發現它們大多服從長尾分佈,即存在大量稀疏特徵,在訓練資料中只出現很少的次數,存在大量使用者只有很少的歷史互動。那麼此時,基於使用者歷史行為進行建模是很難得到很好的效果。基於此, 我們考慮使用GNN引入特徵之間的關係和行為之間的關係來增強樣本。

上圖展示了DGENN的基本結構

已有的CTR模型的正規化可以分為embedding層、表徵學習、預測層三部分。我們利用圖表徵學習來優化embedding層,所以DGENN可以作為外掛應用與大部分已有的CTR模型。具體地, 我們構建了一張異質圖,包括user和item的屬性圖、user-user相似性圖、item-item共現圖以及user-item的協同圖 。為了從包含各類關係的異質圖中學習出一個好的表徵,我們提出了分治策略和課程學習策略。前者先構建單屬性圖,再匯聚所有屬性資訊;後者考慮到行為之間的關係複雜性,先學習使用者、商品各自的表徵,再學習使用者-商品的協同關係。

上圖展示了實驗結果,我們的方法在多個數據集上相比已有的基線模型有了大幅提升。 其次,我們將DGENN作為外掛作用於多個基線模型(PNN、DIN、FiGNN),均取得了明顯的效果提升。消融實驗也表明四種不同的圖之間是互補的,組合起來可以提升最終的效果。

我們目前在探索的方向是GCN在精排場景下的輕量化。 由於精排對時延要求很高,為了使複雜的GCN模型可以在精排場景落地, 我們考慮了三個優化方案:

  • 首先,我們可以使用圖預訓練+fine tune的方法 ,先對異質圖進行對比學習預訓練得到節點表徵,之後再進行fine tune。

  • 第二個方案是圖蒸餾,我們可以使用一個MLP對大型GNN進行蒸餾,在線上精排階段使用這個MLP進行推理,既降低了時延又增加了模型的魯棒性。

  • 第三個方案是圖粗化 ,即在大型圖進行聚類,將圖中節點的數量顯著降低,那麼推理過程中的時間複雜度可以被大幅度降低。

04

圖神經網路用於重排 

在重排序階段會存在一個待排序列表,由於排序階段得到的排序分是pointwise的預測方式,沒有考慮到商品間的關係,直接給出這部分預測結果可能無法滿足使用者的真實需求。排序列表中的商品關係會是可以互換且被使用者同時互動的(例如互補關係),使用者也會以不同的偏好和視角來看待排序列表。通過考慮商品間的關係,我們可以將更好的推薦結果返回給使用者。  

圖神經網路可以建模商品之間的關係,因此可以被用於個性化重排序。 我們構建了一個由使用者節點和商品節點組成的異質圖來建模使用者和商品間的關係。 圖中有兩種型別的邊。我們使用商品間的關係(互補/可替代)來建模商品-商品間的邊,使用初始的精排分數來建模使用者-商品間的邊。GNN中的訊息傳播機制需要學習使用者/商品的表徵向量。在匯聚商品節點資訊時,我們考慮了商品之間邊的型別(即商品之間的關係);而在匯聚使用者節點資訊時,我們不僅加入了使用者的邊型別(即排序分),還考慮了使用者自身的表徵來建模使用者個性化資訊。最後,我們根據網路生成的打分進行個性化重排序。

我們在亞馬遜資料集上進行了實驗,如上圖所示。

其中,AB和BT為互補關係,AV和BV為可替換關係。從實驗結果來看,我們的方法的表現均超過了基線模型;消融實驗也表明去掉模型的使用者表徵、線性表換、商品之間的互補/可替換關係均會使效果有所下降,進而證明了各模組的有效性和必要性。

05

總結和展望

圖神經網路在推薦系統的召回、精排、重排中得到了廣泛的研究和應用。具體地, 我們提出了鄰居互動感知的GCN模型來提高召回模型的效果 。針對精排模型中複雜的特徵和關係,我們將資料建模成一個複雜的全域性異質圖,提出了兩個策略(分治策略以及課程學習)來更好地學習embedding。針對重排模型中的商品關係,我們將使用者-商品建模成一個異質圖來進行個性化的重排序。此外,我們利用增量學習、預訓練等策略進一步提升圖神經網路模型的訓練、推理效率。

我們認為,在未來,圖神經網路可以在多行為、多場景、多模態等特徵豐富的場景下得到廣泛應用。另外,在真實場景下我們往往會將複雜的關係建模為一個異質圖,其包含多種型別的節點和邊,那麼更好地建模這種異質圖是未來研究的方向。最後,我們希望進一步提升圖神經網路的訓練效率,增快模型迭代效率。

06

Q&A

Q:NIA-GNN在聚合資訊時考慮了二階鄰居節點的直接傳遞,那麼它是不是等價於將二階節點與中心節點加入residual直連?

A:首先,我們會將節點的一階鄰居和二階鄰居進行取樣。在傳統的Graphsage中,資訊聚合的方式是根據階次逐步傳遞的,那麼此時中心節點不僅包含了一階鄰居的資訊,還包含了二階鄰居的資訊。我們的做法則是直接將一階鄰居資訊和二階鄰居資訊匯聚至中心節點,考慮到二階節點的同質性和一階節點的異質性,經過實驗我們發現,二階節點資訊比一階節點的資訊更重要,所以直接將二階節點資訊匯聚至中心節點的效果更好。

Q:請問有關使用者興趣建模類的模型,是不是大部分都會將item embedding一起進行優化?有沒有嘗試過利用已有item的embedding進行使用者興趣提取?

A:以DGENN為例,我們考慮了四種異質圖:屬性圖、user-user相似性圖、item-item共現圖和user-item協同圖。事實上,要是你去除其中一類圖,如item-item圖,也可以通過GNN來得到有用的訊號。

Q:異質圖的構圖有沒有一些實用的經驗可供分享?比如如果不按照DGENN進行四種異質圖的構圖,會不會對模型效果產生影響?

A:視覺化是十分關鍵的手段。以華為應用市場為例,我們將構建了使用者和app節點組成的異質圖,通過圖神經網路的學習得到了app的表徵。由先驗知識我們可以知道,例如抖音和抖音火山版應該在embedding空間上是十分相似的,那麼我們可以視覺化embedding來觀察它們的表徵之間的距離是否足夠近,進而判斷我們構建的圖是否可以充分學習這個場景下的表徵。在有些場景下使用者的互動行為十分稀疏,使用使用者的點選行為序列進行構圖會引入大量噪聲資訊,那麼直接進行構圖會很難使得圖神經網路提取到有效的表徵,此時我們可以通過視覺化及時發現問題。視覺化可以及時驗證學習到的表徵是否符合你的需求,進而判斷構圖的合理性。

Q:DGENN中屬性圖是如何構建的?

A:由於我們使用了分治法,其實我們並沒有針對所有屬性與屬性之間的關係構建一張屬性-屬性的圖。在DGENN中,我們先會根據item/user的一種屬性資訊進行建模,挖掘item與user在這一屬性下的關係,最後再將多重屬性關係聚合。

Q:如何將重排模型和業務要求的重排規則進行融合?

A:GNN可以在重排階段帶來更多的多樣性,當然我們也可以根據業務規則來修改GNN中某些邊的關係。例如,要是業務方要求為使用者推薦更多有互補關係的商品列表,那麼我們可以人工標註更多擁有互補關係的邊加入圖中,進而引導圖神經網路關注擁有互補關係的商品。總而言之,我們可以在構圖的過程中做出一些針對性的設計,把業務方想要達到的規則融入其中。

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

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

01 / 分享嘉賓

郭威

華為  高階工程師

郭威,華為諾亞方舟實驗室高階工程師,2019年碩士畢業於武漢大學,2016年本科畢業於西安電子科技大學。研究方向為:深度學習,圖表徵學習等在推薦系統中的應用,現在的工作方向是使用者行為建模、圖表徵學習、對比學習等技術在華為多個場景的落地。在國際頂級會議KDD、SIGIR、WWW等發表論文10多篇。研究成果在華為的多個產品中得到應用。

02 / 掃碼關注公眾號 回覆「知識圖譜」參與活動

03 / 報名看直播 免費領PPT

04 / 關於我們

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

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