孫 偉,陳平華
廣東工業(yè)大學 計算機學院,廣州 510006
隨著電子商務和社交媒體平臺爆炸性增長的數(shù)據(jù)信息,推薦系統(tǒng)已經(jīng)成為處理這一問題的有效手段,近年來,個性化推薦已經(jīng)在不同的應用場景中得到廣泛應用。矩陣補全[1]是推薦系統(tǒng)中的一個子任務,在這項工作中,將評分矩陣看作用戶-項目二部圖,圖上邊的權(quán)重表示為用戶對項目的評分,將矩陣填充問題轉(zhuǎn)化為邊的權(quán)值問題[2],通過圖自編碼器獲取圖中頂點表達后進行鏈接預測。現(xiàn)有的方法在編碼器上使用傳統(tǒng)的圖卷積網(wǎng)絡(luò),結(jié)合鄰近節(jié)點特征的方式并且依賴于圖的結(jié)構(gòu)[3],局限了訓練所得模型在其他結(jié)構(gòu)上的泛化能力,鄰域之間共享權(quán)重,無法很好地區(qū)分彼此之間的重要性。
將知識圖譜(knowledge graph,KG)納入推薦的主要挑戰(zhàn)是如何有效利用KG之間的實體和圖結(jié)構(gòu)之間的關(guān)系[4],圖神經(jīng)網(wǎng)絡(luò)(graph neural network,GNN)的出現(xiàn)正好為這一問題的解決提供了有力的技術(shù)支持。盡管基于GNN的推薦方法可以自動捕獲KG的結(jié)構(gòu)和語義信息[5],但仍存在以下缺陷:首先,大多數(shù)基于GNN的方法對實體進行聚合時缺乏對特定用戶偏好的KG中實體的本地上下文(一階鄰居)建模[6];其次,在現(xiàn)有的基于GNN的推薦方法中,KG中實體的非本地上下文(最相關(guān)的高階鄰居)沒有被明確捕獲[4]。現(xiàn)有的基于GNN的方法通過逐層傳播特征來解決此限制[7],但這可能會削弱相互連接的實體的影響,甚至帶來噪聲信息[8]。為了解決上述的這些問題,本文提出基于KG上下文矩陣補全的圖注意編碼器框架,圖注意編碼器通過在雙向交互圖上使用注意力機制進行消息傳遞來生成用戶和項目節(jié)點的潛在特征[9],明確利用知識圖譜中實體的本地和非本地上下文,分別如下:基于不同用戶可能對知識圖譜中的同一實體有不同的偏好,提出一種用戶特定的圖注意力機制來聚合知識圖譜的本地上下文信息;為了顯示地利用知識圖譜中的非本地上下文信息,通過隨機游走采樣過程來提取實體的非本地上下文,然后采用遞歸神經(jīng)網(wǎng)絡(luò)在知識圖譜中對實體及非本地上下文之間的依賴關(guān)系進行建模,最后,將知識圖譜實體的本地與非本地上下文利用一個門控機制集成,將上述得到的用戶和項目表示以及結(jié)構(gòu)化的外部信息(知識圖譜)通過雙線性解碼器有效地重建評分鏈接[10]。
圖自編碼器憑借其簡潔的編碼器-解碼器結(jié)構(gòu)和高效的編碼能力,在很多領(lǐng)域都派上了用場。獲取合適的嵌入向量來表示圖中的節(jié)點不是容易的事,如果找到合適的嵌入向量,就可以以此將其應用到其他任務中。Kipf與Welling提出了基于圖的(變分)自編碼器[11](VGAE),VGAE通過編碼器-解碼器的結(jié)構(gòu)可以獲取到圖中節(jié)點的嵌入向量,來支持接下來的任務。通過利用隱變量,讓模型學習出一些分布,再從這些分布中采樣得到隱表示,這就是編碼過程。然后利用得到的隱表示重構(gòu)出原始圖,這個過程是解碼階段。GraphCAR[12]的整體框架基本遵循著圖自編碼器的框架,即先使用圖卷積神經(jīng)網(wǎng)絡(luò)獲取用戶和項目的嵌入表示,然后使用內(nèi)積來預測用戶對項目的偏好評分,并且它直接對用戶和項目的交互和邊信息一起建模。
矩陣補全的目標是用低秩的評分矩陣來近似評分矩陣,文獻[13]用核函數(shù)(矩陣奇異值之和)的最小化代替秩最小化,使目標函數(shù)變?yōu)橐粋€可處理的凸函數(shù)。文獻[14]提出幾何矩陣補全模型通過以用戶圖和項目圖的形式添加輔助信息來引入矩陣補全模型的正則化。RGCNN[15]模型探索基于用戶和項目的k近鄰圖的切比雪夫多項式的頻譜圖濾波器的應用,本文所提模型直接在交互圖上傳遞信息,直接在編碼器-解碼器中對評分圖進行建模,能夠進一步加快訓練速度。Ying等人[16]提出PinSage這種高度可擴展的圖卷積網(wǎng)絡(luò),基于Graph-Sage框架推薦Web規(guī)模圖,并且對鄰域進行二次采樣以增強可擴展性。而本文的工作將會專注于基于圖的輔助信息建模[17],并進一步引入正則化技術(shù)提高泛化能力。
基于嵌入的方法主要是通過圖嵌入的方法對實體和關(guān)系進行表征,進而擴充原有物品和用戶表征的語義信息。其中包括基于Trans系列的圖譜嵌入方法和基于異質(zhì)信息網(wǎng)絡(luò)的圖嵌入方法。例如,Zhang等人[18]提出的CKE模型使用TransR從項目KG導出語義實體表示,Cao等人[9]提出的KTUP模型通過共享項目嵌入來共同訓練個性化推薦和KG完成任務,Dong等人[19]利用Metapath2Vec對知識圖譜上的節(jié)點進行表征,進而擴充推薦系統(tǒng)中物品的表征。但是這些方法缺少知識圖譜中語義關(guān)系的精確建模。
基于路徑的方法主要是挖掘基于圖譜用戶、物品之間多種連接關(guān)系。在文獻[20]中,作者使用卷積神經(jīng)網(wǎng)絡(luò)對每種不同元路徑采樣得到的從用戶到物品路徑進行嵌入表征,進而構(gòu)造基于元路徑的用戶偏好特征,并結(jié)合NeuMF[21]的算法構(gòu)建推薦系統(tǒng)?;谠窂降姆椒m然可以有很好的推薦效果以及可解釋性,但這類方法在構(gòu)建推薦算法前需要先從數(shù)據(jù)中抽取、構(gòu)造大量的元路徑或元圖。
最近,基于GNN的方法逐漸應用到基于知識圖譜的推薦系統(tǒng)中。例如,Wang等人[22]提出KGNN-LS模型采用了可訓練的函數(shù),該函數(shù)計算每個用戶的關(guān)聯(lián)權(quán)重,以將KG轉(zhuǎn)換為用戶特定的加權(quán)圖,然后在該圖上應用圖卷積網(wǎng)絡(luò)以學習項目嵌入。在Wang等人[23]提出的另外一篇文章中,采用圖注意力機制來聚合和傳播實體的本地鄰域信息,而無需考慮用戶對實體的個性化偏好[24]。總而言之,這些基于GNN的方法通過逐層傳播隱式地聚合了高階鄰域信息,而不是顯式地對實體與其高階鄰居之間的依賴關(guān)系進行建模[25]。
圖1 模型框架圖Fig.1 Model frame figure
本文提出一種圖注意編碼器,該編碼器使用注意力機制為鄰域中不同的節(jié)點指定不同的權(quán)重,既不需要矩陣運算,也不需要事先知道圖結(jié)構(gòu),對相鄰節(jié)點計算,更加具有魯棒性以及可解釋性。通過該機制編碼器還為每一種評分等級類型rˉ∈Rˉ分配單獨的處理通道,把這個過程看作是消息傳遞的一種形式,其中節(jié)點向量特征沿著圖上的邊之間傳遞和轉(zhuǎn)換。在這種情況下為每個等級分配特定的轉(zhuǎn)換,從項目j到用戶i的信息傳遞被定義為:
在這里,公式(1)對節(jié)點嵌入h i做線性變換,Wrˉ為基于邊類型(評分等級)的參數(shù)矩陣。公式(2)計算成對節(jié)點間的原始注意力分數(shù),它首先拼接了兩個節(jié)點z的嵌入;隨后對拼接好的嵌入以及一個可學習的權(quán)重向量a做點積,最后應用了一個LeakyReLU激活函數(shù)。公式(3)對一個節(jié)點所有入邊得到的原始注意力分數(shù)使用一個softmax操作,得到注意力權(quán)重。公式(4)形似圖注意網(wǎng)絡(luò)的節(jié)點特征更新規(guī)則,對所有鄰節(jié)點的特征做了基于注意力的加權(quán)求和,N(i)表示用戶i的鄰居集合。從用戶到項目的消息μi→j,rˉ以類似的方式處理。在消息傳遞完成之后,針對每種類型的邊,把所有以i的鄰域
其中,accum(·)表示一個聚合運算,例如stack、sum等,σ(·)為激活函數(shù),為了得到用戶u i的最終嵌入向量,對中間輸出h加個全連接層變換:
其中,W為參數(shù)矩陣,計算項目的嵌入向量的方法和用戶的求解類似,只不過是使用兩套參數(shù)。
(1)本地圖上下文
(2)非本地圖上下文
用戶特定的圖形注意網(wǎng)絡(luò)顯式地聚合目標實體的本地鄰居(一跳)信息,以豐富目標實體的表示。但這并不意味著在知識圖譜中捕獲實體的非本地上下文(高階)信息,以及對于知識圖譜中連接較少的節(jié)點也具有較強的表示能力。為了解決這個問題,提出一種基于GRU模塊的偏置隨機游走方法,使用GRU建模實體h與其非本地上下文之間的依賴關(guān)系,用于聚合實體的非本地上下文信息。
偏置隨機游走過程用于提取目標實體h的非本地上下文,為了實現(xiàn)更廣泛的深度優(yōu)先搜索,從h重復偏向隨機游走,以獲得長度固定為L的M條路徑,該遍歷以概率p迭代到當前實體的鄰居,定義如下:
最后,為了建模項目節(jié)點的輔助信息,在對做全連接層變換時,考慮連接知識圖上下文向量c h和項目向量,得到項目vi的最終嵌入表示:
圖2描述了捕獲知識圖譜中實體的本地和非本地上下文信息的流程。
圖2 知識圖上下文建模Fig.2 Knowledge graph context modeling
為了重構(gòu)二分圖上的鏈接,考慮一個雙線性解碼器,把用戶對項目的評分等級視為多個類別,N表示為用戶和項目之間重構(gòu)的評分矩陣,解碼器通過對可能的評分等級進行雙線性運算,然后用softmax函數(shù)生成一個概率分布:
算法步驟如下:
輸入:用戶-項目二部圖(用戶對物品的評分矩陣);知識圖譜
輸出:預測評分等級
(1)采用帶注意力的圖自編碼器的方法進行消息的傳遞,設(shè)計一種評分等級的轉(zhuǎn)換,對節(jié)點的特征沿著邊進行傳遞和轉(zhuǎn)換,最后生成用戶和項目節(jié)點的潛在特征表示。
(2)對知識圖譜實體進行本地和非本地上下文信息提取,采用門控機制對兩者進行集成。
(3)對項目節(jié)點特征表示與知識圖譜中實體上下文信息進行聚合操作,形成最終的項目表征。
(4)采用雙線性解碼器,把用戶對項目的評分等級視為多個類別,生成評分概率分布。
損失函數(shù)。在模型訓練過程中,將預測評級N?ij的負對數(shù)可能性最小化:
當k=l時,I[k=l]=1,其他情況時為0,矩陣Ω∈{0,1}N u×N v作為未觀察到評級的掩碼,例如,對應于N中觀察到評級對應的元素會出現(xiàn)1,未觀察到的評級會出現(xiàn)0,因此,僅對觀察到的評級進行優(yōu)化。
批處理。通過對等式中的損失函數(shù)進行抽樣批處理,即只采樣固定數(shù)量的用戶和項目對,一來減少訓練所需的內(nèi)存,二來達到正則化的效果;通過實驗驗證了當調(diào)整正則化參數(shù)時,mini-batch和full-batch在數(shù)據(jù)集上得到相似的效果;在大數(shù)據(jù)集中應用mini-batch,而在小數(shù)據(jù)中應用full-batch以獲得更快的收斂速度。
節(jié)點丟棄。為了使模型能夠很好地泛化到未觀察到的等級,通過去噪設(shè)置對模型進行訓練,這能夠有效地提高模型的魯棒性。在訓練中使用丟棄,以一定概率Pdropout隨機刪除特定節(jié)點的所有消息,將其稱為節(jié)點丟棄。在初始實驗中,發(fā)現(xiàn)節(jié)點丟棄比消息丟棄更能有效地進行正則化。節(jié)點丟棄也會使嵌入表示不受特定用戶或項目的影響。
權(quán)值共享。并不是所有的用戶和項目對于同一個評分等級都有相同的評分,這可能導致在圖注意層中權(quán)重矩陣的某些列沒有其他列優(yōu)化的頻繁??紤]用戶對項目打分的非均勻性,防止權(quán)重矩陣的列優(yōu)化不均勻,使用一種在不同評分關(guān)系之間進行參數(shù)共享的方法:
其中,T s為基礎(chǔ)矩陣,評分越高,Wrˉ包含的T s數(shù)量越多。
作為正則化的一種有效方法,解碼器中的權(quán)重矩陣Q rˉ采用一組基于基礎(chǔ)參數(shù)矩陣的線性組合的參數(shù)共享矩陣:
其中,s∈(1,2,…,nb);nb表示基權(quán)重矩陣P s的數(shù)量;arˉs是可學習參數(shù),這個系數(shù)決定了每一個解碼器權(quán)重矩陣Q rˉ的線性組合;為了避免過擬合并減少參數(shù)的數(shù)量,基權(quán)重矩陣的數(shù)量nb應低于評分級別的數(shù)量。
數(shù)據(jù)集:
實驗將會在三個公共數(shù)據(jù)集上執(zhí)行:Last-FM(https://grouplens.org/datasets/hetrec-2011/)、Movielens-1M(https://grouplens.org/datasets/movielens/1m/)和Book-Crossing(http://www2.informatik.uni-freiburg.de/~cziegler/BX)(分別由FM、ML和BC表示)。考慮數(shù)據(jù)稀疏,將所有FM和BC數(shù)據(jù)集的評級保留為隱式反饋,對于ML數(shù)據(jù)集,將大于4的評分保留為隱式反饋。這些數(shù)據(jù)集的知識圖譜是由Microsoft Satori構(gòu)建,通過僅選擇關(guān)系名稱分別包含“電影”和“書”的三元組,進一步減小ML和BC中知識圖譜的大小,對于這些數(shù)據(jù)集,通過其名稱匹配知識圖譜中的項目和實體,將與任何實體或多個實體都不匹配的項目刪除,表1總結(jié)了這些實驗數(shù)據(jù)集的統(tǒng)計數(shù)據(jù)。
表1 數(shù)據(jù)集統(tǒng)計信息Table 1 Statistics of experimental datasets
設(shè)置和指標:
對于每個數(shù)據(jù)集,隨機選擇60%觀察到的用戶-項目交互來進行模型訓練,并選擇另外20%的交互來進行參數(shù)調(diào)整,其余20%的互動作為測試數(shù)據(jù),使用兩個廣泛的評估指標:Precision@K,Recall@K,在實驗中,將K設(shè)置為10、20。對于每個指標,首先根據(jù)測試數(shù)據(jù)計算每個用戶的準確度,然后報告所有用戶的平均準確度。
基線方法:
(1)CFKG[26]:將多種類型的用戶行為和項目KG集成到一個統(tǒng)一的圖中,并采用TransE來學習實體嵌入。
(2)RippleNet[27]:通過沿用戶KG沿其歷史項目的路徑傳播用戶對實體集合的偏好來利用KG信息。
(3)GCMC[1]:基于矩陣的圖自編碼器框架。它通過圖卷積矩陣完成對用戶項二部圖進行編碼,使用隱式用戶項交互來創(chuàng)建用戶項二部圖。
(4)KGAT[28]:在KG上采用圖注意力機制來利用圖上下文進行推薦。
實現(xiàn)細節(jié):
對于本模型的參數(shù),潛在空間d的維數(shù)從{8,16,32,64,128}中選擇,模型訓練中使用的實體S的局部鄰居數(shù)從{2,4,8,16,32,40}中選擇,正則化參數(shù)λ1和λ2選擇{10-6,5×10-6,10-5,5×10-5,10-4,5×10-4,10-3,10-2},學習率η從{10-4,5×10-4,10-3,5×10-3,10-2}中選取,對于所有方法,最佳超參數(shù)均由驗證數(shù)據(jù)的性能來確定,并使用Adam優(yōu)化器來學習模型參數(shù)。
表2總結(jié)不同數(shù)據(jù)集上的結(jié)果,通過觀察,就所有指標而言,本文模型通常會在所有數(shù)據(jù)集上獲得最佳性能,本文模型在知識圖譜中顯示建模實體之間的上下文信息,考慮用戶的個性化偏好建模,結(jié)果表明,通過解碼器可以有效地將知識圖譜上下文信息與用戶-項目二部圖獲得的向量表征融合從而增強推薦的性能。
表2 不同推薦算法的性能Table 2 Performances of different recommendation algorithms
總結(jié)本文模型在關(guān)鍵參數(shù)不同設(shè)置方面的性能,知識圖譜中相鄰實體的大小通常因不同項目而異,研究固定采樣鄰居的大小S將如何影響性能,從圖3中可以看出,當S設(shè)置為4時,模型可獲得最佳性能,而更大的S則無助于進一步提高性能。圖4顯示λ的不同設(shè)置下的性能趨勢,將λ設(shè)置為10-4可以獲得比通過將λ設(shè)置為0更好的性能。此外,研究隨機游走采樣路徑數(shù)M和路徑長度L對隨機游走模塊的影響,從圖5可以看出,將M設(shè)置為15可以獲得最佳性能,這表明通過執(zhí)行15次隨機游走采樣來捕獲實體的非本地鄰居中最相關(guān)的實體。如圖6所示,將L設(shè)置在4到12之間可以獲得更好的性能,進一步增加L會增加更多的訓練時間,導致推薦性能的下降。
圖3 S在ML數(shù)據(jù)集中對模型性能的影響Fig.3 Performances of model on ML dataset of S
圖4 λ在ML數(shù)據(jù)集中對模型性能的影響Fig.4 Performances of model on ML dataset ofλ
圖5 M在ML數(shù)據(jù)集中對模型性能的影響Fig.5 Performances of model on ML dataset of M
圖6 L在ML數(shù)據(jù)集中對模型性能的影響Fig.6 Performances of model on ML dataset of L
本文提出了基于知識圖譜的上下文矩陣補全,用于推薦系統(tǒng)中矩陣補全任務的帶注意力的圖形自動編碼框架,并且充分利用知識圖譜中本地和非本地上下文信息來增強推薦。具體來說,該模型使用圖注意編碼器在用戶-項目二部圖上傳遞消息并設(shè)計一種評分等級轉(zhuǎn)換來構(gòu)造用戶和項目的嵌入,通過特定于用戶的圖注意機制在知識圖譜中聚合本地上下文信息來捕獲用戶對實體的個性化偏好;使用基于偏差隨機游走的采樣過程來為知識圖譜上目標實體提取重要的非本地上下文信息,并使用GRU模塊顯式聚合實體嵌入,最后通過一個雙線性解碼器融合二部圖和知識圖譜中的信息,本模型的優(yōu)越性通過與三個數(shù)據(jù)集上的最新基準進行比較得到驗證。在未來的工作中,考慮用戶的歷史項目在對其不同候選項目的偏好時可能具有不同的重要性,建模用戶上下文信息,以提高推薦的準確性。