張曉暉,馬慧芳,王文濤,高子皓
(西北師范大學 計算機科學與工程學院,蘭州 730070)
近年來,基于會話的推薦(Session-Based Recommendation,SBR)方法受到學術界和工業界的廣泛關注[1-3]。與傳統的推薦算法不同,會話推薦側重于根據用戶當前正在進行的會話學習用戶的最新偏好,以推薦下一個項目。因此,通過預測用戶的最新偏好以推薦下一個項目是SBR 的核心任務。由于SBR 具有很高的實用價值,因此研究人員提出了許多推薦方法[4-5]。盡管這些方法取得了較好的推薦效果,但大多都僅基于當前會話建模用戶偏好,忽略了跨會話信息和項目知識。而事實上,其他會話的交互數據和知識圖譜中豐富的實體和關系信息有助于捕獲項目之間的依賴關系、緩解數據稀疏問題等。
馬爾可夫鏈(Markov Chain,MC)是最早被用于會話推薦的模型,其依據會話序列中用戶的前一個行為預測下一個行為,取得了較好的會話推薦效果[6]。然而,用戶行為往往受多步依賴關系的影響,僅從相鄰項目的轉換中捕獲信息,不足以建模用戶感興趣的演化過程。為了挖掘這種多步依賴的影響關系,研究人員提出基于循環神經網絡(Recurrent Neural Network,RNN)的會話推薦方法[7-8]。其中,GRU4REC[9]利用多層門控循環單元(Gated Recurrent Unit,GRU)捕獲完整的會話序列信息。NARM[10]在RNN 上利用注意力機制捕捉用戶的序列行為特征,該方法將數據簡單地視為時間序列,存在預測偏差的問題。因此,文獻[11]利用注意力網絡來代替循環編碼器,通過多層感知機(Multi-Layer Perceptron,MLP)和注意力網絡來捕獲用戶的一般興趣和當前興趣。盡管該方法取得了一定進展,但采用的線性序列結構表達能力不強,難以表示與建模項目之間復雜的非序列依賴關系。
近年來,圖神經網絡(Graph Neural Network,GNN)廣泛應用在包括會話推薦在內的各種任務中[12-14],在空間上建模項目之間的轉換模式,有助于捕獲項目間復雜的依賴關系[15-16]。其中,SR-GNN[17]將GNN應用到會話推薦任務中,并設計門控圖神經網絡(Gated Graph Neural Network,GGNN)模型來捕獲復雜的項目轉換關系。此外,文獻[18]在SR-GNN 基礎上,采用多層自注意力機制獲得用戶的長期興趣。然而,以上方法僅基于當前會話來建模用戶偏好,忽略了跨會話信息對當前會話重要性的影響。因此,文獻[19]結合不同的會話信息設計一個廣泛連接的會話圖,并使用多頭注意力機制學習每個項目的表示。盡管該方法考慮了其他會話的信息,但其忽略了知識圖譜中的項目知識,并難以緩解數據稀疏和冷啟動問題,具有次優推薦性能。
針對以上問題,本文綜合考慮跨會話信息、知識圖譜中豐富的實體和關系信息,設計基于跨會話知識圖譜的圖注意力網絡推薦方法ARCK。基于會話數據和知識圖譜構建跨會話知識圖譜,利用知識感知的注意力機制捕獲跨會話的項目轉換信息和知識圖譜中的項目知識來更新項目節點表示,采用注意力網絡和GRU模型建模目標用戶的長、短期興趣。在生成預測時,通過跨會話知識圖譜獲得語義信息更加豐富的項目嵌入,從而得到更精確的會話推薦結果。
本文設S={s1,s2,…,s|S|}為項目集合V={v1,v2,…,v|V|}上的會話集合。第t個匿名會話是按時間順序排列的項目列表,其中∈V為第j個被點擊的項目,n為會話st的長度。st可能包含重復的項目。為了緩解數據稀疏問題,ARCK 模型考慮關于項目的側信息(如項目屬性和外部知識)。這些側信息由真實世界的實體和它們之間的關系組成。例如,一首歌可以由它的歌手、語言和流派來描述。本文以知識圖譜的形式組織項目的側信息,給定知識圖譜GK={(h,r,t)|h,t∈E,r∈R},其中E表示所有的實體節點,R表示所有節點的關系,每一個三元組都描述了從尾實體t到頭實體h之間存在一類關系r。例如,三元組(昨日重現,歌手,Carpenters)描述了Carpenters 是歌曲《昨日重現》的歌手。此外,本文給定項目-實體對齊集A={(v,e)|v∈V,e∈ε},其中(v,e)表示項目v可以與知識圖譜中的實體e對齊。

