劉縱橫,汪海濤,姜 瑛,陳 星
(昆明理工大學 信息工程與自動化學院,昆明 650500)
推薦系統(tǒng)在互聯(lián)網(wǎng)中有著廣泛的應用,一個優(yōu)秀的推薦系統(tǒng)可以幫助用戶快速、準確地在海量的信息中尋找感興趣的內(nèi)容。它改變了人們獲取信息的方式,給用戶帶來了極大的便利。推薦系統(tǒng)目前主要可以分為2類:常規(guī)推薦系統(tǒng)與序列推薦系統(tǒng)。常規(guī)推薦系統(tǒng)的目的是學習用戶的靜態(tài)偏好,靜態(tài)偏好主要通過統(tǒng)計獲得而且更新緩慢。基于因子分解的協(xié)同過濾系統(tǒng)[1]就是這個領域中較有影響力的算法。但是常規(guī)推薦系統(tǒng)無法捕獲到用戶的興趣變化,現(xiàn)階段用戶行為偏好具有內(nèi)在的可變性,在一定時間段內(nèi)會受到多種因素變化的影響,例如需求的變化、興趣的變化等。相比于常規(guī)推薦系統(tǒng),序列推薦系統(tǒng)可以建模用戶的交互序列,捕獲到用戶興趣的動態(tài)變化,已經(jīng)成為推薦系統(tǒng)研究領域的熱點方向。
在序列推薦系統(tǒng)的建模階段,循環(huán)神經(jīng)網(wǎng)絡(recurrent neural network, RNN)及其變種網(wǎng)絡占有主流地位[2],但是RNN在對用戶序列建模過程中依賴于過去的隱藏狀態(tài),無法對網(wǎng)絡進行并行運算,所以建模速度是RNN網(wǎng)絡的劣勢。與RNN相比,時間卷積網(wǎng)絡[3](temporal convolutional network, TCN)不依賴于整個過去的隱藏狀態(tài),可以充分利用序列進行并行計算。因此,它在訓練效率和預測性能上相較于RNN有一定的優(yōu)勢。受時間卷積網(wǎng)絡在序列建模中有不錯表現(xiàn)的啟發(fā),本文將時間卷積網(wǎng)絡引入用戶近期序列建模,用于提高基于RNN的推薦系統(tǒng)的訓練效率與預測準確度。
用戶的長期偏好反映的是用戶較為固定的興趣,如一直喜歡某種類型的電影,用戶的近期偏好則反映的是最近的消費需求。盡管用戶的喜好隨時間動態(tài)變化[4-5],但是仍會存在一些長期穩(wěn)定的偏好影響用戶的行為?,F(xiàn)有方法傾向于將用戶的長期偏好與近期偏好相結(jié)合[6],但是2個方面簡單的結(jié)合是不夠的,因為過往的物品序列會隱含用戶的下一項選擇的傾向性,所以本文提出了一種基于注意力的融合方法來融合特定情境下用戶的長期偏好和近期偏好。例如,下一個交互項目在上一個交互項目之后較短時間發(fā)生,則近期的用戶交互可能在預測中起主要作用,否則,應該將更多的權(quán)重分配到用戶的長期偏好。
基于以上表述,本文提出了一種基于混合神經(jīng)網(wǎng)絡模型的序列推薦算法,命名為HNNRec。本文的貢獻主要有以下2點。
1)與先前大部分基于RNN的模型不同,本文在用戶的近期偏好建模過程中,將自然語言處理中的時間卷積網(wǎng)絡引入到推薦系統(tǒng),對用戶的近期偏好進行建模以提高推薦的效率與準確度。
2)本文模型在考慮用戶近期偏好與長期偏好的基礎上進一步動態(tài)融合了用戶2個階段的偏好,提高了推薦的性能。
最后,本文在公共數(shù)據(jù)集MovieLens10M與LastFM上進行了實驗,結(jié)果也證明了模型的有效性。
在序列推薦的早期階段,主要依靠馬爾科夫鏈[7]和基于特征的矩陣分解[8-9]方法。與深度學習方法相比,馬爾可夫鏈存在無法對復雜數(shù)據(jù)建模等缺陷。文獻Caser[10]認為,馬爾可夫鏈方法無法對聯(lián)合級序列模式進行建模,而且也無法捕獲到用戶項目序列跳躍行為對于推薦結(jié)果的影響。而基于因數(shù)分解的方法雖然通過序列項矢量的總和對序列建模,但是沒有考慮到用戶交互序列順序?qū)τ谕扑]結(jié)果的影響。
與傳統(tǒng)的推薦模型相比,深度學習模型在捕捉用戶序列演變方面顯示出了自己的優(yōu)勢,例如RNN這類網(wǎng)絡模型在學習興趣演變,構(gòu)建基于會話的推薦系統(tǒng),下一項推薦等領域顯示出自己強大的功能。與基于RNN的推薦算法相比,基于卷積神經(jīng)網(wǎng)絡的推薦算法更具挑戰(zhàn)性。Tuan等[11]設計了一種3D CNN模型用于高維建模,證明了用戶序列與元素復雜特征相關聯(lián)時具有有效性;An等[12]將交互序列編碼為三維向量,并使用2D卷積濾波器學習局部的特征;Tang和Wang等[10]將水平與垂直2種CNN應用于推薦系統(tǒng),并且取得了不錯的效果,但是它分開學習了用戶與項目的嵌入,沒有捕獲到其中的交互信息,也沒有加入上下文信息。
在神經(jīng)網(wǎng)絡中,注意力機制[13]允許各部分在壓縮成單個表達式時以不同方式對最終的預測做出貢獻。在推薦算法中,注意力機制在算法模型中學習用戶交互序列中項目的不同權(quán)重,并且根據(jù)用戶的交互序列動態(tài)調(diào)整用戶的偏好預測[14]。Xiao等[15]介紹了基于深度學習的注意力機制,并提出了注意力因子分解機(attentional factorization machines,AFM)模型。AFM的重要思想是建立一個注意力網(wǎng)絡,并依據(jù)此網(wǎng)絡推導用戶評分列表中每個交互的相對重要程度。最近的一些研究也調(diào)查了其在推薦任務中的能力,比如將注意力機制與神經(jīng)網(wǎng)絡結(jié)合,彌補了傳統(tǒng)ItemCF預測準確度低的問題[16]。Wu等[17]提出了一種基于情景的注意力機制,提高了推薦的性能與可解釋性,但是并沒有對用戶進行顯式建模;Li等[18]基于注意力機制建模了會話中的連續(xù)偏好信息,彌補了傳統(tǒng)建模方式的不足。
本節(jié)對模型算法進行詳細介紹。第1部分是用戶交互項目嵌入;第2部分是對用戶交互序列建模,預測用戶偏好。HNNRec模型如圖1。
圖1 算法整體流程圖Fig.1 Overall flow chart of the algorithm
項目嵌入的目標是在項目序列中學習交互序列的相似度,生成項目的統(tǒng)一表示。推薦系統(tǒng)之前的項目嵌入是通過one-hot編碼,然而當面對大量的高維數(shù)據(jù)時,使用one-hot進行編碼會導致無法進行較好的優(yōu)化,在模型的基礎上再添加嵌入層又會對推薦模型的性能產(chǎn)生不小的損耗。針對上述問題,本文引入item2vec來進行項目的嵌入。本文使用E={e1,e2,e3,…,en-1,en}來表示用戶交互序列G={I1,I2,I3,…,In}的嵌入向量。
Item2vec的目標是最大化以下函數(shù)
(1)
(1)式中:L表示用戶交互序列的長度;xn表示序列中的項目;p(xm|xn)為softmax函數(shù),此函數(shù)定義為
(2)
(2)式中,wn與vn對應xn的目標和前后信息的潛在表示向量。(2)式訓練過程中存在復雜度較高的問題。為了降低梯度下降的復雜度,本文決定使用負采樣來代替,(2)式可轉(zhuǎn)化為
(3)
(4)
之后,本文通過訓練item2vec得到了目標項目的向量表示。在基于用戶的交互序列上,item2vec可以產(chǎn)生成K維統(tǒng)一向量,并且為計算項目相似度提供了條件。
本文將用戶的交互序列分為2個階段:①用戶的近期交互序列;②用戶的長期交互序列。
2.2.1 近期交互序列建模
受到時間卷積網(wǎng)絡的啟發(fā),針對用戶近期交互序列相較于長期交互序列變化頻繁,更需要推薦準確度與時間優(yōu)勢的情況,本文將時間卷積網(wǎng)絡引入到序列推薦系統(tǒng)之中進行用戶近期偏好建模。卷積建模如圖2。
圖2 卷積圖Fig.2 Convolution graph
面對序列問題,如果使用普通的CNN卷積模型會引起信息泄露,此過程借鑒因果卷積[19]的思想,當預測項目yt時,不允許卷積濾波器使用yt的信息。在模型中,主要抽象為根據(jù)x1…xt和y1…yt-1去預測yt,使得yt接近于實際值,通過以上方式解決普通卷積模型引起的信息泄露的問題。
為了獲得用戶序列項目之間更高級別的特征表示,常見的方法是增加模型中網(wǎng)絡的深度,但是會引起梯度消失等問題,這樣會使得模型的學習遇到困難。所以本文針對更深層的網(wǎng)絡引入了殘差學習[20],將多個模型中卷積層堆疊在一起作為一個塊,然后采用跳過連接方案,將前一層的特征信息傳遞到后一層。跳過連接方案允許顯式擬合殘差映射,從而維護了輸入信息。
殘差網(wǎng)絡結(jié)構(gòu)如圖3,將所需的映射表示為H(E),本文讓殘差塊適合F(E)=H(E)-E的另一個映射。按元素方式將所需的映射轉(zhuǎn)換為F(E)+E。優(yōu)化殘差映射F(E)比原始的未引用映射H(E)容易得多。
圖3 殘差結(jié)構(gòu)Fig.3 Residual structure
殘差塊包含的分支通過F的轉(zhuǎn)換,其輸出作為(5)式的輸入
o=σ(X+F(x))
(5)
通過以上對于用戶近期交互序列的分析,解決了近期偏好獲取的問題。
2.2.2 長期交互序列建模
與近期交互序列相比,用戶的長期交互序列都較為固定且更新緩慢,所以對時效性的要求較低。在所有基于RNN的模型中,推薦系統(tǒng)常使用長短期記憶網(wǎng)絡(long short-term memory,LSTM)[19]或門控制單元(gate recurrent unit, GRU)來進行用戶建模。在本文的數(shù)據(jù)集中,觀察到LSTM的表現(xiàn)略好于GRU,所以引入LSTM進行用戶長期偏好建模。建模過程中序列更新過程為
hk=g(xkW+hk-1U+b)
(6)
(6)式中:g是激活函數(shù);xk是最新的用戶操作;hk-1是最后一個隱藏狀態(tài)。(7)式—(11)式為用戶序列建模所涉及的結(jié)構(gòu)以及結(jié)構(gòu)的運算過程。
it=σ(Wixt+Uiht-1+bi)
(7)
ft=σ(Wfht-1+Ufht-1+bf)
(8)
Ct=ftct-1+ittanh(Wcht-1+Wcxt+bc)
(9)
Ot=σ(Woxt+Uoht-1+bo)
(10)
ht=ottanh(ct)
(11)
2.2.3 自適應融合階段
單純的設計用戶的偏好為近期偏好與長期偏好相加并不是一個好的思路,因為用戶的下一項推薦對于2種階段偏好存在一定程度的傾向。本節(jié)設計了一種方法來融合用戶的近期偏好與長期偏好。此方法中用戶偏好是否獲得更大的權(quán)重取決于當時的上下文。舉這樣一個例子,如果行為B在行為A不久之后發(fā)生,那么近期的偏好有大概率會提供更多的信息。基于注意力引出以下公式
(12)
(13)
(14)
(15)
本文將用戶的交互序列的嵌入作為網(wǎng)絡的輸入,通過網(wǎng)絡運算輸出K維的向量。在模型的整體學習階段使用均方誤差作為損失函數(shù),將此定義為
(16)
(16)式中:L代表用戶交互序列的大小;l代表分界長度;vt表示用戶的下一次交互的項目表示。在實驗中使用AdaGrad對于損失函數(shù)進行優(yōu)化。至此,本文已經(jīng)討論了HNNRec的完整階段。
在算法模型中,首先依據(jù)時間因素將數(shù)據(jù)集劃分為2個子數(shù)據(jù)集,再將處理之后的數(shù)據(jù)分別輸入到不同階段的網(wǎng)絡中學習各自階段的偏好,之后基于注意力機制對于各階段生成的預測進行動態(tài)融合,最后輸出推薦列表。
算法基于混合神經(jīng)網(wǎng)絡的序列推薦算法
輸入:數(shù)據(jù)集D。
輸出:Top-N推薦列表。
步驟1將數(shù)據(jù)集D依據(jù)時間分為2部分子數(shù)據(jù)集D1與D2,D1代表長期用戶序列數(shù)據(jù)集,D2代表近期用戶序列數(shù)據(jù)集;
步驟2數(shù)據(jù)集D通過item2vec訓練獲得用戶的全部項目向量E={e1,e2,e3,…,en-1,en};
步驟3將用戶的近期項目向量輸入到時間卷積神經(jīng)網(wǎng)絡之中,學習用戶的近期偏好,生成近期偏好預測;
步驟4將用戶的長期序列向量輸入到長短期記憶網(wǎng)絡當中,學習用戶的長期偏好,生成長期偏好預測;
步驟5引入注意力機制對于用戶的長期偏好和近期偏好進行動態(tài)融合,輸出用戶的最終偏好預測;
本節(jié)將會通過3項實驗來展示混合神經(jīng)網(wǎng)絡模型在下一項推薦中的優(yōu)勢:①在下一項推薦中將混合神經(jīng)網(wǎng)絡模型的推薦效果與現(xiàn)有的先進算法進行比較,以證明其在推薦領域有不錯的推薦效果;②對本文動態(tài)融合的參數(shù)進行分析,證明了設置動態(tài)參數(shù)的有效性;③對用戶的交互序列長度進行了分析,評估本模型與LSTM,Caser,TransRec算法在不同序列長度下的表現(xiàn),展現(xiàn)出混合神經(jīng)網(wǎng)絡推薦模型相較于其他深度模型在不同用戶交互序列上都有著一定的優(yōu)勢。最后,本文對算法的優(yōu)點與缺點進行了分析。
本文采用MovieLens10M與LastFM公開數(shù)據(jù)集作為這次實驗的數(shù)據(jù)集。MovieLens10M包含了72 000個用戶對10 000部電影的1 000萬個評級和100 000個標簽交互。平均交互長度在一百左右。LastFM是在線音樂系統(tǒng)last.fm收集的用戶信息,包含了951名用戶的83 382個交互,平均交互序列在90左右。
為了確保實驗的可靠性,在實驗之前,對數(shù)據(jù)集進行了下列預處理:①將交互數(shù)量小于5 的項目過濾掉;②對數(shù)據(jù)集采取隨機劃分的方法,將數(shù)據(jù)集的70%作訓練使用,30%作測試使用。本文將評分信息變?yōu)殡[式反饋信息,重點討論隱式反饋。
本文的實驗硬件為CPU Intel Core i7,16 GB 內(nèi)存,Nvidia 1060顯卡,軟件環(huán)境為 Windows10系統(tǒng),實驗編程語言為Python3,使用Keras框架構(gòu)建神經(jīng)網(wǎng)絡,訓練模型。
本文將傳統(tǒng)的推薦方法和基于深度學習模型的方法與本文提出的算法作對比,下面是基線方法的描述。
1)Item-based k-NN:此模型基于項目的相似度,為用戶推薦與歷史項目相似的Top-N個項目;
2)Exp.Dec. Item-based k-NN[21]:此模型通過將指數(shù)衰減分量加入item-KNN模型,來降低長時間間隔交互項目的權(quán)重;
3)Matrix Factorization (MF):矩陣分解模型,將大矩陣分解成小矩陣的乘積,解決了近鄰模型解決不了的問題;
4)Seq.Matrix Factorization[22]:在矩陣分解模型的基礎上加入用戶交互序列信息;
5)LSTM[23]:常規(guī)的LSTM模型,通過對交互序列的嵌入捕捉用戶偏好,獲得對于用戶推薦的預測;
6)Caser[10]:通過卷積神經(jīng)網(wǎng)絡模擬用戶的歷史交互,構(gòu)建靈活的序列模式來提高用戶個性化序列推薦的準確率;
7)TransRec[24]:該模型將嵌入思想應用于序列推薦之中,輸出的下一項推薦由用戶向量與用戶的最近交互向量決定。
在模型嵌入階段,item2vec的訓練過程中,將上下窗口大小設置為10,嵌入維度設置為300。在用戶序列建模過程將中Dropout率設置為0.1。
本推薦模型推薦項目數(shù)量不大,預測項目應處于候選列表的前列。所以選擇以下3個指標設為評估指標。
1)Precision:本次實驗選擇Precision作為評價本文算法的指標,Precision指標衡量了推薦系統(tǒng)的準確率;
2)Recall:在本次實驗中將召回率作為衡量推薦系統(tǒng)性能的指標之一,在本文中設定為是測試案例中前20個推薦項目中具有所需項目的比例;
3)MRR:本次實驗中將平均倒數(shù)排名作為實驗的指標之一,MRR指期望項目倒數(shù)排名的平均值。在本次實驗中將20設置為貢獻值。
3.5.1 推薦效果分析
對各算法的推薦性能做了對比。表1列出了所有方法的整體性能結(jié)果,這些結(jié)果清楚地表明HNNRec在序列推薦任務中獲得了不錯的準確性。
表1 本文算法與基線算法性能對比Tab.1 Performance comparison between this algorithm and the baseline algorithm
表1中將HNNRec算法與傳統(tǒng)推薦算法、推薦領域領先的推薦算法進行了比較。從表1中可見,加入時間卷積網(wǎng)絡對用戶的近期序列進行建模以及動態(tài)融合用戶的偏好后,算法的有效性較基線算法存在一定的提升,由此可見,本文算法在通過用戶交互序列捕捉興趣變化方面存在一定的優(yōu)勢。與基于向量嵌入翻譯空間的TransRec模型、基于CNN的Caser模型和基于RNN的LSTM模型相比,在Precision,MRR與Recall評價指標中都有著一定的提高。這歸功于在用戶的近期序列階段引入時間卷積網(wǎng)絡進行用戶建模,以及對用戶不同交互序列階段的動態(tài)融合。
3.5.2 動態(tài)融合的有效性
表2與表3分別展示了在不同數(shù)據(jù)集中參數(shù)φ的取值對推薦效果的影響。當φ=0時,表示僅考慮用戶的長期交互序列;當φ=1時,表示僅考慮用戶的近期交互序列;φ為固定值時,表示本文依據(jù)以往經(jīng)驗為每個階段搜索的較為合適的值;φ為動態(tài)融合代表本文的實驗思路。
從表2和表3中可以觀察到,在2個公共數(shù)據(jù)集上僅考慮近期交互序列總是比考慮長期偏好序列表現(xiàn)有優(yōu)勢,某些時候用戶2個階段的簡單組合甚至比只考慮近期交互序列表現(xiàn)還要遜色。因此,證明了動態(tài)融合機制的有效性與必要性。
表2 在MovieLens10M數(shù)據(jù)集上驗證融合 參數(shù)φ對推薦算法的影響Tab.2 Verify the effect of fusion parameters φ on the recommendation algorithm on the MovieLens10M dataset
表3 在LastFM數(shù)據(jù)集上驗證融合 參數(shù)φ對推薦算法的影響Tab.3 Verify the effect of fusion parameters φ on the recommendation algorithm on the LastFM dataset
為了進一步分析與證明參數(shù)φ的有效性,且對φ有直觀的效果展示,本文將用戶距離上一次的行為時間間隔作為自變量,并根據(jù)時間間隔的不同劃分自變量范圍,將φ作為因變量。如圖4,時間間隔劃分為4個級別,由短至長分別為一個小時、一天、一周、一個月。例如橫坐標為一小時意味著模型做出的預測結(jié)果是在目標用戶的最后交互行為最后一個小時內(nèi)產(chǎn)生的。圖4展示了此項實驗的結(jié)果,可以看到有一個明顯的趨勢,即長期交互序列產(chǎn)生的偏好隨時間間隔的增加而顯得愈加重要,這與本文模型的假設相符。
圖4 時間間隔對權(quán)重參數(shù)φ的影響Fig.4 Effect of time interval on parameter φ
3.5.3 用戶歷史交互序列長度分析
本文將HNNRec模型與LSTM,Caser與TransRec作對比,進一步分析推薦效果。用到的數(shù)據(jù)集平均交互長度為90—100,因此,將用到的數(shù)據(jù)劃分為3類:交互序列長度小于30,30—60,60以上的整數(shù)。此目的是衡量復雜的用戶歷史交互序列長度對HNNRec和其他深度模型的影響。
基于表1的數(shù)據(jù),可以觀察到在數(shù)據(jù)集MovieLens10M與LastFM中,隨著歷史記錄長度的增加,本文提出的HNNRec在Recall上有著不錯的改進,不僅如此,還可以發(fā)現(xiàn)HNNRec與另外3種序列建模模型都隨著交互序列長度的增加而有所改進。在其余的3種模型中,LSTM隨著交互序列的加長,性能的增幅逐漸減弱,Caser與TransRec在30—60和60以上的性能提高較HNNRec有所減弱,顯示出了HNNRec在不同交互長度下性能的魯棒性。由此可得,用戶交互的時間長度確實會對推薦系統(tǒng)的性能產(chǎn)生影響,也清楚地證明了在面對不同長度的交互序列時,通過動態(tài)融合用戶的不同階段偏好,可以提高算法的魯棒性和推薦準確度,從而使得本模型在不同序列下都有著較好的表現(xiàn)。
圖5—圖7直觀展示了4種推薦算法在MovieLens10M上的推薦效果。
圖5 不同長度的用戶交互序列在MRR的表現(xiàn)Fig.5 Performance of user interaction sequences of different lengths in MRR
圖6 不同長度的用戶交互序列在Recall的表現(xiàn)Fig.6 Performance of user interaction sequences of different lengths in Recall
圖7 不同長度的用戶交互序列在Precision的表現(xiàn)Fig.7 Performance of user interaction sequences of different lengths in Precision
本文提出一種基于混合神經(jīng)網(wǎng)絡的序列推薦算法。由上文的多項實驗對比可知,本文算法具有較高的推薦準確性,面對不同長度的用戶交互序列也有著較強的魯棒性。較高的推薦準確性得益于時間卷積網(wǎng)絡思想的合理引入,但是這也會導致在訓練時需要更強的硬件條件。
本文提出了一種新穎的HNNRec模型。該模型基于用戶的近期偏好與長期偏好建模,引入了時間卷積網(wǎng)絡對用戶項目序列進行建模,提高了推薦準確度,同時觀察到用戶的行為序列比其他領域序列遇到問題的復雜度更高,因此,進一步提出基于注意力的用戶偏好動態(tài)融合方法,根據(jù)不同條件自適應地融合用戶的長期偏好和近期偏好。本文在公共數(shù)據(jù)集上進行的實驗證明了提出的模型具有有效性。在將來,模型的冷啟動與模型效率的改進將是下一步探索的方向。