陳細玉,林 穗
(廣東工業大學 計算機學院,廣東 廣州 510006)
協同過濾(Collaborative Filtering,CF)[1],分為基于用戶的協同過濾(UBCF)、基于項目的協同過濾(IBCF)和基于模型的協同過濾。基于用戶的協同過濾是根據用戶的歷史行為計算出用戶之間的相似度,將相似度高的用戶的歷史項目推薦給該用戶;基于項目的協同過濾是計算項目之間的相似度,推薦與該用戶歷史項目相似度高且歷史行為中沒有的項目。基于模型的協同過濾如矩陣分解(Matrix Factorization,MF)[2]通過用戶和項目的低維特征向量預測評分進行推薦;EBESU T[3]等人提出協同記憶網絡,使用記憶網絡學習用戶-項目對的特定鄰居,用戶和項目記憶共同利用鄰居來產生排名分數。這些模型通常對靜態的用戶和項目交互進行建模,所表示的用戶偏好是靜態的。
但在現實生活中,用戶的歷史行為是動態的,人們的興趣是隨著時間變化的。早先的基于馬爾科夫鏈的序列推薦[4]將項目之間的轉移矩陣分解為兩個低秩矩陣,此序列推薦取得了良好的效果,然而k階馬爾科夫鏈只能根據有限的前k個行為預測下一個行為。近年來基于循環神經網絡(Recurrent Neural Network,RNN)的序列推薦能夠依賴更多用戶歷史行為。FU H等人[5]使用雙向長短期記憶網絡(Bi-LSTM)捕獲項目的序列特征,取得了更好的推薦效果。下一個項目的預測并不取決于用戶所有的歷史項目,只與部分有關聯,且對當前的預測影響是不一致的。LUO A等人[6]提出了自適應注意感知門控循環單元(3AGRU),采用注意力機制來適應用戶順序偏好的表示。LV F等人[7]提出了一種新的順序深度匹配(SDM)模型,使用門控融合模塊結合長期和短期偏好特征,來獲取用戶的動態偏好。LIN X等人[8]將K最近鄰算法(K-Nearest Neighbor,KNN)與RNN相結合,利用動態鄰居序列優化用戶序列表示。
item2vec[9]是BARKAN O等人借鑒自然語言處理中的Word2vec詞向量表示方法,學習項目的向量表示并計算項目的相似度進行推薦。
RNN存在長距離依賴問題,且項目之間的影響主要取決于相對位置而不是項目的屬性。LSTM增加遺忘門和更新門優化了長距離依賴問題,但仍舊沒有徹底解決。注意力機制能從全局模式上既解決長距離依賴問題,又能解決序列中各項目的區分度差問題。實際生活中,短期偏好的用戶會向資深固定偏好的用戶靠攏,興趣變化也會向這些用戶的興趣發展。
由此提出融合注意力和記憶網絡的序列推薦算法,使用Word2vec學習并初始化用戶和項目的固定表示,自注意力機制結合LSTM解決長距離依賴和區分度問題,學習用戶的初級動態表示,并利用記憶網絡獲取動態鄰居學習用戶的終級動態表示,拼接固定表示和終級動態表示作為用戶最終表示并進行推薦,提高用戶的推薦效果并體現出可解釋性。
MIKOLOV T等人[10]提出了兩種用于訓練詞向量表示的模型,分別是Continuous Bag-of-Words和Continuous Skip-gram。前者是基于上下文來預測當前單詞,后者是預測當前單詞的一定范圍內上下文單詞。后續此作者[11]使用分層softmax、負采樣和頻繁詞的子抽樣對Skip-gram模型進行擴展,提高了模型的訓練速度和詞表示的準確度,廣泛應用于問答系統和文本摘要等領域。
注意力機制的提出借鑒于人類的特性,人們在觀察或思考時會注意特定的東西而忽略其他無關的。廣泛應用在圖像處理、自然語言處理,而后也有應用于推薦。VASWANI A等人[12]提出完全基于注意力機制的Transformer模型,在機器翻譯上取得了良好的效果。神經網絡擁有黑盒特性,結合注意力機制能夠有效地提高其可解釋性。
記憶網絡[13]是Facebook成員WESTON J等人提出的一種新模型,主要針對RNN記憶太小不能完成需要長期記憶的任務,能夠對大量的記憶進行讀取和更新,缺點是需要監督。而后SUKHBAATAR S等人[14]在這基礎上進行了改進,利用軟關注機制使其能夠端到端地訓練,減少了訓練時的監督,是一種新穎的具有注意力機制的循環神經網絡。

