孫克雷,周志剛
(安徽理工大學 計算機科學與工程學院,安徽 淮南 232001)
推薦系統通過向用戶推薦有用的內容成功地解決了信息過載的問題。通常來說,推薦方法依賴于用戶的配置文件和長期歷史交互的可用性,但當這些信息不可用或可用的有限時,這些方法就會失效。最近,針對該任務提出了很多基于深度學習的方法,其利用成對項目轉換信息來模擬給定會話的用戶偏好。這些方法取得了不錯的效果,但仍面臨以下問題:①通過使用循環按時間順序提取會話的成對項目轉換信息來推斷匿名用戶的偏好。②一些利用自我注意機制的圖神經網絡模型,其性能嚴重依賴于當前會話的用戶偏好與最后一個項目的相關性。
本文提出了一種基于自注意力和位置感知圖模型的會話推薦,稱為PA-GNN(session recommendations based on self-attention and position-aware graph models)。它不依賴最后一個項目和目標項目的相關性,而是利用所有會話的一階鄰居信息和自注意機制進行建模,以便更好地推斷當前會話的用戶偏好以進行基于會話的推薦。
會話推薦可以采用多種傳統方法,雖然這些方法的誕生的最初想法并不是用來做會話推薦的。例如,基于馬爾可夫鏈的方法將當前會話映射到馬爾可夫鏈中,然后基于前一個會話來推測用戶的下一步操作。因子分解個性化馬爾可夫鏈(factorizing personalized markov chains for next-basket recommendation,FPMC)通過基于矩陣分解和一階馬爾可夫鏈組合的方法來捕獲長期用戶偏好和順序模式以供推薦。它可以通過忽略用戶潛在表示來適應會話推薦。然而,基于馬爾科夫鏈的方法通常側重于建模兩個相鄰項目的順序轉換。相比之下,PA-GNN模型將順序項目轉換為圖形結構數據,以捕獲會話項目轉換模式的固有順序。
近年來,基于神經網絡的方法由于能夠對順序數據建模已經用于會話推薦中。基于循環神將網絡的會話推薦(session-based recommendations with recurrent neural networks,GRU4REC)是第一個將循環神經網絡(recurrent neural network,RNN)應用于會話推薦的模型。它采用多層門控遞歸單元(gated recurrent unit,GRU)來模擬項目交互序列。文獻[6]基于神經專心會話的推薦模型(neural attentive session-based recommendation,NARM)提出了將注意機制結合到GRU編碼器中,它可以捕獲會話推薦更具代表性的項目轉換信息。文獻[8]基于注意力的短期記憶網絡推薦模型(short-term attention memory priority model for session-based recommendation,STAMP),通過記憶網絡捕捉用戶的當前興趣。文獻[17]具有并行內存模塊的基于協作會話的推薦方法(collaborative session-based recommendation approach with parallel memory modu-les,CSRM)利用記憶網絡和RNN關注最近的m個會話獲取協作信息,以端到端的方式豐富當前會話的表示。然而,類似于基于馬爾科夫鏈的方法,上述根據RNN的方法在模型設計中始終側重于轉換相鄰項的比較順序來推斷用戶的個人偏好,因此無法對相當復雜的轉換進行建模(例如,非相鄰項目轉換)進行建模。最近,基于圖神經網絡(graph neural network,GNN)[18-20]被廣泛應用于會話推薦,它通過從當前會話構建的圖形來學習會話推薦的項目嵌入。文獻[19]基于會話的圖神經網絡推薦模型(session-based recommendation with graph neural networks,SR-GNN),它根據每個項目與最后一個項目的相關性學習項目嵌入與注意力相結合來獲得最終的會話嵌入。在SR-GNN模型成功之后,還為會話推薦提出了一些變體,例如文獻[20]基于圖上下文自我注意力網絡的會話推薦模型(graph contextualized self-attention network for session-based recommendation,GC-SAN),它將SR-GNN模型的注意力替換為自注意力機制[13,14],通過自注意力機制自適應的捕捉項目之間的依賴關系。
為了捕捉會話中不同項目之間的復雜關系,提出了基于自注意力和位置感知圖模型的會話推薦(PA-GNN),模型框架如圖1所示。在模型中,我們將會話序列通過GNN建模為會話圖,學習當前會話的項目嵌入。通過位置感知注意力學習不同節點之間更復雜的依賴關系。通過自注意力機制自適應地捕捉會話的全局依賴關系。最后將全局會話與局部會話結合,獲取會話級別的表示。該模型分為4個部分。
(1)構建會話圖,將會話序列建模為圖結構,通過GGNN學習當前會話的項目嵌入。
(2)位置感知注意力及反向位置編碼,考慮到會話圖中的項目鄰居有不同的影響,本文借助注意力機制來分配兩個不同節點相互間的權重值。不同項目對下一個預測的貢獻是不相等的,稍后點擊的項目更能代表用戶當前的偏好。因此本文結合了反向位置信息和會話信息以做出更好的預測。
(3)融合兩種注意力獲取最終會話表示,為了多維度的提取用戶的興趣,獲得會話級別的表示,本文采用自注意力機制與軟注意機制結合的新注意力機制。即自注意機制獲取的全局會話表示和軟注意機制獲取的局部會話表示。
(4)預測層,基于獲得的會話表示,每個候選項目基于其初始嵌入以及當前會話表示預測每個候選項目在下一項中被點擊的概率。

