朱金俠,孟祥福,邢長征,張霄雁
(遼寧工程技術大學 電子與信息工程學院, 遼寧 葫蘆島 125105)
大數據時代下,為了緩解信息過載問題,推薦系統被廣泛應用于個性化信息過濾。協同過濾(collaborative filtering, CF)是應用最廣泛的推薦算法,核心思想是從興趣相似的用戶中預測用戶偏好。早期的協同過濾推薦模型[1-2]直接使用用戶和項目ID 作為嵌入向量,嵌入函數缺乏對用戶與項目間交互信息的明確編碼,導致所學習的嵌入表達具有局限性,不足以產生令人滿意的CF 嵌入。隨后,SequentialMF 模型[3]將更多的鄰居信息整合到嵌入過程,提高了嵌入質量,但模型受線性乘積的影響,無法有效地捕捉交互數據中的非線性結構。廣義矩陣分解模型[4]在淺層結構引入的神經網絡賦予模型具有學習非線性交互的能力,使得它可以捕獲用戶與項目間的二階交互關系,但卻無法捕獲包含更多信息的高階交互,導致模型性能受限。
圖卷積神經網絡是一種針對圖結構數據的深度學習模型[5],具有更抽象的學習能力,其強大的表征能力,可以捕獲包含許多豐富信息且更為抽象的高階關系。通過多次迭代圖卷積層還可以學習嵌入表征的全局結構,挖掘海量數據中深層次的屬性特征,建模用戶與項目之間的高階交互的非線性關系。PinSage[6]、NGCF[7]和LightGCN[8]等均為典型的圖卷積協同過濾技術。但是,它們聚合鄰居節點的方式依賴于圖結構,局限了模型的泛化能力,并且為所有鄰居統一分配固定的權重,不能區分鄰居信息的重要性。另外,數據稀疏性對模型的推薦效果也會產生一定的消極影響。
為了解決上述提到的問題,本文提出一種融合圖卷積注意力機制的協同過濾推薦模型,利用圖嵌入技術將初始的用戶和項目信息嵌入到低維稠密的向量空間,緩解了數據稀疏性對模型性能的消極影響,通過構建用戶-項目交互圖使得嵌入函數可以顯式地學習用戶與項目間的交互信息,以產生令人滿意的CF 嵌入;其次利用用戶-項目交互圖的拓撲結構來建模用戶與項目間的高階交互信息,通過堆疊多層圖卷積網絡以遞歸的方式學習此類高階關系,以此揭示用戶與項目之間的耦合關系;此外融合注意力機制聚合鄰居節點信息,根據鄰居節點的貢獻值為其動態分配權重,捕獲更具代表性的鄰居影響,提高推薦結果的可解釋性,而且這種聚合方式僅依賴于節點之間的特征表達,獨立于圖結構,可以提高模型的泛化能力;并設計了分層聚合函數,將圖卷積層學習到的多個嵌入向量加權聚合,學習每一層嵌入向量對最終嵌入向量的影響;最后使用內積函數得到用戶-項目之間的關聯分數。
基于協同過濾的推薦算法。矩陣分解[9]是經典的協同過濾方法,它將用戶/項目表示在潛在向量的低維空間,通過用戶/項目的潛在向量的內積來預測用戶對項目的評分。隨著深度學習的發展,基于深度學習的推薦模型可以更好地增強模型的表達能力。它將用戶/項目信息經神經網絡的表征學習,得到更具代表的用戶/項目表達。文獻[10]和文獻[11]是經典的基于深度學習的協同過濾推薦模型。
基于圖嵌入的推薦算法。圖嵌入的基本思想是使用降維技術將節點的高維信息映射到低維稠密的向量空間,以此完成聚類[12]和分類[13]等任務。最初的嵌入方式使用隨機游走[14]來映射向量的低維嵌入,但是隨機游走每一步生成所有項目的排名分數,導致了效率低下問題。隨后研究者開始利用網絡嵌入模型[15-16]來緩解這一限制。文獻[15]提出了異構偏好嵌入模型,將用戶偏好和查詢意圖編碼到低維向量空間中,通過相似度計算來生成推薦列表。Hop-Rec[16]將矩陣分解和基于圖的學習模型融合在一起,通過將觀察到的用戶-項目的直接交互因子化來獲取用戶偏好,從用戶-項目交互圖中隨機游走來提取間接偏好。
基于圖卷積神經網絡的推薦算法。圖卷積網絡已經在多種領域取得了成功,最近的研究趨勢是將卷積推廣到不滿足平移不變性的圖結構數據中,使用卷積算子學習圖結構數據。GraphSage[17]是一個通用的圖卷積推薦框架,利用一個廣義聚合函數從節點的局部鄰域采樣并聚集特征來生成嵌入向量,使得圖卷積網絡在推薦領域取得了進一步成功。文獻[18]通過將用戶-項目的交互數據轉換為3 個異構圖來學習異構圖之間的共享特征表示,利用圖卷積技術來聚集鄰居的特征,保持了圖數據的局部性質。
基于注意力機制的推薦算法。圖注意力網絡(graph attention network, GAT)[19]不僅可以過濾輸入數據中的噪聲數據,還可以加強某些代表性數據的權重,因此在推薦系統中應用注意力機制逐漸成為推薦新技術。文獻[20]提出一種基于自注意力機制的屬性異構信息網絡嵌入的商品推薦模型,模型通過屬性異構信息網絡嵌入學習用戶與項目的低維嵌入表示,利用自注意力機制考慮不同的屬性信息對推薦結果有不同程度的影響,克服了傳統屬性異構信息網絡嵌入推薦模型的局限性。文獻[21]是一種基于雙層注意力機制的推薦模型,通過引入局部注意力和相互注意力學習用戶與評論之間所存在的潛在相關性,提高了推薦結果的可解釋性。
定義1用戶集與項目集:用U={u1,u2, …,uM}表示用戶集,I={i1,i2, …,iN}表示項目集,其中,M為用戶數量,N為項目數量。
定義2用戶-項目交互圖:令Gui={U∪I,Eui}表示用戶-項目交互圖,其中U和I為頂點集合,|U|和|I|分別表示用戶與項目的數量,Eui為用戶與項目之間邊的集合。
本文的總體解決方案的流程圖如圖1。

