趙東琛,車文剛,高盛祥
(昆明理工大學 信息工程與自動化學院,昆明 650500)
推薦系統(tǒng)不僅可以幫助用戶在海量信息中高效地獲取感興趣的內(nèi)容,還可以幫助互聯(lián)網(wǎng)公司吸引、留住用戶,增加互聯(lián)網(wǎng)公司的收益。在龐大且快速增長的需求驅(qū)動下,近年來推薦系統(tǒng)快速發(fā)展。隨著一批有影響力的深度學習推薦模型[1-4]被各大互聯(lián)網(wǎng)公司成功應(yīng)用,推薦系統(tǒng)進入了深度學習時代。而圖卷積神經(jīng)網(wǎng)絡(luò)(graph convolution neural network,GCN)從2017年被Kipf &Welling[5]提出以后,憑借其強大的表征能力以及圖數(shù)據(jù)的廣泛存在性,逐漸成為深度學習推薦算法研究的熱門方向。
GCN利用消息傳遞從節(jié)點及其鄰域中提取高級特征,在推薦算法研究中已取得成功的應(yīng)用。然而,基于GCN的推薦算法存在的一個關(guān)鍵問題是深度限制,即網(wǎng)絡(luò)更新層數(shù)一般為2-3層[6]。這種淺層的網(wǎng)絡(luò)結(jié)構(gòu)只能對目標節(jié)點的2-3階的鄰居節(jié)點進行特征聚合,對距離相隔較遠的節(jié)點,無法有效獲取其特征信息。因此,當數(shù)據(jù)集密度較高時,可能導致為目標用戶推薦的項目列表與用戶歷史交互的項目列表過于相似,抑制推薦的多樣性;而在數(shù)據(jù)稀疏時,GCN的學習能力和表征能力會受到限制,影響推薦算法的性能。若是深度堆疊網(wǎng)絡(luò)層,通常會導致推薦性能顯著下降。這種下降的現(xiàn)象與多種因素有關(guān),包括反向傳播中梯度消失,參數(shù)數(shù)量增加導致的過擬合,以及過平滑[7]。受深度卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在圖像分類上的成功啟發(fā),研究人員提出了幾種方法來探索如何構(gòu)建深層的GCN。
第一類方法為架構(gòu)調(diào)整。XU等[8]提出了JK-Net模型,該模型采用跳躍連接的思想,將GCN每一層的輸出聚合在一起作為最終輸出,方法簡單、有效并獲得廣泛應(yīng)用。LI等[9]基于殘差連接(residual connection,RS)的思想,使用殘差和密集連接來訓練深層GCN,改善了深層GCN的性能。這一類方法在推薦系統(tǒng)中可以將各層的輸出進行聚合來獲得用戶(項目)節(jié)點的最終表示,在一定程度上緩解了層數(shù)增加而導致的性能下降的現(xiàn)象,但無法有效解決過擬合、過平滑問題。
第二類方法使用正則化技術(shù)。WANG等[10]提出了一種節(jié)點規(guī)范化的思想NodeNorm,該方法在模型訓練時使用節(jié)點自身的統(tǒng)計特性來對每個節(jié)點做規(guī)范化處理,通過減小隱藏層特征之間的相關(guān)性來規(guī)范化深層GCN。DropNode[11]、DropEdge[12]方法通過在訓練過程中隨機刪除用戶-項目交互圖中的節(jié)點、邊來緩解過平滑、過擬合問題,提升深層GCN的性能。這類方法減少了參數(shù)的引入,對過擬合、過平滑問題的解決都產(chǎn)生積極的效果,但這類方法僅能作為一種訓練組件去配備骨干模型。單獨使用這類方法,將最后一層的輸出作為用戶(項目)節(jié)點的最終表示,這會忽略推薦模型中各層輸出特征所包含的豐富的關(guān)聯(lián)關(guān)系。
針對上述問題,本文提出一種新的解決方案,特征規(guī)范化的圖卷積神經(jīng)網(wǎng)絡(luò)推薦算法(deep graph neural network collaborative filtering based on feature normalization,DGCF)。本文的主要工作如下。
1)針對網(wǎng)絡(luò)層數(shù)增加而造成性能下降的問題,在除最后一層外、前向傳播網(wǎng)絡(luò)的每一層上,引入規(guī)范化層,以緩解過平滑現(xiàn)象。
2)將節(jié)點最終嵌入表示設(shè)置為各層網(wǎng)絡(luò)輸出的聚合。不同層的輸出對最終嵌入表示的影響不同,在此基礎(chǔ)上加入自注意力機制,為每一層輸出分配不同的權(quán)重,使節(jié)點中重要特征信息可以獲得更好的表示。
3)在公共數(shù)據(jù)集Amazon-book,Gowalla,Yelp-2018上進行實驗,證明了模型的有效性。
近年來,GCN在推薦系統(tǒng)上已取得不俗的成就。相比于傳統(tǒng)推薦算法難以解決的冷啟動問題、大規(guī)模數(shù)據(jù)集上運行困難的問題,ZHANG等[13]提出了STAR-GCN,該模型通過層疊和重構(gòu)的圖卷積網(wǎng)絡(luò)結(jié)構(gòu)來學習節(jié)點表示,提高冷啟動場景中推薦系統(tǒng)的性能;YING等[14]提出了PinSage模型,該模型使用了隨機游走和圖卷積,捕獲到了圖結(jié)構(gòu)的特征以及節(jié)點的特征以生成節(jié)點的嵌入表示,成功將GCN推薦算法擴展到超大規(guī)模數(shù)據(jù)集上。這些模型的提出證明了GCN在推薦系統(tǒng)研究領(lǐng)域,相較于傳統(tǒng)的方法而言有極大的優(yōu)勢。
WANG等[15]遵循標準GCN結(jié)構(gòu),提出了NGCF模型,該模型利用嵌入傳播層挖掘高階連通性關(guān)系,以此來捕捉用戶-項目交互,將GCN與協(xié)同過濾(collaborative filtering,CF)成功結(jié)合。HE等[16]又在NGCF的基礎(chǔ)上提出了Light-GCN模型,去除GCN中常用的特征轉(zhuǎn)換和非線性激活兩種操作,將模型進一步輕量化。Light-GCN模型在用戶-項目交互圖上線性學習節(jié)點的嵌入表示,泛化能力更好,結(jié)構(gòu)也更為靈活。王建芳等[17]將GCN與注意力機制結(jié)合,提出了BGARN模型,在節(jié)點信息嵌入傳播過程中,基于偏差注意力機制為鄰居節(jié)點分配不同權(quán)重系數(shù),使節(jié)點在嵌入時更能夠關(guān)注到重要信息。
基于GCN的推薦系統(tǒng)無論是在提升推薦性能方面,還是在解決一些傳統(tǒng)推薦系統(tǒng)難以解決的問題方面,都取得顯著的成就。然而,此類模型大多都存在網(wǎng)絡(luò)層數(shù)受限的問題,這對模型進一步的研究有較大的影響。
DGCF算法模型主要由嵌入層、前向傳播層、預測層組成。嵌入層負責利用用戶與項目交互信息進行建模,得到初始嵌入向量;前向傳播層對嵌入層傳來的初始嵌入向量進一步細化,對除最后一層外每一層輸出向量進行規(guī)范化處理,提取更深的嵌入表示;在預測層將每一層網(wǎng)絡(luò)的輸出,利用自注意力機制(self attention mechanism,SA)進行層組合,獲得用戶(項目)節(jié)點的最終的嵌入表示,計算得到預測的評分。算法整體流程如圖1所示。
(1)
(2)
嵌入層的結(jié)構(gòu)如圖2所示。
圖2 嵌入層Fig.2 Embedded layer
圖3 前向傳播網(wǎng)絡(luò)Fig.3 Forward propagation network
2.3.1 傳播規(guī)則
文獻[16]的研究結(jié)果表明,GCN中最常見的2種設(shè)計:特征轉(zhuǎn)換和非線性激活,對協(xié)同過濾的性能幾乎沒有貢獻。模型中包含這2種操作反而會增加訓練的難度,并且降低推薦的性能。本文采用與其相似的傳播規(guī)則。圖卷積操作(傳播規(guī)則)為簡單的加權(quán)求和聚合器,操作可以抽象為
(3)
以用戶u1和項目i3為例,用戶u1在DGCF傳播一次的規(guī)則為
(4)
同理,項目i3在DGCF傳播一次的規(guī)則為
(5)
2.3.2 規(guī)范化層
LI等[18]的研究第一次證明圖卷積是拉普拉斯平滑的一種,在多次重復圖卷積操作后,圖中節(jié)點的特征會收斂到相同的值,這個問題被稱為“過平滑”。過平滑會導致不同節(jié)點間的表示變得不可區(qū)分,從而損害性能。因此,對深層GCN的研究,實際上是在研究如何有效解決過平滑問題。
為提取用戶與項目之間更深層的關(guān)聯(lián)關(guān)系,需要堆疊多層圖卷積來捕獲高階特征。DGCF模型引入規(guī)范化層,以防止節(jié)點嵌入表示隨著網(wǎng)絡(luò)層數(shù)的加深而變得過于相似。
假設(shè)用戶-項目交互圖上,共有t個節(jié)點,ex代表節(jié)點x的嵌入向量,ex∈d。規(guī)范化層的基本思想,是確保初始距離較遠的2個節(jié)點,在圖卷積操作后,節(jié)點的向量表示距離也相對較遠。
規(guī)范化層的操作可以總結(jié)為2步:中心化和重新拉伸。中心化的過程為
(6)
(7)
通過(6)—(7)式進行特征規(guī)范化處理后,用戶-項目交互圖上所有的節(jié)點向量表示,總的成對距離保持不變;遠距離節(jié)點間,保留較少的相似特征。這種操作既可以提取節(jié)點的特征信息,也可以防止這些特征信息在整個用戶-項目交互圖上混合,放大了節(jié)點特征信息的差異。
規(guī)范化層沒有引入額外的參數(shù),可以減小過擬合的風險。規(guī)范化層的作用是當網(wǎng)絡(luò)層數(shù)加深時,用戶-項目交互圖上各個節(jié)點的特征不會變得過于相似,以此來緩解過平滑。
模型對于用戶(項目)節(jié)點的最終表示使用層組合的方式。這是因為在GCN中,隨著層數(shù)的增加,節(jié)點的嵌入表示會出現(xiàn)過平滑現(xiàn)象,即所有的節(jié)點的特征將會收斂到相同的值,這會導致嵌入表示與節(jié)點本身的特征完全無關(guān)了。因此,簡單地使用最后一層是存在問題的。其次,不同層的嵌入捕獲不同的關(guān)聯(lián)關(guān)系,將它們組合起來,使得節(jié)點嵌入表示更加全面。
DGCF的層組合使用自注意力機制[19],為每一層嵌入表示動態(tài)分配權(quán)重。注意力機制的引入,可以有效防止長距離信息傳播弱化節(jié)點本身特征,凸顯節(jié)點重要特征。
(8)
(9)
(10)
(8)—(10)式中:Wq∈Dq×De;Wk∈Dq×De、Wv∈Dv×De、w1、w2為可訓練的參數(shù)矩陣;tanh表示激活函數(shù)。使用縮放點擊作為注意力打分函數(shù),自注意力評分矩陣為
(11)
(11)式中:Dq表示查詢向量Q的維度;softmax表示歸一化函數(shù)。輸出的節(jié)點嵌入表示為
(12)
模型預測定義為用戶和項目最終表示的內(nèi)積。
(13)
為了優(yōu)化模型,本文采用貝葉斯個性化排名[20](bayesian personalized ranking,BPR)損失函數(shù),表達式為
λ||Θ||2
(14)
(14)式中:O={(u,i+,i-)|(u,i+)∈R+,(u,i-)∈R-},R+表示與用戶u交互的正實例;R-表示與用戶u交互的負實例;Θ是模型的參數(shù)集合,采用L2正則化防止過擬合,λ控制L2的正則強弱。本文使用Adam優(yōu)化器優(yōu)化模型參數(shù)。
模型訓練中引入DropEdge機制,通過在每個訓練epoch上隨機刪除一定數(shù)量的邊,增加數(shù)據(jù)的多樣性以防止過擬合,同時放緩圖卷積中消息傳遞的速度以緩解過平滑問題。
實驗采用Python作為編程語言,硬件配置:CPU Intel(R) Xeon(R) Gold 5218 32 GByte內(nèi)存,GPU GeForce RTX 2080 Ti 11G顯存,使用Pytorch框架構(gòu)建神經(jīng)網(wǎng)絡(luò),訓練模型。
為了評估DGCF模型的性能,選用Amazon-book、Gowalla、Yelp2018這3個公開數(shù)據(jù)集作為實驗數(shù)據(jù)集。3個數(shù)據(jù)集的密度依次為0.061 9%、0.084%、0.13%,對其進行預處理操作保證數(shù)據(jù)質(zhì)量。數(shù)據(jù)集統(tǒng)計信息如表1所示。
表1 數(shù)據(jù)集統(tǒng)計表Tab.1 Dataset statistics
3.2.1 基準算法
NeuMF[4]:一種神經(jīng)網(wǎng)絡(luò)協(xié)同過濾模型,結(jié)合矩陣分解和多層感知機為用戶和項目嵌入表示捕捉非線性特征交互。
BPRMF[20]:基于貝葉斯個性化排序的矩陣因子分解技術(shù),通過隨機梯度下降優(yōu)化一個成對排序的目標函數(shù)。
GC-MC[21]:采用層數(shù)為一的圖卷積網(wǎng)絡(luò)作為編碼器生成用戶和商品的嵌入表示。
NGCF[15]:具有代表性的基于圖的協(xié)同過濾模型,利用二部圖傳播用戶和項目的嵌入表示來獲得評分預測。
KGAT[22]:基于協(xié)同知識圖譜來顯式建模高階關(guān)系,不僅對用戶-項目交互進行建模,還加入關(guān)系信息。
LightGCN[16]:基于NGCF模型進行改進,在用戶和項目交互圖上線性學習節(jié)點的嵌入表示。
3.2.2 評價指標
針對用戶個性化推薦列表Top-N推薦,本文選用以下2個評估指標來評價模型的性能。
Recall@20:Recall(召回率)用來衡量Top-20推薦中,模型推薦正確的項目個數(shù),在測試集中所有與用戶有過交互行為的項目個數(shù)中,所占的比例。召回率越高,證明模型推薦效果越好。
NDCG@20:NDCG(歸一化折損累計增益)不同于召回率,召回率不需要區(qū)分推薦列表的項目排名,NDCG衡量了推薦列表中不同位置推薦結(jié)果的相關(guān)性得分,與用戶相關(guān)性越高的推薦商品的排序越靠前。
3.2.3 超參數(shù)設(shè)置
本文設(shè)定節(jié)點的嵌入維度為64,嵌入?yún)?shù)使用Xavier方法初始化,以確保每一層梯度大小相近。批處理的大小為1 024,默認學習率為0.001。規(guī)范化層中s設(shè)置為1。對比模型的嵌入維度與本文模型 DGCF的嵌入維度保持一致;批處理的大小和學習率在[256,512,1 024]和[0.001,0.005,0.01]中選擇。λ控制L2的正則化強度,取值為{1e-5,…,1e-1}。DropEdge隨機刪邊的概率為{0.0,0.1,…,0.3}。對于層組合中的層數(shù)k,在引入規(guī)范化層后,從[1,2,3,…,7,8]測試k,通過3.3.1小節(jié)的表2中對比的實驗數(shù)據(jù),當更新層數(shù)k=5時,模型可以獲得最好的效果。
表2 網(wǎng)絡(luò)層數(shù)對比實驗Tab.2 Network layer comparison experiment
3.3.1 網(wǎng)絡(luò)層數(shù)對比實驗
網(wǎng)絡(luò)更新層數(shù)的增加有利于較遠距離節(jié)點間進行信息交互,但也會造成模型性能的下降,這是由GCN本身的傳播規(guī)則所決定的。因此,需要通過參數(shù)設(shè)置實驗來測試,當層數(shù)K取何值,模型可以取得最優(yōu)的性能。使用Recall@20,NDCG@20作為層數(shù)對比實驗的評價指標。實驗結(jié)果如表2所示。
從表2中的數(shù)據(jù)可知,在1—8范圍內(nèi)測試層數(shù)k,評價指標Recall@20,NDCG@20會隨著k的增加而上升,當k=5時,評價指標達到峰值,繼續(xù)增加網(wǎng)絡(luò)層數(shù)后,指標開始下降。因此,可以推斷,k=5時,模型提取的相關(guān)關(guān)系已達到飽和,繼續(xù)增加網(wǎng)絡(luò)層數(shù)已無法再提取更多有效的信息,反而會因過平滑現(xiàn)象使性能下降。
3.3.2 基準模型對比實驗
本文提出的DGCF模型與6個基準模型相比,在2個評價指標上均取得最好的效果。相比于次優(yōu)模型LightGCN,在Amazon-book數(shù)據(jù)集上,Recall@20,NDCG@20分別提升3.406%,2.540%;在Gowalla數(shù)據(jù)集上,Recall@20,NDCG@20分別提升1.257%,1.287%;在Yelp2018數(shù)據(jù)集上,Recall@20,NDCG@20分別提升0.6163%,0.943%;從而證明DGCF模型的有效性。
此外,Amazon-book、Gowalla、Yelp2018三個數(shù)據(jù)集的數(shù)據(jù)密度分別為0.061 9%、0.084%、0.13%,而DGCF在Amazon-book數(shù)據(jù)集上的提升也高于Gowalla、Yelp2018。因此,可以推測,網(wǎng)絡(luò)層數(shù)的增加對模型處理數(shù)據(jù)稀疏問題是有幫助的。
DGCF模型性能的最優(yōu)歸因于加深網(wǎng)絡(luò)層數(shù)來建立用戶-項目交互圖上較遠距離節(jié)點間的依賴關(guān)系,通過信息傳播來提取高階特征,從而產(chǎn)生高質(zhì)量的個性化推薦,性能比較如表3所示。
表3 DGCF與基準模型性能對比Tab.3 Performance comparison between DGCF and benchmark model
3.3.3 消融實驗分析
針對不同模塊對模型推薦性能產(chǎn)生的影響,設(shè)計2個變體與DGCF進行比較,其中,BASE模型為基礎(chǔ)模型LightGCN,網(wǎng)絡(luò)層數(shù)為3。
DGCF-2:前向傳播網(wǎng)絡(luò)中每一層的輸出直接作為下一層網(wǎng)絡(luò)的輸入,不引入規(guī)范化層;層組合階段,引入SA機制將各層的輸入進行組合。網(wǎng)絡(luò)更新層數(shù)設(shè)置為3,對比結(jié)果如表4所示。
表4 DGCF與變體模型對比Tab.4 Comparison between DGCF and variant models
從表4可以看出,DGCF-2的2個評價指標Recall、NDCG相較于DGCF模型而言,有中等程度的性能損失,DGCF-1則有明顯的性能損失。
由此可以得出結(jié)論:①規(guī)范化層的作用是為了防止性能會隨著網(wǎng)絡(luò)層數(shù)的加深而下降,單獨使用對整體推薦性能提升的幫助有限,并且在網(wǎng)絡(luò)更新層數(shù)設(shè)置為5的情況下,最終節(jié)點表示設(shè)置為每一層輸出的平均值,沒有充分利用每一層輸出側(cè)重的特征信息,而更新層數(shù)的增加使得最終節(jié)點表示包含了更多重復特征,最終導致DGCF-1結(jié)果反而不如BASE模型;②使用自注意力機制對不同層的輸出進行層組合可以獲得更好的節(jié)點最終表示,但最佳性能也是在3層模型上實現(xiàn)的。因此,在加深網(wǎng)絡(luò)層數(shù)時,規(guī)范化層防止節(jié)點嵌入變得過于相似,利用自注意力機制進行層組合可以幫助較遠距離節(jié)點間的建立依賴關(guān)系,二者結(jié)合可以有效幫助模型的推薦性能提升。
本文提出一種DGCF模型,旨在改善基于GCN的推薦算法中網(wǎng)絡(luò)層數(shù)受限的問題。該模型在圖卷積的過程中引入規(guī)范化層,防止網(wǎng)絡(luò)層數(shù)的加深而導致節(jié)點特征在用戶-項目交互圖上變得混亂,保留節(jié)點初始特征;并使用自注意力機制進行層組合。實驗結(jié)果表明,增加網(wǎng)絡(luò)層數(shù)有利于節(jié)點之間進行信息交互,可以捕獲節(jié)點間的高階關(guān)聯(lián)關(guān)系,特別是在數(shù)據(jù)稀疏的情況下有更好的效果。在未來,將考慮節(jié)點特征缺失情況下,深層圖卷積神經(jīng)網(wǎng)絡(luò)推薦算法如何恢復節(jié)點的有效特征表示,為目標節(jié)點生成推薦。