曾亞竹,孫靜宇,何倩倩
(太原理工大學(xué) 軟件學(xué)院,山西 晉中 030600)
Massimo等[1]提出一種分層循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)向用戶提供推薦。Hidasi等[2]通過改進(jìn)排名損失函數(shù)提升了RNN的性能。Liu等[3]考慮用戶的整體偏好和當(dāng)前目的,在會話推薦中取得了較好的推薦效果。Wu等[4]將圖神經(jīng)網(wǎng)絡(luò)應(yīng)用于會話推薦。Li等[5]使用了一種注意力機(jī)制來獲取用戶的主要會話目的。Sun等[6]采用深層的雙向自注意力對用戶行為會話進(jìn)行建模。Li等[7]提出一種BiLSTM(bidirectional long short-term memory)結(jié)構(gòu),處理當(dāng)前會話和歷史會話的交互,但這樣可能會引入噪聲。由于基于RNN推薦算法存在短期記憶問題,Chen等[8]首先引入用戶記憶網(wǎng)絡(luò)來利用用戶的歷史記錄以提高性能,并顯式地捕獲項和特征級序列模式,從而改進(jìn)了序列推薦。Wang等[9]在Li等的基礎(chǔ)上加入了鄰域信息輔助建模用戶會話意圖,并證明鄰域會話有助于改善當(dāng)前會話推薦算法,但未充分獲取短期會話反映的用戶興趣。Wu等[10]構(gòu)建了一個個性化圖神經(jīng)網(wǎng)絡(luò),但忽略了歷史會話中的交互。
為解決以上問題,本文綜合考慮歷史會話的交互和鄰域會話的信息并構(gòu)建模型。融合縮放點積自注意力和BiGRU(bidirectional gated recurrent unit)提取用戶行為特征。使用圖卷積網(wǎng)絡(luò)獲取鄰域信息以改進(jìn)記憶網(wǎng)絡(luò)并判斷用戶當(dāng)前會話的輔助信息。最后對兩個編碼器的會話表示進(jìn)行特征融合,獲得用戶的當(dāng)前偏好并預(yù)測下一個交互。
門限循環(huán)單元(gated recurrent unit,GRU)是一種特殊的RNN,它優(yōu)化了傳統(tǒng)的RNN,使得網(wǎng)絡(luò)更加簡單,模型參數(shù)更少。它包含兩個門,更新門的表達(dá)式ht如式(1)
(1)
其中,更新門zt是由式(2)確定
zt=σ(Wzxt+Uzht-1)
(2)
(3)
重置門中rt的計算如式(4)
rt=σ(Wrxt+Urht-1)
(4)
Wr、Ur是權(quán)重矩陣,⊙表示點乘,σ表示使用Sigmoid激活。
自注意機(jī)制通過強(qiáng)調(diào)某些特定行為,忽略其它行為來關(guān)注當(dāng)前會話的意圖。對相對更重要的項目賦予更高的權(quán)重。自注意機(jī)制能通過建模項目間更細(xì)粒度的關(guān)系學(xué)習(xí)到更加準(zhǔn)確的用戶行為模式。通過計算每個點擊的權(quán)重減少高維數(shù)據(jù)的計算復(fù)雜度,使模型更快學(xué)習(xí)當(dāng)前會話意圖,并利用注意權(quán)重找出每個點擊對會話意圖的重要程度。輸入由query、key和value組成,并且三者相等??s放點積自注意力函數(shù)是自注意力函數(shù)的一種,其結(jié)構(gòu)如圖1所示。
圖1 縮放點積自注意力模型
query和key經(jīng)過矩陣乘積之后進(jìn)行縮放,mask操作保證當(dāng)前預(yù)測結(jié)果僅取決于之前的輸出,將softmax歸一化后的結(jié)果和value相乘獲得加權(quán)輸出。
提出一種融合BiGRU和記憶網(wǎng)絡(luò)的會話推薦模型(SRGM)來生成基于會話的推薦。SRGM模型利用當(dāng)前會話和鄰域會話的信息來預(yù)測用戶的下一個交互。如圖2所示,SRGM由3個部分組成:會話網(wǎng)絡(luò)編碼器(session network encoder,SNE)、記憶網(wǎng)絡(luò)編碼器(memory network encoder,MNE)和推薦解碼器。
圖2 SRGM模型
將用戶為序列S劃分為會話I,其中Xt=[x1,x2,…xt,…,xn] 表示用戶和項目交互中的時間戳t(t≥1) 處的會話,n表示在會話中交互項目的個數(shù),其中每個xt是與用戶交互的項目?;跁挼耐扑]系統(tǒng)的目標(biāo)是預(yù)測用戶的下一個交互。用戶在不同的時間段內(nèi)有明確獨(dú)特的意圖,將超過一定時間的用戶行為分割為兩個會話[5]。給定當(dāng)前會話,目標(biāo)是通過從用戶交互的所有會話I中top-N個項目 (1≤N≤|I|) 來預(yù)測第xn+1個項目。
會話Xt進(jìn)入輸入層后分別經(jīng)過全局編碼器和局部編碼器。BiGRU改進(jìn)SNE中的全局編碼器以更好地建模歷史會話興趣,使用另一個融合縮放點積自注意力的BiGRU改進(jìn)局部編碼器以消除會話中的噪聲,提取用戶的特定行為特征。
全局和局部編碼器共同構(gòu)造用戶會話表示。使用圖卷積網(wǎng)絡(luò)改進(jìn)MNE獲得用戶的鄰域信息以加強(qiáng)對用戶當(dāng)前會話輔助信息的推斷,并用改進(jìn)的融合選通門結(jié)合SNE獲得的用戶短期意圖和MNE獲得的用戶鄰域長期興趣以考慮用戶的動態(tài)興趣,最終獲得用戶的最終興趣的向量表示并對用戶進(jìn)行推薦。
SNE對當(dāng)前會話進(jìn)行編碼,它包括兩個模塊:全局編碼器和局部編碼器。前者用于總結(jié)并建模整個會話中用戶的順序行為并獲取會話的總體特征。后者關(guān)注用戶特定的行為,用于在會話包含意外單擊或出于好奇而單擊的項目時選擇當(dāng)前會話中相對重要的項目以捕捉用戶的主要意圖。本文使用BiGRU改進(jìn)全局編碼器,相比于LSTM(long short-term memory),BiGRU復(fù)雜度更低,而相較于GRU,更利于捕捉歷史會話之間的順序關(guān)系。
BiGRU包含前向和后向GRU,用隱藏狀態(tài)表示hn當(dāng)前會話的順序行為,隱藏狀態(tài)hn的計算如下
(5)
(6)
盡管全局編碼器考慮了整個會話過程反映的興趣,但受限于GRU本身的特性,仍會給模型引入噪聲。為消除噪聲項的干擾,準(zhǔn)確捕捉當(dāng)前會話的行為模式,使用一個融合項目級自注意力機(jī)制[11]的BiGRU改進(jìn)局部編碼器,如圖3所示。
圖3 項目級自注意力層結(jié)構(gòu)
(7)
將Q和K相乘,再使用scale縮放以防止梯度過小,使用mask操作隱藏對角線元素避免Q和K中相同物品之間的高匹配分?jǐn)?shù)。最后使用softmax做歸一化處理,得到權(quán)重矩陣,并和局部編碼器的存儲器矩陣相乘,使用縮放點積計算最后的加權(quán)輸出At
(8)
(9)
(10)
SNE僅利用用戶自身會話之中包含的行為信息,忽略了鄰域會話中相似行為信息對推薦的重要性,并且對于長度較短的會話,SNE由于缺乏足夠的歷史信息而導(dǎo)致不能夠準(zhǔn)確捕捉用戶行為模式。為解決這個問題,提出了記憶網(wǎng)絡(luò)編碼器MNE。MNE模塊使用記憶網(wǎng)絡(luò)矩陣M,存儲最近一段時間內(nèi)的m個用戶會話并抽取當(dāng)前會話的鄰域會話,作為與當(dāng)前會話有著相似興趣模式的會話。這是一個基于會話的最近鄰方法,對具有與當(dāng)前會話相似的行為模式的會話賦予更高的權(quán)重。這些鄰域會話可以加強(qiáng)對當(dāng)前會話的輔助信息的推斷。
(11)
(12)
(13)
每輪實驗開始時,記憶網(wǎng)絡(luò)矩陣均設(shè)置為空。使用先進(jìn)先出法更新記憶網(wǎng)絡(luò)矩陣。當(dāng)新會話被存入記憶網(wǎng)絡(luò)矩陣時,起始會話被從記憶網(wǎng)絡(luò)矩陣中刪除,新會話被加進(jìn)隊列。記憶矩陣不為空時,會話會被直接寫入矩陣,不刪除矩陣中現(xiàn)有的早期會話。
推薦解碼器結(jié)合SNE和MNE的會話表示并進(jìn)行特征融合,預(yù)測項目接下來被點擊的概率。如圖2所示,模型使用選通門機(jī)制結(jié)合SNE和MNE的信息并建模用戶最終的會話表示,可以兼顧序列會話包含的信息和鄰域會話間的權(quán)重。由于之前的模型大多未考慮到不同項目特性的部分,沒有重視項目內(nèi)部的豐富的特征信息,可能會使模型對用戶興趣失去精準(zhǔn)的判斷。根據(jù)Ma等[13]的研究,提出了一種改進(jìn)的融合項目內(nèi)部特征的選通門以選擇項目特征并且建模用戶的興趣。融合選通門ft由下面的公式給出
(14)
(15)
參考文獻(xiàn)[5],為節(jié)省內(nèi)存空間,不使用標(biāo)準(zhǔn)RNN中的全連接層對隱藏層狀態(tài)解碼,而使用雙線性插值替代全連接層來計算推薦列表,減少模型參數(shù)的同時提升了預(yù)測的準(zhǔn)確度。embi是待預(yù)測項目的特征表示,根據(jù)用戶會話意圖的最終表示ct計算待預(yù)測項目被推薦的概率值
(16)
其中,B∈Rd×D,d是每個嵌入項的維數(shù),D是用戶會話意圖的最終表示ct的維數(shù)。
模型的目的是使用當(dāng)下的用戶會話,盡可能預(yù)測下一個被點擊的項目。所以采用交叉熵?fù)p失函數(shù),計算為預(yù)測的項目得分和實際場景中用戶的點擊的項目的獨(dú)熱編碼之間的交叉熵
(17)
使用YOOCHOOSE和LastFM兩個公開的數(shù)據(jù)集并對其做以下預(yù)處理。將數(shù)據(jù)集里的所有會話序列按時間順序重新排序,將只在測試集中出現(xiàn)的項目過濾掉并對項目進(jìn)行數(shù)據(jù)增強(qiáng)。表1中展示了兩個數(shù)據(jù)集的統(tǒng)計信息。
表1 實驗數(shù)據(jù)集信息統(tǒng)計
YOOCHOOSE數(shù)據(jù)集是2015年RecSys競賽的公開數(shù)據(jù)集,內(nèi)容為電子商務(wù)網(wǎng)站的用戶點擊。將最后一天的點擊流作為測試集,其它的數(shù)據(jù)則作為訓(xùn)練集。文獻(xiàn)[14]證明了僅使用當(dāng)前一段時間的會話就可以達(dá)成較好的推薦性能,故按照文獻(xiàn)[14]的方法,移除長度為1的會話和交互少于5次的物品。使用最近一段時間的1/64和1/4的會話切片作為訓(xùn)練集并稱之為RSC 1/64(RecSys 1/64)和RSC 1/4 (RecSys 1/4)。
LFM(LastFM數(shù)據(jù)集)是用戶聽音樂序列的數(shù)據(jù)集,包含從2004年到2009年之間近1000名聽眾的音樂播放記錄、時間、歌手和歌曲。為簡化數(shù)據(jù),將LFM用于歌手推薦。在實驗中選擇前40 000個最受歡迎的歌手作為數(shù)據(jù)集。將發(fā)生在8小時內(nèi)的音樂點擊流數(shù)據(jù)劃分為一個會話,刪除長度為1和長度大于50的會話。
為驗證SRGM模型效果,將模型和6種基于會話推薦的基線算法進(jìn)行比較,分別是兩種傳統(tǒng)推薦算法、兩種基于RNN的推薦算法和兩種基于內(nèi)存網(wǎng)絡(luò)的推薦算法。
用于比較的傳統(tǒng)推薦算法如下:
S-POP:推薦當(dāng)前會話中最流行的物品。推薦的物品會跟隨會話長度的增加而更改。
ItemKNN:基于社交的相似度計算法,物品的相似度定義為會話中兩個物品的共同出現(xiàn)的次數(shù)除以其中一個項目出現(xiàn)的會話次數(shù)乘積的平方根。使用正則化避免很少被點擊的項目之間巧合的高度相似性。
用于比較的基于RNN的推薦算法如下:
GRU4Rec:Hidasi等提出的模型。它使用會話并行以及小批量的方法訓(xùn)練模型,并且還使用基于排序的損失函數(shù)。
NARM[5]:引入了一種注意力模型和編碼器結(jié)構(gòu)結(jié)合歷史行為以優(yōu)化GRU4Rec的深度學(xué)習(xí)算法。
用于比較的基于內(nèi)存網(wǎng)絡(luò)的推薦算法:
RUM-I:RUM[8]的兩個具體實現(xiàn)中的其中一個。將項目嵌入存儲在內(nèi)存矩陣中,應(yīng)用于基于會話的推薦任務(wù),通過基于RNN的算法表示一個新會話,另一個具體實現(xiàn)由于難以提取新會話對特定項目的偏好而不能應(yīng)用于基于會話的推薦,故不在此處贅述。
CSRM[9]:一種基于會話的協(xié)同推薦機(jī),在NARM算法上進(jìn)行改進(jìn),增加基于鄰域信息的記憶網(wǎng)絡(luò)模塊以更好預(yù)測當(dāng)前會話的意圖。
編程語言為Python,使用TensorFlow編寫代碼,顯卡使用RTX2080 GPU加速訓(xùn)練。為降低過擬合,使用兩個dropout層。分別位于會話物品嵌入層和BiGRU層之間及用戶意圖表示層和Bilinear層之間,dropout設(shè)置為25%和50%。在整個模型訓(xùn)練中,使用基于時間的反向傳播算法(back-propagation through time,BPTT)對模型進(jìn)行訓(xùn)練。模型訓(xùn)練使用高斯分布參數(shù)隨機(jī)初始化,使用Adam優(yōu)化器,并根據(jù)驗證集對超參數(shù)進(jìn)行調(diào)整,驗證集是訓(xùn)練數(shù)據(jù)大小的一部分。超參數(shù)統(tǒng)計見表2。
表2 超參數(shù)統(tǒng)計
評價指標(biāo)的目的是預(yù)測用戶在當(dāng)前會話的下一步將單擊什么項目。推薦系統(tǒng)將生成一個候選列表,該列表通常包含N個項目,這N個項目將根據(jù)預(yù)測分?jǐn)?shù)的高低進(jìn)行排序。用戶接下來點擊的實際項目應(yīng)該包含在推薦列表中。因此,使用以下指標(biāo)來評估top-N的表現(xiàn):
Recall@20(召回率):期望項目在前20個推薦列表中的比例。不考慮實際項目在推薦列表中的排名。
MRR@20(平均倒序排名):期望項目在推薦列表中排名的倒數(shù)平均值,排序大于20則置為0。MRR考慮到了實際推薦場景下項目列表中的真實排序情況。
3.5.1 和基線算法的比較
比較了SRGM和6種基線算法的性能。表3中說明在實驗使用的兩種指標(biāo)下,SRGM相較于基線算法在實驗數(shù)據(jù)集上都實現(xiàn)了較好的提升。
表3 SRGM與基線算法的性能比較/%
表3可看出,基于RNN的模型相對于傳統(tǒng)的模型性能提升明顯,這說明基于RNN的模型能夠很好處理會話中的序列信息并且解決基于會話的推薦問題。NARM相對于GRU4rec推薦性能的明顯提升也說明注意力機(jī)制的加入對于會話推薦性能會產(chǎn)生積極影響。而SRGM明顯優(yōu)于兩種基于RNN的基線算法。對于基于內(nèi)存網(wǎng)絡(luò)的基線算法,實驗結(jié)果發(fā)現(xiàn)SRGM明顯優(yōu)于RUM,這可能是基于會話的推薦中由于用戶是匿名的原因,并沒有可供使用的用戶信息。
相較于最優(yōu)基線算法CSRM,SRGM在3個數(shù)據(jù)集(RSC 1/64,RSC 1/4和LFM)的Recall@20指標(biāo)上的提升為0.92%、1.64%和4.85%,對于MRR@20指標(biāo)上的提升為2.51%、3.88%和4.14%。算法在LFM數(shù)據(jù)集上的提升較RSC 1/64、RSC 1/4更高可能是由于LFM是音樂數(shù)據(jù)集,相比于電商數(shù)據(jù)集更容易捕獲短期的會話意圖,而電商數(shù)據(jù)集的短期會話意圖不確定性更強(qiáng)。經(jīng)過20輪訓(xùn)練之后,模型性能基本趨于穩(wěn)定。
3.5.2 不同會話長度的比較
不同會話的會話長度,即一段時間內(nèi)用戶和項目的交互數(shù)量也不盡相同。而在會話中,當(dāng)前會話最近的幾個點擊項目對用戶的興趣偏好有重要的影響,故本文希望比較不同會話長度的性能以分析本文的兩個編碼器對模型性能的影響。如圖4所示。
圖4 不同會話長度性能對比
隨著會話長度的增加,評價指標(biāo)逐步增長并逐步趨于穩(wěn)定,這說明大部分會話長度很短,增加會話長度對模型精度影響不大,增加的會話可能多為用戶多次點擊的項目?;趫D4可以得出下列結(jié)論:在會話長度較短時(如1-10),由于缺乏中長期點擊流,不利于會話編碼器對用戶的偏好進(jìn)行準(zhǔn)確預(yù)測。此時用戶的意圖主要依賴于鄰域會話進(jìn)行輔助推斷,在會話長度較長時(10-),歷史項目信息在鄰域會話的幫助下將更有利于模型捕捉用戶的興趣。因此,本文模型對長短會話均有較為準(zhǔn)確的預(yù)測。
3.5.3 不同模型深度的比較
為評估不同深度的模型對于算法性能的提升,使用消融實驗基于本模型的不同網(wǎng)絡(luò)類型和深度與最佳基線CSRM進(jìn)行比對。消融實驗見表4。
模型1:SNE中使用BiGRU作為全局和局部編碼器,融合MNE學(xué)習(xí)項目的特征。
模型2:SNE的局部編碼器中融合縮放點積自注意力,融合MNE學(xué)習(xí)項目的特征。
模型3:解碼器中使用改進(jìn)的融合選通門進(jìn)行項目特征的選擇。
模型4:使用圖卷積網(wǎng)絡(luò)改進(jìn)MNE,增強(qiáng)會話注意,獲取用戶鄰域會話的興趣。
模型5:融合以上4個模型,并建模用戶興趣。
表4模型1可以看出,BiGRU對算法性能可以產(chǎn)生積極影響,模型2可以看出加入了自注意力的神經(jīng)網(wǎng)絡(luò)可以獲取用戶更細(xì)粒度的行為,而消融實驗的結(jié)果可以看出加入了縮放點擊自注意力的模型。相比于其它模型提升更大,在Recall@20和MRR@20兩個指標(biāo)上相較于基線分別提升達(dá)2.17%、1.31%、2.94%和3.20%、3.41%,3.11%。這說明用戶當(dāng)前會話的興趣對于用戶的下一次點擊影響更大,這說明短期興趣對用戶整體會話意圖的建模更加具有幫助性。模型3在MRR@20上提升明顯,同時也反映了改進(jìn)的融合選通門能夠放大項目特征用以幫助模型提取用戶興趣。模型4說明使用圖卷積網(wǎng)絡(luò)可以增強(qiáng)鄰域信息對當(dāng)前會話興趣的推斷以幫助模型找到與當(dāng)前會話最相似的項目,但提升效果相較于其它模型較小。模型5說明本文模型的綜合改進(jìn)對處理會話推薦的有效性。
表4 SRGM消融實驗性能比較/%
3.5.4 不同鄰域的比較
為探究鄰域信息對于算法捕獲用戶會話意圖的貢獻(xiàn),根據(jù)經(jīng)驗分別取k為128、256、512和1024,比較了不同鄰居數(shù)對于SRGM的影響。根據(jù)表5發(fā)現(xiàn),對于RSC 1/64和RSC 1/4數(shù)據(jù)集,隨著k的提高,算法在Recall@20的性能逐漸增加并在k=512附近時達(dá)到最佳,在MRR@20的性能在k=256附近時基本達(dá)到最佳。對于LFM數(shù)據(jù)集,Recall@20的性能在k=512和256時較為接近,在MRR@20上k=512附近性能最佳。但k超過512時算法在3個數(shù)據(jù)集上性能均有不同程度的下降,這可能是由于鄰居數(shù)在256-512左右時鄰域信息整合程度較高,能夠較好提升模型的性能,但過大時引入了與會話意圖無關(guān)的噪聲會話導(dǎo)致推薦性能降低。實驗結(jié)果表明,鄰域信息的整合程度能夠影響模型對于用戶會話意圖的準(zhǔn)確預(yù)測。
表5 SRGM的不同鄰居數(shù)(k)性能比較/%
SRGM的模型時間復(fù)雜度[15]的計算力主要集中于圖卷積網(wǎng)絡(luò)和BiGRU部分。假設(shè)設(shè)會話長度為n,項目嵌入維度為d,層數(shù)為K,則通過出入度矩陣初始節(jié)點表示的時間復(fù)雜度為O(nd2), 通過BiGRU單元為O(nd2), 整個圖卷積過程的時間復(fù)雜度為O(Knd2+nd2)。
SRGM在GRU基礎(chǔ)上增加雙向結(jié)構(gòu),在時間復(fù)雜度少量增加的同時帶來了性能的巨大提升。有助于實現(xiàn)模型對會話意圖的預(yù)測。CSRM的時間復(fù)雜度為O(Kn2d+nd2), 在層數(shù)K接近的情況下,會話長度越長,SRGM相比于CSRM的時間復(fù)雜度越低。整體來看,本文提出的SRGM模型更加高效,具有一定的實用性。
本文提出一種融合BiGRU注意力機(jī)制和記憶網(wǎng)絡(luò)的模型SRGM來解決推薦系統(tǒng)中會話推薦的問題。使用BiGRU獲得用戶的歷史會話興趣,并用另一個融合縮放點擊自注意力的BiGRU捕捉用戶當(dāng)前行為特征并將兩者融合作為SNE的會話表示,使用卷圖積網(wǎng)絡(luò)改進(jìn)MNE以作為用戶鄰域會話表示,最后融合選通門將兩個編碼器會話表示特征融合的結(jié)果作為用戶最終會話興趣以預(yù)測下一個點擊。
3個數(shù)據(jù)集上的實驗結(jié)果表明,在不同的評估指標(biāo)上本文模型相對于基線算法有了明顯改進(jìn),驗證了本模型在基于會話推薦上的有效性。在未來的工作中,還希望引入用戶評論等有關(guān)項目的信息來對模型進(jìn)行改進(jìn)。