圖1 PA-GNN模型框架

在會話圖中,每個會話序列都轉換為會話圖,用于通過GNN學習當前會話中項目的嵌入,定義如下,給定會話S={vs1,vs2,…vsl}, 所有會話被建模為有向圖Gs=(Vs,Es),Vs表示被點擊的項目的統稱,Es則表示所有邊的集合,在會話S中,兩個相鄰的項目代表一條相鄰的邊,在本文中被稱為會話級項目轉換。通過之前FGNN的工作,本文為每一個項目都增加了一個自我循環。
與SR-GNN[19]模型不同的是,本文構建的會話圖在項目i與項目j之間有4種不同的邊關系,分別表示為 {din,dout,din,out,dself}。 對于邊 (vsi,vsj) 來說,din表示僅僅有vsj到vsi的邊,dout表示僅僅有vsi到vsj的邊,din,out表示vsi到vsj以及vsj到vsi的邊都有,dself表示項目的自我循環。會話如圖2所示。

圖2 會話
門控圖神經網絡是特殊的一種圖神經網絡,更新函數如下所示

(1)
zts,i=σ(Wzats,i+Uzht-1vi)
(2)
rts,i=σ(Wrats,i+Urht-1vi)
(3)
vti=tanh(Woats,i+Uo(rts,i⊙vt-1i))
(4)
(5)
式(1)表示不同節點之間的信息傳播的過程,其中H∈Rd×2d為權重矩陣,b∈Rd是權重向量,[ht-1v1,ht-1v2,…ht-1vn] 為會話s中的節點向量列表。式(2)和式(3)中,zts,i和rts,i分別是重置門和更新門,分別決定保留和丟棄哪些信息,σ(·) 為激活函數。式(4)中,我們利用重置門和當前狀態構造候選狀態,t為時間步長,⊙表示逐元素相乘。式(5)中,最終狀態是在更新門的控制下,利用之前隱藏狀態和候選狀態進行組合。在更新會話圖中的所有節點直到收斂之后,我們可以獲得最終的節點表示htvi。
會話圖包含當前會話中的成對項目轉換,接下來介紹如何學習會話級項目嵌入。
由于會話圖中項目的鄰居對自身具有不同的重要性,因此利用注意機制來學習不同節點之間的權重。注意力系數可以通過元素相乘和非線性變換來計算
(6)
式中:eij表示節點vj的特征對于節點vi的重要性,激活函數我們選擇LeakyReLU函數,rij表示節點vi與vj之間的關系,d*∈Rd是權重向量。
對于不同的關系,本文訓練4個權重向量即din,dout,din,out,dself, 由于并不是每兩個節點都連接在圖中,因此只需計算eij, 其中vj∈Nδ(vi),Nδ(vi) 是節點vi的一階鄰居,給出的鄰居定義如下:對于一組序列會話Sm={v1m,v2m,…vlm}, 它的鄰居集合Sn表示為上所有節點的集合,它是選取Sm上序號為 [i-δ,i+δ] 的序列段構造出的,會話上的任意項目vim∈Vm(會話Sm所有節點的集合)。項目v2一階鄰居如圖3所示。