圖1 模型流程Fig. 1 Model flow
模型流程共分3 步。
1)構建模型的嵌入層。首先將用戶與項目的原始交互數據,以one-hot 編碼的方式將其轉換為數據;其次根據用戶與項目間的交互記錄構造用戶-項目交互圖;最后利用圖嵌入技術將用戶與項目信息嵌入到低維稠密的向量空間。
2)構建融合注意力機制的嵌入傳播層。將嵌入層得到的低維稠密向量送入嵌入傳播層,通過堆疊多層圖卷積網絡在嵌入空間構建信息交互流,強化用戶與項目間的傳播嵌入;融合注意力機制根據鄰居節點的貢獻值為其動態的分配權重。
3)構建預測層。經嵌入傳播層學習將得到多個用戶和項目的嵌入向量,將其送入分層聚合函數得到最終的嵌入向量表達;最后采用內積交互函數,得到最終的推薦結果。
本文設計的融合圖卷積注意力機制的協同過濾模型,框架如圖2,主要由3 個模塊組成:1)嵌入層、初始化用戶和項目的嵌入向量;2)融合注意力機制的嵌入傳播層,通過圖卷積技術細化用戶與項目間的高階交互信息,融合注意力機制學習鄰居節點在傳播聚合過程中的重要性;3)預測層,采用內積交互函數,得到用戶與項目之間的關聯分數。