(1)
式中ei和ej是項目標簽向量,hj是項目j的瀏覽用戶數目。使用以上方法學習到的向量作為用戶嵌入矩陣和項目嵌入矩陣的初始化。
首先使用自注意力機制和長短期記憶網絡學習用戶的初級動態表示。然后使用記憶網絡存儲所有用戶的固定表示,某一用戶的動態表示作為查詢,自適應注意鄰居,學習用戶的終級動態表示。

X′u=Xu+PE(Xu)
(2)
式中位置嵌入矩陣PE的第po行第i列表示為:
PE(po,2i)=sin(po/10 0002i/em)
(3)
PE(po,2i+1)=cos(po/10 0002i/em)
(4)
式中,em為位置嵌入矩陣PE的維度。

(5)
其中注意力計算公式如下所示:
Attention(Q,K,V)=
(6)
式中WQ,bQ,WK,bK,WV,bV為全連接參數矩陣。
將新的序列輸入表示輸入到LSTM模型中,得到每個用戶的初級動態表示,公式如下:
(7)
使用單跳記憶網絡,將所有用戶的固定表示存儲在記憶模塊中,每個用戶的初級動態表示作為查詢,獲取用戶的終級動態表示,將原記憶網絡中的點積注意力改為Transformer模型中的注意力,值得注意的是用戶的兩個嵌入矩陣依舊按照記憶網絡中設置為不同的,即K≠V。Q為用戶的初級動態表示。公式如下所示:

(8)
其中A,C為所有用戶的固定表示嵌入矩陣。
拼接用戶固定表示和用戶終級動態表示作為用戶最終表示:
(9)
對用戶推薦項目時,計算用戶u與項目i的得分:
zu,v=YuTDv+b
(10)
其中D為項目固定表示嵌入矩陣,推薦得分高的項目。
使用100 K的MovieLens數據集,用戶數943,項目數1 682,評論數100 000。
本次實驗將數據集中每個用戶的歷史項目按照時間從前往后排序,每個用戶的最后一個項目組成測試集,倒數第二個項目組成驗證集,剩下的項目按照一定長度切割成多個樣本組成訓練集。
使用TensorFlow深度學習框架,python 3.5 編程語言。訓練迭代次數為30;每個用戶輸入序列長度為5;批量大小為256;學習率為0.002,衰減速度為400,衰減系數為0.98,并限制最小值為0.000 05;嵌入矩陣A、B、C和LSTM單元輸出維度均為100,嵌入矩陣D維度為200;LSTM單元激活函數為tanh;梯度裁剪的二范式約束值為8;dropout層丟失率均為0.5;使用交叉熵損失函數,Adam優化器進行訓練,學習嵌入矩陣A、B、C、D、b,所有嵌入矩陣的初始化均使用skip-gram學習的向量。
實驗采用主流的序列推薦評價指標命中率(Hit ratio,HR),平均倒數排名(mean reciprocal rank,MRR)和歸一化折損累計增益(normalized discounted cumulative gain,NDCG)。HR是一種常用的衡量召回率的指標,其定義如下式所示:
(11)
其中分子是每個用戶前K個推薦項目中屬于測試集合的個數的總和,分母是所有用戶的測試集合項目總數。
MRR是用于對搜索算法進行評價的指標,現也用于評價推薦系統的效果,公式如下:
(12)
其中,rau是用戶u推薦列表中第一個屬于測試集的項目的排序位置,|U|是所有待評價的用戶個數。
NDCG是常用的信息檢索指標,基本思想是:返回列表中,與查詢文檔相關性越強的文檔排名越靠前。近來已經被廣泛應用于推薦系統的評價指標。其定義如下:
(13)
DCG是折損累計增益,k是推薦項目的排序位置,rek是排序為k的推薦項目的相關性等級。在本文中,如果用戶u的第k個推薦項目屬于測試集合,則rek=1,否則rek=0。
(14)
其中IDCGu是最理想的推薦列表,即所有項目都按照用戶的喜愛程度排序的DCGu值,本文中使用用戶u的測試集項目排序計算此值。NDCG是所有待評估用戶NDCGu值的平均值。
為了驗證本文提出的融合注意力和記憶網絡的序列推薦算法(AM-LSTM),將選用3種算法來進行對比實驗。
FPMC[4]:結合矩陣分解和馬爾科夫鏈,為每個用戶建立基于馬爾科夫鏈的項目-項目轉移概率矩陣,學習用戶-項目偏好和建模用戶順序行為,通過線性方式將它們組合起來,用于下一個籃子推薦。
Caser[15]:將用戶序列嵌入到時間和潛在空間的“圖像”中,并使用水平和垂直卷積濾波器學習點級、聯合級和跳躍行為的序列模式,捕獲用戶一般偏好和順序模式。
GRU4Rec[16]:利用RNN對基于會話的序列進行建模,并使用基于排名的損失函數訓練模型。
嵌入矩陣維度大小對HR@50的影響實驗結果如圖1所示,對MRR@50的影響實驗結果如圖2所示。隨著維度的增大,本文算法AM-LSTM的HR逐漸升高;FPMC和Caser的HR均隨著維度增大而升高,在維度為100時達到頂峰,而后顯著降低。AM-LSTM和Caser的MRR均在維度為75時達到峰值,而GRU4Rec跌到最低。模型的嵌入矩陣維度越大,更能表達用戶和項目之間的關系,模型更加擬合,推薦效果也更好。但當矩陣維度增大到一定程度時,對訓練集中用戶和項目的關系表達太過細致,使得模型過擬合,且訓練時間更長,推薦效果變差。在此后的實驗中,將嵌入矩陣維度設為100。

