曹萬平, 周 剛, 陳 黎, 崔蘭蘭
(1.四川大學計算機學院, 成都 610065; 2. 78123部隊, 成都 610017)
推薦系統(tǒng)已經(jīng)被廣泛用于音樂[1]、電子商務[2]、電影等網(wǎng)站來幫助用戶減輕信息過載,推薦用戶感興趣的內(nèi)容.在推薦算法中,基于內(nèi)容的推薦和協(xié)同過濾推薦算法[3]需要了解用戶對一個商品的明確喜好或對一部電影的評級打分等交互信息.但是在許多應用場景中,用戶的這些明確交互信息無法獲取,從而難以對用戶進行準確的推薦.為了解決這個問題,基于會話的推薦系統(tǒng)被提出.基于會話的推薦只需根據(jù)用戶的歷史點擊操作序列就可以通過充分建模上下文信息來預測用戶的下一步操作(點擊項).
用戶會話由在某個時間段內(nèi)用戶連續(xù)點擊感興趣的點擊項組成,其包含了用戶的點擊項與點擊時間等信息.基于這樣的會話結構,早期馬爾科夫鏈[4-5]進行會話推薦主要是根據(jù)用戶的前一行為來預測用戶的下一行為.馬爾科夫鏈是將信息獨立組合進行推薦,因此其預測精度受到了限制.隨著深度學習的引入,循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network, RNN)的方法[6-9]逐漸被應用于會話推薦.此類方法將用戶會話點擊序列輸入RNN來生成推薦結果,例如,Hidasi等[7,10]采用門控循環(huán)單元(Gate Recurrent Unit, GRU)對用戶會話進行建模.Liu等[11]設計了兩個多層感知機網(wǎng)絡單元并結合注意力網(wǎng)絡來獲得用戶的總體興趣和當前興趣.這些方法都取得了不錯的推薦效果,但是仍然缺少會話間點擊項轉換的依賴性表示.
最近,Wu等[12]采用圖神經(jīng)網(wǎng)絡的方法對用戶進行推薦.其將會話構造為圖結構結合GRU來捕獲用戶的長期興趣和當前偏好.此類方法將由會話圖構造的會話點擊項關系矩陣與會話點擊序列共同輸入到RNN中進行序列建模,解決了會話間依賴關系弱的問題,其推薦效果得到很大的提升.但是此類方法依舊是采用RNN對會話序列進行處理,所以存在缺少對會話圖節(jié)點分布結構處理等問題.
圖卷積神經(jīng)網(wǎng)絡被廣泛應用于對圖數(shù)據(jù)的處理[13-15].針對RNN方法對圖數(shù)據(jù)處理時仍然是將圖轉換為序列處理,無法很好地捕捉鄰域間表達的信息的問題,卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)根據(jù)圖的性質(zhì)用卷積與池化的策略對圖進行處理,充分利用了圖鄰域間的傳播信息.CNN在圖數(shù)據(jù)領域顯示出很好的效果,其在會話推薦領域的研究也亟待進行.
本文提出了一種基于會話的圖卷積遞歸神經(jīng)網(wǎng)絡推薦模型(GCRNN)來捕獲用戶會話圖的空間結構,會話的時序與會話間依賴關系等潛在信息.針對存在大量不規(guī)則空間結構的會話數(shù)據(jù)潛在信息未能被充分利用的問題,通過卷積神經(jīng)網(wǎng)絡將會話圖中的節(jié)點信息傳播到鄰接節(jié)點并最終收斂,使會話圖的節(jié)點分布結構信息得到充分的利用.針對會話推薦結果受會話間依賴關系與會話時序信息影響的問題,本文利用RNN擅長捕獲長距離時序數(shù)據(jù)信息的能力,將低層網(wǎng)絡的會話數(shù)據(jù)信息處理后傳播到高層網(wǎng)絡,以此獲取會話間的時序信息并增強會話間依賴關系,從而獲得了包含更多信息的會話向量表示.隨后對會話向量進行線性轉變,最終得到推薦結果.本文在兩個公開數(shù)據(jù)集上進行了廣泛的實驗以證明模型在會話推薦任務上的有效性.本文工作做了以下主要貢獻:(1) 將每一個會話序列構造為會話圖,通過圖卷積神經(jīng)網(wǎng)絡學習會話圖的節(jié)點分布結構信息,同時利用遞歸神經(jīng)網(wǎng)絡捕獲時間信息與會話間依賴關系;(2) 本文在兩個公開數(shù)據(jù)集上進行了廣泛的實驗,實驗結果證明了GCRNN模型的有效性與先進性.
基于會話的推薦是基于隱式反饋推薦系統(tǒng)的典型應用,用戶的信息是未知的,不能得到用戶明確的偏好(例如,評級),只知道用戶主動的操作觀察(例如,購買或者點擊)[16].這些確定的觀察結果通常是在一段時間內(nèi)跟蹤用戶的操作記錄而獲得的順序序列數(shù)據(jù).
在基于會話的推薦任務中,馬爾科夫鏈模型被提出來模擬相鄰操作之間的順序關系,該操作通過利用數(shù)據(jù)的上一操作預測用戶的下一操作.Shani等[4]將推薦視為順序優(yōu)化問題,并采用馬爾科夫決策過程作為解決方法.Rendle等[5]提出將矩陣分解和馬爾科夫鏈結合起來作用于下一次點擊項推薦.Zimdars等[17]提出了一個基于馬爾科夫鏈的順序推薦系統(tǒng),并研究如何使用概率決策樹模型來提取順序特征以學習下一狀態(tài).盡管這些方法被證明是有效的,并且被廣泛使用,但是他們只考慮了會話的最新點擊項,而忽略了整個點擊序列的全局信息.在基于會話的推薦任務中,應用馬爾科夫鏈的一個主要問題是,當試圖處理在所有點擊項上的所有潛在用戶選擇序列時,狀態(tài)空間將迅速增加而變得難以管理.
深度學習已經(jīng)成功地應用于圖像識別[18]、語音識別[19]和自然語言處理領域[20]. Hidasi等[7]將具有門控遞歸單元的深度遞歸神經(jīng)網(wǎng)絡引入到會話推薦領域中對會話數(shù)據(jù)進行建模,該模型直接從給定的會話中的上一次點擊中學習會話向量,并為下一步操作提供推薦.這是將RNN網(wǎng)絡用于解決基于會話的推薦問題的首次嘗試,這歸功于RNN提供的序列建模能力,他們的模型可以在預測下一步操作時考慮用戶的歷史操作行為.Tan等[6]進一步研究了RNN在基于會話推薦中的應用.他們提出了兩種提高模型性能的方法,即數(shù)據(jù)增強和解決輸入數(shù)據(jù)分布變化的方法.此外,具有編碼器-解碼器體系結構的神經(jīng)網(wǎng)絡注意力推薦方法[8]在RNN上采用注意力機制,從而捕獲用戶的順序行為特征和主要目的.Liu等[11]使用多層感知機網(wǎng)絡和注意力網(wǎng)絡的短期記憶優(yōu)先模型以捕獲用戶的總體興趣和當前興趣.在基于會話的推薦中,盡管RNN能夠處理會話數(shù)據(jù)間依賴性,但是會話間的點擊項關系轉換依賴性仍待加強.
為了解決會話間點擊項傳播的信息依賴問題,現(xiàn)有圖神經(jīng)網(wǎng)絡方法根據(jù)會話圖引入了圖節(jié)點連接矩陣,將其輸入到RNN網(wǎng)絡中進行會話推薦.Wu等[12]將圖節(jié)點鏈接矩陣輸入RNN網(wǎng)絡與注意力結合起來以獲得表示為全局偏好和當前偏好的每個會話的組合.Xu等[21]將圖節(jié)點鏈接矩陣輸入RNN網(wǎng)絡與自注意機制結合來增強會話間的依賴性.采用RNN的圖神經(jīng)網(wǎng)絡的圖節(jié)點連接矩陣可以捕獲圖節(jié)點的傳播依賴等信息,但是其缺少對圖節(jié)點分布結構潛在信息的處理.
為了獲得更多的用戶會話間的潛在信息,本文提出了圖卷積遞歸神經(jīng)網(wǎng)絡模型,模型引入圖卷積網(wǎng)絡層對圖節(jié)點的分布結構信息進行處理,遞歸神經(jīng)網(wǎng)絡層處理會話間的時序信息傳播與會話間依賴關系,從而得到有效的推薦結果.
本文提出了基于會話的圖卷積遞歸神經(jīng)網(wǎng)絡推薦模型,模型整體框架圖如圖1所示.模型首先將所有會話序列構造為會話圖. 然后,每個會話圖通過嵌入層后輸入CNN獲得節(jié)點向量.接著,每個會話都使用RNN來獲得會話嵌入向量,將全局嵌入向量與局部嵌入向量組合進行線性轉換.最后,預測每個會話的下一次點擊項的可能性.
圖1 基于圖卷積遞歸神經(jīng)網(wǎng)絡的會話推薦模型框架圖
基于會話的推薦任務中,I={i1,i2,...,in}表示所有會話中涉及的點擊項集合,用戶會話序列s=[is,1,is,2,…,is,t-1,is,t]按時間戳排序,其中is,t,is,t∈I表示在會話s中第t時刻用戶的點擊項,對于數(shù)據(jù)集的每一個會話序列s將其構造為有向圖Gs=(Ss,Es).其中,is,t∈I表示會話圖的節(jié)點,(is,t-1,is,t)∈E為會話圖的邊,is,t為is,t-1下一次點擊.由于同一個點擊項可能在會話中重復出現(xiàn),本文參照文獻[12]的方法,為每一條邊分配歸一化加權值.本文將每一個點擊項嵌入到統(tǒng)一的低維向量空間.向量sn∈Rd表示會話節(jié)點通過神經(jīng)網(wǎng)絡學習到的潛在向量,d表示向量維度.在會話s中,每一個節(jié)點向量sn在時間步t處,將其輸入到RNN當中,以此來更新節(jié)點向量.
將會話圖Gs=(Ss,Es)輸入嵌入層后,點擊項is,t映射到G中,G∈RN×D,其中,N表示節(jié)點的數(shù)目;D表示特征通道數(shù)目.圖卷積網(wǎng)絡將圖中每個節(jié)點的信息傳播到相鄰的節(jié)點并最終獲得收斂.對于本文工作中要處理的大量節(jié)點與會話圖,卷積層采用切比雪夫多項式來降低運算復雜度.對會話圖進行一系列卷積操作.
hθ*g=UhθUTg
(1)
(2)
本文利用RNN來獲取用戶會話的時序信息與依賴關系.本文使用帶有門控循環(huán)單元(GRU)的RNN代替標準RNN,因為Hidasi等[7]證明GRU可以勝過基于會話的推薦任務的長期短期記憶(LSTM)單元.GRU是更復雜的RNN單元,旨在處理逐漸消失的梯度問題.本文將卷積得到的節(jié)點向量輸入到GRU網(wǎng)絡中,RNN層的最終輸出hi計算如下.
zi=σ(Wzsi+Uzhi-1)
(3)
ri=σ(Wrsi+Urhi-1)
(4)
(5)
(6)
其中,Wz,Wr,Wh∈R2d×d;Uz,Ur,Uh∈Rd×d是通過模型學習得到的參數(shù);σ(·)是sigmoid函數(shù);⊙是元素乘法運算符.zi,ri是重置門與更新門,分別確定要舍棄與保留的信息.經(jīng)過GRU網(wǎng)絡編碼后,每個會話s被編碼成H={h1,h2,…,hi,…,hn}.
為了將會話的嵌入向量表示為H∈Rd,同時加強會話的最后點擊項對推薦結果的影響.本文首先考慮用戶會話的局部嵌入向量hl,對于會話H={h1,h2,…,hi,…,hn},局部嵌入向量hl可以定義為會話的最后一次點擊項的潛在向量.局部嵌入向量表示為
hl=hn
(7)
然后,匯總所有的RNN層得到的節(jié)點向量作為會話的全局嵌入向量hg如下式.
(8)
最后,本文通過將局部嵌入向量與全局嵌入向量進行拼接,經(jīng)過線性變換得到混合嵌入向量hs.
hs=Ws[hg;hl]
(9)
通過模型學習得到的參數(shù)矩陣Ws∈Rd×2d將混合嵌入向量壓縮到潛在向量空間Rd.
(10)
然后,通過softmax層來獲取模型的預測輸出向量.
(11)
對于每個會話圖,本文選擇交叉熵損失函數(shù).交叉熵損失可以測量真實值與預測值之間的相似度[8].其表示為
(12)
其中,y表示真實點擊項的one-hot編碼向量.θ是所有參數(shù)的集合.為了防止過度擬合,我們對θ進行λ參數(shù)化的L2正則化.
為了驗證本文模型GCRNN在基于會話推薦任務上的有效性,本節(jié)在Yoochoose和Diginetica這兩個數(shù)據(jù)集上進行了一系列實驗.
實驗使用Yoochoose和Diginetica這兩個具備代表性的數(shù)據(jù)集來評估本文模型.Yoochoose是RecSys Challenge 2015發(fā)布的公共數(shù)據(jù)集.它擁有從電子商務網(wǎng)站收集的6個月點擊流,并且訓練集只包含會話事件.Diginetica由CIKMCup2016發(fā)布,本文實驗僅使用發(fā)布的交易數(shù)據(jù).根據(jù)文獻[8]和文獻[11],我們按時間對Yoochoose的訓練序列進行排序,并在最近的1/64和1/4部分訓練序列上訓練模型.同時我們篩選出長度為1的會話和在兩個數(shù)據(jù)集中出現(xiàn)少于5次的點擊項.此外,Yoochoose的測試集包括訓練集中的后續(xù)工作日,并且我們會過濾掉未出現(xiàn)在訓練集中的點擊項.對于Diginetica,我們使用相對于訓練集中會話數(shù)據(jù)時間的下一周的會話過程進行測試.在預處理階段之后,Yochoose數(shù)據(jù)集中剩余7 966 257個會話,總共31 637 239次點擊,而Diginetica數(shù)據(jù)集中剩余202 633個會話,共98 296次點擊,共計43 097個點擊項.經(jīng)過預處理后,數(shù)據(jù)集的統(tǒng)計信息如表1所示.
表1 數(shù)據(jù)集信息
本文模型采用圖卷積與遞歸神經(jīng)網(wǎng)絡結合的方法,為了評估本文所提出的方法,本文使用下面的模型作為基線模型.(1) POP:根據(jù)在最近的會話訓練數(shù)據(jù)集中最經(jīng)常被訪問的點擊項排名來進行推薦;(2) Item-KNN(2016)[16]:根據(jù)計算先前點擊的會話向量之間的余弦相似度來進行推薦;(3) GRU4Rec(2016)[7]:在會話推薦中采用循環(huán)神經(jīng)網(wǎng)絡對用戶序列進行建模;(4) NARM(2017)[8]:采用具有注意力機制的循環(huán)神經(jīng)網(wǎng)絡來捕獲用戶的主要目的以及會話順序行為;(5) STAMP(2018)[11]:采用短期記憶優(yōu)先級模型,根據(jù)用戶的先前點擊與最后點擊項來捕獲用戶的長期偏好;(6) SR-GNN(2019)[12]:使用圖神經(jīng)網(wǎng)絡生成會話點擊項的潛在向量,使用軟注意力機制生成會話向量.
本文使用P@20和MRR@20來作為模型的評估指標,在這兩個模型上,將本文模型與其他模型進行比較.P@20(Precision@20) 在推薦領域被廣泛使用,表示返回前20個結果的準確性.
(13)
其中,N表示推薦項數(shù);Hhit表示返回的正確相關的推薦項.
MRR@20(Mean Reciprocal Rank) 為正確推薦項倒數(shù)的平均值.當排序超過20,則倒數(shù)排序為0.MRR度量考慮推薦排名的順序,其中,MRR值大表示排名正確的推薦在排名列表的頂部.
(14)
其中,|I|表示推薦結果數(shù)目;rank(it)表示推薦列表中相關推薦項所排的位置.
本文在設置模型參數(shù)時,點擊項維度設為100,點擊項向量采用隨機初始化高斯分布,卷積核大小為2*100,批次大小設為100,epoch為30,學習率為0.001,學習率衰減為0.1,迭代步數(shù)為3,隱藏層向量設為100,優(yōu)化器采用Adam優(yōu)化器.
為了評估本文提出的模型GCRNN的性能,本文將與第4.2節(jié)的基線模型進行比較,實驗結果如表2所示.根據(jù)實驗結果顯示,在P@20與MRR@20方面,本文提出的方法在3個數(shù)據(jù)集上基本都獲得了最佳的性能,這表明GCRNN推薦效果的有效性.
表2 實驗結果
如表2所示, POP與Item-KNN(2016)的性能不理想,因為沒有采用RNN,不能獲得會話間傳遞的信息.但Item-KNN(2016)相較于POP在P@20上有50.98%的提升,這是因為會話向量信息對推薦結果起到重要作用.將RNN應用于會話推薦后,GRU4Rec(2016)、 NARM(2017)與STAMP(2018)的推薦效果都優(yōu)于POP與Item-KNN(2016),在P@20上最高有17.83%的提升,在MRR@20上有8.3%的提升.SR-GNN(2019)的推薦效果在P@20上最高有5.09%的提升,由于利用圖神經(jīng)網(wǎng)絡生成了點擊項潛在嵌入向量,再使用注意力機制獲取會話向量的表示,因此推薦效果得到了提升.相較于RNN,GCRNN的推薦效果在P@20上最高有5.99%的提升,在MRR@20上有3.44%的提升.因為此方法采用CNN網(wǎng)絡進行會話圖進行訓練,獲取了會話圖節(jié)點間的結構信息,進一步考慮到會話鄰域之間信息傳播,并根據(jù)會話的時序信息與會話間依賴性來進行推薦,從而得到更好的推薦效果.我們注意到在YOOCHOOSE1/4數(shù)據(jù)集上,GCRNN模型的推薦效果沒有得到顯著的提升,通過實驗結果分析可知,本文模型在少量數(shù)據(jù)集上就可以得到不錯的推薦效果,較大的數(shù)據(jù)集且離推薦時間較遠的推薦數(shù)據(jù)集不能進一步提高模型性能.
為了分析模型的各個模塊對推薦效果的影響程度,本文設計了消融實驗,如圖2所示,分別驗證了CNN與RNN模塊對實驗結果的影響.
圖2 消融實驗Fig.2 Ablation experiment
由實驗結果可以看出,GCRNN去掉RNN層后,模型的推薦效果明顯降低,說明RNN層捕獲會話序列間的時序信息與會話間依賴關系可以顯著的提升模型的推薦效果. 模型去掉CNN層后,模型的推薦效果也不理想,表明使用經(jīng)過CNN層處理得到的會話圖節(jié)點的分布結構信息,比原節(jié)點信息的效果好. 消融實驗的結果表明本文提出的模型充分利用了CNN與RNN對會話數(shù)據(jù)處理的優(yōu)勢,從而獲得了更好的推薦效果.
在基于會話的推薦任務中,本文提出的GCRNN推薦模型有效地處理了會話之間信息傳播,獲得了更準確的用戶會話間的潛在信息.GCRNN使用卷積層對會話圖進行處理,以獲取會話圖節(jié)點分布結構信息,同時結合RNN學習會話間的依賴關系與時序信息.GCRNN在兩個公開數(shù)據(jù)集上進行了廣泛的實驗取得了有效的成果,通過實驗證明,GCRNN在會話推薦領域的可行性與有效性.接下來,我們考慮將點擊項進行特征處理并嵌入到模型特征中,并且對會話圖進一步處理,在圖數(shù)據(jù)上進行性能訓練,來獲得更有效的推薦結果.