圖2 融合圖卷積注意力機制的協同過濾推薦模型框架Fig. 2 Framework of collaborative filtering recommendation model fused with graph convolutional attention
2.2.1 嵌入層
模型在嵌入層通過在用戶-項目交互圖上傳播嵌入來強化嵌入向量的潛在特征。根據嵌入模型[22-23],一個用戶u(或項目i)的嵌入向量可表示為cu∈Rd(ci∈Rd),其中d表示嵌入維度,那么由用戶和項目嵌入向量組成的參數矩陣作為初始嵌入向量查找表,如下式:
式中:M表示用戶數量,N為項目數量。嵌入查找表作為用戶嵌入和項目嵌入的初始狀態,以端到端的方式進行傳遞和優化。
2.2.2 融合注意力機制的嵌入傳播層
本文設計了融合注意力機制的嵌入傳播層,通過學習用戶-項目交互圖的拓撲結構來構建用戶與項目間的高階交互信息,圖3 給出了用戶-項目交互圖。

圖3 用戶-項目交互圖Fig. 3 User-Item interaction diagram
圖3 (a)為用戶-項目交互圖,圖3 (b)為目標用戶u1的高階交互關系圖(即交互圖的拓撲結構)。u1的高階交互是指從路徑長度L>1 的任何節點到達目標節點u1的路徑,此類高階交互承載著u1更為豐富的交互信號。例如,路徑u1←i3←u3和u1←i3/i6←u4表示u1與u3和u4之間具有行為相似性,但u1與u4之間有兩次交互,由此可以推斷u1與u4具有更高的親密度,u4更能影響u1的決策,也就是說u4應該被分配更高的權重。然而,以往的模型[7-8]為鄰居節點分配統一的靜態權重,無法區分用戶親密度對用戶決策的影響。例如,i4(u1←i2←u2←i4和u1←i3←u3←i4) 與i7(u1←i3←u4←i7和u1←i6←u4←i7)均有兩條路徑可以到達u1,傳統模型無法區分i4與i7哪一個項目更能引起u1的興趣。本文模型融合注意力機制,可以根據用戶與鄰居節點的親密度,自適應地為其分配權重。因此,鄰居節點u4相較于u2擁有更高的權重,由此預測i7更能引起u1的興趣。
此外,隨著路徑的增加每一層嵌入傳播層在反映用戶偏好時有不同的貢獻,例如,路徑L=1 為用戶直接交互的項目,此類信息更能反映用戶偏好,因此在聚合多個嵌入向量對最終嵌入向量的影響時,應該被賦予更高的比重。本文設計的分層聚合函數可以捕獲不同層的嵌入表達,以實現路徑越短對最終向量的影響越大。例如,由圖3 (b) 可知i4的兩條路徑在L=3 層分化,而i7的兩條路徑在L=2 層分化,則可以預測i7更能引起u1的興趣。
模型通過堆疊多層圖卷積層來構建嵌入傳播層,為了更好地構建高階傳播,首先建模單階傳播。在現實世界中,用戶交互的項目直接反映了用戶偏好。由圖3 可知對于用戶-項目交互圖中存在連接的用戶-項目對(u,i),可將從項目i到用戶u的消息傳遞定義為
式中:u←i表示從項目到用戶的方向傳遞,m表示傳遞消息的嵌入向量,f(·)是一個消息編碼函數,pui為相關系數控制(u,i)邊上每次傳播時的衰減因子。
根據經典的圖卷積推薦技術原理[7-8],相關性系數p可定義為拉普拉斯范數:
其中Nu和Ni分別表示用戶u交互的項目集以及與項目i交互的用戶集。
本文的嵌入傳播層為了更好的建模用戶與項目間的交互信息,利用哈達瑪積(ei⊙eu)將用戶與項目的交互編碼到消息傳遞機制中,考慮了ei與eu之間的交互信息,使得模型在傳遞消息時依賴于ei和eu之間的親密度值,也就是說相似的用戶/項目之間可以傳遞更多的消息。此外,融合注意力機制自適應地為鄰居節點分配權重,以此捕獲鄰居節點的重要性。由此消息編碼函數f(·)可定義為
式中:W1、W2∈Rd′×d為可訓練的權重矩陣,用于提取重要的嵌入信息;矩陣維度為d′×d;d′為轉換大小; αui為注意力權重; ⊙表示逐元素相乘。
依據GAT[19]原理,在構建單階傳播時,鄰居節點i對目標節點u的影響,可以由注意力相關分數表示:
式中:||表示向量的拼接,LeakyReLu[24]為激活函數。為了得到對應的注意力權重,模型使用softmax 函數計算目標用戶u的所有鄰居信息,對各個鄰居節點的貢獻值進行歸一化,獲得每個鄰居節點i的權重,計算方式為
模型通過聚合目標用戶u的鄰居節點特征來更新用戶u的嵌入表達eu,采用LeakyRelu 激活函數顯式地利用mu←i連接信息來關聯用戶和項目嵌(LeakyRelu 函數允許對消息傳遞過程中的正負信號進行編碼),則聚合函數可以抽象為
其中eu表示用戶u在單層傳播之后得到的用戶嵌入向量。
本文模型通過疊加多個單階傳播層來挖掘高階的交互信息,以此構建模型的高階傳播。由圖3(b) 可知,堆疊兩層可捕獲用戶間的行為相似性(如u1-i3/i6-u4),堆疊3 層可挖掘潛在的推薦優先級(如i7的兩條路徑u1←i3←u4←i7和u1←i6←u4←i7)。模型利用堆疊的l層融合注意力機制的嵌入傳播層,獲得用戶(或項目)l-階鄰居節點的特征信息,在第l層以遞歸的方式傳播此類特征信息,計算方式為
圖4 給出了圖3(b)中三階路徑u1←i3/i6←u4←i7在嵌入傳播時被捕獲的過程。分析圖3(b)可知,u1與u4具有更高的親密度,也就是說在采用注意力機制聚合鄰居節點的貢獻值時,u4被分配了更高的權重,由此預測i7更能引起u1的興趣。因此,在所有到達u1的三階路徑中,路徑u1←i3/i6←u4←i7被捕獲。同樣,當堆疊l層嵌入傳播層時,用戶與項目之間的高階交互信息仍可以在嵌入傳播的過程中被捕獲。