圖1 嵌入矩陣維度大小對HR@50的影響

圖2 嵌入矩陣維度大小對MRR@50的影響
表1顯示了4種算法在嵌入矩陣維度為100,推薦項目個數為50時的HR、MRR、NDCG,4種算法的3種評價指標高低趨勢是一致的,從指標低到高的算法依次是GRU4Rec、FPMC、Caser、AM-LSTM。指標越高說明效果越好。本文提出的算法AM-LSTM相比較GRU4Rec,在HR上提高了13.98%,在MRR上提高了21.38%,在NDCG上提高了17.02%。實驗結果表明,加入注意力機制和記憶網絡能顯著提高推薦的效果。

表1 4種算法的HR@50、MRR@50和NDCG@50比較
本文針對傳統推薦系統無法很好地表示用戶動態興趣的演變,基于循環神經網絡的推薦算法存在長距離依賴性差、區分度差、可解釋性差的問題,提出融合注意力和記憶網絡的序列推薦算法,本文先介紹了傳統推薦算法和序列推薦算法,重點介紹基于循環神經網絡序列推薦算法的現狀,然后介紹了Word2vec、注意力機制和記憶網絡。提出融合注意力和記憶網絡的序列推薦算法,使用Word2vec能更好地表示用戶和項目潛在特征,加快收斂速度;使用自注意力機制解決用戶序列的長距離依賴性差和區分度差問題;使用記憶網絡獲得用戶的動態鄰居,更準確地表示用戶的動態興趣。最后實驗結果表明此算法提高了推薦的準確度,同時也增強了可解釋性。
但是,本文的算法還有不足的地方,在使用item2vec學習項目向量表示時,少數項目不在訓練集中,即冷啟動項目,直接從MovieLens數據集中獲取項目的標簽,添加相同標簽的項目來學習這些項目。對于沒有標簽的項目,還需進一步處理才能適用,可以從項目名稱和內容描述中提取特征。現實生活中存在大量冷項目,以及RNN的輸入序列是在時間軸上位置相鄰,沒有考慮兩項目之間時間間隔的影響。今后將在這些方面展開研究。