孫磊磊,張宇翔,肖春景
(中國民航大學 計算機科學與技術學院,天津 300300)
個性化推薦系統的目標是從用戶的歷史交互數據中挖掘用戶的興趣,并向用戶推薦最合適的項目。目前矩陣分解及其變體得到了廣泛的應用,但是這些方法并沒有明確考慮用戶的興趣偏好以及與項目特征屬性的時序動態性。比如用戶的興趣和電影的受歡迎度是隨著時間不斷變化的。
時序推薦算法采用相應的序列處理技術(比如馬爾科夫鏈、循環神經網絡和注意力機制等)從用戶的近期交互記錄中挖掘用戶短期的興趣偏好。然而這類算法忽略了項目的特征也是隨著交互而不斷變化,即用戶的興趣和項目的屬性是協同演進的。時序點過程有效地解決了用戶和項目協同進化問題,但參數假設過多,違背了實際情況。近年來人們采用循環神經網絡(RNN或者LSTM)分別表征用戶以及項目的特征演進過程,但由于模型在每個時刻輸入的信息太過單一,忽略了交互序列中項目之間的語義關系;其次由于參數共享,導致演進過程中的信息丟失,因此無法有效學習到用戶以及項目的時序特征。
為解決上述協同演進過程中存在的問題,本文提出了基于自注意力的協同演進推薦模型(BSFRNN)。模型通過融合了自注意力機制提取的序列語義特征和基于RNN模型提取的時序特征有效解決了信息丟失和語義信息無法獲取的問題。其次使用矩陣分解挖掘用戶以及項目中長期不變的特征屬性。將長短期特征進行融合得到用戶以及項目當前時刻的隱向量。在預測層,使用多層感知機學習用戶與項目的交互過程。
矩陣分解方法是根據評分矩陣學習到兩個低維的用戶和項目的隱特征矩陣,最后通過內積的方式實現對未知項目的評分預測,但是當歷史交互數據稀疏時,就會導致推薦的準確度降低。He等[1]使用多層感知機為矩陣分解引入了非線性的建模能力,一定程度上解決了冷啟動的問題。然而這些傳統的推薦算法將有序的交互數據獨立處理,導致不能反映用戶以及項目的時序動態性。
為使得用戶以及項目特征屬性隨著時間不斷變化,文獻[2]引入了時序矩陣分解的方法,旨在使用用戶的歷史交互數據預測用戶的未來行為。文獻[3,4]使用RNN模擬用戶近期的一般偏好,然后與一般的興趣偏好進行有效的融合。Wang等[5]使用分層表示模型將用戶序列行為表示的短期偏好與用戶的一般偏好進行融合;特別的,Tang等[6]提出一個卷積序列向量推薦模型(Caser),模型使用卷積過濾器提取序列的時序信息,并與隱因子模型(LFM)挖掘的一般偏好進行融合,進而完成top-N的推薦。Zhang等[7]提出基于自注意力的度量學習模型(AttRec),模型通過自注意力模塊提取用戶交互序列中的時序信息作為用戶近期的興趣偏好,為避免內積產生的排序損失使用度量分解模擬用戶長期的興趣偏好。Kang等[8]提出SASRec模型,可以適應性的為用戶交互歷史分配不同的權重以預測用戶的下一個行為。
上述推薦算法,片面的認為僅僅用戶的興趣滿足時序動態性,而項目的特征屬性是靜態不變的。事實上,描述用戶以及項目的特征屬性是隨著交互事件的發生而不斷演進或者協同演進的。Wang等[9]使用時序點過程來學習用戶以及項目的協同演進過程,但是方法中做了過多的參數假設,這些假設嚴重違背了實際。Dai等[10]提出了深層協同演進的推薦模型(Deep-Coevolve),該模型通過RNN模擬時序演進過程且重新定義了點過程的強度函數,有效提高了推薦準確性。Trivedi等[11]將這類思想應用于知識圖譜,在之前的基礎上融合了多種信息,解決了未來行為預測的任務。Chao等[12]在修正LSTM的輸入的基礎上,融合了一般矩陣分解模擬的靜態特征。文獻[13]提出LSIC-V4模型,模型在神經對抗的框架下,將RNN提取的特征與MF模擬的靜態特征進行不同程度的融合,一定程度上增加了推薦的準確性。這些方法均采用RNN學習用戶以及項目的時序動態性。但當仔細分析RNN的輸入時,可以發現RNN的輸入是順序輸入的,并沒有考慮序列中項目之間的交互影響,這類影響(本文稱為語義信息)對未來行為的預測是同樣重要的。而基于self-attention的模型通過多頭注意力機制可以有效獲取序列的語義信息,但文獻[14]通過實驗表明self-attention能夠用其高效的堆棧多頭注意力機制有效獲取語義特征,但提取長序列的信息時卻弱于RNN。
本文提出的自注意力的協同演進推薦模型與上述協同演進方法所不同的是模型融合了自注意力提取的序列語義特征與RNN提取的時序演進特征,有效解決了單一模型導致的信息獲取不完整的問題。其次,本文在RNN的輸入端將用戶當前時刻的近期交互序列作為輸入,避免因參數共享而導致信息丟失。
BSFRNN模型的框架,如圖1所示。訓練數據輸入到模型之前,先根據交互對應的時間粒度分別提取用戶以及項目近期的交互序列。模型可以分為用戶和項目兩個模塊,兩個模塊是對稱的,所不同的是項目的特征表現變化相對慢,因此每個時間粒度相隔時間較長。在每個模塊中,將序列embedding化并分別輸入LSTM以及自注意力機制中提取對應的時序信息,為了準確預測當前時刻用戶以及項目的特征表現,模型將LSTM學習的和自注意力機制提取的特征進行融合。最后,將融合的特征按對應元素相乘并與矩陣分解表征的靜態特征共同輸入到MLP進行預測交互發生的可能性。

