夏鴻斌 黃 凱 劉 淵
隨著Internet上數(shù)據(jù)量的迅速增長,在搜索、電子商務(wù)、流媒體網(wǎng)站等許多Web應(yīng)用程序中,推薦系統(tǒng)成為幫助用戶緩解信息過載、選擇感興趣信息的工具.其中,基于內(nèi)容的推薦[1]和協(xié)同過濾推薦[2]是兩種具有代表性的方法.這些推薦系統(tǒng)需要根據(jù)明確的用戶標(biāo)識信息進(jìn)行推薦.然而,在許多應(yīng)用場景中,用戶標(biāo)識可能是未知的并且無法使用.
因此,研究者們提出會話推薦[3],根據(jù)用戶的行為序列預(yù)測用戶下一個點擊目標(biāo).會話序列可以是匿名的而不需要依賴任何用戶的標(biāo)識信息.目前,會話推薦任務(wù)已廣泛應(yīng)用于多個領(lǐng)域,如網(wǎng)頁推薦、音樂推薦、商品推薦等.然而大多數(shù)現(xiàn)有的推薦系統(tǒng)依據(jù)長會話建模預(yù)測,從而過濾短會話信息.長短對話的定義主要依據(jù)一個會話序列中包含的項目數(shù)量(本文選擇項目數(shù)小于20的會話).具體而言,現(xiàn)有研究大部分在數(shù)據(jù)預(yù)處理時就過濾短會話,以期降低預(yù)測的挑戰(zhàn)性和解決短會話學(xué)習(xí)不到位造成的干擾問題.短對話只包含稀少的項目,其中包含的信息有限,如果不能有效學(xué)習(xí)其特征,反而會降低預(yù)測的準(zhǔn)確性.
但是,忽略短會話不是一個很好的選擇.實際上,在真實世界中,短會話所占的比例遠(yuǎn)遠(yuǎn)超過長會話.用戶通常會在碎片時間查看一些他們感興趣的事物,由于時間很短,造成用戶的交互行為很少.如果無法從短暫的行為中有效學(xué)習(xí)用戶的偏好,可能會造成預(yù)測的誤差.所以,在具有短會話的情況下預(yù)測用戶的下一次行為是一個重要的研究方向.
為了緩解短會話信息稀疏的問題,上下文信息成為重要的參考資料.按是否學(xué)習(xí)會話的上下文信息,可以將會話推薦簡單分為單會話模型和多會話模型.基于循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)[4]的模型便是經(jīng)典的方法之一.它們建模當(dāng)前會話所有項目之間的相關(guān)性,對其中的下一個項目進(jìn)行推薦.但是在真實情況下,會話中的項目之間可能相關(guān)性不強(qiáng)[5],這種嚴(yán)格依賴順序相關(guān)性的模型存在一定的問題.所以,Liu等[6]將注意力機(jī)制引入推薦之中,提出STAMP(Short-Term Attention/Memory Priority Model),為會話中與下一個項目預(yù)測更相關(guān)的項目分配更高的權(quán)重以解耦嚴(yán)格順序假設(shè)要求.但是,由于注意力機(jī)制會在學(xué)習(xí)過程中越來越偏向于多次出現(xiàn)的項目,即流行的項目,因此很可能會引起用戶厭煩的心理.Wu等[7]提出SR-GNN(Session-Based Recommendation with Graph Neural Networks),將會話建模到圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network, GNN)中,學(xué)習(xí)項目之間的復(fù)雜轉(zhuǎn)換,從而獲得更準(zhǔn)確的推薦.Lai等[8]提出MGS(Mirror Graph Enhanced Neural Model for Session-Based Recommendation),集成項目的屬性信息,為每個會話項目選擇最具屬性代表性的信息,從而將項目屬性作為會話的上下文補(bǔ)充信息,用于預(yù)測推薦.
對于長會話而言,由于會話中的信息充足,所以能夠取得相對準(zhǔn)確的結(jié)果.但是對于短對話而言,由于信息稀少,單會話模型很難充分學(xué)習(xí)用戶的偏好信息,從而造成推薦的誤差.所以,學(xué)者們提出多會話模型,考慮當(dāng)前會話的上下文信息,充分學(xué)習(xí)用戶的偏好.Quadrana等[9]提出HRNN(Hierarchical RNN),Ruocco等[10]提出II-RNN(Inter-Intra RNN),使用會話級RNN和項目級RNN分別編碼當(dāng)前用戶的歷史會話和目標(biāo)會話序列,再組合兩個RNN的輸出,預(yù)測用戶感興趣的下一個項目.然而,HRNN和II-RNN忽略其他用戶可能也有與當(dāng)前用戶相似的會話信息.為此,榮輝桂等[11]提出基于用戶相似度的協(xié)同過濾推薦算法,尋找與當(dāng)前用戶相似的用戶作為參考依據(jù).
相比當(dāng)前用戶的歷史會話,其他用戶的會話數(shù)量繁多,能否有效檢索相似會話序列是關(guān)鍵問題之一.Ludewig等[12]提出SKNN(Session-BasedK-Nearest Neighbor),Garg等[13]提出STAN(Sequence and Time Aware Neighborhood),使用K近鄰(K-Nearest Neighbor, KNN)[14]從整個數(shù)據(jù)集中找出與當(dāng)前會話相似的會話作為上下文信息,用于預(yù)測下一個項目推薦.
然而,上述方法使用的相似計算方法過于簡單,很難精確找出真正相似的會話.Wang等[15]提出CSRM(Collaborative Session-Based Recommendation Machine),Pan等[16]提出ICM-SR(Intent-Guided Collaborative Machine for Session-Based Recommenda-tion),使用自定義的會話檢索網(wǎng)絡(luò),從其他用戶中檢索和當(dāng)前會話相似的會話.但是在當(dāng)前會話很短并且上下文信息有限的情況下,引入其他用戶的協(xié)作信息會增加找到具有不同用戶偏好和上下文會話的風(fēng)險.
上述多會話模型雖然將上下文會話作為當(dāng)前短會話的補(bǔ)充信息,緩解短會話信息稀疏的問題,但其僅僅使用會話嵌入之間的平均值或最小距離計算相似度,獲得的會話相似性可能不準(zhǔn)確.因為會話編碼器很難保存會話中的所有信息,并且也忽略項目的位置和順序.Song等[17]提出INSERT(Inter-Session Collaborative Recommender Network),使用改進(jìn)的會話檢索網(wǎng)絡(luò),從相似用戶的會話中檢索較優(yōu)的相似會話.INSERT主要通過直接測量兩個會話的相似性以篩選相似會話.然而該模型選擇隨機(jī)初始化的上下文會話信息作為輸入,未能充分考慮會話本身內(nèi)部的結(jié)構(gòu)信息,性能受到一定限制.另外,INSERT公平看待會話中的所有項目,但依據(jù)現(xiàn)實情況,項目之間通常會存在位置重要性的區(qū)別,因此在提取會話信息上也存在一定的局限性.
針對上述問題,本文基于上下文信息補(bǔ)充和圖神經(jīng)網(wǎng)絡(luò)的思想,提出多特征融合短會話推薦模型(Multi-feature Fusion Based Short Session Recommen-dation Model, MFF-SSR),充分學(xué)習(xí)短會話中的用戶偏好,有效檢索當(dāng)前會話的相似會話信息,并納入下一個項目推薦中.具體來說,首先將用戶和項目節(jié)點建模到圖神經(jīng)網(wǎng)絡(luò)當(dāng)中,并進(jìn)行鄰域聚合操作.項目聚合節(jié)點作為會話序列的補(bǔ)充,與門控網(wǎng)絡(luò)的輸出(序列特征)一起作為相似會話檢索網(wǎng)絡(luò)的輸入節(jié)點.用戶聚合節(jié)點作為相似度權(quán)重計算的重要依據(jù).然后,使用目標(biāo)會話與其它會話計算相似度,篩選相似短會話,并與用戶相似度權(quán)重相乘,獲得豐富的上下文信息.最后,利用加入位置向量信息的多頭自注意力機(jī)制,提取當(dāng)前會話和上下文會話的特征信息,并結(jié)合兩者,獲得最終會話表示,從而預(yù)測用戶的下一次行為.
本文提出多特征融合短會話推薦模型(MFF-SSR),框架如圖1所示.模型包含3個部分:特征學(xué)習(xí)層、上下文會話檢索網(wǎng)絡(luò)和位置感知網(wǎng)絡(luò).
圖1 MFF-SSR框架圖
特征學(xué)習(xí)層包括兩個部分:節(jié)點特征學(xué)習(xí)層和會話特征學(xué)習(xí)層,分別關(guān)注會話內(nèi)部節(jié)點和整個會話的特征信息.特征學(xué)習(xí)層的目的是預(yù)處理輸入數(shù)據(jù),再將兩部分學(xué)習(xí)層的輸出融合,作為下一模塊的輸入.
1.1.1節(jié)點特征學(xué)習(xí)層
本文將節(jié)點特征學(xué)習(xí)層和會話特征學(xué)習(xí)層定義為數(shù)據(jù)預(yù)處理階段,兩層同步訓(xùn)練互不干擾.節(jié)點特征學(xué)習(xí)層根據(jù)用戶與項目交互信息建立交互矩陣,每行表示一位用戶,每列表示一個項目(交互為1,未交互為0),即鄰接矩陣.此時模型需要進(jìn)行信息構(gòu)造,將用戶和項目根據(jù)ID建立嵌入向量.本文使用ui∈U表示用戶,U表示用戶集;使用ii∈I表示項目,I表示項目集.另外,使用eu表示用戶嵌入,使用ei表示項目嵌入.然后根據(jù)用戶-項目交互矩陣,建立交互圖,若用戶與項目之間有交互,則存在連邊.
對于當(dāng)前用戶節(jié)點或目標(biāo)會話內(nèi)每個項目節(jié)點,都存在高階鄰域信息.短會話的內(nèi)部節(jié)點較少,更需要聚合高階鄰域信息以豐富特征.本文依據(jù)鄰域聚合[18]的思想,將相鄰節(jié)點的特征聚合到目標(biāo)節(jié)點當(dāng)中,豐富目標(biāo)節(jié)點的特征,并在后續(xù)作為短會話的信息補(bǔ)充及相似會話權(quán)重的重要依據(jù).本文選擇He等[19]提出的LightGCN學(xué)習(xí)鄰域高階特征.LightGCN根據(jù)推薦任務(wù)節(jié)點信息稀疏并且特征維度較低的特點,去除特征變換和非線性激活函數(shù),在圖卷積模型[20]中性能優(yōu)秀.
首先,節(jié)點特征學(xué)習(xí)層根據(jù)用戶和項目鄰接矩陣建立鄰接圖(如圖1所示),根據(jù)連邊從高階鄰域向目標(biāo)節(jié)點聚合.主要通過迭代和加權(quán)求和的方式求取目標(biāo)用戶和物品的鄰域聚合特征編碼,抽象公式
迭代公式
通過高階鄰域聚合,節(jié)點特征學(xué)習(xí)層將節(jié)點信息從高階向低階傳播,獲得每層的嵌入節(jié)點信息ek,本文選擇使用加權(quán)求和的方式獲得最終節(jié)點表示:
其中,K表示鄰接層數(shù)量,ak表示第k層聚合向量的權(quán)重,本文使用簡單的1/(K+1)表示,已被證明足夠有效[19].
1.1.2會話特征學(xué)習(xí)層
MFF-SSR使用會話特征學(xué)習(xí)層學(xué)習(xí)會話序列本身隱藏的信息,主要利用門控循環(huán)單元(Gated Recurrent Unit, GRU)[21]學(xué)習(xí)順序信息.當(dāng)前會話的信息最為重要,它是篩選相似會話的重要依據(jù).上下文會話即用戶的歷史會話和其他用戶的會話則是用來與當(dāng)前會話進(jìn)行相似度計算,篩選相似會話并作為當(dāng)前會話的信息補(bǔ)充,從而預(yù)測下一個項目.
具體來說,首先需要將項目i表示為一維空間的嵌入向量ei,再根據(jù)會話的項目順序表示為序列S,即{ei1,ei2,…,ein}.當(dāng)前會話表示為Sc,歷史會話表示為Sh,鄰居會話表示為Sn.然后將三種序列輸入GRU中,學(xué)習(xí)順序時間信息:
ht=GRU(eit,ht-1),
其中,1≤t≤N,N表示每條會話的長度,eit表示會話中第t個項目的嵌入向量,ht表示當(dāng)前狀態(tài),ht-1表示上一刻的狀態(tài).
為了緩解短會話信息稀少的問題,模型需要從當(dāng)前用戶的歷史會話和其他用戶的會話中篩選出相似會話,從而學(xué)習(xí)相似特征,豐富當(dāng)前會話的信息.
1.2.1相似會話檢索網(wǎng)絡(luò)
面對數(shù)量龐大的當(dāng)前用戶歷史會話和其他用戶的會話信息,如果無法篩選真正相似的會話,會導(dǎo)致用戶偏好的誤差和造成計算的高負(fù)擔(dān).所以,為了使模型更加精確和高效,需要從龐雜的會話中選取與當(dāng)前用戶最相似的會話.
當(dāng)前用戶的歷史會話集H(uc)數(shù)量稀少并且最符合當(dāng)前用戶的偏好,模型無需對其進(jìn)行先驗篩選,直接將其輸入相似會話檢索網(wǎng)絡(luò)中進(jìn)行計算.而對于其他用戶的會話集H(un),由于用戶數(shù)量眾多,每位用戶又會產(chǎn)生大量歷史會話集,如果將所有會話都納入計算當(dāng)中,將會對模型造成非常高的負(fù)擔(dān),花費大量的時間.
所以模型需要預(yù)先選取一定數(shù)量的相似用戶,再將他們的歷史會話作為相似檢索網(wǎng)絡(luò)的輸入.這里本文選取10個與當(dāng)前用戶最相似的用戶.MFF-SSR選取與當(dāng)前用戶具有相似偏好的用戶,相似度
不管是當(dāng)前用戶的歷史會話集還是其他用戶的會話集,當(dāng)引入其它會話作為補(bǔ)充信息時都會在一定程度上造成模型學(xué)習(xí)到錯誤偏好的風(fēng)險,尤其是短會話信息本身所含信息量有限,更容易受到補(bǔ)充信息的影響.所以,如何更有效地找到與當(dāng)前會話相似的會話成為至關(guān)重要的問題.當(dāng)前研究大多使用基于注意力機(jī)制的向量加權(quán)和或嵌入向量加權(quán)平均,計算當(dāng)前會話和其他會話的相似度,但是這樣會忽略會話中每個項目的位置信息.所以,Song等[17]選擇使用自定義的相似度測量方法篩選相似會話,計算網(wǎng)絡(luò)如圖2所示.
圖2 相似度計算網(wǎng)絡(luò)
其中
相比于Song等[17]直接使用相似度作為候選會話的特征信息,本文選擇將候選會話與其相似度進(jìn)行相乘,得到最終會話表示:
1.2.2相似會話權(quán)重網(wǎng)絡(luò)
在為相似會話檢索網(wǎng)絡(luò)找到與當(dāng)前會話相似的會話之后,因為每個會話所含項目的種類和數(shù)量都不同,也就是說每個會話與當(dāng)前用戶的相似度也有差異,此時并不能統(tǒng)一將它們直接作為補(bǔ)充信息.所以,需要一個權(quán)重矩陣,用于體現(xiàn)不同會話與當(dāng)前用戶的差異性.
最終進(jìn)行加權(quán)和操作,得到當(dāng)前用戶對于整個候選集的偏好權(quán)重矩陣:
1.2.3上下文會話檢索結(jié)果
相比Song等[17]的工作,此時并不直接通過MLP(Multilayer Perceptron)[23]對候選會話集進(jìn)行聚合表征.因為1.1.2節(jié)中會話特征學(xué)習(xí)層為簡化模型,僅使用GRU學(xué)習(xí)會話的前向傳播特征.后續(xù)為了學(xué)習(xí)會話中更深層次的用戶偏好信息,仍需要上下文候選會話集作為輸入.
1.1.2節(jié)中會話特征學(xué)習(xí)層中的門控循環(huán)神經(jīng)網(wǎng)絡(luò)在計算會話時,只是將前一個狀態(tài)納入當(dāng)前狀態(tài)計算當(dāng)中,即前向特征學(xué)習(xí).為了有效體現(xiàn)會話中每個項目所在位置的重要性,本文利用位置感知多頭自注意力網(wǎng)絡(luò)學(xué)習(xí)不同節(jié)點之間的位置權(quán)重.注意力網(wǎng)絡(luò)本身無法捕捉會話順序,對于相同項目處于會話不同位置的情況,注意力網(wǎng)絡(luò)計算得出的結(jié)果是一樣的.所以為了使注意力網(wǎng)絡(luò)能夠?qū)W習(xí)相對位置信息,需要在注意力網(wǎng)絡(luò)之前,對每個序列嵌入一個位置向量.Wang等[24]關(guān)注會話的反向位置信息,使用一個自定義的反向位置向量學(xué)習(xí)會話中更深層次的位置信息.相比前向位置信息,當(dāng)前會話中的項目到預(yù)測項目的距離包含更有效的信息,也就是說,越靠近末尾的物品應(yīng)該越重要.
但是,主觀地認(rèn)為末尾的物品更重要是不合理的.每位用戶在一段時間內(nèi)的興趣曲線都不一樣.若將單位用戶的所有交互項目按照時間線拼接成一整條會話,假設(shè)相鄰交互項目特征相似用戶興趣提升,特征不相似興趣下降,可以發(fā)現(xiàn)用戶的興趣曲線呈上下波動趨勢,如圖3所示.如果此時將整段會話按照時間段拆分成無數(shù)段短會話,將無法預(yù)測每段短會話處于何種曲線類型(上升、下降、波動).所以,主觀認(rèn)為每段會話越靠后的物品更重要是不合理的.用戶可能在一段會話的最后剛好誤點擊一個項目,那么此項目反而會成為噪點項目,影響模型的預(yù)測.
觀察圖3可以發(fā)現(xiàn),用戶興趣曲線與正余弦曲線較相似.所以本文利用正余弦函數(shù)的思想建模位置向量,捕捉不同短會話的興趣偏好.此外,本文使用多頭自注意力網(wǎng)絡(luò)代替普通注意力網(wǎng)絡(luò).相比普通注意力網(wǎng)絡(luò),多頭自注意力網(wǎng)絡(luò)能通過多重注意力機(jī)制學(xué)習(xí)會話中更準(zhǔn)確的用戶興趣偏好.
圖3 用戶興趣曲線
首先,本文選擇正弦函數(shù)為每個會話設(shè)定一個位置嵌入向量psin,再與會話向量相加,得到包含位置信息的特征向量:
hTSCP=hTSC⊕psin.
然后將hTSCP輸入多頭自注意力網(wǎng)絡(luò)[25]中,學(xué)習(xí)會話的用戶興趣偏好,這里使用符號τ表示.相比傳統(tǒng)自注意力網(wǎng)絡(luò),多頭自注意力網(wǎng)絡(luò)利用多個注意力網(wǎng)絡(luò)得出不同結(jié)果再拼接的方式獲得會話更深層次的特征,公式如下:
其中
αhi=τ(eii,hTSCP),eii∈hTSCP.
對于輸出結(jié)果,本文分別將當(dāng)前用戶的當(dāng)前會話、歷史會話和其他用戶的會話表示為hc、hh和hn.
得出最終會話表征后,模型需要將它們拼接后計算,得到最終輸出結(jié)果:
最后本文將預(yù)測視為多分類任務(wù),使用交叉熵?fù)p失函數(shù)訓(xùn)練模型,損失函數(shù)如下所示:
為了驗證MFF-SSR的性能,使用如下環(huán)境進(jìn)行實驗:PyTorch框架、Windows10 64位操作系統(tǒng)、python3.7、Intel(R) Core(TM) i7-10700F CPU、DDR4 16 GB內(nèi)存、GeForce RTX 2060 6 GB顯卡.
本文選擇在Delicious和Reddit這兩個真實數(shù)據(jù)集上進(jìn)行實驗.Delicious數(shù)據(jù)集包含用戶在一個圖書評分社交系統(tǒng)中對圖書的標(biāo)記行為.Reddit數(shù)據(jù)集包含用戶對reddit論壇中帖子的評論行為.
首先,刪除整個數(shù)據(jù)集上出現(xiàn)頻率小于10次的用戶和項目.再將用戶相鄰交互小于閾值(本文設(shè)定為3 600 s)的交互分配到同個會話當(dāng)中.然后,為了專注于短會話的研究,刪除項目數(shù)量大于20的會話.最后,按照8∶1∶1的比例將數(shù)據(jù)集劃分為訓(xùn)練集、驗證集和測試集.
表1列出實驗數(shù)據(jù)集的信息.由表可以看到,2個數(shù)據(jù)集的會話平均長度分別為5.6和2.6.
表1 數(shù)據(jù)集的基本信息
MFF-SSR使用的超參數(shù)如表2所示.為了保證公平性,本文設(shè)置的超參數(shù)與相關(guān)對比模型保持一致.
表2 超參數(shù)配置
為了驗證MFF-SSR在短會話推薦領(lǐng)域的優(yōu)越性,選取如下12個對比模型,主要分為3類.
1)單會話模型.
(1)RNN[5].基于門控循環(huán)神經(jīng)網(wǎng)絡(luò)的RNN模型,使用GRU提取當(dāng)前會話中包含的用戶偏好信息,用于推薦下一個項目.
(2)STAMP[6].利用注意力機(jī)制同時關(guān)注用戶的短期興趣和長期興趣,從而進(jìn)行聯(lián)合推薦.
(3)SR-GNN[7].基于GNN的單會話推薦模型,將會話建模為圖結(jié)構(gòu),并使用GNN獲得物品之間的轉(zhuǎn)移信息,同時單獨提取會話中最后一個項目,作為補(bǔ)充信息.
(4)MGS[8].利用雙圖學(xué)習(xí)項目表示.一個是從用戶交互動作序列生成的會話圖.另一個是由屬性感知模塊構(gòu)建的鏡像圖,通過集成項目的屬性信息為每個會話項目選擇最具屬性代表性的信息.
2)多會話模型.
(1)SKNN[12].基于KNN的模型,從整個會話數(shù)據(jù)集上檢索與當(dāng)前會話相似的會話作為當(dāng)前會話的補(bǔ)充信息.
(2)STAN[13].改進(jìn)版的SKNN,在檢索相似會話的同時,考慮會話中更多的信息,獲得更準(zhǔn)確的推薦.
(3)CSRM[15].多會話模型,利用兩個存儲網(wǎng)絡(luò)高效學(xué)習(xí)當(dāng)前會話信息和相似會話信息,獲得更精確的推薦.
(4)HRNN[9].建模當(dāng)前用戶的當(dāng)前會話和歷史會話,用于推薦當(dāng)前會話的下一個項目.
(5)II-RNN[10].基于RNN的模型,使用第2個RNN,從最近的會話中學(xué)習(xí)并預(yù)測用戶對當(dāng)前會話的興趣,并通知原始RNN以改進(jìn)推薦.
(6)INSERT[17].將用戶的歷史會話和其他用戶的會話建模為全局模塊,補(bǔ)充作為本地模塊的當(dāng)前會話的上下文特征信息,獲取在短會話中更準(zhǔn)確的推薦.
3)傳統(tǒng)順序推薦模型.
(1)SASRec(Self-Attention Based Sequential Model)[26].基于自注意力機(jī)制的序列推薦模型,在每個時間步,都從用戶的行為歷史中找出相關(guān)項目以預(yù)測下一個項目.
(2)BERT4Rec(Bidirectional Encoder Represen-tations from Transformer for Sequential Recommen-dation)[27].基于雙向自注意力機(jī)制的序列推薦模型,融合用戶歷史行為中的每個項目左右的上下文以預(yù)測項目.
本文選擇廣泛使用的排名指標(biāo)Recall@K和MRR@K,評估所有模型的推薦性能.
1)Recall@K.通常驗證在正樣本中有多少被預(yù)測為真,推薦系統(tǒng)中理解為有多少項目被模型正確推薦,公式如下:
其中,u表示用戶,Ru表示模型預(yù)測的需要被推薦的項目集合,Tu表示真實測試集上被推薦的集合.
2)MRR@K.反映推薦的項目是否處在序列的前列,強(qiáng)調(diào)位置關(guān)系,公式如下:
其中,N表示推薦次數(shù),1/pi表示用戶真實訪問項目在結(jié)果序列中的位置,若該項目不在序列中,此時pi為無窮大.
本文在兩個真實數(shù)據(jù)集上對比各模型,結(jié)果如表3所示.在表中,黑體數(shù)字表示最優(yōu)值,斜體數(shù)字表示次優(yōu)值.為了公平起見,除MFF-SSR結(jié)果以外,對比模型結(jié)果均引用自參考文獻(xiàn).
由表3可見,相比次優(yōu)模型:在Delicious數(shù)據(jù)集上,MFF-SSR分別在評分標(biāo)準(zhǔn)Recall@5、Recall@20、MRR@5、MRR@20上提升20.96%、9.71%、27.93%、24.46%;在Reddit數(shù)據(jù)集上,MFF-SSR分別提升16.50%、1.73%、28.09%、26.00%.從結(jié)果可以看到,本文模型性能提升比較明顯.
表3 各模型在2個數(shù)據(jù)集上的實驗結(jié)果
從表3可以看到,基于單會話的對比模型(RNN、STAMP、SR-GNN、MGS)表現(xiàn)最差.這是因為當(dāng)專注于短會話推薦時,由于當(dāng)前會話中包含的信息有限,模型無法做出更精確的推薦.同時在這4種模型當(dāng)中,RNN的性能最低,這是因為會話中的項目使用嚴(yán)格的順序假設(shè),而由于短會話項目稀少,無法有效學(xué)習(xí)會話中的順序信息.STAMP在Delicious數(shù)據(jù)集上表現(xiàn)優(yōu)于RNN,但是在Reddit數(shù)據(jù)集上性能最差.這是因為STAMP使用的注意力機(jī)制擅長于從長會話中學(xué)習(xí)有效信息,但是從表1可以看出,由于Reddit數(shù)據(jù)集上平均每條會話長度(2.6)遠(yuǎn)小于Delicious數(shù)據(jù)集上平均每條會話長度(5.6),所以無法從Reddit數(shù)據(jù)集上學(xué)習(xí)到足夠的有效信息.得益于GNN在表示學(xué)習(xí)方面的優(yōu)勢,SR-GNN將單個會話建模到GNN之中,從而獲取會話中更多的信息,但其仍然局限于項目嵌入向量,所以效果不佳.MGS關(guān)注項目的屬性信息,通過集成項目的屬性信息為每個會話項目選擇最具屬性代表性的信息.該模型將項目的屬性信息(如標(biāo)簽)作為會話內(nèi)項目的上下文補(bǔ)充信息,在一定程度上豐富會話的特征性息,因此在4種單會話模型中效果最優(yōu),也優(yōu)于一些多會話模型.由于MGS上下文信息取決于會話內(nèi)部項目,若內(nèi)部項目數(shù)量過少,可獲得的項目屬性也相應(yīng)較少,所以其在會話平均長度為5.6的Delicious數(shù)據(jù)集上效果好于在會話平均長度為2.6的Reddit數(shù)據(jù)集上的效果.
在多會話模型(SKNN、STAN、CSRM、HRNN、II-RNN、STAGE、INSERT)中,SKNN和STAN結(jié)構(gòu)相似,兩者的主要區(qū)別在于是否考慮到會話中更多的信息.但是由于兩者都只使用簡單的方法衡量會話之間的相似度,因此很難保證檢索的會話是否真的對當(dāng)前會話的下一項推薦有效.CSRM針對這一點進(jìn)行改進(jìn),通過存儲網(wǎng)絡(luò)相對精確地檢索與當(dāng)前會話相似的會話,提供更精確的推薦.HRNN和II-RNN的思想比較相似,都是直接使用當(dāng)前用戶的歷史會話信息以補(bǔ)充當(dāng)前會話的特征,不需要考慮相似度問題,所以兩者的性能優(yōu)于KNN、STAN和CSRN.但是HRNN和II-RNN假設(shè)用戶的歷史會話與當(dāng)前會話強(qiáng)相關(guān),然而用戶在不同時間段內(nèi)可能會產(chǎn)生不同的偏好興趣,因此兩者的性能并不是最優(yōu).INSERT區(qū)分當(dāng)前用戶的歷史會話和其他用戶的會話,并將兩者納入考慮之中,通過自定義的會話檢索網(wǎng)絡(luò)比較精確地檢索與當(dāng)前會話真正相似的會話序列,再將這些會話作為當(dāng)前短會話的補(bǔ)充信息.所以,除了Reddit數(shù)據(jù)集上的Recall指標(biāo),INSERT的其它指標(biāo)結(jié)果都優(yōu)于對比模型.
傳統(tǒng)順序推薦模型(SASRec、BERT4Rec)使用用戶的項目序列補(bǔ)充當(dāng)前會話的信息,該項目序列由用戶的所有會話按照時間順序拼接而成.BERT4Rec在Reddit數(shù)據(jù)集上的召回率是所有模型中最高的,適用于詞向量的BERT語言模型[28]運用于會話推薦.BERT4Rec在Reddit數(shù)據(jù)集上表現(xiàn)最優(yōu)的原因是因為Reddit數(shù)據(jù)集是一個論壇評論數(shù)據(jù)集,用戶可能對于同一話題重復(fù)訪問并評論多次,從而造成該話題在用戶的相互序列中重復(fù)出現(xiàn),使模型能夠較準(zhǔn)確地推薦該主題.除了召回率之外,SASRec和BERT4Rec在2個數(shù)據(jù)集上的其它指標(biāo)都低于多會話模型.這可能是在處理數(shù)據(jù)集時過濾長會話導(dǎo)致用戶只剩下短會話信息,從而造成有些用戶沒有足夠的歷史會話以充分學(xué)習(xí)其偏好信息.另外,將用戶所有歷史會話拼接到一個序列中,可能會破壞會話的內(nèi)在事務(wù)結(jié)構(gòu)[3].在真實數(shù)據(jù)集上,用戶的不同會話之間有時會存在較大的差異性,將它們拼接在一起反而會干擾推薦模型.
相比之下,MFF-SSR針對上述問題進(jìn)行優(yōu)化,同時考慮當(dāng)前用戶的歷史會話和其他用戶的會話作為當(dāng)前會話的上下文信息,并使用更精確的相似會話檢索網(wǎng)絡(luò)篩選上下文會話.為了緩解短會話自身項目稀少的問題,引入圖神經(jīng)網(wǎng)絡(luò),充分學(xué)習(xí)每個項目的特征.另外,模型也使用位置感知多頭自注意力網(wǎng)絡(luò),補(bǔ)充學(xué)習(xí)每個會話項目之間的位置信息.由表3可以看到,MFF-SSR在2個真實數(shù)據(jù)集上的指標(biāo)值最高.
由2.5節(jié)可以看到,相比其它對比模型,MFF-SSR性能具有明顯提升.為了驗證MFF-SSR中不同模塊對于整個模型的作用以及一些超參數(shù)的設(shè)置對于本文模型的影響,設(shè)置3組不同的消融實驗.
2.6.1模型中不同模塊的影響
為了驗證MFF-SSR各個模塊的有效性,使用依次屏蔽各個模塊結(jié)果的方式進(jìn)行消融實驗,各對比模型如下所示.
1)Version-1.在該模型中,刪除空間信息學(xué)習(xí)模塊,不再對用戶和項目節(jié)點進(jìn)行預(yù)處理的領(lǐng)域聚合操作,即只使用隨機(jī)初始化的用戶和項目特征向量.
2)Version-2.在該模型中,刪除時間信息學(xué)習(xí)模塊,不再通過GRU學(xué)習(xí)會話中項目之間的順序信息,而是直接將會話輸入到后續(xù)模塊之中.
3)Version-3.在該模型中,刪除上下文信息學(xué)習(xí)模塊,即模型變成基于單會話的模型.
4)Version-4.在該模型中,刪除位置感知多頭自注意力網(wǎng)絡(luò),不再學(xué)習(xí)會話中各項目之間的反響位置信息.
5)Version-5.在該模型中,選擇忽略當(dāng)前用戶的歷史會話,只將其他用戶的會話作為當(dāng)前會話的上下文信息.
6)Version-6.在該模塊中,選擇忽略其他用戶的會話,只將當(dāng)前用戶的歷史會話作為當(dāng)前會話的上下文信息.
7)Version-7.在該模塊中,只使用隨機(jī)初始化而不是空間信息學(xué)習(xí)模塊預(yù)處理的用戶特征向量作為相似會話權(quán)重網(wǎng)絡(luò)的參考依據(jù).
各模型消融實驗結(jié)果如表4所示,表中黑體數(shù)字表示最優(yōu)值.
表4 不同模塊在2個數(shù)據(jù)集上的消融實驗結(jié)果
由表4可以看出,刪除上下文信息學(xué)習(xí)模塊的模型(Version-3)性能最差,這是因為對于項目稀少的短對話來說,上下文信息是最重要的補(bǔ)充信息.這一點在忽略當(dāng)前用戶歷史會話的模型(Version-5)和忽略其他用戶會話的模型(Version-6)的結(jié)果中也能體現(xiàn).但是值得注意的是,Version-5和Version-6在兩個數(shù)據(jù)集上的性能完全相反.在Delicious數(shù)據(jù)集上,其他用戶的會話對于當(dāng)前會話的重要性大于當(dāng)前用戶的歷史會話.這是因為Delicious數(shù)據(jù)集上的用戶各會話之間的差異性較大,即用戶不同時間段的興趣偏好差異較大,所以其他用戶的會話的參考意義相對更高.而在Reddit數(shù)據(jù)集上,當(dāng)前用戶的歷史會話對當(dāng)前會話的重要性大于其他用戶的會話.這是因為Reddit數(shù)據(jù)集是一個社交論壇評論數(shù)據(jù)集,用戶對于感興趣的話題會重復(fù)評論,所以用戶的歷史會話之間的相關(guān)性較強(qiáng),參考意義也更強(qiáng).這也是SASRec和BERT4Rec能在召回率指標(biāo)上超過多會話模型的原因之一.刪除空間信息模塊的模型(Version-1)和刪除用戶聚合特征向量的模型(Version-7)可以看成一類,只是相比Version-1,Version-7通過鄰域聚合操作預(yù)處理項目節(jié)點.這兩者的實驗結(jié)果也表明預(yù)處理用戶和項目節(jié)點的重要性.去除時間信息學(xué)習(xí)模塊的模型(Version-2)和刪除位置信息學(xué)習(xí)模塊的模型(Version-4)都是刪減一部分針對單個會話的操作,也不能放棄會話自身的特征學(xué)習(xí).綜上所述,模型的各個模塊都對本文模型做出一定的貢獻(xiàn),刪除任何一個都會在一定程度上降低MFF-SSR的精確性.
2.6.2圖神經(jīng)網(wǎng)絡(luò)層數(shù)的影響
本文檢測圖神經(jīng)網(wǎng)絡(luò)鄰域?qū)訑?shù)對模型的影響,分別測試采用1層,2層,3層,4層鄰域下模型的性能,結(jié)果如表5所示,表中黑體數(shù)字表示最優(yōu)值.
表5 圖神經(jīng)網(wǎng)絡(luò)層數(shù)對模型性能的影響
從表5中可以看到,模型在鄰域?qū)訑?shù)為3時總體效果最優(yōu),這與文獻(xiàn)[19]中的結(jié)果一致.這是因為鄰域?qū)訑?shù)較少會導(dǎo)致聚合的鄰域節(jié)點不足,不能夠充分學(xué)習(xí)用戶特征和項目節(jié)點特征.從另一方面講,過多的鄰域?qū)訑?shù)也會導(dǎo)致過擬合問題,反而降低模型效果.對比權(quán)衡之下,鄰域?qū)訑?shù)設(shè)置為3.
2.6.3相似用戶數(shù)量對推薦效果的影響
選取合適數(shù)量的相似用戶也是本文研究的重要問題之一.過多的相似用戶會導(dǎo)致過擬合和增大模型的負(fù)擔(dān),過少則會導(dǎo)致模型學(xué)習(xí)到的上下文會話信息不夠.所以,本文選擇數(shù)量為5、10、15的相似用戶,測試模型性能,結(jié)果如表6所示.
表6 相似用戶數(shù)量對模型性能的影響
從表6可以看到,選擇相似用戶數(shù)量為10時效果最優(yōu).這點與文獻(xiàn)[17]中的結(jié)論一致.過多的相似用戶并不能有效提升模型性能,反而會增加模型的訓(xùn)練時間.這是因為前N位用戶與當(dāng)前用戶足夠相似,而超過閾值的相似用戶反而可能產(chǎn)生負(fù)面信息.所以,本文選擇與當(dāng)前用戶相似度排名前10的其他用戶的會話作為上下文信息.
為了從短會話中學(xué)習(xí)更豐富的用戶偏好和更精確地找到相似上下文會話,本文提出多特征融合短會話推薦模型(MFF-SSR),同時關(guān)注短會話自身項目隱藏信息和上下文信息.對于會話自身信息,模型首先將項目節(jié)點建模到圖神經(jīng)網(wǎng)絡(luò)中,學(xué)習(xí)鄰域特征,然后利用門控循環(huán)神經(jīng)網(wǎng)絡(luò)和位置感知多頭自注意力網(wǎng)絡(luò)充分發(fā)掘會話時序和位置上的隱藏特征.對于會話的上下文信息,通過相似會話檢索網(wǎng)絡(luò),尋找與當(dāng)前會話最相似的會話,緩解短會話信息稀少的問題,并通過相似會話權(quán)重網(wǎng)絡(luò),為每個上下文會話根據(jù)當(dāng)前用戶的偏好分配差異性的權(quán)重.最終通過學(xué)習(xí)的短會話特征為用戶推薦下一個項目.在兩個真實數(shù)據(jù)集上的實驗結(jié)果均體現(xiàn)MFF-SSR的優(yōu)越性.今后將考慮引入更多輔助信息,如用戶和項目的標(biāo)簽信息,進(jìn)一步強(qiáng)化模型短會話特征學(xué)習(xí)能力.另外,也將考慮模型在復(fù)雜會話環(huán)境下的適應(yīng)能力,進(jìn)行更深一步的研究.