卓佳寧,雷景生,周雪雪
(上海電力大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 200090)
這是一個(gè)信息爆炸的時(shí)代,大數(shù)據(jù)這把雙刃劍在為我們帶來豐富的知識(shí)訊息的同時(shí),也產(chǎn)生了不少“數(shù)據(jù)泡沫”,用戶常常被這些無效信息包圍,無從下手,而用戶真正感興趣的信息被阻絕在外.為了解決這一問題,推薦系統(tǒng)應(yīng)運(yùn)而生,旨在為每個(gè)特定用戶從海量數(shù)據(jù)中篩選出其各自感興趣的內(nèi)容并推薦給用戶.推薦系統(tǒng)的關(guān)鍵之一在于對用戶興趣以及物品特征的建模表示,從而能夠進(jìn)一步通過評分模型對用戶、物品預(yù)測相關(guān)程度,并以此為依據(jù)進(jìn)行推薦.另一方面,社交網(wǎng)絡(luò)中好友、大V 等社交關(guān)系也可能會(huì)影響用戶的潛在興趣,社交網(wǎng)絡(luò)也越來越多地被結(jié)合到推薦系統(tǒng)中來[1-3],在推薦時(shí)利用通過社交網(wǎng)絡(luò)的傳播的信息,提高了推薦的針對性與有效性.
基于圖神經(jīng)網(wǎng)絡(luò)(GNNs)的推薦算法[4,5]是推薦系統(tǒng)應(yīng)用的熱門算法之一.GNN 在圖結(jié)構(gòu)拓?fù)渖蠎?yīng)用深度神經(jīng)網(wǎng)絡(luò)的技術(shù)對局部圖的鄰域信息進(jìn)行迭代,使得信息能夠在非結(jié)構(gòu)化的節(jié)點(diǎn)關(guān)系中進(jìn)行交互計(jì)算,最終得到各個(gè)節(jié)點(diǎn)在圖拓?fù)浣Y(jié)構(gòu)下的特征域表示.社交推薦本質(zhì)上是在非規(guī)則的用戶-物品關(guān)系、用戶-用戶關(guān)系中聚合并表示各個(gè)節(jié)點(diǎn)的本征信息與交互關(guān)系,因此GNN 在社交推薦中得到了廣泛的應(yīng)用[6,7].
圖神經(jīng)網(wǎng)絡(luò)通常描述的是靜態(tài)拓?fù)潢P(guān)系,一方面,節(jié)點(diǎn)之間的連接關(guān)系不會(huì)隨時(shí)間發(fā)生改變.對于推薦系統(tǒng)而言,時(shí)時(shí)刻刻都有海量新數(shù)據(jù)產(chǎn)生,新用戶、新物品以及新交互事件都會(huì)改變已有圖網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu).另一方面,對于特定節(jié)點(diǎn),其鄰居節(jié)點(diǎn)的時(shí)序性通常被GNN 所忽略.例如,對于推薦系統(tǒng)中的用戶-物品圖結(jié)構(gòu)而言,以用戶為中心,則其鄰居節(jié)點(diǎn)即為該用戶交互過的物品,而用戶與不同物品的交互自然存在時(shí)間上的先后,而交互時(shí)間的時(shí)序性則可能暗含了用戶興趣隨時(shí)間的變化情況.
本文主要針對第二點(diǎn)提出改進(jìn)GNN 算法,利用門控循環(huán)單元(GRU)對時(shí)間序列信息進(jìn)行選擇性遺忘與選擇性記憶,以此對用戶-物品交互歷史以及物品-用戶交互歷史進(jìn)行建模,增強(qiáng)了GNN 算法在局部圖鄰域迭代過程中對時(shí)序信息的抽象能力,使得推薦系統(tǒng)對用戶節(jié)點(diǎn)以及物品節(jié)點(diǎn)的表示結(jié)合了其特點(diǎn)隨時(shí)間的變化,提升了推薦的效果.具體而言,我們分別建立了以用戶節(jié)點(diǎn)為中心的用戶-物品圖,每個(gè)用戶節(jié)點(diǎn)的相鄰節(jié)點(diǎn)為其交互過的物品,這些相鄰節(jié)點(diǎn)通過交互時(shí)間戳屬性排序,在GNN 進(jìn)行局部圖鄰域迭代時(shí)通過GRU 學(xué)習(xí)物品交互歷史潛在關(guān)聯(lián),并通過注意力機(jī)制與用戶表征進(jìn)行聚合;類似的,同時(shí)建立以物品節(jié)點(diǎn)為中心的物品-用戶圖,每個(gè)物品節(jié)點(diǎn)的相鄰節(jié)點(diǎn)為與其交互過的用戶,同樣按照交互事件的時(shí)間戳排序,并通過注意力GRU 模型進(jìn)行聚合,以此來表征對該物品感興趣的群體特征變化;另外,還根據(jù)用戶間的社交關(guān)系建立了用戶-用戶圖網(wǎng)絡(luò),通過注意力機(jī)制來傳遞社交網(wǎng)絡(luò)中相鄰用戶之間的相互作用.
深度學(xué)習(xí)主要關(guān)注例如文字的序列結(jié)構(gòu)、例如圖片的平面結(jié)構(gòu),現(xiàn)在處理這些數(shù)據(jù)的做法也比較成熟,關(guān)注序列任務(wù)的NLP 領(lǐng)域多用RNN、Transformer、CNN 對數(shù)據(jù)進(jìn)行Encoder,而關(guān)注平面結(jié)構(gòu)的CV 領(lǐng)域更多使用CNN 及其各種變體對數(shù)據(jù)進(jìn)行Encoder.在現(xiàn)實(shí)世界中更多的數(shù)據(jù)表示并不是序列或者平面這種簡單的排列,而是表現(xiàn)為更為復(fù)雜的圖結(jié)構(gòu).
Kipf和Welling[8]提出了用于半監(jiān)督圖分類的圖卷積網(wǎng)絡(luò)(GCNs).模型通過利用節(jié)點(diǎn)屬性和圖結(jié)構(gòu)來學(xué)習(xí)節(jié)點(diǎn)表示,它由多個(gè)圖卷積層組成,每個(gè)圖卷積層使用當(dāng)前節(jié)點(diǎn)的表示及其相鄰節(jié)點(diǎn)的表示的組合來更新節(jié)點(diǎn)表示.通過這個(gè)過程,可以捕獲節(jié)點(diǎn)之間的依賴關(guān)系,然而在原來的公式中,當(dāng)更新節(jié)點(diǎn)表示時(shí),所有的鄰居被賦予靜態(tài)權(quán)值.Fan 等[9]通過構(gòu)建用戶-物品關(guān)系二元圖 (用戶購買的所有物品)、用戶-朋友關(guān)系單元圖 (用戶的社交關(guān)系)、物品-用戶關(guān)系二元圖 (物品被用戶購買的記錄)這3 個(gè)無向圖用于對物品進(jìn)行評分預(yù)測.Ying 等[10]構(gòu)建了用戶-標(biāo)簽無向二元圖,通過 PinSage 算法 (隨機(jī)游走和圖卷積結(jié)合)成功應(yīng)用于超大規(guī)模的網(wǎng)頁內(nèi)容推薦.Wang 等[11]構(gòu)建用戶—物品圖,不同之處在于 GNN 算法中使用目標(biāo)節(jié)點(diǎn)及其鄰居節(jié)點(diǎn)的點(diǎn)積進(jìn)行更新,并且通過協(xié)同過濾的方法進(jìn)行推薦.上述文獻(xiàn)證明了圖網(wǎng)絡(luò)在推薦上的有效性,但都沒有考慮時(shí)序性對用戶興趣以及物品的影響.
對于隨時(shí)間變化的用戶興趣進(jìn)行建模在推薦系統(tǒng)領(lǐng)域也引起了大量關(guān)注,這些模型大多基于(高斯)矩陣分解[12].例如,Xiong 等[13]通過分解(用戶、物品、時(shí)間)張量來學(xué)習(xí)時(shí)間表示.Koren[14]開發(fā)了一個(gè)類似的模型叫做timeSVD++.Gopalan 等進(jìn)行了類似的建模,但是使用了泊松分解[15].但是,這些方法假定用戶的興趣在長期范圍內(nèi)緩慢而平穩(wěn)地變化,通常以月或年為序.
為了有效地捕捉用戶的短期興趣,最近的研究將RNN 引入到用戶最近的(有序的)行為模型中.例如,Hidasi 等[16]首先提出了SessionRNN 來模擬用戶在會(huì)話中的興趣.Wu 等[17]使用兩個(gè)獨(dú)立的RNNs 根據(jù)新的觀察結(jié)果更新用戶和項(xiàng)的表示.Beutel 等[18]構(gòu)建了一個(gè)基于rnnde的推薦器,可以包含輔助上下文信息.本文基于這種思路將GRU 引入圖網(wǎng)絡(luò),并且輔之以注意力機(jī)制,來捕捉用戶的時(shí)變興趣和物品的時(shí)變特征,進(jìn)而提升了推薦系統(tǒng)在時(shí)序評分?jǐn)?shù)據(jù)集上的有效性.
本文以圖網(wǎng)絡(luò)為骨架建立推薦系統(tǒng),定義用戶集合{U|u1,u2,···,uN} 與物品集合{V|v1,v2,···,vM},則圖頂點(diǎn)集合為U ∪V.圖網(wǎng)絡(luò)中存在兩種非同質(zhì)邊緣,第一種邊表示用戶與物品之間的交互關(guān)系,即{R|U×V}=描述了用戶ui對物品vj進(jìn)行過評價(jià),邊ri,j的權(quán)重記為,表示用戶ui對物品vj的評分量化分值,邊ri,j的時(shí)間戳記為,表示此次評分事件發(fā)生的時(shí)刻;第二種邊表示用戶與用戶之間的有向交互,即{S|U×U}={S|si,j:=(ui→uj),ui,uj∈U},表示用戶ui在 社交平臺(tái)上關(guān)注了用戶uj,邊si,j的權(quán)重記為,表示用戶ui與uj社交關(guān)系重要性的量化值,本文不考慮社交網(wǎng)絡(luò)的時(shí)序特征,因此邊si,j無時(shí)間戳屬性.
因此,本文推薦系統(tǒng)可描述為:給定用戶集合 U、物品集合 V,以及評分邊集合R、社交邊集合S,經(jīng)過一定的訓(xùn)練算法得到優(yōu)化預(yù)測函數(shù) F,使得對于任意ui∈U,vj∈V,ri,j?R,可預(yù)測用戶ui對物品vj的評分=F(ui,vj),作為是否推薦的依據(jù).以下將分別以用戶節(jié)點(diǎn)與物品節(jié)點(diǎn)為中心,展開介紹圖網(wǎng)絡(luò)局部圖鄰域聚合的具體算法細(xì)節(jié).
GNN 中常用局部圖鄰域聚合技術(shù)[8,19]來傳遞鄰近節(jié)點(diǎn)之間的信息,并迭代訓(xùn)練各節(jié)點(diǎn)的抽象表示.對于給定圖G(ν,E),定義k階鄰域函數(shù)Neighk(vi)={vk|(vi,vi,1),···,(vi,k-1,vk)∈E},即vi與vk之間存在長度為k的路徑.本文采用一階鄰域函數(shù),簡記為N.則GNN 局部圖鄰域聚合算法可見算法1.
算法1.GNN 局部圖鄰域聚合算法的第n 次迭代1)遍歷圖的頂點(diǎn),對每個(gè)頂點(diǎn),執(zhí)行第2)~4)步操作;vi N(vi)=Neigh(vi)G V vi 2)計(jì)算的鄰域節(jié)點(diǎn)集合;Agg N(vi)vagg i=Agg(N(vi))3)利用聚合函數(shù) 計(jì)算的聚合表示結(jié)果;vagg i 4)將聚合結(jié)果 與頂點(diǎn)自身 拼接,并進(jìn)行線性仿射與非線性激活,得到該頂點(diǎn)本次迭代的表示.vi v(n)i
上述算法中聚合函數(shù)Agg有多種選擇,常見的如拼接、注意力、卷積等.本文根據(jù)邊ri,j存在時(shí)序性的特點(diǎn),選擇基于注意力機(jī)制的門控循環(huán)單元作為鄰域聚合函數(shù),以提取各節(jié)點(diǎn)鄰域集合中的時(shí)序信息,提高推薦系統(tǒng)對時(shí)序數(shù)據(jù)的學(xué)習(xí)能力.
本文推薦系統(tǒng)圖模型中(如圖1所示),頂點(diǎn)集合由用戶集合 U、物品集合 V兩部分組成,邊集合由評分關(guān)系集合 R、社交關(guān)系集合 S構(gòu)成,其中不包含關(guān)于物品集合 V的閉集邊集,因此整個(gè)圖可劃分為3 個(gè)局部圖:用戶-物品圖、用戶-用戶圖以及物品-用戶圖,以下將分別討論其鄰域聚合算法.另外,用戶ui、物品vj分別通過嵌入層獲得其向量表示,;考慮到數(shù)據(jù)集中評分的取值為離散整數(shù)0-5,權(quán)重也通過對評分分值的嵌入向量表示,即.
考慮圖模型中的用戶節(jié)點(diǎn)ui以及以其為端點(diǎn)的評分邊Rui構(gòu)成的局部圖(圖1左上角子圖),即用戶-物品圖.則ui的鄰域節(jié)點(diǎn)為用戶ui所 評價(jià)過的物品集合NV(ui),根據(jù)各評分邊的時(shí)間戳t,可得到用戶評分事件的時(shí)序排列.為提取用戶評價(jià)物品的時(shí)序特征,本文在用戶-物品圖鄰域聚合采用基于注意力的門控循環(huán)單元(Attention-GRU)來提取評分序列特征,算法如算法2 所示.
算法2.用戶-物品圖AGRU 聚合算法,第n 次迭代1)遍歷用戶集合,對每個(gè)頂點(diǎn),執(zhí)行第2)~8)步操作;ui V NV(ui)=NeighV(ui)L=■■■NV(ui)■■■U ui 2)計(jì)算 在物品集合 上的鄰域節(jié)點(diǎn)集合,鄰域節(jié)點(diǎn)數(shù)量;NV(ui)v jti,j S eq(ui)=[v1,v2,···,vL] ti,1≤ti,2≤···≤ti,L 3)將 中的物品節(jié)點(diǎn) 按時(shí)間戳 升序排列,得到長度為L的物品序列,其中;S eq(ui)v jeVj wRi,jeRi,jeVjeRi,j e j′ S eq(ui)=[e1′,e2′,···,eL′]4)對序列 中的每個(gè)物品元素,查詢其嵌入表示,以及對應(yīng)評分的嵌入表示;將 與 拼接輸入多層感知機(jī)降維得到包含評分分值信息的物品表示;更新;S eq(ui)h0 Outseq=[h(k)1,h(k)2,···,h(k)L 5)將序列 作為GRU的輸入,同時(shí)輸入初始隱藏狀態(tài),得到GRU 在每個(gè)時(shí)刻末層輸出構(gòu)成的長度為L的序列,其中k為GRU的縱向堆疊層數(shù);h(k)L]6)以GRU 末層最后時(shí)刻的隱藏狀態(tài)為參考,用注意力機(jī)制對中的L 個(gè)元素進(jìn)行加權(quán)平均得到;h′ h(k)L Outseqh′7)拼接 與,并經(jīng)過線性層以及非線性ReLU 激活,得到,作為鄰域集合的聚合結(jié)果,即;uagg i NV(ui)Agg(NV(ui))=uagg uagg i i eUi 8)將聚合結(jié)果 與頂點(diǎn)自身嵌入表示拼接,并進(jìn)行線性仿射與非線性激活,得到該用戶節(jié)點(diǎn)第n 次迭代的表示.u(n)i
上述算法中,第4)步采用雙層感知機(jī)降維:
第5)步中第m=1,2,···,k層GRU[20]在時(shí)刻t=1,2,···,L執(zhí)行下列計(jì)算:
其中,δ表示Dropout 函數(shù),*表示Hadamard 乘積,σ表示Sigmoid 激活函數(shù):
每個(gè)GRU 單元的內(nèi)部結(jié)構(gòu)如圖2所示,xt表示當(dāng)前時(shí)刻的輸入,h(t-1)則表示該GRU 單元上一時(shí)刻的隱藏狀態(tài).兩者拼接并分別通過獨(dú)立全連接層得到重置因子rt和遺忘因子zt,由于經(jīng)過了Sigmoid 激活,兩種因子的取值范圍均在0 到1 之間.重置因子對上一時(shí)刻的隱藏狀態(tài)進(jìn)行重置,并將結(jié)果與當(dāng)前輸入拼接后傳遞給tanh 激活的全連接層,得到以當(dāng)前輸入為主、隱藏狀態(tài)為輔的表示nt.另一方面,遺忘因子zt與記憶因子1-zt分別對h(t-1)和nt調(diào)制,實(shí)現(xiàn)了對序列歷史隱含信息的選擇遺忘以及當(dāng)前輸入的選擇記憶.
圖1 基于AGRU-GNN的圖網(wǎng)絡(luò)社交推薦算法架構(gòu)
圖2 GRU 單元內(nèi)部結(jié)構(gòu)
取GRU 第k層的隱藏狀態(tài)Outseq=作為輸出,并基于輸出單元數(shù)量為1的多層感知機(jī)+Softmax 實(shí)現(xiàn)注意力機(jī)制(如圖3所示),獲得的注意力權(quán)重系數(shù)pi:
則鄰域NV(ui)聚合特征:
圖3 基于注意力機(jī)制的GRU 聚合算法架構(gòu)
另一方面,考慮用戶節(jié)點(diǎn)ui以及以其為起始端點(diǎn)的社交邊 Sui構(gòu)成的局部圖,即用戶-用戶圖(圖1右上角子圖).本算法中社交邊集為有向邊集,每條邊表示用戶的單向關(guān)注關(guān)系,則ui的鄰域節(jié)點(diǎn)為用戶ui所關(guān)注的用戶集合NU(ui).社交邊si,j的權(quán)重量化為被關(guān)注者uj的影響力因子:
在用戶-用戶局部圖的鄰域聚合的第n次迭代中,使用用戶-物品局部圖第n次迭代聚合的結(jié)果u作為節(jié)點(diǎn)ui的向量表示,使得AGRU 捕獲到的時(shí)序特征也能夠通過社交邊進(jìn)行傳播.具體聚合過程如下:
首先,查詢用戶-物品圖在用戶集合NU(ui)上的迭代結(jié)果得到:隨后通過如式(10)-(14)所示的注意力網(wǎng)絡(luò)得到關(guān)于其每個(gè)鄰域節(jié)點(diǎn)的邊權(quán)加權(quán)表示的注意力權(quán)重pj.則社交局部圖的鄰域聚合特征
最終經(jīng)過式(16)-式(18),將與節(jié)點(diǎn)自身特征融合降維后得到,即為用戶ui在第n次迭代后的最終向量表示.
類似地,考慮以物品節(jié)點(diǎn)為中心情形下的局部圖鄰域聚合算法.由于評分邊集 R是無向邊集,因此物品-用戶圖(圖1左下角子圖)與用戶-物品圖完全對偶,對于物品vi,其鄰域用戶集合NU(vi)也可通過評分邊的時(shí)間戳排序得到用戶時(shí)間序列,表示對物品vi評價(jià)過的用戶在時(shí)間上的先后次序.因此對于物品的特征迭代算法與算法2 關(guān)于 (U,V)對偶,可對稱地得到物品vi在第n次迭代后的表示.顯然地,物品社交圖沒有明顯的物理意義,因此物品模型中不包含自身社交影響力聚合,用戶ui在 第n次迭代后的最終向量表示=.當(dāng)然,用戶社交的影響因素會(huì)在物品進(jìn)行鄰域聚合時(shí)傳播給物品模型.
根據(jù)第2.2、2.3 節(jié)對用戶ui、物品vi的AGRU 聚合算法,分別得到第n次迭代后的向量表示,.將其拼接后經(jīng)過單輸出多層感知機(jī)(如圖1右下角子圖),得到對評分關(guān)系ri,j權(quán)重(即評分分值)的預(yù)測值.
在訓(xùn)練過程中,以一個(gè)批次(batch)數(shù)據(jù)的均方誤差MSE作為目標(biāo)函數(shù)對模型中的參數(shù)進(jìn)行優(yōu)化:
其中,bsize為批次規(guī)模.
在推理過程中,則即為推薦系統(tǒng)給出的用戶ui對物品vi的評分分值預(yù)測.
實(shí)驗(yàn)采用Ciao 數(shù)據(jù)集和Epinions 數(shù)據(jù)集對算法進(jìn)行驗(yàn)證,兩者均為包含社交關(guān)系信息的在線購物數(shù)據(jù)[21].數(shù)據(jù)集包含兩部分?jǐn)?shù)據(jù):(1)評分信息,每條評分?jǐn)?shù)據(jù)包括用戶索引、物品索引、評分分值(0-5)以及時(shí)間戳4 個(gè)維度;(2)社交信息,每條社交數(shù)據(jù)包括關(guān)注者用戶索引以及被關(guān)注者用戶索引,表示用戶單向關(guān)注關(guān)系.Ciao 數(shù)據(jù)集與Epinions 數(shù)據(jù)集的特點(diǎn)如表1所示.
對數(shù)據(jù)集的預(yù)處理包括數(shù)據(jù)清洗、索引重映射、數(shù)據(jù)集切分、圖建模、時(shí)間戳排序5 個(gè)步驟.數(shù)據(jù)清洗主要完成數(shù)據(jù)去重,評分?jǐn)?shù)據(jù)中包含少量重復(fù)評分邊ri,j,根據(jù)其時(shí)間戳t保留較新的數(shù)據(jù);隨后對數(shù)據(jù)集用戶集合 U、物品集合 V分別進(jìn)行索引重映射,將原始索引映射至 [1,2,···,|U|],[1,2,···,|V|]范圍內(nèi),方便嵌入層映射;之后將數(shù)據(jù)集中的評分邊 R集隨機(jī)劃分為訓(xùn)練評分邊集 Rtrain和測試評分邊集Rtest,分別比較訓(xùn)練集比重為60%和80%的實(shí)驗(yàn)結(jié)果;對訓(xùn)練集和測試集,分別建立第2 節(jié)中描述的推薦圖模型,并對每個(gè)用戶節(jié)點(diǎn)的鄰域物品節(jié)點(diǎn)按時(shí)間戳提前排序,則圖網(wǎng)絡(luò)迭代過程中無需重復(fù)排序,以降低計(jì)算量,對于物品節(jié)點(diǎn)的鄰域用戶節(jié)點(diǎn),也按同樣方法提前排序.
表1 Ciao 數(shù)據(jù)集與Epinions 數(shù)據(jù)集特征
本文采用衡量推薦系統(tǒng)推薦效果的兩個(gè)常用指標(biāo)作為評判標(biāo)準(zhǔn):均方根誤差RMSE和平均絕對誤差MAE:
其中,y表示測試集所有評分邊的權(quán)重(真實(shí)值)則表示推薦系統(tǒng)對測試集各評分邊的預(yù)測權(quán)重(預(yù)測值)RMSE與MAE越小,表明推薦系統(tǒng)預(yù)測的評分與真實(shí)值差距越小,推薦效果越好.
我們選取下列模型作為本算法對比的基準(zhǔn)模型:
(1)概率矩陣分解(PMF)[12]:對用戶潛在因子、物品潛在因子建模,利用用戶-物品評分概率矩陣進(jìn)行推薦;
(2)社交推薦(SoRec)[22]:基于用戶-物品評分矩陣提取聯(lián)合潛在因子特征,并結(jié)合社交矩陣進(jìn)行推薦;
(3)社交矩陣分解(SocialMF)[3]:考慮了社交信任度在用戶-物品評分矩陣分解空間中的傳播;
(4)神經(jīng)網(wǎng)絡(luò)矩陣分解(NCF)[23]:將神經(jīng)網(wǎng)絡(luò)與矩陣分解結(jié)合進(jìn)行推薦;
(5)深度社交網(wǎng)絡(luò)推薦(Deep-SoR)[24]:利用深度神經(jīng)網(wǎng)絡(luò)對用戶在社交關(guān)系中的特征進(jìn)行訓(xùn)練,并通過概率矩陣分解實(shí)現(xiàn)推薦;
(6)圖網(wǎng)絡(luò)推薦(GraphRec)[9]:根據(jù)社交關(guān)系和評分關(guān)系建立圖網(wǎng)絡(luò),利用注意力機(jī)制迭代圖節(jié)點(diǎn),訓(xùn)練用戶、物品的嵌入表示來實(shí)現(xiàn)推薦.
本文采用Python 3.8,PyTorch 1.6,Cuda 10.2 作為搭建算法的環(huán)境,工作站CPU為4 核Intel(R)Core(TM)i5-7500@3.40 GHz,GPU 型號(hào)為NVIDIA GP102 [TITAN Xp].
本算法以batch為單位進(jìn)行訓(xùn)練,為了避免過擬合,在各非線性激活函數(shù)輸出端增加dropout 層,丟棄概率全局統(tǒng)一設(shè)置;同時(shí)在圖網(wǎng)絡(luò)的每一批次迭代中,對同一batch的用戶、物品向量表示進(jìn)行批次歸一化.算法中的超參數(shù)經(jīng)過驗(yàn)證集(從訓(xùn)練集中抽取20%得到)反復(fù)調(diào)整得到:嵌入維度(用戶、物品、評分采用統(tǒng)一嵌入維度)為64,GRU 縱向堆疊層數(shù)k=2,dropout 丟棄概率為0.5,批次大小為64,學(xué)習(xí)率為0.0005.
本文在Ciao、Epionions 數(shù)據(jù)集分別選取60%、80%作為訓(xùn)練集,其余作為測試集對提出的算法進(jìn)行了驗(yàn)證,并與第3.3 節(jié)列出的幾種基準(zhǔn)模型進(jìn)行了對比,RMSE和MAE比較結(jié)果如表2.
從表2的結(jié)果可以看出,本文所提出的基于AGRUGNN 算法在Ciao 數(shù)據(jù)集和Epinions 數(shù)據(jù)集上比表中所列的基準(zhǔn)模型誤差更小.其中PMF和NCF 只利用了用戶與物品的評分?jǐn)?shù)據(jù),而SoRec、SocialMF、Deep-SoR和GraphRec 均使用了數(shù)據(jù)集中的社交關(guān)系數(shù)據(jù),因此平均比同類模型具有更小的誤差.本文所采用的AGRU 聚合算法,通過GRU 對評分事件的時(shí)序信息提取,并加以注意力機(jī)制對不同時(shí)刻的輸出進(jìn)行了有選擇的加權(quán)平均,結(jié)合社交局部圖使得用戶對物品的時(shí)變興趣信息能夠基于社交影響關(guān)系在用戶之間傳播,從而達(dá)到了更好的推薦效果.這證明了本文提出的算法在時(shí)序推薦數(shù)據(jù)集上具有一定的優(yōu)越性.
我們還探究了不同超參數(shù)設(shè)置下,對本文推薦算法效果的影響.以Ciao(80%)數(shù)據(jù)集為例,基準(zhǔn)超參數(shù)的設(shè)置為GRU 縱向堆疊層數(shù)k=2,dropout 概率為0.5,迭代周期數(shù)為5.圖4展示了在基準(zhǔn)超參數(shù)設(shè)置下,模型預(yù)測誤差隨迭代周期數(shù)(epoch)的變化,一次迭代周期表示圖網(wǎng)絡(luò)中所有頂點(diǎn)U ∪V均被聚合迭代了一次.可以看出模型的收斂速度較快,5 個(gè)周期后便達(dá)到了最優(yōu)值,隨著迭代次數(shù)的增加,模型出現(xiàn)了一定程度的過擬合.收斂速度快得益于GRU 對時(shí)序信息具有較強(qiáng)的表示能力,快速地提取了用戶、物品的時(shí)變特征;另一方面,由于GRU 內(nèi)部結(jié)構(gòu)較為復(fù)雜,也增大了模型的參數(shù)量,因此隨即出現(xiàn)了一定程度的過擬合現(xiàn)象.
表2 本文算法AGRU-GNN 與其他推薦模型對比結(jié)果
圖4 模型預(yù)測誤差隨迭代周期數(shù)的變化
GRU的層數(shù)一定程度上決定了模型的復(fù)雜程度,為了避免嚴(yán)重的過擬合,我們研究了不同GRU 層數(shù)設(shè)置對模型誤差的影響,如圖5.可以看出,雙層GRU 在此數(shù)據(jù)集上具有較好的推薦效果,而層數(shù)過大則存在較嚴(yán)重的過擬合,層數(shù)過小則削弱了模型對時(shí)序信息的學(xué)習(xí)能力.
為了更好地抑制過擬合,模型中在大部分非線性激活單元的輸出端以及GRU 層間加入了dropout 層,并通過全局統(tǒng)一的dropout 概率加以調(diào)節(jié).圖6展示了模型最佳預(yù)測誤差隨dropout 概率的變化,以50%概率進(jìn)行丟棄時(shí),模型在預(yù)測誤差和過擬合之間達(dá)到了較好的平衡.即使以較大的概率75%進(jìn)行丟棄,模型的功能依然沒有受損,但預(yù)測誤差開始陡增.
另外,我們還對比了本文模型的若干變種模型,分別為:
圖5 模型最佳預(yù)測誤差隨GRU 層數(shù)的變化
圖6 模型最佳預(yù)測誤差隨dropout 概率的變化
(1)AGRU-GNN:采用GRU 作為圖網(wǎng)絡(luò)時(shí)序聚合模型,并在物品-用戶圖、社交圖的鄰域聚合均采用了注意力機(jī)制,即本文提出的最終模型;
(2)GRU-GNN:禁用了模型中的注意力機(jī)制,其余參數(shù)與(1)相同;
(3)ARNN-GNN:采用Vanilla RNN 作為圖網(wǎng)絡(luò)時(shí)序聚合模型,也同時(shí)采用了注意力機(jī)制;
(4)GNN(即GraphRec[9]):基準(zhǔn)圖網(wǎng)絡(luò)模型,主要采用注意力聚合.
四種變種模型分別在Ciao(80%)和Epinions(80%)數(shù)據(jù)集上進(jìn)行了對比,結(jié)果如圖7所示.GRU 對時(shí)序信息的提取篩選能力明顯優(yōu)于普通RNN,普通RNN對時(shí)序信息的選擇記憶、遺忘能力不足,導(dǎo)致ARNNGNN的推薦有效性甚至弱于基準(zhǔn)模型GraphRec;另外,注意力機(jī)制的存在也對模型整體性能有一定提升,這說明注意力機(jī)制有助于在用戶的物品交互時(shí)間序列關(guān)注重點(diǎn)事件,同樣地,在社交圖中也對不同的好友存在不同的關(guān)注權(quán)重.
圖7 變種模型最佳預(yù)測誤差RMSE 對比
綜上所述,本文提出的基于AGRU的圖網(wǎng)絡(luò)聚合算法,在帶有時(shí)間戳及社交信息的推薦數(shù)據(jù)集Ciao、Epinions 上取得了良好的性能,證明了本算法中采用的AGRU 聚合從用戶時(shí)序評價(jià)歷史中提取了有效信息,提升了推薦系統(tǒng)的準(zhǔn)確度.
本文在圖神經(jīng)網(wǎng)絡(luò)GNN 架構(gòu)的基礎(chǔ)上,基于推薦系統(tǒng)中評價(jià)事件的時(shí)序性以及用戶特征、物品特征的時(shí)變特點(diǎn),提出了一種基于門控循環(huán)單元的注意力聚合算法.通過Ciao、Epinions 數(shù)據(jù)集,證明了本算法在時(shí)序評價(jià)數(shù)據(jù)集上具有更低的預(yù)測誤差,說明用戶的時(shí)變興趣、物品的時(shí)變特征對于推薦系統(tǒng)也至關(guān)重要.GRU 對于時(shí)間序列有較強(qiáng)的學(xué)習(xí)能力,后續(xù)工作可考慮基于此算法實(shí)現(xiàn)推薦系統(tǒng)的在線訓(xùn)練,即輸入數(shù)據(jù)是隨時(shí)間流動(dòng)的流式數(shù)據(jù),圖結(jié)構(gòu)也隨數(shù)據(jù)的增長動(dòng)態(tài)變化,使GRU 從流式數(shù)據(jù)中捕獲動(dòng)態(tài)的時(shí)序特征,以此實(shí)現(xiàn)推薦系統(tǒng)的在線演變和動(dòng)態(tài)推薦.在線的動(dòng)態(tài)推薦更加接近實(shí)際生活中的推薦系統(tǒng)產(chǎn)品,當(dāng)然,還需要解決冷啟動(dòng)、計(jì)算開銷大甚至是分布式架構(gòu)設(shè)計(jì)等問題.