鄔錦琛,楊興耀,于 炯,李梓楊,黃擅杭,孫鑫杰
新疆大學(xué) 軟件學(xué)院,烏魯木齊830008
在大數(shù)據(jù)時(shí)代,用戶(hù)從大量的產(chǎn)品和服務(wù)中想獲取自己需要的信息是極其困難的。推薦系統(tǒng)可以根據(jù)用戶(hù)的歷史數(shù)據(jù)了解用戶(hù)的偏好,幫助用戶(hù)做出合理的決策和選擇。隨著推薦系統(tǒng)的開(kāi)發(fā)和對(duì)用戶(hù)數(shù)據(jù)的分析,用戶(hù)的偏好可以區(qū)分為長(zhǎng)期偏好和短期偏好[1]。傳統(tǒng)的推薦系統(tǒng)只考慮用戶(hù)的長(zhǎng)期偏好,而忽略了用戶(hù)偏好的轉(zhuǎn)移。例如,在電子商務(wù)平臺(tái)中,用戶(hù)購(gòu)買(mǎi)的物品構(gòu)成了用戶(hù)的行為序列,傳統(tǒng)的推薦系統(tǒng)的目的是通過(guò)物品的轉(zhuǎn)移來(lái)了解用戶(hù)的長(zhǎng)期偏好。用戶(hù)購(gòu)買(mǎi)物品的行為序列如圖1所示。
圖1 用戶(hù)購(gòu)買(mǎi)物品的行為序列Fig. 1 Behavior sequence of user purchases
圖1 中描述了六件物品之間的轉(zhuǎn)換關(guān)系。傳統(tǒng)的推薦系統(tǒng)考慮項(xiàng)目所有用戶(hù)行為的轉(zhuǎn)換關(guān)系,以便推薦系統(tǒng)花費(fèi)很長(zhǎng)時(shí)間關(guān)注用戶(hù)注重的物品,但這會(huì)減弱推薦系統(tǒng)對(duì)用戶(hù)偏好變化的敏感度。因此,推薦系統(tǒng)無(wú)法快速學(xué)習(xí)用戶(hù)偏好的轉(zhuǎn)移。如,一個(gè)用戶(hù)買(mǎi)了很長(zhǎng)時(shí)間的魚(yú)肉,突然喜歡上了牛肉。但是,由于用戶(hù)購(gòu)買(mǎi)魚(yú)肉的次數(shù)比購(gòu)買(mǎi)牛肉的次數(shù)多,傳統(tǒng)的推薦系統(tǒng)認(rèn)為用戶(hù)的偏好仍然是魚(yú)肉。因此,傳統(tǒng)的推薦系統(tǒng)由于沒(méi)有考慮用戶(hù)行為的交易結(jié)構(gòu)而忽略了用戶(hù)偏好的轉(zhuǎn)移。為了解決這個(gè)問(wèn)題,有必要將用戶(hù)行為序列分解成更小段的序列,即會(huì)話(huà)。例如,按照時(shí)間做分割,用戶(hù)一次購(gòu)買(mǎi)的商品、一天內(nèi)瀏覽的網(wǎng)頁(yè)等?;跁?huì)話(huà)的推薦模型以會(huì)話(huà)作為推薦的基本單元,可以減少用戶(hù)的信息損失,并且已經(jīng)得到了廣泛的研究。將用戶(hù)行為序列分割為會(huì)話(huà)的結(jié)果如圖2所示。
圖2 用戶(hù)行為序列分解Fig. 2 Decomposition of user behavior sequences
圖2描述了在電商平臺(tái)中,將圖1中的用戶(hù)的購(gòu)買(mǎi)行為劃分為了粒度更小的會(huì)話(huà)序列集合{s1,s2,s3}。基于用戶(hù)行為序列的推薦系統(tǒng)將用戶(hù)行為分解為一組會(huì)話(huà),從而賦予用戶(hù)行為事務(wù)屬性,使推薦系統(tǒng)能夠?qū)W⒂谟脩?hù)偏好的傳遞。如,用戶(hù)長(zhǎng)期購(gòu)買(mǎi)蘋(píng)果,但最近更喜歡西瓜,基于用戶(hù)行為序列的推薦系統(tǒng)可以及時(shí)捕捉用戶(hù)偏好的轉(zhuǎn)移。它不再像傳統(tǒng)的推薦系統(tǒng)那樣繼續(xù)推薦不同品種的葡萄及與葡萄相關(guān)的商品,而是推薦與西瓜相關(guān)的商品。因此,基于用戶(hù)行為序列的推薦系統(tǒng)忽略了用戶(hù)的長(zhǎng)期偏好。要使基于用戶(hù)行為序列的推薦系統(tǒng)既關(guān)注用戶(hù)的短期偏好,又考慮用戶(hù)的長(zhǎng)期偏好,就必須考慮會(huì)話(huà)之間的相關(guān)性。會(huì)話(huà)序列中的相關(guān)關(guān)系主要有三方面:同一會(huì)話(huà)中不同物品項(xiàng)之間的相關(guān)關(guān)系、不同會(huì)話(huà)中不同項(xiàng)之間的相關(guān)關(guān)系以及不同會(huì)話(huà)中不同物品項(xiàng)之間的相關(guān)關(guān)系。這就要求基于用戶(hù)行為序列的推薦系統(tǒng)能夠充分考慮會(huì)話(huà)的上下文,并能夠了解項(xiàng)與項(xiàng)之間的復(fù)雜轉(zhuǎn)移。
近年來(lái),圖神經(jīng)網(wǎng)絡(luò)(graph neural networks,GNN)被應(yīng)用于基于用戶(hù)行為序列的推薦系統(tǒng)[2]。在基于GNN 的推薦系統(tǒng)中,首先將用戶(hù)行為序列集構(gòu)造為一個(gè)有向圖,有向圖中的節(jié)點(diǎn)表示項(xiàng),而項(xiàng)之間的轉(zhuǎn)移關(guān)系用邊來(lái)展現(xiàn)。其次根據(jù)構(gòu)造出來(lái)的有向圖,圖神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)項(xiàng)目之間復(fù)雜的轉(zhuǎn)移關(guān)系,學(xué)習(xí)表達(dá)能力強(qiáng)的項(xiàng)目嵌入,生成包含項(xiàng)目間復(fù)雜轉(zhuǎn)移信息的序列嵌入[3]。如,基于會(huì)話(huà)的圖神經(jīng)網(wǎng)絡(luò)(session-based recommendation with graph neural network,SR-GNN)[4]不僅可以捕獲短期內(nèi)用戶(hù)偏好的遷移,還可以考慮遠(yuǎn)距離物品之間的轉(zhuǎn)移關(guān)系。因此,SRGNN 可以學(xué)習(xí)正確的物品嵌入。同時(shí),SR-GNN 增加了一個(gè)注意力網(wǎng)絡(luò),關(guān)注用戶(hù)的局部會(huì)話(huà)嵌入和全局會(huì)話(huà)嵌入,這使模型可以將用戶(hù)的短期偏好和長(zhǎng)期偏好同時(shí)考慮在內(nèi)。SR-GNN 雖然考慮了用戶(hù)的長(zhǎng)短期偏好以及項(xiàng)與物品間的復(fù)雜轉(zhuǎn)換,但它忽略了會(huì)話(huà)序列中的其他有效信息,如用戶(hù)信息,這會(huì)導(dǎo)致不同用戶(hù)的特定偏好的丟失。
目前的異構(gòu)圖模型中只關(guān)注了序列內(nèi)部的依賴(lài)關(guān)系,而忽略了序列之間的相關(guān)效應(yīng),本文將序列作為異構(gòu)圖的節(jié)點(diǎn),這樣可以通過(guò)用戶(hù)意圖和用戶(hù)行為模式計(jì)算序列之間的相似度,完成跨序列級(jí)的學(xué)習(xí)。本文考慮到在真實(shí)世界的信息中,每個(gè)信息節(jié)點(diǎn)的類(lèi)型和每條邊的類(lèi)型都是多種的,并且每一個(gè)節(jié)點(diǎn)也具有不同且繁多的屬性,此時(shí)同構(gòu)圖就無(wú)法完全表示這些信息。同時(shí),異構(gòu)圖可以包含多種類(lèi)型的節(jié)點(diǎn),邊不僅可以表示不同的關(guān)系,也可以表示不同類(lèi)型節(jié)點(diǎn)之間的相關(guān)性。因此,本文引入異構(gòu)圖來(lái)構(gòu)造同構(gòu)圖中不能表示的用戶(hù)等信息,豐富需要表達(dá)的信息。以往的普通圖模型中,只能對(duì)成對(duì)的關(guān)系進(jìn)行建模,如用戶(hù)與物品交互的關(guān)系,無(wú)法捕獲各種節(jié)點(diǎn)信息之間的高階關(guān)系,如相似的用戶(hù)組關(guān)系。本文將帶有異構(gòu)信息的行為序列構(gòu)建為異構(gòu)圖的線(xiàn)圖來(lái)表達(dá)高階數(shù)據(jù)關(guān)系。
異構(gòu)圖神經(jīng)網(wǎng)絡(luò)(heterogeneous graph neural network,HetGNN)[5]在推薦任務(wù)中,可以學(xué)習(xí)圖中不同類(lèi)型節(jié)點(diǎn)的潛在信息,同時(shí)將圖中不同節(jié)點(diǎn)嵌入到統(tǒng)一的向量空間中,但無(wú)法捕捉節(jié)點(diǎn)間的高階依賴(lài)關(guān)系。為此,本文對(duì)HetGNN 模型進(jìn)行改進(jìn),提出雙通道異構(gòu)圖神經(jīng)網(wǎng)絡(luò)的用戶(hù)行為序列推薦算法(user behavior sequence recommendation with dual channel heterogeneous graph neural network,DC-HetGNN),通過(guò)構(gòu)建異構(gòu)圖的線(xiàn)圖通道,捕捉節(jié)點(diǎn)與節(jié)點(diǎn)之間高階關(guān)系,同時(shí)充分考慮了物品項(xiàng)目、用戶(hù)和用戶(hù)行為序列之間的相關(guān)關(guān)系,可以通過(guò)豐富的信息和復(fù)雜項(xiàng)目轉(zhuǎn)移學(xué)習(xí)序列嵌入,在異構(gòu)圖通道中聚合局部序列和全局序列,保證同時(shí)考慮用戶(hù)的長(zhǎng)短期偏好。本文主要貢獻(xiàn)如下:
(1)將異構(gòu)圖神經(jīng)網(wǎng)絡(luò)用于用戶(hù)行為序列推薦,將物品、用戶(hù)和行為序列構(gòu)造成異構(gòu)圖和異構(gòu)圖的線(xiàn)圖,通過(guò)異構(gòu)圖神經(jīng)網(wǎng)絡(luò)來(lái)捕捉物品、用戶(hù)和行為序列兩兩之間的關(guān)系和跨序列信息。
(2)提出一種基于用戶(hù)行為序列的雙通道異構(gòu)圖神經(jīng)網(wǎng)絡(luò)DC-HetGNN。DC-HetGNN 可以從序列中獲取用戶(hù)的潛在信息。
(3)在公共電商用戶(hù)行為數(shù)據(jù)集上進(jìn)行了大量實(shí)驗(yàn)。結(jié)果表明,本文提出的模型與其他新近基線(xiàn)模型在相同的指標(biāo)上有顯著的提升。
協(xié)同過(guò)濾(collaborative filtering,CF)[6]是最流行的推薦方法之一。它根據(jù)用戶(hù)對(duì)項(xiàng)目的評(píng)級(jí)對(duì)用戶(hù)進(jìn)行分類(lèi),并為目標(biāo)用戶(hù)找到具有相似興趣的其他用戶(hù)。然后CF向目標(biāo)用戶(hù)推薦其他用戶(hù)感興趣但目標(biāo)用戶(hù)沒(méi)有見(jiàn)過(guò)或購(gòu)買(mǎi)過(guò)的商品。矩陣分解(matrix factorization,MF)[7]是一種典型的傳統(tǒng)推薦方法。它可以將用戶(hù)和項(xiàng)目嵌入到相同的向量空間中。用戶(hù)嵌入和項(xiàng)嵌入的內(nèi)積是用戶(hù)對(duì)項(xiàng)的興趣度,而MF不能學(xué)習(xí)項(xiàng)的序列變換。隨后,一個(gè)將貝葉斯個(gè)性化排序融入到MF中的算法出現(xiàn),通過(guò)轉(zhuǎn)換圖來(lái)建模排序用戶(hù)序列行為,即隱性反饋的貝葉斯個(gè)性化排名(Bayesian personalized ranking from implicit feedback,BPR-MF)[8]。
近年來(lái),一些利用循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)優(yōu)勢(shì)且應(yīng)用于用戶(hù)行為序列推薦方法出現(xiàn),如基于門(mén)控單元的循環(huán)網(wǎng)絡(luò)(recurrent neural network with gate recurrent unit,GRU4Rec)[9]。GRU4Rec考慮了上一個(gè)節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)之間的相關(guān)關(guān)系,該方法對(duì)用戶(hù)行為序列非常敏感,能夠及時(shí)捕捉到用戶(hù)偏好的轉(zhuǎn)移,但是無(wú)法了解用戶(hù)的長(zhǎng)期偏好。圖神經(jīng)網(wǎng)絡(luò)最近受到越來(lái)越多的關(guān)注,與基于RNN 的方法不同,基于GNN 的方法在序列構(gòu)造的圖中學(xué)習(xí)項(xiàng)目間的轉(zhuǎn)換。SR-GNN 是使用門(mén)控圖神經(jīng)網(wǎng)絡(luò)將用戶(hù)行為序列建模為圖結(jié)構(gòu)數(shù)據(jù)的開(kāi)創(chuàng)性方法。圖上下文的自注意力網(wǎng)絡(luò)(graph contextualized selfattention network,GC-SAN)[10]利用自我注意力機(jī)制通過(guò)圖信息聚合來(lái)捕獲物品間依賴(lài)。全圖神經(jīng)網(wǎng)絡(luò)(full graph neural network,F(xiàn)GNN)[11]通過(guò)將節(jié)點(diǎn)分類(lèi)和圖分類(lèi)相結(jié)合用于學(xué)習(xí)序列嵌入。時(shí)序圖序列推薦算法(temporal graph sequential recommender,TGSRec)[12]在考慮序列內(nèi)的時(shí)間動(dòng)態(tài)的同時(shí)捕捉用戶(hù)和物品間的相關(guān)依賴(lài)關(guān)系。全局上下文增強(qiáng)的圖神經(jīng)網(wǎng)絡(luò)(global context enhanced graph neural network,GCE-GNN)[13]在單個(gè)序列圖和全局序列圖上進(jìn)行圖卷積,以學(xué)習(xí)局部序列和全局序列的嵌入?;诨旌夏P偷膱D神經(jīng)網(wǎng)絡(luò)(graph neural network based hybrid model,GNNH)[14]融合順序模式和非順序模式,以捕獲序列內(nèi)的動(dòng)態(tài)興趣。雖然這些方法表明基于GNN的方法優(yōu)于其他方法,包括基于RNN的模型,但是它們都沒(méi)能捕獲到復(fù)雜的高階物品間依賴(lài)關(guān)系。
異構(gòu)圖(heterogeneous graph,HetG)包含了豐富的多類(lèi)型節(jié)點(diǎn)之間的結(jié)構(gòu)關(guān)系信息,以及與每個(gè)節(jié)點(diǎn)相關(guān)聯(lián)的非結(jié)構(gòu)化內(nèi)容。異構(gòu)信息網(wǎng)絡(luò)(heterogeneous information network,HIN)[15]可以將多種類(lèi)型的節(jié)點(diǎn)構(gòu)建到一個(gè)圖中,并將這些節(jié)點(diǎn)用不同類(lèi)型的邊連接起來(lái),因此HIN 可以對(duì)復(fù)雜的上下文信息進(jìn)行建模。由于HIN 具有不同類(lèi)型的節(jié)點(diǎn)或邊,很難將這些節(jié)點(diǎn)或邊嵌入到同一個(gè)向量空間中。近年來(lái),一些圖嵌入方法,如DeepWalk[16]、metapath2vec[17]、node2vec[18]、LINE(large-scale information network embedding)[19]、ASNE(attributed social network embedding)[20]、Pathsim[21]、Pathselclus[22]等被提出,DeepWalk算法通過(guò)隨機(jī)游走生成節(jié)點(diǎn)序列,將其視為一個(gè)句子,利用語(yǔ)言建模生成嵌入的節(jié)點(diǎn)表示。本文使用DeepWalk 算法將異構(gòu)圖嵌入到相同的向量空間中,獲得各類(lèi)節(jié)點(diǎn)的預(yù)嵌入表示。Ren 等人提出了一種基于信息網(wǎng)絡(luò)聚類(lèi)的有效引文推薦方法ClusCite[23],該方法學(xué)習(xí)異構(gòu)信息網(wǎng)絡(luò)中的引文之間的關(guān)系,并將其聚類(lèi)成興趣組。Hu等人開(kāi)發(fā)了一種新的具有共同注意機(jī)制的深度神經(jīng)網(wǎng)絡(luò)——基于元路徑的上下文推薦模型(leveraging metapath based context for recommendation,MCRec)[24]。MCRec 學(xué)習(xí)了基于元路徑的用戶(hù)、對(duì)象和上下文的有效表示,實(shí)現(xiàn)了較好的交互功能。
本章對(duì)描述模型的符號(hào)進(jìn)行定義并描述用戶(hù)行為序列的推薦問(wèn)題。
定義1(異構(gòu)圖)將異構(gòu)圖定義為HetG=(N,E),其中異構(gòu)圖節(jié)點(diǎn)N是一個(gè)包含了物品集合I、用戶(hù)集合U和用戶(hù)行為序列集合S的N個(gè)節(jié)點(diǎn)集合,該節(jié)點(diǎn)集合中的節(jié)點(diǎn)唯一。異構(gòu)圖邊E是一個(gè)包含了M條邊集合,該集合中的每條邊e∈E包含兩個(gè)或多個(gè)節(jié)點(diǎn),并被賦予一個(gè)正權(quán)值We,e,所有權(quán)值構(gòu)成了一個(gè)對(duì)角矩陣W∈RM×M。異構(gòu)圖可以用關(guān)聯(lián)矩陣表示為H∈RN×M,其中Hi,e=1 表示邊e∈E包含一個(gè)節(jié)點(diǎn)ni∈N,否則Hi,e=0。每個(gè)節(jié)點(diǎn)和邊的度分別定義為Di,i=和,D和B是對(duì)角矩陣。上述中物品集合為I={i1,i2,…,in},其中n為物品的個(gè)數(shù)。有用戶(hù)集合為U={u1,u2,…,um},其中m為用戶(hù)個(gè)數(shù)。用戶(hù)行為序列集合為S={s1,s2,…,sj},其中j為行為序列個(gè)數(shù)。用戶(hù)行為序列集合S是由用戶(hù)集合U中用戶(hù)對(duì)物品集合I進(jìn)行點(diǎn)擊行為組成序列。其中,每一個(gè)序列s都表示成一個(gè)集合,即s={is,1,is,2,…,is,h}。其中is,k∈I(1 ≤k≤h),表示在一個(gè)行為序列中用戶(hù)的一個(gè)行為交互項(xiàng)。將有交互項(xiàng)的節(jié)點(diǎn)嵌入到同一個(gè)模型中獲得節(jié)點(diǎn)的嵌入集合Node*={I*,S*,U*},并使有交互項(xiàng)的節(jié)點(diǎn)嵌入到同一個(gè)向量空間中。其中I*表示物品嵌入集合,S*表示用戶(hù)行為序列嵌入集合,U*表示用戶(hù)嵌入集合。異構(gòu)圖轉(zhuǎn)化為矩陣表示如圖3所示。
圖3 異構(gòu)圖的矩陣表示Fig. 3 Matrix representation of heterogeneous graph
在圖3中:(1)部分為異構(gòu)圖的關(guān)聯(lián)矩陣;(2)部分為異構(gòu)圖邊的度矩陣;(3)部分為異構(gòu)圖點(diǎn)的度矩陣。
定義2(異構(gòu)圖的線(xiàn)圖)給定異構(gòu)圖HetG=(N,E),該圖的線(xiàn)圖L(HetG)=(NL,EL)中的每個(gè)節(jié)點(diǎn)是異構(gòu)圖HetG 中的一個(gè)邊,且L(HetG)的兩個(gè)節(jié)點(diǎn)是連通的,即它們對(duì)應(yīng)的HetG 中的邊至少共享一個(gè)公共節(jié)點(diǎn)。在L(HetG)中,線(xiàn)圖節(jié)點(diǎn)定義為NL={ne:ne∈E},異構(gòu)圖的線(xiàn)圖中連接節(jié)點(diǎn)的邊定義為EL=E,eq∈E,|ep?eq|≥1},給每條邊賦值為Wp,q=|ep?eq|/|ep?eq|。異構(gòu)圖的線(xiàn)圖表示如圖4所示。
圖4 異構(gòu)圖的線(xiàn)圖表示Fig. 4 Representation of line graph of heterogeneous graph
在圖4中,邊e1與邊e2中共包含6個(gè)節(jié)點(diǎn),含有1個(gè)公共節(jié)點(diǎn)s2,故在線(xiàn)圖中連接節(jié)點(diǎn)e1和節(jié)點(diǎn)e2的邊的權(quán)重為W1,2=。其他邊的權(quán)重同理。
基于用戶(hù)行為序列的推薦系統(tǒng)的主要任務(wù)是通過(guò)給定一個(gè)用戶(hù)行為序列s,本文模型Fθ將用戶(hù)行為序列集合S分別構(gòu)造成異構(gòu)圖HetG 和異構(gòu)圖的線(xiàn)圖L(HetG),通過(guò)異構(gòu)圖通道和線(xiàn)圖通道學(xué)習(xí)包含了豐富信息和物品間轉(zhuǎn)換關(guān)系的物品項(xiàng)嵌入I*={i1,i2,…,in}。然后模型將生成最終混合序列嵌入。最后通過(guò)softmax 層獲得項(xiàng)目的得分,將排名前n的物品項(xiàng)is,h+1作為下一個(gè)項(xiàng)目推薦給用戶(hù)。
(1)異構(gòu)圖的構(gòu)建
本文將異構(gòu)圖節(jié)點(diǎn)定義為N=(I,S,U),其中I表示物品集合,S表示用戶(hù)行為序列集合,U表示用戶(hù)集合,將以上節(jié)點(diǎn)的集合構(gòu)造為一個(gè)異構(gòu)圖HetG=(N,E)。HetG 包含三種類(lèi)型的節(jié)點(diǎn)以及兩種類(lèi)型的邊,三種類(lèi)型的節(jié)點(diǎn)分別是物品節(jié)點(diǎn)、用戶(hù)行為序列和用戶(hù)節(jié)點(diǎn)。兩種類(lèi)型的邊分別為連接兩個(gè)物品之間有向邊集合Ei和無(wú)向邊集合E。其中有向邊Ei=(is,h,is,h+1)表示用戶(hù)在購(gòu)買(mǎi)了物品is,h之后又購(gòu)買(mǎi)了is,h+1。無(wú)向邊E={(is,h,s),(is,h,u),(s,u)}分別表示物品與用戶(hù)行為序列、物品與用戶(hù)之間和用戶(hù)行為序列與用戶(hù)之間的關(guān)系。
(2)異構(gòu)圖通道學(xué)習(xí)項(xiàng)目嵌入
在構(gòu)建異構(gòu)圖HetG 之后,本文利用異構(gòu)圖神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)物品的嵌入表示,將用戶(hù)節(jié)點(diǎn)和行為序列節(jié)點(diǎn)的信息聚合成物品嵌入I*={i1,i2,…,in},其中物品嵌入項(xiàng)ik是節(jié)點(diǎn)ik的向量表示。
(3)線(xiàn)圖通道學(xué)習(xí)項(xiàng)目嵌入
在構(gòu)建異構(gòu)圖的線(xiàn)圖L(HetG)之后,本文設(shè)計(jì)了異構(gòu)圖的線(xiàn)圖卷積模型。線(xiàn)圖可以看成一個(gè)簡(jiǎn)單的圖,它包含跨序列信息并描述項(xiàng)與項(xiàng)的連通性。
本章將介紹提出的DC-HetGNN 模型,并介紹完整的DC-HetGNN 學(xué)習(xí)算法。DC-HetGNN 模型架構(gòu)圖如圖5所示。
圖5 DC-HetGNN模型框架Fig. 5 Model framework of DC-HetGNN
在圖5中可以看到,DC-HetGNN展示對(duì)用戶(hù)、物品以及用戶(hù)行為序列進(jìn)行異構(gòu)圖建模和異構(gòu)圖線(xiàn)圖建模,分別將建模后的嵌入集輸入異構(gòu)圖通道和線(xiàn)圖通道進(jìn)行物品學(xué)習(xí)。通過(guò)異構(gòu)圖通道和線(xiàn)圖通道最終會(huì)分別得到序列嵌入,最后將兩個(gè)序列嵌入聚合,用于物品推薦。異構(gòu)圖通道使用異構(gòu)圖神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)節(jié)點(diǎn)嵌入,異構(gòu)圖神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)物品嵌入的過(guò)程如圖6所示。
圖6 中異構(gòu)圖神經(jīng)網(wǎng)絡(luò)主要分為三部分進(jìn)行描述:(1)部分首先對(duì)異構(gòu)圖中所有節(jié)點(diǎn)進(jìn)行采樣,采樣完成之后,對(duì)節(jié)點(diǎn)中不同的數(shù)據(jù)類(lèi)型使用不同的技術(shù)進(jìn)行編碼,接著將編碼后的信息通過(guò)全連接層和BiLSTM 層進(jìn)行特征能力累積表達(dá),最終獲得節(jié)點(diǎn)的內(nèi)容嵌入。(2)部分將相同類(lèi)型的鄰居節(jié)點(diǎn)進(jìn)行聚合。(3)部分采用注意力機(jī)制將不同類(lèi)型的鄰居節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)進(jìn)行聚合,最終獲得當(dāng)前節(jié)點(diǎn)的內(nèi)容嵌入。
首先,需要將用戶(hù)行為序列集合S構(gòu)造成異構(gòu)圖HetG=(I,S,U,E),接著構(gòu)造異構(gòu)圖的線(xiàn)圖L(HetG)=(IL,SL,UL,EL)。HetG 創(chuàng)建后,利用DeepWalk 算法,收集物品、用戶(hù)和行為序列節(jié)點(diǎn)。然后使用Word2Vec對(duì)這些節(jié)點(diǎn)向量進(jìn)行訓(xùn)練,生成所有節(jié)點(diǎn)的預(yù)嵌入向量。
3.2.1 異構(gòu)圖通道學(xué)習(xí)項(xiàng)目嵌入及序列生成
經(jīng)過(guò)預(yù)訓(xùn)練之后生成的節(jié)點(diǎn)嵌入向量,每個(gè)向量在相同維度空間中。但此時(shí)預(yù)嵌入的節(jié)點(diǎn)向量缺乏表達(dá)能力,無(wú)法表達(dá)復(fù)雜關(guān)系之間的物品間轉(zhuǎn)換。使用傳統(tǒng)圖神經(jīng)網(wǎng)絡(luò)進(jìn)行異構(gòu)圖學(xué)習(xí)不能直接從不同類(lèi)型的鄰居中獲取其特征信息,節(jié)點(diǎn)的嵌入可能受到弱相關(guān)鄰居的影響,冷啟動(dòng)節(jié)點(diǎn)的嵌入不充分。異構(gòu)鄰居需要不同的特征轉(zhuǎn)換來(lái)處理不同的特征類(lèi)型和維度。采用異構(gòu)圖神經(jīng)網(wǎng)絡(luò)HetGNN 學(xué)習(xí)包含豐富信息和復(fù)雜轉(zhuǎn)換關(guān)系的項(xiàng)嵌入。采用聚合異構(gòu)鄰居的思想,HetGNN主要分為以下四部分:
(1)對(duì)異構(gòu)鄰居進(jìn)行采樣
由于異構(gòu)圖中的鄰居節(jié)點(diǎn)的類(lèi)型和數(shù)量不同,聚合這些節(jié)點(diǎn)需要不同的特征轉(zhuǎn)換。例如,用戶(hù)1的3條行為序列中出現(xiàn)了4次商品購(gòu)買(mǎi)行為,用戶(hù)2的4條行為序列中出現(xiàn)了5次商品購(gòu)買(mǎi)行為。此時(shí),兩位用戶(hù)的鄰居節(jié)點(diǎn)大小不同,為了方便使用相同的模型聚合這些異構(gòu)鄰居節(jié)點(diǎn),采用基于重啟的隨機(jī)游走(random walk with restart,RWR)方法對(duì)異構(gòu)鄰居進(jìn)行采樣。RWR的主要步驟如下:
步驟1在物品集I={i1,i2,…,in}、用戶(hù)集U={u1,u2,…,um}和行為序列集S={s1,s2,…,sj}中,對(duì)每個(gè)節(jié)點(diǎn)vi∈{I,U,S}開(kāi)始隨機(jī)遍歷。遍歷過(guò)程中,以概率P迭代地移動(dòng)到當(dāng)前節(jié)點(diǎn)的鄰居或返回起始節(jié)點(diǎn)。直到固定數(shù)量的節(jié)點(diǎn)都被收集,RWR 運(yùn)行就會(huì)停止。收集到的節(jié)點(diǎn)集中不同類(lèi)型節(jié)點(diǎn)數(shù)量會(huì)有上限,確保所有節(jié)點(diǎn)類(lèi)型都可以被采樣。
步驟2分組不同類(lèi)型的鄰居。對(duì)于每個(gè)節(jié)點(diǎn)類(lèi)型t,從步驟1中的節(jié)點(diǎn)集中根據(jù)出現(xiàn)次數(shù)進(jìn)行降序排列,選取前k個(gè)節(jié)點(diǎn)作為節(jié)點(diǎn)v的t類(lèi)型相關(guān)鄰居節(jié)點(diǎn)集合。
(2)聚合異構(gòu)鄰居的節(jié)點(diǎn)內(nèi)容
不同類(lèi)型的異構(gòu)鄰居具有不同的節(jié)點(diǎn)內(nèi)容。例如,用戶(hù)節(jié)點(diǎn)可能包含性別、地域、角色等靜態(tài)屬性,也可能包含社交習(xí)慣、娛樂(lè)偏好、消費(fèi)水平等動(dòng)態(tài)屬性。而物品節(jié)點(diǎn)包含名稱(chēng)、類(lèi)型、價(jià)格等靜態(tài)屬性。HetGNN設(shè)計(jì)了一種基于雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(bidirectional long short-term memory,BiLSTM)的體系結(jié)構(gòu),獲取節(jié)點(diǎn)特征之間的交互,將節(jié)點(diǎn)的所有屬性聚合為節(jié)點(diǎn)的嵌入表示,使其具有更強(qiáng)的表達(dá)能力。節(jié)點(diǎn)v是節(jié)點(diǎn)vi的異構(gòu)鄰居,其屬性集為Attr={attr1,attr2,…,attrn},使用不同的模型將屬性attri轉(zhuǎn)換成同維度的特征嵌入向量Att*={att1,att2,…,attn}。例如,使用One-Hot對(duì)預(yù)訓(xùn)練文本進(jìn)行編碼,使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)來(lái)預(yù)訓(xùn)練圖像內(nèi)容等。在得到節(jié)點(diǎn)各屬性嵌入之后,節(jié)點(diǎn)嵌入f1(v)公式如下:
其中,f1(v)∈Rd×l,d表示嵌入維數(shù);表示具有參數(shù)θx的全連接神經(jīng)網(wǎng)絡(luò)并且無(wú)需變換的特征轉(zhuǎn)換器;⊕表示連接運(yùn)算。LSTM公式如下:
其中,hi∈R(d/2)×l表示第i個(gè)隱藏層輸出狀態(tài),°是哈達(dá)瑪積,,Wi∈R(d/2)×(d/2)和bi∈R(d/2)×l(i∈(z,f,o,c))為可學(xué)習(xí)的參數(shù),zi、fi和oi分別為遺忘門(mén)第i層特征輸出、輸入門(mén)第i層特征輸出和輸出門(mén)第i層特征輸出。上文中f1(v)首先使用不同的帶參數(shù)的全連接層FCθx對(duì)不同內(nèi)容特征進(jìn)行轉(zhuǎn)換,然后利用BiLSTM捕獲深層次的特征交互,累積所有內(nèi)容特征的表達(dá)能力,最后利用均值池化層處理所有隱藏狀態(tài),最終得到節(jié)點(diǎn)v的一般內(nèi)容嵌入。
(3)聚合相同類(lèi)型的異構(gòu)鄰居
聚合異構(gòu)鄰居的節(jié)點(diǎn)內(nèi)容后,每個(gè)節(jié)點(diǎn)有多種類(lèi)型的異構(gòu)鄰居且每種類(lèi)型t有多個(gè)異構(gòu)鄰居。使用BiLSTM將相同類(lèi)型的節(jié)點(diǎn)聚合成一個(gè)向量嵌入,HetGNN會(huì)學(xué)習(xí)它們之間的復(fù)雜關(guān)系,從而使學(xué)習(xí)到類(lèi)型嵌入f2(t)具有更強(qiáng)的表達(dá)能力。類(lèi)型嵌入f2(t)公式如下:
(4)聚合不同的類(lèi)型
在得到類(lèi)型嵌入后,由于不同類(lèi)型的鄰居會(huì)對(duì)節(jié)點(diǎn)v的最終表示產(chǎn)生不同的影響,在結(jié)合基于類(lèi)型的鄰居嵌入與節(jié)點(diǎn)v的內(nèi)容嵌入的過(guò)程中,采用注意力機(jī)制。此時(shí),節(jié)點(diǎn)vi的最終嵌入計(jì)算表示為:
其中,T是包含異構(gòu)節(jié)點(diǎn)的類(lèi)型集合。avi j表示每種類(lèi)型對(duì)節(jié)點(diǎn)v產(chǎn)生的影響值,計(jì)算表示如下:
其中,LeakyReLU為激活函數(shù),U∈R2d×l表示注意力參數(shù),F(xiàn)2(T)表示類(lèi)型嵌入f2(t)的集合,t∈T表示一個(gè)異構(gòu)節(jié)點(diǎn)的類(lèi)型。
在使用HetGNN學(xué)習(xí)項(xiàng)目嵌入之后,進(jìn)行序列嵌入的生成。對(duì)于序列s={is,1,is,2,…,is,h},預(yù)嵌入向量的過(guò)程如下:
其中,is,h是節(jié)點(diǎn)is,h的節(jié)點(diǎn)嵌入,i0是沒(méi)有固定維數(shù)的零向量,⊕表示連接操作。由于序列中的項(xiàng)數(shù)可能不同,需要連接i0,以便所有預(yù)嵌入的會(huì)話(huà)向量具有相同的維數(shù)。同時(shí),考慮到用戶(hù)長(zhǎng)短期偏好分別對(duì)結(jié)果的影響,加入注意力機(jī)制,獲得了能夠表達(dá)長(zhǎng)短期偏好混合的序列嵌入。首先考慮到序列的局部嵌入slocal,其表達(dá)公式如下:
其中,is,n是當(dāng)前序列中最后一項(xiàng)的嵌入向量。對(duì)于用戶(hù)長(zhǎng)期偏好,需要重點(diǎn)考慮項(xiàng)與項(xiàng)之間的變換關(guān)系,同樣采用注意力機(jī)制來(lái)學(xué)習(xí)序列全局嵌入sglobal,其表達(dá)公式如下:
其中,WT∈Rd,W1,W2∈Rd×2d是用于生成物品嵌入的權(quán)重矩陣。在得到序列的全局嵌入和局部嵌入后,生成混合序列嵌入,過(guò)程如下:
其中,利用W3∈Rd×2d將slocal和sglobal融合到混合序列嵌入中。異構(gòu)圖通道學(xué)習(xí)項(xiàng)目嵌入及序列生成算法如算法1所示。算法時(shí)間復(fù)雜度為O(nd2)。
算法1異構(gòu)圖通道學(xué)習(xí)項(xiàng)目嵌入及序列生成算法HLearn
3.2.2 線(xiàn)圖通道學(xué)習(xí)項(xiàng)目嵌入及序列生成
線(xiàn)圖通道對(duì)異構(gòu)圖的線(xiàn)圖進(jìn)行編碼。線(xiàn)圖可以看作一個(gè)包含跨行為序列信息并描述邊連通性的簡(jiǎn)單圖,在進(jìn)行卷積操作之前,將基礎(chǔ)物品嵌入I(0)輸入SGU(self-gating unit)并獲得線(xiàn)圖通道的物品嵌入。其中獲得的過(guò)程如下:
其中,Wg∈Rd×d,bg∈Rd都是需要學(xué)習(xí)的參數(shù)。σ為激活函數(shù)。
線(xiàn)圖通道學(xué)習(xí)項(xiàng)目嵌入及序列生成算法如算法2所示。算法復(fù)雜度為O(n2d)。
算法2線(xiàn)圖通道學(xué)習(xí)項(xiàng)目嵌入及序列生成算法LLearn
給定一個(gè)用戶(hù)行為序列s,通過(guò)分別計(jì)算I(0)和sline的點(diǎn)積以及I(0)和shybrid的點(diǎn)積為所有物品項(xiàng)i∈I計(jì)算一個(gè)得分,然后將兩個(gè)預(yù)測(cè)分?jǐn)?shù)相加得到最終預(yù)測(cè)分?jǐn)?shù):
然后,使用softmax 函數(shù)計(jì)算每一個(gè)項(xiàng)目成為序列中的下一個(gè)項(xiàng)目的概率:
本文將學(xué)習(xí)目標(biāo)定義為推薦系統(tǒng)中得到廣泛應(yīng)用的交叉熵?fù)p失函數(shù),并且使用Adam優(yōu)化器最小化交叉熵以獲得高質(zhì)量的推薦結(jié)果。記交叉熵函數(shù)的定義為:
其中,y是真實(shí)數(shù)據(jù)的One-Hot編碼向量。DC-HetGNN核心算法如算法3所示。
算法3DC-HetGNN算法
本文采用兩個(gè)電商數(shù)據(jù)集Tmall 和Diginetica 來(lái)評(píng)估本文提出的模型,兩個(gè)數(shù)據(jù)集中均包含了用戶(hù)的個(gè)人信息及行為信息。為了避免冗余數(shù)據(jù)對(duì)本文模型產(chǎn)生的影響,本文對(duì)兩個(gè)數(shù)據(jù)集均進(jìn)行了預(yù)處理。其中,對(duì)數(shù)據(jù)集Diginetica 進(jìn)行預(yù)處理的內(nèi)容如下:刪除數(shù)據(jù)集中只包含一個(gè)物品的所有行為序列,并刪除了出現(xiàn)次數(shù)少于5 次的物品。由于構(gòu)建異構(gòu)圖需要用戶(hù)節(jié)點(diǎn),需要?jiǎng)h除匿名用戶(hù)的行為數(shù)據(jù)。本文將數(shù)據(jù)集Diginetica 拆分為訓(xùn)練集和測(cè)試集,使用最近幾周的數(shù)據(jù)作為測(cè)試集,其他數(shù)據(jù)作為訓(xùn)練集。最終經(jīng)過(guò)清洗的數(shù)據(jù)集如表1所示。
表1 Diginetica數(shù)據(jù)集Table 1 Diginetica dataset
本文選取的Tmall 數(shù)據(jù)集為用戶(hù)行為數(shù)據(jù)集。對(duì)此數(shù)據(jù)集預(yù)處理的內(nèi)容如下:刪除產(chǎn)生序列行為次數(shù)少于20次的用戶(hù)項(xiàng),刪除了出現(xiàn)次數(shù)少于10次的物品項(xiàng)。選取該數(shù)據(jù)集最近15天的行為數(shù)據(jù)作為測(cè)試集,其他作為訓(xùn)練集。最終經(jīng)過(guò)處理的數(shù)據(jù)集如表2所示。
表2 Tmall數(shù)據(jù)集Table 2 Tmall dataset
本文將提出的DC-HetGNN 與以下新近的序列化推薦模型進(jìn)行比較,并給出不同模型的時(shí)間復(fù)雜度。
SR-GNN[4]:將會(huì)話(huà)序列構(gòu)造為同構(gòu)圖,并利用GNN學(xué)習(xí)項(xiàng)嵌入。
HetGNN[5]:將會(huì)話(huà)序列構(gòu)造成異構(gòu)圖,通過(guò)神經(jīng)網(wǎng)絡(luò)模塊編碼聚合采樣同構(gòu)和異構(gòu)圖節(jié)點(diǎn),以端到端的方式訓(xùn)練模型,在聚類(lèi)、分類(lèi)和歸納任務(wù)中有出色表現(xiàn)。
BPR-MF[8]:該算法利用矩陣分解學(xué)習(xí)用戶(hù)偏好,提出了一種通用的個(gè)性化排序優(yōu)化準(zhǔn)則BRP-opt,并將其應(yīng)用到MF中。
GRU4Rec[9]:利用會(huì)話(huà)并行小批量訓(xùn)練過(guò)程,采用基于排序的損失函數(shù)對(duì)用戶(hù)序列進(jìn)行建模。
FGNN[11]:利用節(jié)點(diǎn)分類(lèi)和圖分類(lèi)學(xué)習(xí)序列最終嵌入。
TGSRec[12]:同時(shí)考慮序列中時(shí)間動(dòng)態(tài)并捕捉物品與用戶(hù)之間的依賴(lài)關(guān)系。
為了方便復(fù)雜度描述,記n表示節(jié)點(diǎn)數(shù),d表示隱藏層特征維度。各模型時(shí)間復(fù)雜度如表3所示。
表3 模型時(shí)間復(fù)雜度Table 3 Time complexity of model
從表3 中可以看出,本文模型DC-HetGNN 時(shí)間復(fù)雜度相較于其他基線(xiàn)模型沒(méi)有指數(shù)級(jí)的增長(zhǎng)。
在本文模型中,嵌入維度為128,最小批大小為200,線(xiàn)圖通道中卷積層數(shù)為2 層,學(xué)習(xí)率設(shè)置為0.000 1。節(jié)點(diǎn)的異構(gòu)鄰居數(shù)是一個(gè)非常重要的參數(shù),這組參數(shù)包括用戶(hù)鄰居數(shù)、物品鄰居數(shù)和行為序列鄰居數(shù)。經(jīng)過(guò)在兩個(gè)數(shù)據(jù)集中的大量實(shí)驗(yàn),在Diginetica數(shù)據(jù)集中,用戶(hù)鄰居數(shù)設(shè)置為12,物品鄰居數(shù)設(shè)置為8,行為序列鄰居數(shù)設(shè)置為1時(shí),模型的性能最好。在Tmall數(shù)據(jù)中,用戶(hù)鄰居數(shù)設(shè)置為1,物品鄰居數(shù)為1,行為序列鄰居數(shù)設(shè)置為15,模型性能最好。在實(shí)驗(yàn)過(guò)程中,通過(guò)自動(dòng)更新學(xué)習(xí)率,最終在學(xué)習(xí)率lr=0.000 1 時(shí),模型性能在數(shù)據(jù)集Diginetica 和Tmall 中都是最好的。對(duì)比模型的超參數(shù)設(shè)置除特別指出的外,其他的與原文中的設(shè)置相同。
本文在Top-n推薦場(chǎng)景中,采用兩個(gè)推薦系統(tǒng)中常用指標(biāo)來(lái)評(píng)估模型,分別為Recall@n和MRR@n,其中n=10,20,50。
本節(jié)將給出不同對(duì)比模型和本文的模型DCHetGNN 的比較結(jié)果。表4 為本文模型在Tmall 和Diginetica 數(shù)據(jù)集中不同n值下與其他基線(xiàn)模型的性能對(duì)比。
表4 在兩個(gè)數(shù)據(jù)集中模型推薦性能Table 4 Recommended performance of all models on two datasets 單位:%
從表4可以看出,模型DC-HetGNN在Top-n推薦場(chǎng)景中較其他模型取得了較好的性能。因?yàn)镈CHetGNN將用戶(hù)行為序列構(gòu)造成包含項(xiàng)目節(jié)點(diǎn)、用戶(hù)節(jié)點(diǎn)和序列節(jié)點(diǎn)的異構(gòu)圖。異構(gòu)圖包含復(fù)雜的依賴(lài)關(guān)系,可以顯示項(xiàng)之間的轉(zhuǎn)換、物品間的轉(zhuǎn)換、項(xiàng)與用戶(hù)之間的連接關(guān)系。與HetGNN相比,大部分情況下,在相同指標(biāo)下有所提升。HetGNN關(guān)注復(fù)雜物品間的轉(zhuǎn)換,但忽略了用戶(hù)行為序列之間的關(guān)系,本文在異構(gòu)圖學(xué)習(xí)通道的基礎(chǔ)上加入異構(gòu)圖的線(xiàn)圖學(xué)習(xí)通道,線(xiàn)圖通道描述了用戶(hù)行為序列級(jí)的關(guān)系,這樣可以使生成的序列嵌入更加具有表現(xiàn)力。在n=50時(shí),與基準(zhǔn)模型SR-GNN對(duì)比,在數(shù)據(jù)集Diginetica中Recall提升了8.52個(gè)百分點(diǎn),MRR提升了18.49%;在數(shù)據(jù)集Tmall 中Recall 和MRR 分別提升了4.19 個(gè)百分點(diǎn)和16.06%。與原模型HetGNN相比,在兩個(gè)數(shù)據(jù)集中,Recall分別平均提升0.82%和2.09%,與GRU4Rec在各項(xiàng)指標(biāo)上均有提升。SR-GNN和GRU4Rec兩個(gè)都是基于圖神經(jīng)網(wǎng)絡(luò)的模型,其中,GRU4Rec的核心是一種RNN 的變體,RNN 對(duì)序列化數(shù)據(jù)比較敏感,但是RNN 只能模擬連續(xù)項(xiàng)之間的單向傳遞,不能考慮遠(yuǎn)距離物品之間的依賴(lài)關(guān)系,從而會(huì)忽略行為序列中的一些信息。SR-GNN 將用戶(hù)行為序列構(gòu)造為同構(gòu)圖,這種同構(gòu)圖只具有項(xiàng)目之間的轉(zhuǎn)換,忽略了行為序列中的其他信息,特別是用戶(hù)信息。BRP-MF使用矩陣分解MF 來(lái)學(xué)習(xí)用戶(hù)偏好,但MF 不能很好地處理序列化數(shù)據(jù),因此最終的結(jié)果并不理想。DCHetGNN 與新近模型FGNN 相比,在指標(biāo)MRR@n和Recall@n中平均分別提升2.08%和0.78%,F(xiàn)GNN 雖然將圖分類(lèi)和節(jié)點(diǎn)分類(lèi)相結(jié)合,但并未考慮用戶(hù)行為序列之間的關(guān)系。與TGSRec 相比,在指標(biāo)MRR@n和Recall@n中平均分別提升2.70%和0.49%,TGSRec考慮了序列內(nèi)部時(shí)間節(jié)點(diǎn)因素對(duì)于用戶(hù)偏好的影響,但缺乏用戶(hù)長(zhǎng)期偏好的參考。
學(xué)習(xí)率lr是模型訓(xùn)練中一個(gè)重要的超參數(shù),它決定了目標(biāo)函數(shù)是否收斂到局部最小值以及何時(shí)收斂到最小值。本文設(shè)置了不同的學(xué)習(xí)率對(duì)模型進(jìn)行訓(xùn)練,實(shí)驗(yàn)結(jié)果如圖7所示。
圖7 不同n 值下的模型學(xué)習(xí)率Fig. 7 Learning rate of model under different n values
從圖7 可以看出,模型在不同n值下,當(dāng)學(xué)習(xí)率lr=0.000 1時(shí),在Tmall和Diginetica數(shù)據(jù)集上性能都是最好。因此,選擇lr=0.000 1作為本文模型的最佳參數(shù)。
在圖網(wǎng)絡(luò)學(xué)習(xí)過(guò)程中,特征嵌入維度的選擇對(duì)推薦結(jié)果好壞起到了重要的作用,過(guò)多特征維度嵌入設(shè)置并不一定會(huì)使推薦效果最優(yōu),甚至導(dǎo)致過(guò)擬合。過(guò)低的特征維度會(huì)使圖網(wǎng)絡(luò)學(xué)習(xí)效果變差,為了得到本模型最佳嵌入維度,本文對(duì)嵌入維度的選擇在兩個(gè)數(shù)據(jù)集中進(jìn)行了大量實(shí)驗(yàn),并繪制了實(shí)驗(yàn)結(jié)果圖,效果圖如圖8所示。
圖8 不同嵌入維度下各指標(biāo)的值Fig. 8 Value of each indicator under different embedded dimensions
在圖8中,當(dāng)嵌入維度從8到128之間變化時(shí),在兩個(gè)指標(biāo)和數(shù)據(jù)集中結(jié)果都會(huì)增加,應(yīng)為隨著維度的增加,圖網(wǎng)絡(luò)可以更好地學(xué)習(xí)特征。但當(dāng)嵌入維度進(jìn)一步增加時(shí),結(jié)果變得穩(wěn)定或者下降,這可能是過(guò)擬合的原因。
在模型的訓(xùn)練過(guò)程中,目標(biāo)函數(shù)會(huì)在某一時(shí)刻得到最優(yōu)值。此時(shí)繼續(xù)訓(xùn)練模型就沒(méi)有意義,因?yàn)槟P偷男阅芎茈y得到明顯的提升。因此,何時(shí)停止訓(xùn)練模型,節(jié)省時(shí)間很重要。本文選取常用優(yōu)化器Adam和優(yōu)化器SGD(stochastic gradient descent)并使用相同的環(huán)境與參數(shù)分別進(jìn)行實(shí)驗(yàn),并通過(guò)繪制模型的損失曲線(xiàn)來(lái)判斷模型何時(shí)收斂。訓(xùn)練過(guò)程中的損失曲線(xiàn)如圖9所示。
圖9 模型訓(xùn)練的收斂過(guò)程Fig. 9 Convergence process of model
從圖9可以看出,使用Adam優(yōu)化器比使用SGD優(yōu)化器收斂速度更快,但是精度并沒(méi)有SGD高,為了降低大量的訓(xùn)練時(shí)間,本文選取Adam作為本文模型的優(yōu)化器。本文模型使用Adam優(yōu)化器在Tmall數(shù)據(jù)集和Diginetica 數(shù)據(jù)集中分別在epoch 為14 和13 時(shí)達(dá)到收斂。因此可以在訓(xùn)練模型時(shí),將epoch分別設(shè)置為14 和13。使用SGD 優(yōu)化器需要更多輪的訓(xùn)練次數(shù)才能使模型達(dá)到收斂。
節(jié)點(diǎn)的鄰居數(shù)是本文模型一個(gè)重要的超參數(shù),本文在進(jìn)行大量實(shí)驗(yàn)后,得到節(jié)點(diǎn)的鄰居數(shù)在兩個(gè)數(shù)據(jù)集中的最佳值,結(jié)果如圖10所示。
圖10 不同類(lèi)型節(jié)點(diǎn)鄰居數(shù)下Recall@50的值Fig. 10 Recall@50 under different types of node neighbour number
從圖10 可以看出,在Tmall 數(shù)據(jù)集中,用戶(hù)鄰居數(shù)設(shè)置為1,物品鄰居數(shù)為1,行為序列鄰居數(shù)設(shè)置為15,模型性能較好。與Tmall 數(shù)據(jù)集不同的是,Diginetica數(shù)據(jù)集中,用戶(hù)鄰居數(shù)設(shè)置為12,物品鄰居數(shù)設(shè)置為8,行為序列鄰居數(shù)設(shè)置為1時(shí),模型的性能更好。這是因?yàn)楸疚哪P托枰煌瑪?shù)量的鄰居來(lái)提取不同長(zhǎng)度用戶(hù)行為序列中的信息。如,在Diginetica數(shù)據(jù)集中,用戶(hù)鄰居數(shù)的最優(yōu)值為12,而在Tmall數(shù)據(jù)集中,用戶(hù)鄰居數(shù)的最優(yōu)值為1,可以看出,在不同場(chǎng)景中,使用過(guò)多的異構(gòu)鄰居來(lái)提取信息,可能會(huì)受到噪聲節(jié)點(diǎn)的干擾,從而降低模型的性能。
本文考慮到在現(xiàn)實(shí)世界中,用戶(hù)行為序列通常有不同的長(zhǎng)度,會(huì)對(duì)本文模型產(chǎn)生影響,故將Tmall和Diginetica 中的序列分成兩個(gè)不同長(zhǎng)度的組,并分別命名為短序列組和長(zhǎng)序列組。其中,短序列組包含長(zhǎng)度小于等于5的序列,長(zhǎng)序列組包含長(zhǎng)度大于5的序列。DC-HetGNN 與SR-GNN、GRU4Rec、HetGNN在Recall@20 上的短序列組和長(zhǎng)序列組的推薦結(jié)果對(duì)比如圖11所示。
圖11 長(zhǎng)序列和短序列的Recall@20的值Fig. 11 Recall@20 of long sequences and short sequences
從圖11可以看出,在大多數(shù)情況下,DC-HetGNN在不同序列長(zhǎng)度下優(yōu)于在Tmall 和Diginetica 上的所有基準(zhǔn)模型。對(duì)于DC-HetGNN來(lái)說(shuō),同時(shí)關(guān)注了長(zhǎng)序列和短序列建模,短序列更能及時(shí)地反映用戶(hù)的偏好轉(zhuǎn)移,長(zhǎng)序列中含有用戶(hù)歷史行為序列,包含噪聲,因此本文模型在短序列上的性能表現(xiàn)優(yōu)于長(zhǎng)序列。
為了研究DC-HetGNN 層數(shù)對(duì)性能的影響,本文對(duì)模型設(shè)置不同層數(shù)并進(jìn)行實(shí)驗(yàn)對(duì)比。本文將模型的層數(shù)范圍設(shè)為layer=1,2,3,4。實(shí)驗(yàn)結(jié)果如圖12所示。
圖12 模型層數(shù)性能對(duì)比Fig. 12 Performance comparison of the number of layer
從圖12可以看出,DC-HetGNN在兩個(gè)數(shù)據(jù)集上對(duì)層數(shù)的取值不是很敏感。層數(shù)設(shè)置為2 時(shí)是最好的,當(dāng)層數(shù)大于2時(shí),性能略有下降。
本文將異構(gòu)圖神經(jīng)網(wǎng)絡(luò)HetGNN 和轉(zhuǎn)換后的異構(gòu)圖的線(xiàn)圖L(HetG)結(jié)合并應(yīng)用于用戶(hù)行為序列的推薦。首先,將行為序列構(gòu)造成包含多種類(lèi)型節(jié)點(diǎn)的異構(gòu)圖。然后,使用HetGNN和L(HetG)學(xué)習(xí)包含復(fù)雜的項(xiàng)目轉(zhuǎn)換和用戶(hù)信息的項(xiàng)目嵌入。最后,利用注意力網(wǎng)絡(luò)生成具有強(qiáng)大表達(dá)能力的序列嵌入,從而使學(xué)習(xí)到的序列嵌入能夠表達(dá)用戶(hù)的特定偏好。實(shí)驗(yàn)結(jié)果表明,本文方法優(yōu)于其他常用方法。
文中使用了兩個(gè)電子商務(wù)數(shù)據(jù)集,由于數(shù)據(jù)集中字段的限制,在構(gòu)建異構(gòu)圖時(shí)只考慮三種類(lèi)型的節(jié)點(diǎn)。在接下來(lái)的研究中,將繼續(xù)研究具有多種類(lèi)型節(jié)點(diǎn)的真實(shí)數(shù)據(jù)集,這樣學(xué)習(xí)到的序列嵌入將具有更強(qiáng)大的表達(dá)能力。