本文主要符號描述如表1 所示。

表1 本文主要符號描述 Table 1 Description of main symbols in this paper
本文提出的ARCK 方法架構如圖1 所示。其流程主要分為4 個步驟:1)基于跨會話圖GC和知識圖譜GK構建跨會話知識圖譜GCK;2)通過知識感知的注意力機制在跨會話知識圖譜GCK上學習項目相關性,并將其編碼到項目表示中;3)將用戶行為序列視為GC中的子圖,并利用GRU 和注意力網絡學習會話嵌入;4)在預測層將學習到的會話嵌入、項目嵌入拼接后輸入至MLP,最終得到目標會話-項目對的預測分數。

圖1 本文方法架構Fig.1 Framework of the proposed method
為了充分捕獲跨會話信息和項目知識來緩解數據稀疏問題,本文將會話數據和知識圖譜中豐富的實體和關系信息進行圖數據建模,并利用知識感知的注意力機制對其他會話的項目轉換信息和知識圖譜中的項目屬性進行編碼,從而獲得項目嵌入矩陣。
2.1.1 跨會話知識圖譜構建
本文給定跨會話圖GC、知識圖譜GK及項目-實體對齊集A,構建跨會話知識圖譜GCK={(v,r,e)|v∈V,e∈E′,r∈R′},其中E′=V∪E,R′=R∪{transition}。
2.1.2 項目嵌入學習
知識圖譜嵌入是一種將實體和關系作為向量表示進行參數化的有效方法,同時還可以保留圖的結構信息。然而,在真實數據集中的項目通常由索引標識組成,而這些原始索引表示能力非常有限。因此,受文獻[20]的啟發,本文首先選擇廣泛使用的TransR[21]方法來學習跨會話知識圖譜上每個項目節點v、實體節點e和關系r的原始嵌入,即ev,ee,er∈Rd。通過將原始嵌入向量輸入到嵌入傳播層,即知識感知的注意力機制,生成每個項目的知識嵌入。設項目知識嵌入矩陣I=[v1,v2,…,v|V|],其中|V|為跨會話知識圖譜中的項目節點數,vk∈Rd表示項目vk的知識嵌入,d為嵌入維度。具體地,本文給定跨會話知識圖譜GCK,對于圖中的項目節點v,三元組集合Nv={(v,r,e)|(v,r,e)∈GCK}稱為項目v的自我中心網絡[12]。為了獲得項目v的l階表示,項目v的自我中心網絡的線性組合計算如式(1)所示:

其中:π(v,r,e)為區分實體鄰居重要性的注意力分數,表示每條邊(v,r,e)上傳播的衰減因子,控制有多少信息在關系r的條件下從e傳播到v。具體地,π(v,r,e)由知識感知的 注意力機制計算,并利用Softmax 函數對與v相連的所有三元組系數進行歸一化,如式(2)所示:

其中:Wr∈Rd×d為可學習的權重矩陣。由于距離更近的實體能傳播更多的信息,因此該方法使得注意力分數依賴于關系r空間中ev和ee之間的距離。

為了獲得節點v的知識嵌入,本文對執行l層嵌入傳播操作獲得的項目節點v的l個表示進行拼接,以實現層聚合操作,如式(4)所示:

其中:l為知識感知的注意力機制層數;“||”為拼接操作。由此得到項目v的最終特征向量,即項目級嵌入。通過上述傳播過程獲得項目集V中每個項目的知識嵌入,即得到融合跨會話信息和項目知識的項目知識嵌入矩陣I∈R|V|×Ld。
盡管項目嵌入捕獲了跨會話信息和項目知識,但其未揭示特定會話的上下文信息。已有研究表明,會話推薦模型應充分利用當前會話來反映用戶最近的偏好[19]。因此,通過學習會話級嵌入來保留原始會話st的信息并獲取用戶當前偏好的做法是十分必要。本文給定目標會話,會話嵌入學習包含兩個任務:1)執行嵌入查找操作,從項目知識嵌入矩陣I中提取出st特定的會話嵌入矩陣Is=[v1,v2,…,vn],其中Is∈Rn×Ld,vk∈RLd為會話st中第k個項目的知識嵌入;2)根據Is生成會話st當前偏好和全局偏好表示。
GRU 克服了RNN 中存在的梯度消失問題,其比長短期記憶(Long Short-Term Memory,LSTM)網絡模型效率更高[23]。因此,本文采用GRU 來建模目標會話的當前偏好scurrentt,如式(5)所示:

其中:hn為會話st在GRU 中的第n步所輸出的隱藏狀態(向量);φGRU為GRU 中待學習的參數。該隱藏狀態的計算基于vn和第n-1 步的隱藏狀態hn-1。
通過聚合會話圖Gst中所有節點向量來得到目標會話的全局偏好,如式(6)所示:

其中:vi為會話圖Gst中項目節點的知識嵌入。鑒于st中的項目可能具有不同的重要性,因此采用注意力網絡為每個項目分配相應的權重ai,n,如式(7)所示:

其中:ai,n為會話st中第i個項目與最后一個項目之間的相似性分數。
最后,將目標會話的當前偏好與全局偏好拼接生成最終的會話嵌入st,如式(8)所示:

如果一個項目和目標會話越相似,那么該項目對于推薦就越重要。因此,利用目標會話的最終嵌入st與候選項目vk∈V的嵌入vk計算得到,如式(9)所示:

對于會話推薦主任務,本文將損失函數定義為模型預測結果和真實數據的交叉熵,如式(10)所示:

其中:yst,vk為真實數據中項目的one-hot 編碼向量。
此外,TransR 的訓練考慮了有效三元組和無效三元組之間的相對順序,本文通過成對排名損失對其進行區分。成對排名損失函數如式(11)所示:

其中:T={(h,r,t,t′)|(h,r,t)∈GCK,(h,r,t′)∈GCK};(h,r,t′)為通過隨機替換有效三元組中的尾實體而構造的無效三元組;σ(·)為Sigmoid 函數。
考慮到以上兩種角度的損失,最后結合式(10)和式(11)得到模型中聯合優化的目標函數,如式(12)所示:

其中:Θ為模型參數集;λ為超參數;為L2正則化項,以防止模型出現過擬合現象。
ARCK 算法流程如下:
算法1ARCK 算法

本文在兩個真實數據集上設計實驗,驗證ARCK方法的性能優勢,跨會話知識圖譜的構建對ARCK 的性能影響,以及不同會話長度和不同超參數的選取對ARCK 性能的影響。
為驗證本文所提方法的有效性,本文選取兩個真實數據集進行驗證:1)KKBOX數據集(https://www.kaggle.com/c/kkbox-music-recommendation-challenge/data),包含用戶在特定時間段內聽音樂的歷史記錄,根據用戶行為頻率,將會話的持續時間閾值設置為2 000 min,將音樂及音樂屬性(如藝人(歌手)、類型、語言和發行年份)視為知識圖譜中的實體;2)JDATA 數據集(https://www.kaggle.com/c/kkbox-music-recommendationchallenge/data),收集自京東,其中包含兩個月內的用戶歷史記錄,根據用戶在京東上的行為頻率,將會話的持續時間閾值設置為1 h,并將產品及產品屬性(如品牌、商店、類別和發布年份)視為項目知識。
根據文獻[17]的設置,過濾掉長度為1 的會話和在數據集中出現次數少于3 次的項目。對于每個數據集,本文選擇前90%的用戶行為訓練模型,剩下10%用來測試模型性能。兩個數據集的統計信息如表2所示。

表2 數據集信息統計 Table 2 Information statistics of dataset
3.2.1 基線方法
本文對ARCK 方法與基線方法進行對比,以驗證ARCK 方法的有效性。基線方法主要有:1)GRU4REC[9],通過堆疊多個GRU層,將用戶序列編碼到最終狀態;2)STAMP[11],采用注意力機制代替之前工作中的RNN 編碼器,以捕獲用戶的當前興趣和一般興趣;3)SR-GNN[17],將會話數據建模為圖,并利用GGNN 來捕獲會話內復雜的項目轉換關系,但該方法未考慮跨會話信息和項目知識;4)FGNN[19],將會話序列構建為全局圖,并使用圖注意力網絡來學習項目節點表示,但該方法僅基于會話信息進行推薦,沒有考慮項目知識。
3.2.2 評價指標
本文使用SBR 評估中的兩個指標來驗證模型的性能。這兩個指標分別是Hit@k和MRR@k,此處設定k=20。
Hit@k(top-k項目的命中率)是top-k排名列表中命中樣本與測試集中所有樣本的比例,如式(13)所示:

其中:N表示測試集中項目的個數;Number of Hits@k表示計算候選項目在排名列表中處于前k位的個數。Hit@k值越高,推薦性能越好。
MRR@k(按top-k項目計算的平均倒數排名)是正確推薦項目排名倒數的平均值,如式(14)所示:

MRR@k得分越高,推薦性能越好。
3.2.3 實驗設置
為保證實驗結果的可靠性,本文實驗采用五次五折交叉驗證法來評價ARCK 方法的性能。
在ARCK 方法的訓練階段,本文將知識感知注意力機制迭代的層數l設置為3,批量大小固定為256,初始學習率設 為0.001,L2 正則化系數λ在{10-5,10-4,10-3,10-2,10-1}中進行調優。實驗使用Xavier[24]初始化所有參數,并使用Adam 優化器[25]來優化。為了公平起見,將所有模型的嵌入尺寸設置為100,基線方法除了嵌入維度以外均使用原始論文中默認的超參數設置。此外,實驗所用操作系統為Windows10 64位,顯卡為NVIDIA GTX1080-8G,內存為16 GB,實驗代碼通過Python3.6.5 由PyTorch1.6進行實現。本文實驗顯示模型在其最佳超參數設置下的平均結果。
本節將ARCK 方法與上文所提的基線方法進行對比,通過評估Hit@20 和MRR@20 得分來表示ARCK的整體性能。在KKBOX 和JDATA 數據集上不同方法的評價指標對比如表3 所示。其中,加粗數據表示基線方法中的最佳性能,帶星號的加粗數據表示所有方法中的最佳性能,Improve.表示帶星號的加粗數據與加粗數據的差值。

表3 不同會話推薦方法的評價指標對比 Table 3 Evaluation indicators comparison among different session recommendation methods
從表3 可以看出,ARCK 性能最佳,其原因在于ARCK 方法相比SR-GNN 進一步考慮了跨會話的信息,并對知識圖譜中豐富的實體和關系信息進行建模,提升了會話推薦的性能。
FGNN 通過構建連接不同會話的廣泛連接會話圖來捕獲跨會話信息,因此性能表現較佳。SR-GNN將會話序列轉換為會話圖,并使用GGNN 改進項目嵌入,其會話推薦結果相對傳統的GRU4REC 和STAMP 較準確,但由于SR-GNN 僅基于當前會話建模用戶偏好,因此性能表現不如FGNN 方法。傳統的GRU4REC 和STAMP 在兩個數據集上的性能都較差,這表明僅使用神經網絡而不考慮會話中項目之間的轉換關系,不足以建模用戶偏好。
為了進一步驗證將跨會話信息和項目知識整合到會話推薦的重要性,本節設計了消融實驗以評估三個ARCK 變體方法的性能。ARCK-GCK是從ARCK 模型中去除跨會話知識圖譜,即不考慮跨會話信息和項目知識,僅從會話圖中學習項目嵌入。ARCK-GC是從ARCK 模型中去除跨會話圖,即不考慮跨會話信息,僅通過會話圖和知識圖譜學習項目嵌入。ARCK-GK是從ARCK 模型中去除知識圖譜,即不考慮項目側信息,僅通過跨會話圖學習項目嵌入。
跨會話知識圖譜的消融實驗結果如表4 所示。從表4 可以看出:原始ARCK 方法的性能優于三種變體方法,說明在ARCK 方法中,跨會話信息和項目知識對性能提升均起到積極作用,特別是在較小的數據集KKBOX上,ARCK 相對于ARCK-GCK有很大程度的性能提升,進一步驗證了跨會話知識圖譜的構建對于緩解數據稀疏性問題是很有必要。