圖1 t時刻行為預測
假設U={u1,u2,…,uM}表示用戶的集合,I={v1,v2,…,vN}表示項目集合,這里M和N分別表示用戶以及項目個數。根據交互數據可以構建一個稀疏的用戶-項目評分矩陣R,其中的Ru,v,t表示在時間t用戶u對項目v的評分,評分值越高表示用戶越喜歡該項目,不同于評分預測的任務,BSFRNN根據隱反饋數據向用戶提供一個排序列表(top-N推薦)。


圖2 用戶以及項目時序演進
從圖2中可以看出,用戶的特征向量直接影響與之交互的項目的隱特征,而修正的項目特征向量會影響與之交互的未來的用戶向量。因此可以看出這種協同演進的過程是事件驅動的。

2.2.1 循環神經網絡
基于RNN的模型主要用于從交互序列中提取用戶或項目近期的隱特征,進而預測用戶的下一次交互并向用戶提供一個排序列表。特別的,這里使用RNN的變體LSTM獲取用戶以及項目交互序列中的時序信息。每個LSTM單元中是由記憶單元ct,輸入門it,遺忘門ft和輸出門ot組成。其中ft,it和ot是由過去的隱向量ht-1和當前時刻的輸入所計算的,這里每個門所對應的權重參數和偏置不同,在這里使用W和b進行統一表示
[ft,it,ot]=σ(W[et,ht-1]+b)
(1)
其中,最為重要的貫穿交互始終的細胞狀態ct(這里也叫記憶單元)通過LSTM中特殊的門結構有選擇地記憶和遺忘
ct=ft⊙ct-1+it⊙tanh(V[et,ht-1]+bc)
(2)
一旦這些狀態更新,t時刻的隱狀態也就可以得到
ht=ot⊙tanh(ct)
(3)
其中,σ表示激活函數,如sigmoid和tanh。因此t時刻用戶以及項目的更新函數可以表示為
(4)
(5)

2.2.2 注意力機制
在循環模型中,序列的信息需要遞歸的獲取,以往采用雙向的RNN可以更好挖掘序列信息,但忽略了序列中任意兩個項目之間的交互影響(也可以叫語義信息),這種交互影響對理解用戶以及項目細粒度特征是至關重要的。然而這種語義特征可以使用self-attention更好地提取。但一般的自注意力機制對序列中項目的順序不敏感,僅是詞袋模型。然而對時間序列的模型而言,順序是一個很重要的信息,因此本文將從輸入的序列向量中學習序列的位置向量
P2i(p)=sin(p/100002i/D)
(6)
P2i+1(p)= cos(p/100002i/D)
(7)
其中,D是向量的維度,p是當前項目在序列中的位置索引,Pi就是序列中的位置向量。然后將提取的位置向量與用戶(項目)的序列向量進行拼接
(8)
(9)