圖4 三階嵌入傳播Fig. 4 Illustration of third-order embedding propagation
2.2.3 模型預測層
在經過l層傳播后,得到了用戶u的多個嵌入表達,即由圖3 分析可知不同嵌入層獲得的嵌入向量對用戶偏好有不同的影響,因此本文設計了分層聚合函數進一步結合在每一層捕獲的嵌入向量,構成用戶最終的向量表達。對經過l層傳播后得到的多個項目嵌入表達,同理得到最終的項目嵌入向量表達,分別如下所示:
式中:βl≥0 表示第l層嵌入對最終嵌入表達的重要性,在本文中設置βl=1/(1+L)。
最后,在模型預測層,采用內積交互函數得到用戶對目標項目的偏好,計算方式如下:
2.2.4 模型優化
本文模型使用貝葉斯損失函數[25]對模型進行優化,原因是貝葉斯損失函數考慮了觀察到的交互和未觀察到的交互之間的相對順序。具體地說,它假設觀察到的交互對用戶偏好的影響更大,優化目標如下:
其中,O={(u,i,j)|(u,i)∈R+,(u,j)∈R-}被定義為用戶與項目交互數據集合,每一個數據都是一個三元組。 R+表示觀察到的用戶-項目交互, R-表示未觀察到的用戶-項目交互, σ()是sigmoid 函數。λ||Θ||2為L2 正則化項, λ為正則化系數,它控制L2 正則化強度防止過擬合,表示所有可訓練的模型參數。
Dropout 策略可以在模型訓練時有效防止模型的過擬合,本文采用消息丟棄的Dropout 策略。在消息丟棄方法中,按照概率p隨機舍棄式(9)計算出的消息,使其不聚合到用戶/項目的嵌入向量中。
實驗數據集采用Gowalla、Yelp2018 以及Amazon-Book 3 個公開的數據集,對于每一個數據集,隨機選擇每個用戶的80%的交互歷史構成訓練集,剩下的20%作為測試集,隨機選取訓練集中的10%作為驗證集,用于參數的調試。表1給出了3 個數據集的統計信息。