表4 跨會話知識圖譜的消融實驗結果 Table 4 Ablation experimental results of the cross-session knowledge graph
ARCK-GCK的性能略優于最佳基線FGNN,表明在會話圖上利用TransR 的方法學習項目初始嵌入,并利用知識感知的注意力機制學習項目嵌入,能夠有效提升模型性能。
3.5.1 會話長度分析
為評估ARCK 方法處理不同會話長度的能力,根據文獻[19]的設置,本文將KKBOX 和JDATA 中的會話劃分為兩組,分別為“短”會話和“長”會話。“短”表示每個會話的長度小于等于5,“長”表示每個會話的長度大于5。本文選擇中間值5 是由于其為最接近所使用數據集中平均會話長度的整數。圖2 和圖3 所示為不同方法在兩個數據集上的Hit@20 平均評估結果。

圖2 在KKBOX 數據集上不同會話長度對方法性能的影響Fig.2 Influence of different session lengths for methods performance on KKBOX dataset

圖3 在JDATA 數據集上不同會話長度對方法性能的影響Fig.3 Influence of different session lengths for different methods performance on JDATA dataset
從圖2 和圖3 可以看出,隨著會話長度的增加,所有模型的性能都會隨著噪聲信號的引入而下降。其中STAMP 降幅最大,這表明僅將會話數據建模為時間序列,更容易受到長會話噪聲的干擾。SR-GNN僅基于單獨的會話建模用戶的長期和短期興趣,因此在長會話上性能會有所下降。由于FGNN 考慮了跨會話的信息,因此其在不同長度會話上的性能相較于SR-GNN 較優,但在長會話上性能略差。與此同時,隨著會話長度的增加,ARCK 方法對于不同長度的會話均表現出穩定的性能。因此,ARCK 方法可以有效建模不同長度的會話。
3.5.2 超參數研究
損失函數中的L2 正則化系數λ是影響ARCK 模型推薦準確度的主要超參數。本文實驗的L2 正則化系數λ取{10-5,10-4,10-3,10-2,10-1},分別計算MRR@20和Hit@20。在MRR@20 和Hit@20上,超參數λ對ARCK性能的影響分別如圖4和圖5所示。從圖4和圖5可以看出,ARCK 方法的MRR@20 和Hit@20 隨著λ的增大而增大,但在KKBOX數據集上當超參數λ超過10-3時,在JDATA數據集上超過10-2時,MRR@20和Hit@20呈下降趨勢。當超參數λ較小時,ARCK 方法會發生過擬合現象;當超參數λ較大時,方法的性能發生退化。因此,在10-3和10-2附近選擇超參數λ是合適的,在不使模型退化的情況下防止過擬合現象的發生。

圖4 在MRR@20 上超參數λ 對ARCK 性能的影響Fig.4 Influence of hyperparameter λ on ARCK performance in terms of MRR@20

圖5 在Hit@20 上超參數λ 對ARCK 性能的影響Fig.5 Influence of hyperparameter λon ARCK performance in terms of Hit@20
本文提出基于跨會話知識圖譜的圖注意力網絡推薦方法ARCK。通過構建跨會話知識圖譜來全面捕獲跨會話信息和項目知識,同時利用知識感知的注意力機制捕獲復雜的項目轉換模式。此外,采用注意力網絡和門控循環單元網絡建模用戶的長短期興趣。在KKBOX 和JDATA 兩個真實數據集上的實驗結果表明,該方法能有效地增強會話推薦的性能。下一步將嘗試同時考慮用戶間的社交關系和項目側信息,構建異質知識圖譜,并在異質知識圖譜上學習細粒度的項目嵌入,以增強會話推薦性能。