圖3 項目v2一階鄰居
其中δ為超參數,用來控制項目轉換建模的范圍,超參數δ支持在會話期間對短程項目轉換進行建模,當超過δ時會為項目建模帶來噪聲。為了使不同節點之間的系數具有可比性,通過Softmax函數對注意權重進行歸一化
(7)
式中:由于項目彼此之間的鄰居不同,因此系數αij是不對稱的,這意味著它們對彼此的貢獻是不平等的,接下來,通過計算與系數相對應的特征的線性組合來獲得每個節點的輸出特征。
會話圖中的項目表示由當前會話中項目本身及其鄰居的特征聚合。通過注意機制,減少了噪聲對會話項目表示學習的影響。
最終的會話信息表示為
(8)
hsvi=dropout(hsvi)
(9)
式(9)在會話項目表示上使用了dropout來避免過度擬合。
對于會話序列來說,不同位置的項目的重要性是不同的。具體來說,在會話中稍后單擊的項目更能代表用戶當前的偏好,這表明它們對建議的重要性更高。此外,重要的是找到用戶的主要目的和當前會話中的噪聲。因此結合了反向位置信息和會話信息以做出更好的預測。
在將會話序列輸入到圖形神經網絡之后,可以獲得會話中涉及的項目的表示H=[h1s,h2s,…hls], 還嵌入了一個位置矩陣P=[p1,p2…pl], 其中,pi∈Rd是特例i的位置向量,當前會話的序列長度為l。 通過連接和非線性變換整合位置信息表示為
zi=tanh(W1[hsvi‖Pl-i+1])+b1)
(10)
式中:參數W1∈Rd×2d,b1∈Rd是可訓練的參數。與正向位置嵌入相比較,選擇反向位置嵌入的好處是它能夠捕捉到更多有效的信息。例如,在會話 {v1→v4→v2→?},v2是序列中的第三個,對預測的目標有很大的影響,但是在會話 {v1→v4→v2→v6→v5→v7→?} 中,v2對與預測目標的影響力相對較小。因此,反向位置信息可以更準確地表明每個項目的重要性。
會話信息是通過計算會話的項目表示的平均值來獲得的
(11)
自注意力機制[13,14]是注意力機制的一種,它可以通過堆疊多個自注意力層自適應的捕捉節點信息。將式(5)中得到的會話信息輸入自注意力層進一步更新會話的全局依賴關系。得到公式如下
(12)
式中:WQ,WK,WV∈Rd×d分別代表Q(查詢),K(鍵),V(值)參數矩陣。
得到F之后,需要按元素將其輸入到前饋神經網絡當中,輸出為gi
gi=ReLU(FW2+b2)W3+b3+F
(13)
式中:W2∈Rd×f,W3∈Rf×d為參數矩陣;b2∈Rf,b3∈Rd為偏置向量,f為前饋神經網絡的維度。
可以通過線性組合項目表示來獲得全局會話表示s1
(14)
接下來,通過軟注意機制學習相應的權重
(15)
式中:W4,W5∈Rd×d,q1,b4∈Rd均為可訓練的參數。
與式(14)一樣的方式,可以通過線性組合項目表示來獲得局部會話表示S2
(16)
通過全局會話表示S1和局部會話表示S2獲得最終的會話表示S,我們對全局會話表示S1和局部會話S2表示進行如下操作
w=W6σ([S1‖S2])
(17)
式中:W6∈Rd×d為可訓練參數,激活函數采用sigmoid,w為輸出的權重。
最終的會話表示為S
S=wS1+(1-w)S2
(18)

