潘潤超,虞啟山,熊泓霏,劉智慧
(中國地質大學(武漢)數學與物理學院,武漢 430074)
隨著信息技術的日益發展,互聯網提供的信息量迅速膨脹。用戶如何在海量信息中獲取有價值的信息成為一個充滿挑戰性的問題。推薦系統是解決此問題的有效手段,通過推薦算法能根據用戶需求從海量數據中挖掘用戶感興趣的項目,并將此項目以個性化的方式推薦給用戶。
目前,推薦系統的算法主要有基于內存的推薦算法和基于模型的推薦算法[1]?;趦却娴耐扑]算法利用用戶間或項目間的相似度對項目進行推薦;基于模型的推薦算法通過機器學習等算法訓練一個模型[2],利用模型模擬相似關系,使模型可以離線訓練、在線推薦。
近年來,深度學習在圖像處理、語言識別和自然語言處理等領域取得了突破性進展,它在推薦系統上的應用也取得了引人關注的結果。相較于傳統的推薦算法,基于深度學習的推薦算法能更好地挖掘用戶和項目更深層次特征。Sedhain 等[3]在2015 年提出了基于自編碼器的AutoRec 模型,通過自編碼獲得用戶對項目的預估評分,進而得到推薦結果;2016 年Cheng 等[4]結合神經網絡和邏輯回歸,提出了Wide &Deep 模型,利用線性模型增強模型的記憶能力,通過神經網絡增強模型的泛化能力,在大型推薦場景下得到了廣泛的運用。
近期學者們將圖神經網絡(Graph Neural Network,GNN)[5]應用于推薦系統。Berg 等[6]在2018 年提出了基于圖卷積矩陣補全(Graph Convolutional Matrix Completion,GCMC)的推薦算法;2018 年Ying 等[7]提出了Pinsage 模型,基于圖采樣和聚集算法Graphsage(Graph sample and aggregate)[8]將隨機游走和圖卷積網絡相結合,利用采樣得到的鄰域節點信息完成圖的卷積操作,得到用戶與項目的協同信號,進而得到預測評分;2019 年Wang 等[9]提出了神經圖協同過濾(Neural Graph Collaborate Filtering,NGCF)模型,基于圖卷積神經網絡,引入高階連通性區分不同圖卷積層得到的不同鄰居特征,采用多層圖卷積的組合表示用戶和項目的高階特征;受簡化圖卷積(Simple Graph Convolution,SGC)[10]啟發,Chen 等[11]提出了線性殘差圖卷積協同過濾(Linear Residual Graph Convolution Collaborative Filtering,LR-GCCF)算法,使用線性網絡進行圖卷積操作,并使用殘差連接的方式聚合不同卷積層得到的用戶項目特征;2020 年He 等[12]將NGCF 簡化成線性網絡,提出了輕量圖卷積(Light Graph Convolution,LGC)模型,加強了圖網絡的鄰居聚合,網絡速度和性能得到了提升。
相較于基于非圖深度學習的推薦算法,GNN 的推薦算法考慮了用戶和項目間的拓撲結構信息特征,能更充分地表示用戶和項目特征。然而,GNN 往往會出現過平滑性問題[13-15]。過平滑性是指GNN 在堆疊多個圖卷積層時,節點特征聚合過多高階節點信息,導致節點的輸出特征過于平滑,無法區分不同類別的節點,造成模型性能隨著網絡層數的增加反而降低。例如,NGCF 算法在網絡的第三層就達到了最佳性能;LR-GCCF 和LGC 算法在聚集二階或者三階鄰居之后,網絡性能快速下降。這些算法由于網絡的層數較少,無法使網絡進行深度學習獲得用戶和項目的深層特征。2020年Chen 等[16]提出一種深度圖卷積網絡GCNII(Graph Convolution Network with Initial residual and Identity mapping),通過初始殘差連接和恒等映射避免了網絡的過平滑,確保GNN 能進行深度學習,并通過理論和實驗證明了GCNII 的有效性。
受文獻[16]的啟發,本文將GCNII 應用于推薦系統,提出一種基于深度GNN 的協同過濾推薦算法Deep NGCF(Deep Neural Graph Collaborative Filtering)。Deep NGCF 通過網絡獲得用戶和項目的高階協同信號,即先通過用戶-項目的交互歷史構建GNN 的歸一化鄰接矩陣,進而得到用戶和項目的初始嵌入表達,再在聚合傳播層采用初始殘差連接和恒等映射得到用戶和項目的不同階協同信號,隨后所有協同信號進行線性表示,最終得到推薦結果。
Deep NGCF 算法主要由嵌入層、聚合傳播層、評分預測層和模型訓練四部分組成。在嵌入層,引入用戶-項目的交互歷史,為每一個用戶和每一個項目進行初始化嵌入,根據用戶和項目的交互歷史構建GNN 的歸一化鄰接矩陣,以此獲得用戶和項目的初始嵌入矩陣;在聚合傳播層,應用初始殘差連接和恒等映射獲得用戶和項目的協同信號;在評分預測層,對不同層的用戶項目協同信號進行聚合,得到模型預測評分;最后,采用損失函數最小化對模型進行訓練。
本文構建的GNN 由用戶和項目兩類節點組成。構建用戶-項目二向圖G=(U,I),其中:U=[u1,u2,…,um]表示m個用戶構成的矩陣;I=[i1,i2,…,in]表示n個項目構成的矩陣。令R=(rij)mn為評分矩陣,表示用戶和項目的歷史交互,rij的值為1 或0:若rij=1,則表示用戶ui和項目ij有歷史交互;若rij=0,則表示用戶ui和項目ij沒有歷史交互。一個用戶可以對多個項目進行評分,同樣一個項目也可以被多個用戶打分。圖1 展示了3 個用戶和4 個項目構成的用戶-項目二向圖以及該二向圖構成的評分矩陣。用戶-項目二向圖G的鄰接矩陣A可表示為:

圖1 二向圖及其評分矩陣Fig.1 Bidirectional graph and its scoring matrix
采用度矩陣D對矩陣A進行歸一化:
其中:度矩陣D為對角矩陣,它的主對角上元素dii為矩陣A第i行所有元素之和;矩陣S為歸一化拉普拉斯矩陣。
通常情況下,矩陣S是一個較大的稀疏矩陣。若直接使用S進行計算,會消耗較多的計算資源。為此,引入用戶和項目的初始嵌入矩陣
其中,W為需要學習的參數矩陣,可對矩陣S進行稠密化處理,提高運算效率;另外W還是用戶和項目歷史特征的權重矩陣,對用戶和項目的嵌入表達可以進行更好的學習。
聚合傳播層通過圖卷積神經網絡尋找圖中節點的相似節點,并聚合每個節點的相似節點信息,從而獲得每個節點的高階協同信號。聚合傳播層主要由初始殘差連接和恒等映射組成。在聚合傳播層引入初始殘差連接和恒等映射可以降低GNN 的過平滑性,聚集用戶項目更多的歷史交互信息,從而提升推薦的精度。
1.2.1 初始殘差連接
網絡中的殘差連接通過學習層與層之間的差異,使網絡傳遞至深層時,可以繼續學習高階特征,從而提升網絡性能。GNN 中的殘差連接一般具有如下形式:
其中:E(l)為網絡第l層輸出;E(l-1)為網絡第l層的輸入。在GNN 中使用殘差連接能緩解過平滑現象,但在堆疊多層時,依舊會出現過平滑現象[17];此外,僅使用第l-1 層的結果作為第l層的輸入并不合理,因為過平滑可能在第l-1 層前就已經出現了[18]。為避免以上現象,采用初始殘差連接替代殘差連接:
其中,E(0)表示用戶和項目的初始嵌入。采用初始殘差可以確保網絡在傳播至任意層時含有網絡的初始信息,避免網絡在傳播至深層時丟失信息而收斂至一個子空間[19]。
為增加網絡的靈活性和表達能力,使用參數α(0 <α<1)對上一層聚合傳播特征和初始殘差比重進行調節[16]:
其中,α既保證了模型攜帶初始信息,避免模型陷入過平滑,又能確保模型學習到深層網絡信息,增強網絡的表達能力。
1.2.2 恒等映射
為使網絡學習用戶與項目間的非線性特征,在式(6)中加入非線性激活函數,但僅使用式(6)中的初始殘差連接并不足以避免過平滑。為此,借鑒殘差網絡[16]中恒等映射的想法,在網絡中加入恒等映射:
其中:W(l-1)表示需要訓練的參數矩陣;I表示單位矩陣;σ表示非線性激活函數。
為提高模型性能,在式(7)中設置參數β(0 <β<1)控制I和W(l-1)的比重。因此,本文Deep NGCF 算法的聚合傳播層的表達式為:
其中,β用于控制恒等映射部分矩陣(1 -β)I+βW(l-1)的特征值,合適的β值能使(1 -β)I+βW(l-1)的最大特征值接近1,從而降低網絡傳播中信息傳遞的損失[19]。
1.2.3 預測評分層
經過嵌入層和l層的傳播,能得到用戶項目矩陣E(k)(0 ≤k≤l),E(k)包含了用戶和項目的協同信號。由于不同層得到的E(k)包含不同的協同信號,因此對不同層的用戶項目矩陣E(k)進行聚合:
其中,ak(k=0,1,…,l)為任意的實數。
Deep NGCF 算法聚合傳播和評分預測的流程如圖2所示。

