苗雨欣,宋春花,牛保寧,康瑞雪
(太原理工大學信息與計算機學院,太原 030000)
個性化推薦算法作為解決信息過載問題的一種有效手段,一直受到學術(shù)界和工業(yè)界的關(guān)注[1]。協(xié)同過濾是推薦算法的重要分支,因其在學習用戶和商品向量表示方面具有良好的表現(xiàn)而得到廣泛應用[2]。近年來,圖卷積網(wǎng)絡(Graph Convolutional Network,GCN)[3-4]在推薦方面顯示出巨大潛力,利用GCN 搭建協(xié)同過濾推薦模型成為當前的研究熱點[5]。
基于GCN 的協(xié)同過濾模型[6-8]將用戶和商品都視作交互圖中同等地位的節(jié)點,在計算其向量嵌入時不僅考慮節(jié)點本身的特征,還加入鄰居節(jié)點的信息,進一步提升了模型學習用戶和商品向量嵌入的能力。多層GCN[9]作為最具代表性的圖卷積網(wǎng)絡,廣泛應用于協(xié)同過濾模型的設計中?;贕CN 網(wǎng)絡結(jié)構(gòu)設計的圖協(xié)同過濾模型在聚合用戶或商品節(jié)點的鄰域信息時普遍采用多層網(wǎng)絡堆疊的形式來擴展圖中節(jié)點的鄰域。一方面,這樣的設計會使模型不可避免地受到GCN 結(jié)構(gòu)本身固有的過平滑問題[10-11]所帶來的影響,GCN 結(jié)構(gòu)中的圖卷積運算實際上是一種特殊的圖拉普拉斯平滑[10],節(jié)點的特征會在經(jīng)過多層圖卷積運算之后逐漸趨于相似,彼此間難以區(qū)分,過平滑問題造成推薦過程中的偏好特征同質(zhì)化,最終導致模型性能下降;另一方面,在大規(guī)模的交互關(guān)系圖上,如果采用多層網(wǎng)絡結(jié)構(gòu),模型每次迭代都會使鄰域內(nèi)部的節(jié)點數(shù)量成倍增長,這種情況下并不能保證鄰域內(nèi)傳遞的高階信息都是積極的。此外,基于GCN 結(jié)構(gòu)設計的圖協(xié)同過濾模型采用鄰接矩陣代表圖上的關(guān)系結(jié)構(gòu)參與用戶和商品向量表達的更新過程,只在局部范圍內(nèi)進行擴展,而忽視了圖整體結(jié)構(gòu)中高階鄰居間的潛在交互關(guān)系。
本文提出一種雙通道圖協(xié)同過濾推薦(Dual-Channel Graph Collaborative Filtering Recommendation,DCCF)算法。該算法將用戶和商品節(jié)點的向量表達更新過程劃分為局部卷積通道和全局卷積通道,分別承擔不同的信息聚合任務。在局部卷積通道中,DCCF 對節(jié)點局部鄰域的擴展方式作出改進,通過引入轉(zhuǎn)移矩陣[12],在單層網(wǎng)絡中直接定位節(jié)點的高階鄰域范圍,并通過設定轉(zhuǎn)移概率閾值的方式進行信息篩選,從而代替多層網(wǎng)絡堆疊的形式以應對過平滑問題。在全局卷積通道中,DCCF 基于節(jié)點特征進行聚類,構(gòu)造全局交互圖,從整體結(jié)構(gòu)出發(fā)對節(jié)點間的高階交互模式進行建模,將其作為對局部信息的補充。DCCF 算法通過對局部信息和全局信息的整合,獲得包含不同類型高階關(guān)系的節(jié)點向量表達,從而提升算法的推薦性能。
在推薦算法領(lǐng)域,協(xié)同過濾是一個重要分支,其核心過程是以數(shù)字向量的形式代表用戶和商品,通過向量的計算完成預測和推薦。傳統(tǒng)的協(xié)同過濾模型[13-14]以用戶-商品交互矩陣的行或列作為用戶和商品的向量表示,基于預定義的相似度函數(shù)計算用戶和商品間的相似度以完成推薦。矩陣分解[15-17]在傳統(tǒng)算法的基礎上進行改進,從交互矩陣中提取潛在語義表達,用維度統(tǒng)一的隱向量表示用戶和商品。深度學習技術(shù)的出現(xiàn)為協(xié)同過濾提供了新的發(fā)展方向,NCF(Neural Collaborative Filtering)[18]、NAIS(Neural Attentive Item Similarity)[19]等模型在向量嵌入和相似度計算的過程中引入全連接網(wǎng)絡,進一步提升了算法的推薦性能。但是,上述方法往往只考慮用戶和商品本身的特征信息,沒有充分利用歷史行為中已經(jīng)產(chǎn)生的交互關(guān)系,為此,研究人員構(gòu)建基于圖卷積網(wǎng)絡的協(xié)同過濾模型[6-8]以解決這一問題。
相較傳統(tǒng)算法以及其他深度網(wǎng)絡模型,基于圖卷積網(wǎng)絡的協(xié)同過濾模型的最大優(yōu)勢在于能夠在向量嵌入的過程中添加來自鄰居節(jié)點的協(xié)作信號,從而對圖中的高階關(guān)系進行建模。GC-MC(Graph Convolutional Matrix Completion)[20]模型將圖卷積運算應用于用戶-商品二部交互圖,將提取到的鄰居節(jié)點信息作為用戶和商品節(jié)點的向量表達。WANG等[6]提出NGCF(Neural Graph Collaborative Filtering)模型,并通過實驗證明了利用圖卷積網(wǎng)絡對用戶和商品之間的關(guān)聯(lián)性進行建??梢蕴嵘P蛯W習用戶和商品向量嵌入的能力,同時對交互圖中的高階連接特性作出了解釋。GC-MC[20]和NGCF[6]在向量嵌入過程中引入圖卷積網(wǎng)絡,增強了模型的表達能力,但過平滑問題的存在會使節(jié)點特征在向深層傳遞的過程中趨于同質(zhì)化,導致推薦性能難以提高。CHEN 等[8]對NGCF 模型進行簡化并引入殘差連接,提升了算法的推薦性能。除了過平滑現(xiàn)象之外,交互圖的選擇也是一個值得關(guān)注的問題。JI 等[21]通過重新定義節(jié)點間的交互規(guī)則,構(gòu)建超圖[22-23]參與節(jié)點鄰域信息的聚合過程,其不再局限于以鄰接矩陣為核心構(gòu)建圖卷積運算,為圖協(xié)同過濾模型的設計提供了新思路。
在本文基于圖卷積網(wǎng)絡的雙通道協(xié)同過濾推薦算法DCCF 中,通過多尺度卷積的方式,利用轉(zhuǎn)移矩陣結(jié)合轉(zhuǎn)移概率閾值確定節(jié)點的鄰域構(gòu)成,然后使用單層網(wǎng)絡完成局部信息整合,從而應對過平滑問題。在此基礎上,通過聚類的方式構(gòu)造全局結(jié)構(gòu)上的交互圖,以節(jié)點特征為基礎定義節(jié)點間的交互,對潛在的高階關(guān)系進行建模,使得模型能夠綜合考慮局部和全局這2 種不同類型的交互信息。
DCCF 算法的預測流程如圖1 所示。模型的輸入是用戶與商品之間的歷史交互記錄,為[UserID,[ItemID1,ItemID2,…]]的形式。首先,從歷史數(shù)據(jù)中導出初始圖結(jié)構(gòu),包括用戶與商品之間的二部交互圖和圖中節(jié)點的初始向量表達;然后,為了獲取更加準確的用戶和商品的向量表達,在向量嵌入階段設計2 個卷積通道,分別承擔不同的信息聚合任務,以對節(jié)點間的交互關(guān)系進行建模;最后,利用向量嵌入階段得到的用戶和商品的特征信息,通過向量內(nèi)積預測歷史數(shù)據(jù)中未被觀測到的交互。
圖1 DCCF 算法的預測流程Fig.1 Prediction procedure of the DCCF algorithm
基于上述流程分析,DCCF 算法的模型結(jié)構(gòu)如圖2 所示,主要由3 個部分構(gòu)成:1)局部卷積通道,通過狀態(tài)轉(zhuǎn)移矩陣直接定位節(jié)點的高階鄰域范圍,使用一個單層圖卷積網(wǎng)絡完成用戶和商品節(jié)點局部信息的聚合;2)全局卷積通道,以聚類的方式構(gòu)建一個全局交互圖作為圖整體結(jié)構(gòu)中不同節(jié)點間交互關(guān)系的表達,對圖整體結(jié)構(gòu)中潛在的交互關(guān)系進行建模;3)交互預測,對節(jié)點的局部信息和全局信息進行整合,更新用戶節(jié)點和商品節(jié)點的向量表達,通過向量內(nèi)積的方式預測未知交互。
圖2 DCCF 模型結(jié)構(gòu)Fig.2 DCCF model structure
由歷史交互數(shù)據(jù)導出用戶和商品間的二部交互圖G(V,E),其中:V代表圖中的節(jié)點集合,由用戶節(jié)點集VUser和商品節(jié)點集VItem組成;E代表圖中連接邊的集合,如果用戶Usern與商品Itemm產(chǎn)生過交互(購買、瀏覽等行為),則兩者之間存在一條連接邊enm?E(由于交互圖是一個無向圖,因此enm=emn)。在此基礎上,可以得到交互矩陣R,其為一個N行M列的矩陣,N代表用戶的數(shù)量,M代表商品的數(shù)量。對于矩陣中的每一個分量[R]nm,如果其對應的邊存在,即enm?E,那么當前位置的分量[R]nm=1,反之[R]nm=0。進一步地,交互圖的鄰接矩陣A可以表示為:
其中:0代表零矩陣;T 代表轉(zhuǎn)置操作。鄰接矩陣代表圖中節(jié)點的交互情況,但是,由于在二部交互圖中用戶與用戶之間、商品與商品之間沒有直接的交互關(guān)系,因此對應位置的值均為0。
通過對交互矩陣R中的行和列進行降維,分別得到用戶節(jié)點和商品節(jié)點的初始向量表達,將它們統(tǒng)一到一個固定的維度d,如下:
其中:XUser、XItem分別代表用戶節(jié)點和商品節(jié)點的初始特征矩陣。
局部卷積通道的任務是為圖中節(jié)點聚合局部鄰域信息。以鄰接矩陣作為圖上關(guān)系結(jié)構(gòu)的表達,歸一化后迭代多次是一種常見的鄰域擴展方式,但這種形式的圖卷積運算實際上是一種特殊的拉普拉斯平滑[10],會使用戶節(jié)點和商品節(jié)點的特征在向深層疊加時趨于相似。過平滑現(xiàn)象的存在導致偏好特征在模型迭代的過程中逐漸趨于同質(zhì)化,影響了模型的推薦性能。為了在聚合信息的過程中盡可能地避免過平滑問題所帶來的影響,DCCF 模型中引入轉(zhuǎn)移矩陣[12]。如果圖結(jié)構(gòu)已知,則圖上的轉(zhuǎn)移矩陣可以定義為:
其中:A為二部交互圖的鄰接矩陣;D是鄰接矩陣的度矩陣(一個對角矩陣,其對角線上的分量表示與當前頂點直接相鄰的節(jié)點數(shù)量)。轉(zhuǎn)移矩陣的實質(zhì)是二部交互圖上的隨機游走,以節(jié)點i為例,假設有d(i)個節(jié)點與i直接相鄰,在不帶權(quán)的無向圖中,從節(jié)點i出發(fā),走一步到達其任意一個鄰居節(jié)點的概率均為1/d(i)。一階轉(zhuǎn)移矩陣P中的每一個分量[P]ij代表圖中節(jié)點i走一步到達節(jié)點j的轉(zhuǎn)移概率。而對于高階轉(zhuǎn)移矩陣Pk(k≥2),其中的每一個分量[Pk]ij則代表圖中節(jié)點i走k步到達節(jié)點j的概率。
在局部卷積通道中,當確定圖中節(jié)點的鄰域范圍時,一階鄰域仍然由鄰接矩陣A來確定。而對于高階鄰域(大于等于二階),則以對應的轉(zhuǎn)移矩陣為基礎,設定轉(zhuǎn)移閾值PΘ,以確定節(jié)點的各階鄰域范圍。如圖3 所示,隨著用戶節(jié)點u1的鄰域逐漸向外擴展,其局部結(jié)構(gòu)中的信息傳遞路徑也逐漸增加。
圖3 用戶-商品交互圖和高階連接Fig.3 User-item interaction diagram and high order connections
從圖3 可以看出,當鄰域擴展到三階時,商品i3和用戶u1之間有2 條信息傳遞路徑,而商品i4和用戶u1之間只有1 條,這表明用戶u1可能對商品i3更加感興趣。而對應到轉(zhuǎn)移矩陣中,如果2 個節(jié)點間存在多條信息傳遞路徑,隨著鄰域的擴展,轉(zhuǎn)移路徑不斷疊加,其對應的轉(zhuǎn)移概率也就越高。通過設定轉(zhuǎn)移閾值PΘ,在各階鄰域內(nèi)挑選出具有較高轉(zhuǎn)移概率的鄰居節(jié)點,從而起到信息篩選的作用。因此,在計算得到各階轉(zhuǎn)移矩陣之后,如果轉(zhuǎn)移矩陣中的分量[Pk]ij>PΘ,則認為在對應的k階鄰域內(nèi)節(jié)點i與節(jié)點j之間存在一條連接邊。至此,可以定義高階鄰域內(nèi)節(jié)點之間的交互關(guān)系矩陣Qk(k≥2):在同階鄰域內(nèi),如果轉(zhuǎn)移矩陣對應位置的分量[Pk]ij>PΘ,則有[Qk]ij=1,反之[Qk]ij=0。通過上述方式,得到每一個節(jié)點不同階的鄰域構(gòu)成。在每一階鄰域內(nèi),以用戶節(jié)點u為例,其對應的鄰域信息聚合方式為:
其中:k代表鄰域階數(shù);N(u)-k代表節(jié)點的k階鄰域;|N(u)-k|代表節(jié)點在當前鄰域內(nèi)鄰居節(jié)點的數(shù)目。然后對各階鄰域信息進行整合得到節(jié)點的局部鄰域特征:
則局部卷積通道的輸出為:
其中:xu是用戶節(jié)點u自身的特征是局部鄰域特征。其他用戶以及商品的特征更新過程也都遵循上述步驟,同時,為了方便數(shù)據(jù)的批量處理,本文給出局部卷積通道中計算過程的矩陣形式:
其中:X為圖中節(jié)點的初始特征矩陣;XN為局部鄰域特征矩陣;Xlocal為圖中節(jié)點的局部特征矩陣;L、Lk分別代表鄰接矩陣A和高階關(guān)系矩陣Qk的拉普拉斯矩陣。L、Lk計算如下:
其中:D、Dk為相應的度矩陣。L和Lk對應位置的分量計算如下:
在全局卷積通道中,以節(jié)點特征為基礎,通過聚類的方式構(gòu)造一個全局交互圖Gglobal來代表所有節(jié)點在整體結(jié)構(gòu)中的交互關(guān)系,并利用由Gglobal導出的關(guān)聯(lián)矩陣H構(gòu)建圖卷積運算,以完成全局卷積通道中的信息聚合任務,挖掘節(jié)點間潛在的交互關(guān)系。
在全局交互圖Gglobal中,產(chǎn)生交互關(guān)系的2 個節(jié)點既可能屬于同一局部結(jié)構(gòu),也可能在空間距離上相隔較遠,體現(xiàn)了節(jié)點的全局屬性,而不再局限于歷史數(shù)據(jù)中已經(jīng)被觀測到的成對的二部圖連接方式。同時,聚合來自特征表現(xiàn)相似的鄰居節(jié)點的協(xié)作信號,能夠加強高階信息的積極性。為了在構(gòu)造交互圖的過程中體現(xiàn)節(jié)點的結(jié)構(gòu)性,在構(gòu)圖之前為所有節(jié)點添加其鄰域信息,即將節(jié)點本身的特征與一階鄰域特征進行拼接,如下:
然后以攜帶一階鄰域信息的節(jié)點特征XC為基礎,通過kMeans 聚類算法對所有節(jié)點進行再分類,如果2 個節(jié)點被劃分到同一類別中,則在2 個節(jié)點間添加一條連接邊,由此得到全局結(jié)構(gòu)上的交互圖Gglobal。上述過程具體描述如算法1 所示。
算法1全局交互圖Gglobal構(gòu)造算法
在完成上述算法流程后,為了保證全局鄰域內(nèi)傳遞的高階信息的積極性,需要對全局交互圖Gglobal中所有節(jié)點的鄰域進行二次篩選,為每一個節(jié)點在其所屬類別內(nèi)部選擇固定數(shù)量的特征表現(xiàn)最為相近的鄰居節(jié)點。同樣以用戶節(jié)點u為例,其在全局鄰域內(nèi)的信息聚合方式為:
這里同樣給出全局卷積通道計算過程的矩陣形式,由交互圖Gglobal導出關(guān)聯(lián)矩陣H(代表節(jié)點在全局結(jié)構(gòu)中的交互情況),全局卷積通道的特征更新過程如下:
其中:Xglobal為圖中節(jié)點的全局特征矩陣;LH為關(guān)聯(lián)矩陣H的拉普拉斯矩陣;DH為相應的度矩陣,對應位置分量與式(16)中相同。
在完成局部卷積通道和全局卷積通道的特征更新過程后,分別得到節(jié)點的局部特征和全局特征,將這2 個部分的信息相加得到節(jié)點的最終向量表達:
矩陣形式為:
本文模型中的各項參數(shù)使用成對BPR 損失函數(shù)進行優(yōu)化,通過最大化正樣本和負樣本之間差距的方式來完成訓練:
其中:σ(?) 代表Sigmoid 激活函數(shù);O={(u,i,j) |代表訓練數(shù)據(jù),既包含正樣本O+(即真實發(fā)生過的交互)也包含負樣本O-(即虛構(gòu)的交互)。正、負2 種樣本按照1∶1 的比例設置數(shù)量,在每一個訓練周期內(nèi),對于訓練數(shù)據(jù)集中的每一個用戶,正樣本是所有與該用戶產(chǎn)生過交互的商品集合,負樣本則從沒有與該用戶產(chǎn)生過交互的商品集合中隨機挑選,數(shù)量與正樣本相同。使用Adam 優(yōu)化器來優(yōu)化模型并更新參數(shù)。
3.1.1 數(shù)據(jù)集
為了驗證DCCF 模型的性能表現(xiàn),本文選擇3 個公開的常用于推薦算法評價的數(shù)據(jù)集進行實驗。對于每個數(shù)據(jù)集,選取其中80%的樣本作為訓練集,剩下20%作為測試集,數(shù)據(jù)集信息如表1 所示。
表1 數(shù)據(jù)集信息Table 1 Datasets information
3.1.2 對比模型
本文實驗選擇以下基于不同網(wǎng)絡架構(gòu)的模型進行對比:
1)BPR-MF[16]:利用BPR 損失函數(shù)進行優(yōu)化的矩陣分解模型,以固定維度的向量嵌入代表商品和用戶。
2)DMF[24]:通過多層全連接網(wǎng)絡從交互矩陣中為用戶和商品學習維度統(tǒng)一的向量表達。
3)GC-MC[20]:將用戶與商品之間的歷史交互組織為二部圖的形式,使用單層圖卷積網(wǎng)絡生成用戶和商品的向量表達。
4)NGCF[6]:基于GCN 設計的協(xié)同過濾模型,在向量嵌入階段使用多層圖卷積網(wǎng)絡獲取信息。
5)LR-GCCF[8]:在NGCF 的基礎上進行簡化,去掉激活函數(shù)和線性變換并引入殘差連接。
3.1.3 評價指標
為了對本文模型在topK預測和偏好排序任務中的表現(xiàn)進行評價,選取歸一化折損累計增益(NDCG@K)和召回率(Recall@K)這2 個被廣泛應用于推薦算法評估的指標。
NDCG@K對模型返回的候選物品列表進行評價,計算如下:
其中:DCG@K是考慮排序順序因素后推薦列表內(nèi)商品的得分總和;IDCG@K為歸一化參數(shù),是DCG@K能達到的最大值。NDCG@K的計算規(guī)則為:候選物品與當前用戶的相關(guān)性越高則得分越高,高相關(guān)性候選物品在列表中的位置越靠前則得分越高。
召回率Recall@K代表真實產(chǎn)生的交互中模型預測正確的比例,計算如下:
其中:TP是將正樣本預測為正樣本的數(shù)量;FN是將正樣本預測為負樣本的數(shù)量。
本文設置K=10,利用測試集中所有用戶的平均指標結(jié)果代表模型的訓練結(jié)果。
3.1.4 實驗環(huán)境及參數(shù)設置
實驗硬件配置為Intel?Xeon?Bronze 3104處理器,RTX2080ti顯卡,512 GB內(nèi)存,操作系統(tǒng)是Windows10。模型基于深度學習框架PyTorch1.4.0,通過Python 語言實現(xiàn)。在對比實驗中,采用統(tǒng)一的64 維向量來表達用戶和商品。對于所有模型,使用BPR-Loss 優(yōu)化各項參數(shù),訓練批次大小固定為1 024。其他參數(shù)方面,局部卷積通道中的轉(zhuǎn)移概率閾值PΘ設定為0.5,全局卷積通道中3 個數(shù)據(jù)集上的聚類數(shù)目分別為[20,100,100],學習率在[0.000 1,0.000 5,0.001,0.005]中選擇。對于較為重要的超參數(shù),局部卷積通道中在最高鄰域階數(shù)分別為[1,2,3,4]時進行實驗,全局卷積通道中鄰域節(jié)點數(shù)目在[10,20,30,40,50]中選擇。
3.1.5 模型實現(xiàn)
DCCF 模型按照第2 節(jié)中提供的矩陣計算形式實現(xiàn),模型中涉及的鄰接矩陣、各階轉(zhuǎn)移矩陣以及全局交互圖關(guān)聯(lián)矩陣均使用稀疏矩陣的形式存放,使用scipy.sparse 計算包實現(xiàn),而不是完整的數(shù)據(jù)矩陣,以減少內(nèi)存和計算開銷。在模型訓練過程中,PyTorch 框架也支持將稀疏矩陣轉(zhuǎn)化為稀疏張量后進行迭代計算。同時,DCCF 模型在更新特征的過程中并沒有使用激活函數(shù)和線性變換,訓練參數(shù)量相比NGCF 模型大幅降低,每一個epoch 訓練時間低于NGCF 的一半。在本文設計的全局卷積通道中,采用聚類的方式構(gòu)建節(jié)點的全局鄰域,其中,聚類算法的空間復雜度開銷為O(d(N+M+K)),d為向量嵌入的維度,N+M為節(jié)點總數(shù),K為聚類數(shù)目。聚類所需的空間復雜度開銷遠小于直接進行所有節(jié)點相似度計算的空間復雜度開銷O((N+M)2),特別是在大規(guī)模數(shù)據(jù)集下,維護完整的節(jié)點關(guān)系矩陣需要大量內(nèi)存和顯存資源。
3.2.1 對比實驗
表2 和表3 是在3 個數(shù)據(jù)集上分別以Recall@10 和NDCG@10 作為評價指標進行對比實驗的結(jié)果,其中,DCCF 模型的結(jié)果加粗標注,“__”代表基準算法中表現(xiàn)最好的模型,“提升”一項則表示DCCF 模型相對于基準算法中表現(xiàn)最好的模型的性能提升。從中可以看出,本文DCCF 模型在所有數(shù)據(jù)集上均能取得最佳性能表現(xiàn),相較基準算法中表現(xiàn)最好的模型,DCCF 在Recall@10 和NDCG@10 兩個指標上最高提升2.8%和5.0%,性能提升驗證了DCCF對于推薦任務的有效性。GC-MC 的性能表現(xiàn)整體上優(yōu)于MF 和DMF,說明在向量嵌入的過程中添加來自鄰居節(jié)點的協(xié)作信號可以提升模型的推薦能力。NGCF 的性能表現(xiàn)始終優(yōu)于GCMC,原因是GC-MC 只考慮節(jié)點的一階鄰域,而NGCF通過多層網(wǎng)絡堆疊對局部結(jié)構(gòu)中的可達路徑進行建模和表達。LR-GCCF 在NGCF 的基礎上進行簡化,去掉激活函數(shù)和線性變換,并在每一層增加額外的殘差連接,改善了模型表現(xiàn)。DCCF 在不同數(shù)據(jù)集上的表現(xiàn)始終優(yōu)于LR-GCCF,表明DCCF 通過構(gòu)建不同的圖卷積運算引入多種類型的高階關(guān)系信息,能進一步提升算法的推薦性能。
表2 模型的Recall@10 對比結(jié)果Table 2 Recall@10 comparison results of models
表3 模型的NDCG@10 對比結(jié)果Table 3 NDCG@10 comparison results of models
3.2.2 消融實驗
GC-MC[20]和NGCF[6]在其模型設計中保留了線性變換矩陣和非線性激活函數(shù)這2 種結(jié)構(gòu),但對于協(xié)同過濾任務而言,這2 種結(jié)構(gòu)并不一定有效,甚至會對算法性能造成負面影響[7-8]。為了保證DCCF 模型的推薦性能,對于上述2 種結(jié)構(gòu)的不同組合進行對比實驗,結(jié)果如表4、表5 所示,其中:n 代表非線性激活函數(shù),這里使用LeakyReLU;w 代表線性變換。
表4 不同結(jié)構(gòu)下的Recall@10 對比結(jié)果Table 4 Recall@10 comparison results under different structures
表5 不同結(jié)構(gòu)下的NDCG@10 對比結(jié)果Table 5 NDCG@10 comparison results under different structures
從表4、表5 可以看出:在MovieLens-100K 數(shù)據(jù)集上,同時添加激活函數(shù)和線性變換結(jié)構(gòu)后,模型性能表現(xiàn)最差;在Gowalla 數(shù)據(jù)集上,只添加線性變換結(jié)構(gòu)后,模型性能表現(xiàn)最差;相較其他結(jié)構(gòu)組合,去掉線性變換矩陣和激活函數(shù)后,DCCF 的性能表現(xiàn)在所有數(shù)據(jù)集上達到最佳。
為了驗證本文DCCF 模型的局部卷積通道是否能夠有效聚合信息,以及全局卷積通道對模型性能的影響,將去掉全局卷積通道后的模型DCCF_Local與NGCF、DCCF 進行對比,結(jié)果如表6、表7 所示。
表6 Recall@10 消融實驗結(jié)果Table 6 Recall@10 ablation experiment results
表7 NDCG@10 消融實驗結(jié)果Table 7 NDCG@10 ablation experiment results
從表6、表7 可以看出:只保留局部卷積通道的模型DCCF_Local 在整體性能表現(xiàn)上優(yōu)于NGCF,表明本文在局部鄰域信息聚合方式上的改進具有有效性;在局部卷積通道的基礎上添加全局信息后,模型性能表現(xiàn)再一次得到提升,說明在向量嵌入過程中融合局部特征和全局特征這2 種來源不同的高階信息,可以提升模型的表達能力。
3.2.3 超參數(shù)靈敏度分析
為了使DCCF 的實驗性能取得最佳,針對局部通道中的最高鄰域階數(shù)以及全局通道中的鄰居節(jié)點數(shù)這2 個重要的超參數(shù),在不同取值下進行參數(shù)靈敏度實驗。首先,設定全局卷積通道中鄰居節(jié)點數(shù)為20,調(diào)整局部卷積通道中的最高鄰域階數(shù),在3 個數(shù)據(jù)集上進行對比實驗,結(jié)果如表8 所示,從整體實驗結(jié)果來看,模型的性能表現(xiàn)隨著鄰域階數(shù)的增加而逐漸提升,除MovieLens-100K 數(shù)據(jù)集外,DCCF 在最高鄰域階數(shù)為3 時取得最佳性能。
表8 不同鄰域階數(shù)下的實驗結(jié)果Table 8 Experimental results under different neighborhood orders
根據(jù)上述結(jié)果,設置局部卷積通道的最高鄰域階數(shù)為3,調(diào)整全局卷積通道中的全局鄰域節(jié)點數(shù)進行實驗,結(jié)果如圖4 所示。從圖4 可以看出:在3 個數(shù)據(jù)集上,對于評價指標Recall@10,DCCF 在鄰居節(jié)點數(shù)分別為40、30、30 時表現(xiàn)最佳;對于評價指標NDCG@10,DCCF 在鄰居節(jié)點數(shù)分別為40、30、20 時表現(xiàn)最佳。實驗結(jié)果表明,全局鄰域內(nèi)鄰居節(jié)點數(shù)取值為30 左右時模型性能表現(xiàn)較好,這也說明全局鄰域內(nèi)傳遞的高階信息并非越多越好,過度的鄰域擴展可能會聚合一些不必要的鄰居噪聲,從而導致模型性能下降。
圖4 不同鄰居節(jié)點數(shù)下的模型性能表現(xiàn)Fig.4 Performance of the model under different number of neighbor nodes
本文將圖卷積網(wǎng)絡與協(xié)同過濾推薦算法相結(jié)合,提出一種雙通道協(xié)同過濾推薦算法DCCF,該算法利用2 個不同的卷積通道分別聚合局部和全局關(guān)聯(lián)信息。在局部卷積通道中,DCCF 結(jié)合轉(zhuǎn)移矩陣以及轉(zhuǎn)移閾值來確定用戶節(jié)點和商品節(jié)點的局部鄰域構(gòu)成,使用單層網(wǎng)絡完成信息聚合任務。在全局卷積通道中,DCCF 以聚類的方式構(gòu)造全局交互圖,并以此為基礎構(gòu)建圖卷積運算,從而聚合特征表現(xiàn)相似的節(jié)點信息。將上述局部信息和全局信息進行整合,作為用戶節(jié)點和商品節(jié)點的最終向量表示形式。實驗結(jié)果表明,DCCF 算法的推薦性能優(yōu)于BPR-MF、DMF 等基準算法。
下一步將從注意力機制和超圖這2 個角度對DCCF 推薦算法進行改進:引入注意力機制,設計相應的關(guān)聯(lián)強度計算方法[25-26],在確定節(jié)點的鄰域范圍后有區(qū)別地聚合信息,從而提升推薦性能;在用戶和商品過往交互的基礎上,通過設計不同的自定義規(guī)則來構(gòu)建超圖,針對不同的交互關(guān)系進行細粒度建模,從而提升模型的可解釋性。