(19)
損失函數計算選擇交叉熵損失函數,定義為式(20)
(20)
式中:yi為one-hot向量。
我們在3個真實世界的代表性數據集Yoochoose、Diginetica以及Nowplaying上評估了所提出的模型。YooChoose數據集來自于RecSys2015舉辦的比賽,主要用于會話推薦的預測,為了遵循公平對比方法的原則,選擇其近時間段的1/64數據用作實驗,記為Yoochoose1/64。Digi-netica數據集是來自CIKM Cup 2016競賽。Nowplaying數據集描述從Twitter提取的用戶聽音樂的行為。為了公平實驗,在3個數據集上都過濾掉會話長度為1的數據和數據集中出現次數少于5次的物品,并且采用與SR-GNN[19]相同的數據增強方法。最后將上周(最新數據)的會話設置為測試數據,余下的歷史數據用作訓練集。數據集的統計結果見表1。

表1 預處理數據表示
為了評價本模型的有效性,將PA-GNN模型與下述具有代表性的方法進行了比較。
(1)基于流行度的方法(Popularity,POP):推薦了訓練集中出現的前N個常見項目。
(2)基于物品的最近鄰方法(item-based collaborative filtering recommendation algorithms,Item-KNN):通過相鄰項目的相似度來推薦下一個物品。
(3)FPMC:利用馬爾可夫鏈來捕獲用戶的行為偏好。
(4)GRU4REC:首次將(門控循環單元)GRU應用于會話推薦,作為一個基于RNN的模型,只建模項目之間的順序關系。
(5)NARM[6]:將注意力機制與(門控循環單元)GRU相結合,考慮全局和順序關系來提出建議。
(6)STAMP[8]:采用注意層來替換以前工作中的所有RNN編碼器,方法是充分依賴當前會話中最后一項的自我注意來捕獲用戶的短期興趣。
(7)SR-GNN[19]:利用門控圖卷積層獲得項目嵌入。然后,通過使用捕獲該會話的全局偏好和當前興趣的關注網來生成用于推薦的會話表示。
(8)CSRM[17]:利用記憶網絡關注最近的m個會話以更好地預測當前會話的意圖。
(9)GC-SAN[20]:首先將圖神經網絡和多層自我關注網絡相結合,通過對局部相鄰項目轉換和上下文非局部表示進行建模來提高推薦性能。
我們采用了兩個廣泛使用的基于排名的指標:P@20和MRR@20。
P@k是被應用于來預測準確性的衡量標準,表示正確推薦物品的比例。MRR@k是衡量樣本中正確推薦物品在推薦列表中的排名。
按照之前的方法,隱向量的嵌入維度d為100,batch的大小均設置為100。為了公平的比較,PA-GNN模型所有參數與SR-GNN[19]保持一致。自注意網絡中,自注意層數layer設為4,頭數head設為2,前饋神經網絡的大小f設為維度d的4倍,L2正則化設為10-5,驗證集是訓練集隨機10%的子集,最大的鄰居數設為12,參數δ設為1。
表2報告了評估方法在3個數據集上的性能,其中粗體顯示每列的最佳結果,次優結果用下劃線顯示。從表中可以看出,PA-GNN模型在兩個評價指標上都優于對比模型。
在傳統方法中,基于物品的最近鄰方法Item-KNN在傳統方法中取得了最好的效果,但是它沒有辦法捕捉項目之間的轉換關系。