表1 實驗數據信息Table 1 Statistics of the datasets
本文提出的圖卷積注意力機制協同過濾(GACF)模型分別與5 種推薦模型比較:
1)MF[9]模型:該模型利用奇異值方法對矩陣進行分解,通過貝葉斯個性化排名損失函數對模型進行優化,并將用戶-項目交互作為交互函數的目標值。
2)NeuMF[11]模型:該模型是一個經典的基于深度學習的協同過濾推薦算法,它結合了傳統矩陣分解和多層感知機,通過元素層面上的用戶和項目嵌入和串聯多個隱藏層來捕獲用戶-項目之間的非線性特征交互,能夠捕獲用戶和項目間的關聯關系。
3)Hop-Rec[10]模型:該模型基于圖神經網絡,通過在圖上的隨機游走并結合圖頂點的度,以一定概率采樣用戶和項目的高階關系,可以顯式地捕獲用戶和項目之間的高階偏好,豐富了訓練數據,提高了推薦結果的可解釋性。
4)GC-MC[26]模型:該模型基于消息傳遞的圖自動編碼,通過編碼器生成用戶和項目表示,并利用用戶和項目的一階交互信息來捕捉它們之間的隱性特征,提高了推薦模型的泛化能力。
5)LightGCN[8]:該模型基于文獻[7]所提出的模型,文獻[7]模型中特征變換和非線性激活兩個復雜的設計,降低了模型的訓練難度。
6)NGCF[7]模型:該模型是基于圖卷積神經網絡的最新推薦模型,它利用了用戶與項目交互圖的拓撲結構將交互信息嵌入到學習過程中,并構建了3 層圖卷積神經網絡對交互信息進行嵌入傳播學習,通過將傳播層學習的嵌入向量進行聚合,得到用戶與項目之間的關聯分數。
本文模型和算法使用Python 語言基于Tensor-Flow 框架實現,機器配置為CPU i7-8700K 3.7 GHz,操作系統為Windows 10。在實驗中,基于以往模型[7]的經驗,正則化系數設置為1×10-4,每次處理的數據量大小為1 024,嵌入大小為64,使用64×64的圖卷積層,迭代次數為100 次時模型收斂。采用Adam[27]作為優化器,參數初始化采用Xavier方式。經驗證集測試后,學習率lr設置為0.001,Dropout 率p設置為0.1。
對于測試集中的每個用戶,將用戶未交互的所有項目視為負樣本,將用戶已經交互的項目作為正樣本。本文中每種模型均輸出用戶對所有項目的偏好分數,為了評估模型在top-k推薦效果方面的優越性,實驗采用召回率(RRecall@K)和歸一化折現積累收益(NNDCG@K)作為推薦效果方面的評價指標。實驗中,k分別取值為20、40、60、80、100,模型總體推薦效果取其平均值。
召回率計算的是所有“被正確推薦的項目”占所有“應該被推薦的正確的項目”的比例,計算公式為
式中:R(u)是為用戶推薦的項目集合,T(u)為測試集上用戶感興趣的項目的集合。
NNDCG@K是一種基于排名的測試指標,排名靠前的項目得分更高。
式中:Rreli表示用戶對第i個項目的評分,log2(i+1)是一個位置遞減權重。
3.5.1 總體比較
將本文模型與對比模型分別在3 個不同的數據集進行實驗,實驗結果如表2 所示。從模型推薦效果的總體比較來看,本文提出的模型在3 種數據集上的2 種評價指標的表現均大幅度優于其他對比方法,說明了模型設計的合理性,同時也證明了模型的高效性和良好的泛化能力。

表2 總體比較Table 2 Overall performance comparison
3.5.2 嵌入傳播層數的影響
實驗通過改變模型的深度,探究最佳的嵌入傳播層數,在實驗中,分別設置了{1,2,3,4}等不同的層數。觀察表3 可知,GACF 模型相較于NGCF模型均取得了更好的推薦效果。此外,隨著圖卷積層的層數的增加,模型的推薦效果也有顯著的提升。但是當層數增加到4 層時,在Gowalla 數據集和Amazon-Book 數據集上,模型出現了過擬合現象。原因是當嵌入傳播層加深時,導致節點間的特征表達過度平滑化,使之缺少節點表征,進而缺少區分性,降低了模型的推薦效果,其次當堆疊過深的嵌入傳播層,導致過多的噪聲數據參與模型訓練,使模型出現過擬合現象,也從側面驗證了堆疊三層的嵌入傳播層足以捕獲有效的CF 信號。

