黨偉超,姚志宇,白尚旺,高改梅,劉春霞
(太原科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,山西 太原 030024)
推薦技術(shù)可以解決用戶信息過載的問題,在諸如搜索引擎和電子商務(wù)等網(wǎng)絡(luò)應(yīng)用中,它是用戶選擇感興趣信息的基礎(chǔ)。傳統(tǒng)的推薦研究通常根據(jù)用戶歷史信息進(jìn)行個性化推薦,然而在許多真實的應(yīng)用程序中,這種長期用戶信息可能不存在。而基于會話信息推薦[1,2],可以根據(jù)用戶正在進(jìn)行會話中的行為信息,預(yù)測用戶的下一次點擊。
目前已經(jīng)提出了一些推薦方法。相比于傳統(tǒng)推薦,會話推薦[3]有更好的表現(xiàn)能力,Hidasi等[4]提出循環(huán)神經(jīng)網(wǎng)絡(luò)的方法。Jannach等[5]提出融合循環(huán)神經(jīng)網(wǎng)絡(luò)和基于鄰域的方法。Tuan等[6]使用三維卷積神經(jīng)網(wǎng)絡(luò)完成推薦。Wu等[7]提出基于深度神經(jīng)網(wǎng)絡(luò)的方法。Li等[8]結(jié)合循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機制共同捕捉用戶的行為特征和興趣。Liu等[9]提出短期注意力優(yōu)先方法,利用多層感知網(wǎng)絡(luò)和注意力網(wǎng)絡(luò),有效捕獲用戶的一般興趣和當(dāng)前興趣。圖神經(jīng)網(wǎng)絡(luò)廣泛應(yīng)用于推薦系統(tǒng)[10,11]、行人重識別[12]、分辨率重建[13]等領(lǐng)域,基于圖神經(jīng)網(wǎng)絡(luò)的方法可以對會話圖進(jìn)行操作,更好地捕捉項目之間的復(fù)雜依賴關(guān)系。
綜上所述,基于循環(huán)神經(jīng)網(wǎng)絡(luò)的推薦方法存在以下局限性。首先,基于序列的方法只能對連續(xù)項目之間的順序轉(zhuǎn)換建模,很難捕獲項目之間的復(fù)雜關(guān)系。其次,很難從每個會話中準(zhǔn)確地估計每個用戶的全局表示。最后,在對特定候選項目進(jìn)行預(yù)測時,需要考慮與目標(biāo)項目相關(guān)性比較大的項目。為克服上述方法的局限性,本文提出一種新型的會話推薦方法,稱為SR-GNN-AM(session recommendation based on graph neural network and attention mechanism)。
如圖1所示。該方法首先將會話序列構(gòu)建為有向會話圖,利用圖神經(jīng)網(wǎng)絡(luò)捕捉項目之間的依賴關(guān)系,生成準(zhǔn)確的項目嵌入向量。其次應(yīng)用多頭注意力機制,生成全局嵌入向量,可以更好地挖掘用戶在當(dāng)前會話中的全局偏好。最后引入目標(biāo)注意力機制,生成目標(biāo)嵌入向量,考慮目標(biāo)項目歷史行為的相關(guān)性,激活當(dāng)前會話中與目標(biāo)項目相關(guān)的特定用戶興趣。本方法融合當(dāng)前嵌入向量、全局嵌入向量和目標(biāo)嵌入向量,生成會話嵌入向量,最終預(yù)測用戶的下一次點擊。
基于圖神經(jīng)網(wǎng)絡(luò)的會話將每個會話s表示為一個有向會話圖。有向會話圖由Gs=(N,ε,A) 表示,其中N,ε,A分別是有向會話圖的節(jié)點集、邊集和鄰接矩陣。在有向會話圖Gs中,每個節(jié)點代表一個項目pi∈P, 每條邊 (pi-1,pi)∈ε, 代表用戶連續(xù)訪問項目pi-1和pi。A定義為兩個鄰接矩陣A(out)和A(in)的拼接,反映項目之間的雙向關(guān)系,其中A(out)和A(in)分別表示輸出邊和輸入邊的加權(quán)鄰接矩陣。以會話序列s=[p1,p2,p3,p2,p4] 為例,如圖2所示,圖(a)是會話序列對應(yīng)的會話圖,圖(b)是展開的一個時間步,實線對應(yīng)于會話圖的有向邊,虛線對應(yīng)于有向邊的反相邊,圖(c)是會話圖的兩個鄰接矩陣A(out)和A(in)的加權(quán)拼接。以鄰接矩陣A(out)為例,p2的出度為2,每一條出度邊的權(quán)重相同,所以p2→p3的出度值為1/2,p2→p4出度值為1/2。
圖神經(jīng)網(wǎng)絡(luò)是一類廣泛使用的深度學(xué)習(xí)模型,它可以對有向會話圖中的節(jié)點生成節(jié)點嵌入向量,可以對復(fù)雜的項目依賴關(guān)系建模。構(gòu)造有向會話圖之后,每個節(jié)點pi∈P都會轉(zhuǎn)化為一個嵌入向量。使用圖神經(jīng)網(wǎng)絡(luò)獲得項目嵌入向量vi∈Rd, 它可以表示每一個會話。
本文使用一種特定類型的圖神經(jīng)網(wǎng)絡(luò),門控圖神經(jīng)網(wǎng)絡(luò)完成項目嵌入。對于有向會話圖Gs中的節(jié)點pi, 其更新規(guī)則為
(1)
(2)
(3)
(4)
(5)
式(1)表示不同節(jié)點之間的信息傳播,提取潛在向量,并將它們作為圖神經(jīng)網(wǎng)絡(luò)的輸入。式(2)和式(3)分別表示更新門和重置門,分別決定要保留和丟棄信息。式(4)表示候選狀態(tài),通過前一個時間步的狀態(tài)、當(dāng)前狀態(tài)和重置門來構(gòu)建候選狀態(tài)。式(5)表示為,在更新門的控制下,最終狀態(tài)是前一個時間步狀態(tài)和候選狀態(tài)的組合。通過不斷更新,獲得最終的節(jié)點向量。
在之前的推薦研究中,大部分模型利用項目嵌入生成全局嵌入向量,它可以表示用戶的長期興趣偏好,在此基礎(chǔ)上,通過應(yīng)用多頭注意力機制生成更加準(zhǔn)確的全局嵌入向量sglobal∈Rd。
多頭注意力機制為將查詢Q、 鍵K和值V, 分別用不同的、經(jīng)過訓(xùn)練的線性投影對dq、dk和dv維進(jìn)行線性投影h次,然后將它們拼接起來并再次投影,得到最后的結(jié)果。dq為查詢的維度,dk為鍵的維度,dv為值的維度,h為頭的數(shù)量。多頭注意力機制能夠同時在不同的子部分中,獲取重要的相關(guān)信息。
多頭注意力機制的輸入為項目嵌入矩陣X=[v1,v2,…,vn]T∈Rn×d,vi∈Rd為所有項目中第i個項目的嵌入向量,其輸出為Y=[y1,y2,…,yn]∈Rn×d,yi∈Rd為經(jīng)過多頭注意力機制,新生成的第i個項目的嵌入向量,n為會話長度,d為項目嵌入向量維度。多頭注意力機制的表達(dá)式為
Q=K=V=X
(6)
(7)
(8)
Y=Concat(head1,…,headh)WO
(9)
對于每個會話s, 全局嵌入向量由sglobal∈Rd表示
(10)
在獲得每個項目的嵌入向量之后,模型自適應(yīng)地考慮目標(biāo)項目的相關(guān)性,目標(biāo)項目為所有要預(yù)測的候選項目。通過應(yīng)用目標(biāo)注意力機制計算會話s中,所有項目嵌入向量vi和每個目標(biāo)項目嵌入向量vt之間的注意力分?jǐn)?shù),利用softmax函數(shù)歸一化,其公式為
(11)
其中,Wt∈Rd×d為權(quán)重矩陣。
對于每個會話s, 目標(biāo)項目嵌入向量由starget∈Rd表示
(12)
在會話s中,用戶最后一次點擊的項目會影響用戶的下一次點擊。使用當(dāng)前嵌入向量slocal∈Rd表示用戶的短期興趣偏好,它是用戶最后一次訪問項目pn的向量化表示。
本模型拼接目標(biāo)嵌入向量、當(dāng)前嵌入向量和全局嵌入向量,之后通過線性變換,最終生成會話嵌入向量
st=W[starget;slocal;sglobal]
(13)
其中,W∈Rd×3d為權(quán)重矩陣。
(14)
(15)
(16)
其中,yi為真值項目的獨熱編碼向量,使用時間反向傳播算法訓(xùn)練模型。
本實驗分別在兩個真實的公共電子商務(wù)數(shù)據(jù)集Yoochoose和Diginetica上進(jìn)行驗證。Yoochoose數(shù)據(jù)集的數(shù)據(jù)信息來源于RecSys Challenge 2015,它包含用戶在電子商務(wù)網(wǎng)站上6個月內(nèi)的點擊信息。Diginetica數(shù)據(jù)集的數(shù)據(jù)信息來自CIKM Cup 2016的交易數(shù)據(jù)。為公平比較,本實驗嚴(yán)格遵循與Wu等[14]相同的數(shù)據(jù)集處理規(guī)則,在公共數(shù)據(jù)集中,刪除點擊次數(shù)不到5次的項目和會話長度為1的會話。最終,Yoochoose數(shù)據(jù)集包含7 981 580條會話和37 483個項目,Diginetica數(shù)據(jù)集包含204 771條會話和43 097個項目。
Yoochoose數(shù)據(jù)集的最后幾天數(shù)據(jù)作為該數(shù)據(jù)集的測試集,Diginetica數(shù)據(jù)集的最后幾周數(shù)據(jù)作為該數(shù)據(jù)集的測試集。對于會話s=[p1,p2,…,pn], 通過預(yù)處理生成一系列的會話序列以及相應(yīng)標(biāo)簽,其中會話序列為 [p1,p2,…,pn], 相應(yīng)的標(biāo)簽為 ([p1],p2),([p1,p2],p3),…,([p1,p2,…,pn],pn+1),pn+1為下一次點擊的項目。由于Yoochose數(shù)據(jù)集太大,只使用其最近1/4部分訓(xùn)練,用Yoochoose 1/4表示。表1總結(jié)了兩個數(shù)據(jù)集的詳細(xì)信息。
表1 數(shù)據(jù)集信息統(tǒng)計
在所有實驗中,隱含向量的維度為100,初始學(xué)習(xí)率為0.001,每3個訓(xùn)練周期衰減0.1,多頭注意力中頭的數(shù)量為2。對于這兩個數(shù)據(jù)集,批處理大小設(shè)置為20,l2懲罰項設(shè)置為10-5。
本實驗采用與Wu等[14]相同的評估指標(biāo),分別是準(zhǔn)確率(Precision)和平均倒數(shù)排名(mean reciprocal rank,MRR)。
P@N用于評估推薦的準(zhǔn)確性,表示在推薦排名列表前N項中,正確推薦項目數(shù)量占樣本數(shù)量的比例,時間復(fù)雜度為O(n)。計算公式為
P@N=nhit/n
其中,nhit表示前N項中正確推薦項目的數(shù)量,n表示樣本數(shù)量。
MRR@N用于評估正確項目在推薦排名列表中的排名,表示正確推薦項目的倒數(shù)排名的平均值,值越大,表明推薦的項目在排名列表中位置越靠前,時間復(fù)雜度為O(n)。計算公式為
其中:n表示樣本數(shù)量,M表示前N個項目中正確項目組成的集合,rankpi表示項目pi在推薦排名列表中的排名,本實驗中N為20。
為驗證SR-GNN-AM方法的有效性,與下列方法比較?;谘h(huán)神經(jīng)網(wǎng)絡(luò)的推薦方法:基于循環(huán)神經(jīng)網(wǎng)絡(luò)和注意力機制的推薦方法[8](neural attentive recommendation machine,NARM)和基于短期注意力優(yōu)先的推薦方法[9](short-term attention/memory priority,STAMP)?;趫D神經(jīng)網(wǎng)絡(luò)的推薦方法[14](session-based recommendation with graph neural networks,SR-GNN)。表2總結(jié)了P@20和MRR@20的總體表現(xiàn),最高表現(xiàn)以粗體的形式在表中顯示。
表2 實驗結(jié)果對比
實驗結(jié)果表明SR-GNN-AM在公共數(shù)據(jù)集上,P@20和MRR@20都有良好的表現(xiàn),這驗證了所提出方法的有效性。從表2中可以反映出一個明顯的趨勢,基于神經(jīng)網(wǎng)絡(luò)類方法優(yōu)于傳統(tǒng)方法,這些方法具有更強捕捉復(fù)雜用戶行為的能力。NARM應(yīng)用循環(huán)單元捕捉用戶的整體興趣,STAMP使用最后一次點擊的項目,改善短期記憶能力,這些方法考慮了用戶的全局行為偏好,從而獲得了優(yōu)于傳統(tǒng)方法的性能。但是這些方法只考慮連續(xù)項目之間的單向轉(zhuǎn)換關(guān)系,它們的性能仍然不如SR-GNN。
NARM和STAMP忽略了項目之間的交互關(guān)系,但是SR-GNN進(jìn)一步考慮了會話中項目之間的復(fù)雜依賴關(guān)系,該方法將每個會話建模為一個有向會話圖,該圖可以捕捉用戶點擊項目之間更加復(fù)雜和隱含的聯(lián)系。該方法采用軟注意力機制生成全局會話表示,該會話表示可以自動選擇相對重要的項目,并且忽略當(dāng)前會話中無效的用戶行為,STAMP只利用最后一次單擊的項目和之前項目之間的依賴關(guān)系,這可能是不夠的,其它RNN模型,如NARM,在傳播過程中也不能選擇有影響的信息。當(dāng)用戶的行為是無目的的,或者用戶的興趣在當(dāng)前會話中快速漂移時,傳統(tǒng)的模型處理這種類型會話信息是無效的。然而SR-GNN的性能仍然不如本文所提出的方法。
SR-GNN-AM在SR-GNN基礎(chǔ)上,利用多頭注意力機制生成全局會話嵌入向量,多頭注意力機制有多個頭,每個頭可以從不同的特征空間中提取不同的特征信息,從而更加全面地捕捉項目之間的依賴關(guān)系,并且采用目標(biāo)注意力機制,進(jìn)一步考慮用戶興趣和目標(biāo)興趣之間的關(guān)系,在給定不同目標(biāo)項目的情況下,該模型會激活不同的用戶興趣,從而提高推薦模型的表現(xiàn)能力。綜上所述,這些實驗結(jié)果驗證了所提出方法的有效性。
為比較不同的會話嵌入方法對模型表現(xiàn)的影響程度,本實驗將與以下3種嵌入方法進(jìn)行比較:①局部嵌入(L);②具有平均池化的全局嵌入(AVG);③具有多頭注意力機制的全局嵌入(M-H);④融合局部嵌入和多頭注意力機制的全局嵌入(L+M-H)。比較結(jié)果見表3。
表3 不同會話嵌入方法的結(jié)果表現(xiàn)
從表3中可以看出,SR-GNN-AM在兩個公共數(shù)據(jù)集上都獲得了最佳的結(jié)果,實驗結(jié)果表明,L優(yōu)于AVG,它僅使用最后一次點擊的項目作為會話表示,表明最后一次點擊的項目對預(yù)測用戶的最終點擊有很大的影響。M-H優(yōu)于AVG,多頭注意力機制有助于從會話數(shù)據(jù)中提取出重要的行為信息。從表中還可以看出,(L+M-H)優(yōu)于L和M-H,實驗結(jié)果驗證了將當(dāng)前會話興趣、長期興趣偏好結(jié)合的必要性。
從實驗結(jié)果還可以看出,使用AVG在會話中取得了不好的表現(xiàn),這種現(xiàn)象是因為會話中用戶行為具有多樣性,這進(jìn)一步突出了使用本文所提出的多頭注意力機制,捕捉不同用戶興趣的重要性。
本模型利用多頭注意力機制和目標(biāo)注意力機制完成推薦,為比較不同注意力機制對模型的影響程度,本實驗分別與以下兩種注意力機制進(jìn)行比較:①軟注意力機制推薦模型(L+S),也是SR-GNN,其會話嵌入向量包括:當(dāng)前嵌入向量和軟注意力機制生成全局會話嵌入向量;②多頭注意力機制推薦模型(L+M-H),其會話嵌入向量包括:當(dāng)前嵌入向量和多頭注意力機制生成全局嵌入向量。比較結(jié)果見表4,最高表現(xiàn)以粗體的形式在表中顯示。
從表4中可以看出(L+M-H)優(yōu)于SR-GNN,這驗證了多頭注意力機制強于軟注意力機制,多頭注意力機制可以更加準(zhǔn)確地表示全局興趣偏好,提高推薦精度。SR-GNN-AM在各項指標(biāo)上都優(yōu)于(L+M-H),這驗證了模型融合目標(biāo)嵌入的重要性,目標(biāo)注意力機制可以更好地針對目標(biāo)項目完成相關(guān)性推薦。實驗結(jié)果表明,本模型通過結(jié)合多頭注意力機制和目標(biāo)注意力機制,可以更好地完成個性化推薦任務(wù)。
表4 不同注意力機制的表現(xiàn)
本文提出基于圖神經(jīng)網(wǎng)絡(luò)和注意力機制的會話推薦方法,門控圖神經(jīng)網(wǎng)絡(luò)捕捉項目間依賴關(guān)系,多頭注意力準(zhǔn)確表示用戶全局偏好,生成全局嵌入,目標(biāo)注意力考慮目標(biāo)項目相關(guān)性,生成目標(biāo)嵌入,融合當(dāng)前嵌入,生成會話嵌入,從而完成推薦。通過在真實數(shù)據(jù)集上的大量實驗,實驗結(jié)果表明,SR-GNN-AM在各項指標(biāo)上均優(yōu)于SG-GNN等方法,另外通過消融實驗驗證了本方法各組成部分之間的有效性。但是,由實驗結(jié)果可見,會話推薦的各項指標(biāo)還存在很大的提升空間,在接下來的工作研究中,考慮通過挖掘用戶更多行為信息以及結(jié)合知識圖譜,以得到更高的推薦精度。