表2 不同模型在3個數據集上的性能比較
基于RNN方法在建模序列中的能力比傳統的方法具有更好的性能。基于會話的推薦問題不僅僅是序列建模任務,因為用戶的偏好可能在會話中發生變化。STAMP模型和NARM模型通過將注意力機制與RNN相融合,相比之下性能都優于GRU4REC模型。表明了只使用RNN編碼會難以用于會話推薦,因為RNN僅模擬單向項目轉換會話中的相鄰項目。盡管STAMP忽略了會話中項目的時間順序,但在Yoochoose1/64數據集上的效果仍然比NARM模型好一些。與RNN模型相比較,注意力機制可以自適應地捕捉項目的轉換關系成為比RNN更好地選擇。CSRM模型性能優于NARM模型和STAMP模型,驗證了利用其它會話信息的有效性。但是CSRM模型將其它會話作為一個整體處理而不區分相關項目轉換與不相關的會話,從而帶來不必要的噪聲,影響模型的性能。
基于GNN的方法在3個數據集上的表現是所有方法中最優的。SR-GNN和展示了在基于會話的推薦中應用GNN的有效性,它通過將每個會話序列建模為子圖并應用GNN對項目進行編碼。GC-SAN模型的性能接近于SR-GNN,它通過自注意力網絡建模物品間的全局依賴關系。PA-GNN模型在3個數據集上的評價指標均取得了最佳的效果。實驗結果表明PA-GNN模型通過將會話序列建模為會話圖,通過GNN學習當前會話的項目嵌入,通過位置感知注意力機制建模會話間的局部依賴關系,利用自注意機制捕捉全局依賴關系,從而不依賴最后一個會話與當前會話的相關性的方法能夠提高會話推薦的準確性。
PA-GNN模型與最優模型相比,在Yoochoose1/64數據集上P@20提高了1.2%,MRR@20提高了2.3%;在Diginetica數據集上分別提升了4.3%和5.4%;而在Nowplaying數據集上更是分別提升了12.9%和14.3%,這是由于Nowplaying數據集的會話平均長度比較長,自注意力機制能更好捕捉遠距離的項目依賴關系。粗體和帶下劃線的文字分別表示最佳和次優結果。以上3個數據集在兩個指標上的提升驗證了所提出的PA-GNN模型在會話推薦任務上的有效性。
圖4和圖5給出了會話長度對3個數據集P@20和MRR@20指標的影響,我們根據會話的長度(即單擊項目的數量)來分隔會話。具體而言,包含少于或等于5個點擊項目的會話被視為“短”,而其它會話被視為“長”。本文將閾值設置為5,因為它是3個數據集中會話平均長度最接近的整數。Yoochoose 1/64數據集的“短”和“長”會話測試比率分別為70.10%和29.90%,Diginetica分別為76.40%和23.60%,Nowplaying數據集為62.50%和37.50%。PA-GNN模型在兩個指標P@20和MRR@20的表現如圖4和圖5所示。

圖4 會話長度對3個數據集上P@20指標的影響

圖5 會話長度對3個數據集上MRR@20指標的影響
從圖中可以看出PA-GNN模型在Yoochoose1/64和Nowplaying兩個數據集上對于長會話的建模效果要好于短會話,并且在兩個數據集上,Nowplaying數據集因為其會話的平均長度最長,所以提升的效果比其它更為明顯,這都得益于自注意力機制可以自適應地捕捉會話的遠距離依賴關系,體現了自注意力機制對于長會話建模的優越性。但是由于在Diginetica數據集中,長會話的數量比較少,所以模型對于長會話的建模效果不理想。
為了驗證提出方法的有效性,我們對相關部分做了消融實驗。
(1)PA-GNN-1:用正向位置嵌入代替反向位置嵌入;
(2)PA-GNN-2:只采用自注意力機制;
(3)PA-GNN-3:只采用位置感知注意力。
表3中的實驗結果表明,引入反向位置嵌入可以捕獲從每個項目到預測項目的距離,這將在訓練各種長度的會話時提升模型。使用自注意力機制[13,14]更夠捕捉會話信息的全局依賴關系,從而提高了模型的準確性。位置感知注意力通過建模全部會話的一階鄰居信息比只采用全局自注意力更能捕捉復雜的項目轉換關系。

表3 PA-GNN消融實驗性能的對比
為解決會話推薦只基于當前會話而不利用其它會話信息的問題,本文提出了一種基于自注意力和位置感知圖模型的會話推薦(PA-GNN)。它構造包含所有會話一階鄰居信息的會話圖,利用注意力機制提取節點信息,并引入反向位置嵌入進一步區分不同項目的重要性,最后通過自注意力機制捕獲全局依賴關系,結合局部會話信息生成最終的會話表示。雖然PA-GNN模型捕獲了項目之間的復雜關系,但是現實世界中,用戶的意圖多種多樣,下一步的工作主要是在PA-GNN模型的基礎上,考慮項目不同的因素的重要性,比如服裝的顏色、風格、品牌等,從而能夠在因子級別提高模型的性能。