表3 層數對模型推薦效果的影響Table 3 Effect of number of layers on the model recommendation
3.5.3 模型top-k推薦有效性評估
為了探究融合注意力機制的有效性以及分層聚合函數的合理性,實驗對模型的top-k推薦進行了RRecall@K和NNDCG@K兩方面的評估。圖5的實驗結果表明,本文模型在3 個數據集上所表現出的推薦效果均遠高于其他模型,表明本文方法所推薦的前top-k列表更具個性化。原因是模型在嵌入傳播層融合注意力機制,衡量了鄰居節點的重要性,自適應地為其動態分配權重,幫助目標用戶選擇更具代表性的項目。其次,模型通過分層聚合函數,將圖卷積層學習到的多個嵌入向量加權聚合,學習其對最終嵌入表達的重要性,實現了路徑越短對最終向量的影響越大。

圖5 兩個不同數據集上top-k 推薦效果Fig. 5 top-k recommendation performance on two different data sets
3.6.1 學習率的影響
模型的學習率直接影響著神經網絡模型的收斂狀態,進而影響著模型學習的性能表現,因此選擇一個合適的學習率對于一個神經網絡模型的影響至關重要。本文在實驗中,將其設置為一個超參數,通過動態學習率策略調整訓練出一個最優的學習率大小。
從圖6 的實驗結果觀察可知當學習率lr=0.001時,模型的總體效果達到最佳,當學習率lr=0.01時,模型的總體效果最差。在Gowalla 數據集上,當lr=0.01 時RRecall@20和NNDCG@20的結果分別為0.175 0和0.205 7;當lr=0.001 時RRecall@20和NNDCG@20的結果分別為0.226 9 和0.258 4,評價指標分別提高了29.66%和25.62%。在Yelp2018 數據集上,當lr=0.01 時RRecall@20和NNDCG@20的結果分別為0.072 7和0.114 0;當lr=0.001 時RRecall@20和NNDCG@20的結果分別為0.102 8 和0.145 5,評價指標分別提高了41.40%和27.63%。在Amazon-Book數據集上,當lr=0.01 時RRecall@20和NNDCG@20的結果分別為0.038 2 和0.062 3;當lr=0.001 時RRecall@20和NNDCG@20的結果分別為0.061 1 和0.092 4,評價指標分別提高了59.95%和48.31%。由此可見,合適的學習率對于模型效果的表現有直接影響。

圖6 學習率測試結果Fig. 6 Learning rate test results
3.6.2 Dropout 率學習
Dropout 策略可以在模型訓練時有效防止模型的過擬合,本文采用消息丟棄Dropout 策略。圖7 給出節點丟棄率p作用于3 個數據集上所產生的不同影響。在Gowalla、Yelp2018 和Amazon-Book 數據集上,當p=0.1 時獲得了最佳的召回率,當p=0.3 時獲得了最差的召回率。

圖7 節點丟棄率的影響Fig. 7 Effect of message dropout ratios
本文提出了一種圖卷積注意力機制協同過濾推薦模型,模型首先在嵌入層考慮用戶與項目的交互信息,其中在嵌入傳播層融合注意力機制,綜合考慮了鄰居節點對目標節點影響的重要性,通過分層聚合函數將嵌入層學習到的多個嵌入向量加權聚合,學習其對最終嵌入表達的重要性。最后,利用內積運算對用戶與項目之間的關聯分數進行預測。實驗結果表明,與現有的主流協同過濾推薦模型相比,本文模型取得了更好的推薦效果。在未來的工作中,將考慮影響推薦性能的更多屬性,如用戶的社會關系、用戶興趣的動態變化等,嘗試通過圖卷積神經網絡協同過濾技術緩解推薦系統中的冷啟動問題,進一步提升推薦的準確性。