圖2 聚合傳播和評分預測流程圖Fig.2 Flowchart of aggregation and propagation as well as score prediction
1.2.4 模型訓練
本文采用貝葉斯個性化排序(Bayesian Personalized Ranking,BPR)損失函數[20]訓練Deep NGCF 中的參數:
本章對Deep NGCF 算法進行實驗分析。首先介紹了使用的數據集、比較算法、評價指標、實驗環境和參數設置;然后進行算法對比實驗;最后設計了消融實驗和超參數實驗。
本文使用的數據集為:Gowalla[21]、Yelp-2018[22]和Amazon-Book[23]。Gowalla 數據集為簽到數據集,本文將該數據集中用戶分享的地址視為項目;Yelp-2018 數據集來自2018 年的挑戰賽,本文將該數據集中當地的商業建筑視為項目;Amazon-Book 數據集來自亞馬遜購物網站,本文選用亞馬遜售賣的圖書作為項目。數據集信息如表1 所示。

表1 數據集的統計信息Tab.1 Statistics of datasets
為保證實驗中數據集的質量,本文選取10 核操作,選擇的每個節點至少有10 次交互,即每個用戶至少有10 條的項目交互記錄,每個項目至少有10 條用戶交互記錄。對每個數據集,隨機選擇80%的數據作為訓練集,10%的數據組成驗證集,10%的數據組成測試集。
本文將Deep NGCF 算法與5 種算法進行比較,對比算法如下:
1)基于貝葉斯個性化排序的矩陣分解(Matrix Factorization with Bayesian Personalized Ranking,BPRMF)模型[20]:基于矩陣分解模型,使用BPR 損失函數優化模型。
2)GCMC[6]:將用戶-項目關系預測視為鏈路預測問題,采用圖卷積網絡對用戶和項目的嵌入表示進行學習。
3)NGCF[9]:基于GNN 的協同過濾模型,是一個可以堆疊多層網絡的非線性模型,設計了一種高階聯通的信息傳播方式。
4)LR-GCCF[11]:簡化了GNN,去除了GNN 中的非線性激活函數,使模型訓練速度大幅提升。
5)LGC[12]:簡化了NGCF,去除了NGCF 中的非線性激活函數和特征學習,是一個線性模型,大幅度降低了模型的復雜度和訓練時間。
上述5 種算法中,除第1 種算法是經典的矩陣分解推薦算法,另外4 種都是基于GNN 的推薦算法。
本文采用召回率(Recall)[23]和歸一化折損累計增益(Normalize Discounted Cumulative Gain,DDCG)[23]對模型性能進行評價,簡寫為R@k和N@k。
其中:k為推薦項目個數;ntest表示測試集項目個數;Hit@k為預測項目在測試集中出現的個數。
其中:Zk為歸一化系數;qi表示推薦結果位于位置i的項目的相關性系數,若該推薦項目在測試集,則qi=1;若該推薦項目不在測試集中,則qi=0。
實驗環境如下:Python 3.6.2;系統環境為Centos 7.8;深度學習框架PyTorch 1.4.0;GPU 為Tesla V100。
實驗中所有算法采用xavier 進行初始化,采用Adam 優化器,訓練1 000 epoches。為防止網絡過擬合,訓練過程中采取隨機dropout 算法,每層隨機丟失比率設置為0.2。在BPRMF 模型中,正則化系數設為10-3,學習率設為10-3;在LR-GCCF 模型中,正則化系數設為0.01,學習率設為10-3;在NGCF 模型中,網絡層數設置為3,正則化系數設為10-4,學習率設為10-3;在LGC 模型中,正則化系數設為10-4;在GCMC模型中,正則化系數設為10-3,學習率設為0.01。
對本文的Deep NGCF 算法,網絡層數設置為16,正則化系數設為10-5,學習率設置為0.001,網絡層數為16。超參數在Gowalla、Yelp-2018 和Amazon-Book3 個數據集上分別訓練1 500、2 000和3 000 epoches。
將Deep NGCF 算法與5 個對比算法進行比較,實驗結果如表2 所示??梢缘玫饺缦陆Y論:

表2 不同推薦算法的性能比較Tab.2 Performance comparison of different recommendation algorithms
1)基于矩陣分解的BPRMF 算法的推薦性能不高,這主要是因為該算法通過隱向量的方式預測用戶和項目之間的評分[24-25],沒有考慮用戶和項目間存在的圖結構,即沒有考慮用戶和項目之間的交互信息。
2)與BPRMF 算法相比,基于GNN 的5 種算法(GCMC、NGCF、LR-GCCF、LGC 和Deep NGCF 算法)具有更好的推薦性能。這主要是因為基于GNN 的算法利用了圖的拓撲結構信息,以顯式的方式提供了用戶和項目間的交互信息,使模型可以依據用戶和項目的歷史交互連通性進行建模[26],更充分地表示用戶和項目間的特征。
3)Deep NGCF 算法的推薦性能優于4 種基于GNN 的算法(GCMC、NGCF、LR-GCCF 和LGC 算法),在3 個數據集上取得了最高的召回率和歸一化折損累計增益。主要原因是,Deep NGCF 算法在聚合傳播層采用了初始殘差連接,這樣網絡傳播至深層時依舊保留初始信息,避免了模型收斂于一個子空間而造成的性能損失。Deep NGCF 優于LGC 的主要原因是在聚合傳播層添加了恒等映射,網絡在線性模型的基礎上進一步學習了用戶和項目間的非線性關系。
本節通過消融實驗驗證Deep NGCF 算法中恒等映射和非線性激活函數和的有效性。設計了3 個實驗進行驗證:
A1:去除Deep NGCF 中的恒等映射。
A2:去除Deep NGCF 中的非線性激活函數。
A3:同時去掉Deep NGCF 中的恒等映射和非線性激活函數。
實驗結果如表3 所示。A1 沒有使用恒等映射,缺少了鄰居特征的學習,它的性能低于Deep NGCF 算法。A2 沒有使用非線性激活函數,缺少了用戶與項目的非線性特征的學習,在Gowalla 數據集上的召回率比Deep NGCF 算法降低了16.71%,驗證了非線性激活函數的有效性。A3 在A1 的基礎上去掉了非線性函數,它的性能略低于Deep NGCF 算法,但與A1 和A2 相比,推薦性能大幅提升,主要原因是去除這兩個模塊后,使得模型易于訓練,減少了噪聲信息的干擾;但是,A3 模型并沒有避免過平滑性問題,因此它的性能依然低于Deep NGCF 算法。

表3 消融實驗結果Tab.3 Ablation experimental results
不同網絡層數在3 個不同數據集下的實驗結果如表4 所示。可以看出:1)Deep NGCF 算法在網絡層數為16 時取得了最優的實驗結果;2)當網絡層數從3 增加到16 時,隨著網絡層數的增加,Deep NGCF 算法的推薦性能不斷提升,說明Deep NGCF 算法可以從深度網絡中獲得更多的特征信息,避免了GNN 的過平滑性;3)當網絡層數從16 增加到20 時,Deep NGCF 算法推薦性能有所下降,但沒有像過平滑現象一樣下降得特別快,這主要是因為過深的網絡層數可能在網絡學習時引入噪聲,從而導致模型性能下降。

表4 網絡層數對模型性能的影響Tab.4 Influence of number of network layers on model performance
2.8.1 正則化系數λ取不同值的實驗對比
λ∈{10-6,10-5,10-4,10-3,10-2,10-1}在3 個不同數據集上的實驗結果如圖3 所示。從圖3 可知,Deep NGCF 算法對正則化系數λ比較敏感。當λ<10-5時,推薦性能提升;當λ>10-5時,推薦性能不斷下降;當λ=10-5時,Deep NGCF 算法推薦性能最好。

圖3 正則化系數λ對性能的影響Fig.3 Influence of regularization coefficient λ on performance
2.8.2 超參數性能影響
本節進行超參數α和β不同取值的實驗對比。在3 個數據集上,α∈{10-5,10-4,10-3,10-2,10-1}的實驗結果如圖4 所示;β∈{10-4,10-3,10-2,10-1}的實驗結果如圖5 所示。

圖4 超參數α對性能的影響Fig.4 Influence of hyperparameter α on performance

圖5 超參數β對性能的影響Fig.5 Influence of hyperparameter β on performance
從圖4~5,可以看出:1)當α=10-2時,Deep NGCF 算法推薦性能最好,α過大或過小,推薦性能不佳,這是因為:當α過小時,模型攜帶初始信息較少,使網絡陷入過平滑問題;當α過大時,網絡攜帶較多的初始信息,無法學習到深層網絡信息,從而抑制模型的表達能力。2)當β=10-2時,Deep NGCF算法達到了最好的推薦效果。若β過大,推薦性能較差,這主要是因為恒等映射在網絡中的作用較小,網絡陷入過平滑現象,從而導致模型性能降低。
為解決現有基于圖神經網絡(GNN)推薦算法的不足,本文提出一種基于深度GNN 的推薦算法Deep NGCF。Deep NGCF 算法在構建網絡的聚合傳播過程中,引入了初始殘差連接和恒等映射,從而確保網絡可以進行深度學習,避免了GNN 在多次卷積后陷入過平滑,提高了推薦的精度。在3 個公開數據集上進行對比實驗、消融實驗和超參數實驗,驗證了Deep NGCF 算法的有效性。
本文考慮了推薦算法的精度,后期將進一步研究如何在確保推薦精度的同時提高推薦的實時效率。