(10)
這里Zt∈RD作為自注意力機制的輸出,認為是用戶以及項目的近期特征,彌補RNN的不足之處。
為將LSTM和自注意力機制提取的特征信息能夠有效的融合,本文嘗試使用特征相加,對應元素相乘以及向量的直接拼接。在這些方式中,時序特征信息的拼接得到了更好的效果。可能的原因是其它的融合方式導致了隱特征中關鍵信息弱化,因而不能準確描述當前時刻用戶和項目的狀態。由此可知,用戶以及項目t時刻的狀態可以表示為
(11)
(12)


(13)


(14)
這里的Y表示明確交互的數據集,Y-是負采樣本中的交互數據集,θ代表了模型的參數。模型參數使用Adam不斷優化,這樣可以使模型更快的收斂。
為驗證本文提出模型的有效性,本文使用Movie-len100K公開數據集驗證,包括943個用戶,1682個項目,共100 000條有效評論數據,時間區間是1997年9月到1998年4月。在數據處理中,首先將數據集中明確的評分轉化為隱反饋。其次,類似文獻[7]將數據集中用戶以及項目少于10次交互記錄進行合理的過濾。最終,用戶數943,項目1152個,有效的交互數據有97 953條。其中,每個用戶最后一次交互的記錄作為測試集,其余數據作為訓練集。
對每個用戶排序預測并排序所有的項目是相當耗時的,因此本文隨機樣本化50個用戶未交互的項目,將測試數據與這50個樣本共同參與排序。用戶及項目的向量維度,使用均勻分布隨機初始化。就用戶以及項目時序特征表現的敏感性而言,用戶的興趣偏好更容易發生變化,而項目的特征演進相對緩慢。因而將每個交互記錄按照發生時間的先后順序將相關的用戶以及項目劃分到不同的時間粒度中,本文將用戶以7天為一個時間粒度,項目以30天為一個時間粒度對當前的交互記錄進行標識。針對特定時間的交互,根據用戶此時的時間粒度來獲取用戶近期的交互序列,根據項目標識的時間粒度來獲取項目近期的交互序列。
對本文提出的模型而言,使用均值為0,方差為0.01的高斯分布隨機初始化模型的參數,模型的優化使用了Adam。為評估本文提出模型的性能,本文使用命中率(HR)和標準化折扣累積增益(NDCG)來評估推薦模型的表現力。HR明確表示測試項目是否出現在推薦列表中,NDCG用來計算命中項目在推薦列表中的位置。
為了評估本文提出的推薦模型的有效性,將其與以下相關的推薦算法進行對比:
(1)貝葉斯個性化排序推薦模型(BPRMF)。采用BPR-Opt優化準則優化推薦列表。
(2)NeuMF。模型融合了多層感知機以及矩陣分解來學習用戶以及項目得隱特征,并使用多層感知機替代內積過程。
(3)Caser。模型使用分層的以及垂直的卷積神經網絡挖掘歷史交互。
(4)循環推薦模型(RRN)。通過簡單的特征融合方法融合了矩陣分解以及LSTM模擬用戶以及項目的協同演進過程。
(5)注意力推薦模型(AttRec)。模型采用自注意力機制以及度量學習共同完成推薦任務。
在這些基礎的算法中,BPRMF是基于傳統的推薦模型。Caser、RRN和NeuMF是基于神經網絡中不同網絡結構的推薦算法。其中Caser是基于CNN來提取序列中的行為特征,RRN是使用LSTM獲取時序特征來模擬用戶以及項目的協同演進過程的,最后的AttRec模型是通過自注意力來模擬用戶近期的行為表現。
模型中序列的長度l以及用戶和項目的維度D對推薦的結果是有影響的,因此,本節首先對l和D的取值對模型的影響進行實驗驗證,在取得最優的推薦結果的基礎上,與其它相關的算法進行對比。
3.4.1 序列長度l的影響
為了衡量l對模型的影響,本文將l取值為1,2,3,…9進行評估,為了消除維度對推薦結果的影響,將用戶以及項目的隱向量維度分別取50、100和150進行實驗,實驗結果如圖3和圖4所示。從圖3和圖4可以看出隨著序列長度的增加一定程度上會提高推薦的命中率,但是推薦的效果不是一直呈現上升的趨勢,而是一個波動的過程。當l=8時推薦的命中率以及累計的增益總體上是最大的,當l<8時,推薦的評估指標將呈現下降趨勢,主要是因為數據比較稀疏的緣故,如果將每個用戶以及項目的總的交互個數提高,將會導致訓練樣本減少。

圖3 不同序列長度l以及維度D取值對HR的影響

圖4 不同序列長度l和維度D取值對NDCG的影響
3.4.2 維度大小的影響
圖3和圖4也展示了隱向量維度對推薦結果的影響,本文將D取值50、100和150進行實驗,理論上增加隱向量的維度將會提高推薦的準確度,但是從圖3和圖4可以發現并不完全符合理論,只是在總得趨勢上有一定的增長。可以看出,序列長度為8維度150時,評估指標達到了最大值,可見增加維度一定程度能夠提高推薦的準確度,但也不能過大,過大將會使得模型出現過擬合的問題。
3.4.3 不同模型特征提取能力的對比
BSFRNN融合了LSTM提取的時序特征以及自注意力機制提取的語義特征。為了說明這兩種信息對推薦結果的影響,給出兩種BSFRNN模型變體BSFRNN-RNN和BSFRNN-SF,實驗結果見表1。

表1 Movielen100K推薦性能評估
(1)沒有自注意力機制的LSTM模型(BSFRNN-RNN)。僅僅使用循環神經網絡描述用戶以及項目近期的特征表現。
(2)沒有RNN的自注意力機制(BSFRNN-SF)。使用自注意力機制描述用戶以及項目的協同演進過程。
從表1中看出BSFRNN得到了更好的推薦效果,這說明將LSTM以及自注意力機制提取的序列特征進行融合是有效的。
表1中BSFRNN-SF的評估結果比BSFRNN-RNN相對好一些,主要原因是自注意力機制能夠更加準確地挖掘到用戶以及項目的時序隱特征。這并不能代表BSFRNN-RNN提取序列信息的能力就完全落后于BSFRNN-SF,從表1中BSFRNN模型的顯示結果中可以看出,BSFRNN-RNN對進一步提升推薦的準確度有大的幫助,這就說明了BSFRNN-SF提取的序列信息并不完全包括BSFRNN-RNN提取的序列信息。
3.4.4 不同推薦算法的性能對比
表2列出了BSFRNN與其它推薦模型在top-N=5和top-N=10的推薦對比結果。從表2中可以看出BSFRNN在評估指標NDCG的取值上達到了最好的結果,也就表示BSFRNN預測用戶的下一次行為的準確性更高,可將真實發生的交互項目排在推薦列表更靠前的位置。BSFRNN的高效性得益于融合了動態的和靜態的特征表現,同時在學習用戶以及項目動態特征表現時,精確挖掘和學習了交互序列中的時序特征和語義信息,有效提高了預測用戶下一次行為的準確性。從表2可知盡管RRN在top-N=5時,HR比BPRMF相對更高些,但是NDCG的評估效果卻低于BPRMF接近6%,原因是盡管RRN考慮了時間以及評分對特征動態性的影響,但是預測用戶下一次行為時僅涉及前一次行為涉及的項目(用戶),因此這種近期的交互之間的影響并不能有效獲取到,其次模型參數共享的問題會導致一定信息的丟失。Caser相比于BSFRNN推薦結果不好的原因在于卷積神經網絡在長序列問題上不如RNN,同時也在于本身序列語義信息提取能力不如自注意力機制。NeuMF雖然比BPRMF在top-N=5時的推薦效果好,但是并不是學習用戶以及項目特征的時序動態性,因而其標準化折扣累積增益(NDCG)要比BPRMF低6.8%。從表2可知, AttRec的推薦效果要低于BPRMF,原因是僅使用自注意力機制提取了序列中用戶的近期興趣偏好,盡管融合了度量學習模擬的長期特征,但是卻忽略了項目特征的動態性。從表2可知BSFRNN的推薦性能要明顯高于BPRMF,主要原因是該模型是從矩陣分解角度完成推薦,然后使用BPR-Opt優化準則優化推薦列表,完全忽略了用戶以及項目的時序動態性,因而推薦效果不明顯。

表2 不同推薦模型的性能評估
本文提出基于自注意力的協同演進推薦模型,模型使用兩個LSTM分別表征用戶以及項目的時序演進過程,其次,使用自注意力機制挖掘交互序列中的語義信息,并將其獲取的語義信息有效融合到LSTM模擬的時序演進過程中。最后經上述實驗驗證,本文提出的BSFRNN能有效從用戶和項目的時序演進過程學習到用戶以及項目的時序動態性,并能準確預測用戶的下一次交互。
本文提出的推薦模型經過在公開數據集上的驗證,獲得了較高的推薦準確性,但忽略了數據集中的輔助信息,比如評分、評論以及用戶的社會關系等,這些信息將有助于準確描述用戶以及項目屬性。因而下一步工作將充分利用數據集中的數據,改善數據稀疏的問題并提高推薦的性能。