楊 希, 何月順, 王同罕
(東華理工大學 信息工程學院, 南昌 330013)
隨著互聯網技術的高速發展,各類信息數據呈現爆炸式增長的趨勢,“信息過載”導致用戶很難從互聯網準確獲取到感興趣的資源。推薦系統作為滿足用戶的個性化需求,使用戶能夠快速有效地獲取信息的重要工具,近年來被廣泛應用于電影視頻、音樂推薦、新聞推送及電子商務等領域。
協同過濾(Collaborative Filtering,CF)是推薦系統中應用最成功和最廣泛的算法之一[1],其核心思想是利用與目標用戶興趣偏好相同的用戶群體的喜好情況來實現推薦[2]。在不同類型的協同過濾算法中,矩陣分解(Matrix factorization,MF)因其簡單有效的特性而被廣泛采用。傳統的矩陣分解及其改進方法大多是基于淺層的模型,由于系統中用戶和項目的數量非常大,而每個用戶只與少數項目有交互,模型的推薦準確性受到稀疏的評分矩陣影響。
近年來,很多學者將深度學習與傳統的推薦算法相結合,利用深度神經網絡提取高層特征、融合多源信息的優勢,改善傳統算法的推薦性能。Suvash等構建基于自動編碼器的推薦模型AutoRec,對輸入的用戶或項目向量進行重構,最小化重構誤差實現模型的訓練[3];He等提出了神經協同過濾(NCF)模型,使用多層感知器對隱式數據建模,提取非線性特征,結合矩陣分解提取線性特征,使用神經網絡結構得到模型的輸出[4];張等使用二次多項式回歸模型獲取潛在特征向量,將其輸入深度神經網絡模型中,得到預測評分[5]。上述模型在一定程度上提高推薦的效果,但僅使用評分信息,未充分利用用戶和項目描述文檔,存在數據稀疏性問題。
隨著注意力機制在機器翻譯、圖像分類等領域的廣泛應用,其在推薦領域也備受關注。王等提出了融合注意力機制的深度推薦算法,在項目級和特征級的隱式反饋中分別引入注意力機制取得了較好的推薦效果[6];謝等將注意力機制應用于深度神經網絡,用以提取隱式反饋數據中的潛在特征[7];Xiao等提出了將注意力機制與因子分解機融合的AFM模型,使用注意力機制學習交叉特征的權重[8]。
由于注意力機制與深度神經網絡強大的特征學習能力,本文提出一種基于注意力機制的深度協同推薦模型(Attention-based Deep Collaborative Recommendation Model,A-DCRM),以評分矩陣的行和列作為輸入,融合用戶和項目的文檔描述信息以緩解數據稀疏性問題;將注意力機制與神經網絡相結合,更好地提取用戶和項目的非線性特征,在輸出層構建Hadamard乘積并以線性加權方式輸出,提高模型的泛化能力。
推薦系統不僅能滿足用戶高效獲取信息的需求,還能為企業最大限度地吸引用戶、留存用戶,從而帶來商業利益。本節將對矩陣分解、多層感知器和注意力機制進行介紹。

(1)
(2)
其中,后一項增加正則化項防止過擬合,λ為正則化參數。
深度神經網絡也稱為多層感知器(Multi-layer Perception, MLP),將其應用于推薦中,主要是利用其深層特征提取能力。多層感知器一般由輸入層、隱含層和輸出層構成,層與層之間是全連接的。假設xl為網絡第l層的輸出,其計算過程為式(3):
xl=σ(xl-1Wl+bl).
(3)
其中,xl-1表示第l-1層的輸出;Wl和bl表示第l層的權重和偏差項;σ(·)是激活函數。
多層感知器通過前向傳播得到網絡的輸出,并使用反向傳播算法進行參數的更新。
注意力機制一定程度上模擬了人類視覺的特點,在觀察事物時往往會有重點關注目標,利用注意力機制可以幫助神經網絡專注于與目標任務更加相關的特征信息。其基本原理如圖1所示,將需要處理的數據S構成一系列的鍵值對

圖1 注意力機制原理圖
計算過程如式(4)~(6):
ai=softmax(sim(Q,Keyi)),
(4)
(5)
(6)
其中,公式(4)中sim(·)表示相關性計算函數,一般采用點乘、縮放點乘或MLP算法計算;softmax(·)為歸一化函數,其計算過程如公式(5)所示;ai表示每個Value對應的權重系數;Atten為最終得到的注意力值。
本文基于注意力機制和深度神經網絡構建的深度協同推薦模型A-DCRM結構如圖2所示,包括輸入層、嵌入層、注意力層、神經網絡層和輸出層。
與隱式反饋數據相比,顯式反饋數據能夠直接反映用戶的興趣偏好,數據噪聲較少,可信度較高,本文使用顯式數據作為輸入進行訓練。與大多數將用戶和項目的ID經過one-hot編碼處理后作為輸入不同,本文使用用戶對項目的評分數據構建評分矩陣R∈RM×N,M表示用戶數量,N表示項目數量,評分矩陣按公式(7)構建,其中rij表示用戶i對項目j的評分值,如果沒有評分值則以0填充。
(7)

圖2 A-DCRM模型結構
由于矩陣R的行表示用戶對所有項目的評分情況,在一定程度上代表用戶的全局偏好,R的列表示項目由所有用戶打分,在一定程度上代表項目的總體評價情況,所以使用矩陣R的行和列作為用戶和項目的輸入,分別記為Ruser和Ritem。此外,用戶和項目描述文檔中的靜態信息可作為評分數據的補充。利用one-hot編碼對用戶的年齡、性別和職業、項目的類型特征等離散數據特征進行處理,得到用戶和項目的靜態特征,分別記為U_tag和I_tag。最后使用拼接函數對用戶和項目的矩陣數據和靜態特征進行融合,計算過程為式(8):
(8)
其中,⊕表示對兩個向量的拼接操作,xuser和xitem分別表示用戶和項目經過拼接融合后的特征向量,以此作為模型的輸入。
為減少輸入層特征向量的維度,便于神經網絡更好地提取向量特征,利用嵌入層將輸入層的高維稀疏向量映射到低維空間,得到可以表示用戶和項目潛在特征的低維稠密向量。嵌入層的計算過程為式(9):
(9)
其中,Wu和Wi分別為用戶特征向量和項目特征向量的嵌入層權重矩陣;σ(·)是非線性激活函數;xuser_embed和xitem_embed表示經過嵌入層處理過的用戶和項目的潛在特征向量。
注意力層利用用戶和項目的潛在特征向量獲取用戶向量中每一維度特征對目標任務的影響程度,幫助神經網絡層更好地學習向量的深層特征。此過程主要分為二步,首先根據公式(10)獲取用戶潛在特征向量每個維度對應的關注度。
Aatten=softmax(xuser_embed⊙xitem_embed).
(10)
其中,⊙表示Hdamard積操作;softmax(·)函數通過歸一化計算獲取每一維度對應的注意力概率值;Aatten表示各個維度對應的關注度。然后將各維度對應的關注度與用戶潛在特征向量相乘,得到注意力層的輸出,式(11)。
xout=Aatten⊙xuser_embed,
(11)
其中,xout用于輸入神經網絡層非線性特征提取。
神經網絡層采用多層感知器學習輸入的潛在特征向量中的非線性特征。將用戶特征向量xout和項目特征向量xitem_embed分別輸入多層感知器,計算過程如公式(3)所示,將經過神經網絡層處理后的用戶潛在特征向量和項目潛在特征向量分別表示為pu和qi,在輸出層融合時,利用Hdamard積操作對用戶和項目的潛在特征向量進行計算,并通過線性加權的方式融合,最終得到模型的預測值。數學表達式(12)如下:
(12)

本文采用逐點的平方損失來計算模型預測值與目標值之間的誤差,模型通過梯度下降方法優化,以達到最小化損失函數的目的。損失函數的數學表達式可表示為式(13):
(13)

本文采用公開數據集Movielens 100K和Movielens 1M進行算法性能對比實驗,Movielens數據集是電影評分數據集,所有評分值為1~5的整數值,分值越高代表用戶對該電影的喜好值越高。Movielens 100K中是943個用戶對1 682個項目的100 000條評分記錄,Movielens 1M是6 040個用戶對3 952個項目的評分數據,一共有1 000 209條記錄,兩個數據集中每個用戶至少評價20部電影,詳細信息見表1。

表1 Movielens數據集描述
運行環境為:Windows10 64位操作系統,CPU為Intel i7-8550U,顯卡NVIDIA GeForce MX150,本文模型基于tensorflow構建,在實驗過程中,將每個數據集隨機地切分為兩個部分,選擇90%作為訓練集,10%作為測試集,實驗5次后取平均值來評估評分預測準確性和模型性能。
均方誤差(RMSE)和平均絕對誤差(MAE)是推薦系統中常用的度量評分預測準確度的評價指標,將使用這兩個指標來評估本文提出的A-DCRM模型的性能。計算表達式為式(14)和式(15):
(14)
(15)
其中,T表示測試集,|T|表示測試集的大小。
基于深度學習構建的模型涉及到大量需要訓練的參數,本文用標準正態分布進行參數初始化,采用Adam優化器進行參數優化,學習率設置為0.000 5,正則化參數設置為0.5,在嵌入層中用戶和項目的潛在特征向量取相同維度,設置為250維。神經網絡層中多層感知器采用塔式結構,最高層數設置為3,每一層的維度為上一層的一半。
將本文提出的A-DCRM和當前一些具有代表性的推薦算法進行對比,其中包括在SVD基礎上考慮隱式反饋信息的SVD++算法,通過自編碼器對輸入的項目向量進行重構的I-AutoRec算法,融合邊緣降噪自編碼器與MF的mSDA-MF,結合多層感知器和矩陣分解的NCF算法。各算法在RMSE和MAE兩個指標上的對比結果見表2。

表2 不同推薦算法在Movielens數據集上的結果對比
從表2中可以看出,各算法在Movielens 1M上的實驗結果均優于Movielens 100K,這表明數據集越大,算法可以學習到更多的用戶和項目特征信息,從而使預測評分更準確?;谏疃壬窠浘W絡的算法I-AutoRec、NCF和A-DCRM的效果比淺層的SVD++效果好,這在一定程度上表明了深度學習技術在特征提取方面的優勢。從表2中Movielens 100 K的結果可以看出,本文提出的A-DCRM模型相較于其他的算法而言,在RMSE指標上效果最少提升1.3%,最多提升了3.6%,在MAE指標上最少提升1.8%,最多提升4.7%,在Movielens 1M數據集上兩個指標均有所提升。I-AutoRec僅使用矩陣的列作為項目向量的輸入進行重構,NCF采用用戶和項目ID的one-hot編碼,mSDA-MF采用降噪自編碼器提取用戶和項目特征,而本文的模型將矩陣的行列和用戶項目邊信息整合后輸入,能夠學習到更多的特征信息,且融合注意力機制有助于多層感知器提取數據中的關鍵特征信息,從實驗結果來看,本文提出的模型在評分預測準確性上有較好的效果。
本文將深度學習和注意力機制應用于傳統推薦算法矩陣分解中,將評分矩陣的行和列融合文檔描述信息后作為輸入,經過改進后的輸入向量比使用用戶和項目ID的one-hot編碼作為輸入包含更多的偏好信息;其次,本文模型融合注意力機制提高神經網絡層關鍵特征提取能力,構建Hdamard積和線性加權的方式輸出,提高模型的泛化能力。在Movielens數據集上的實驗結果表明了本文模型的有效性。但是其也有不足之處,構建的模型中有較多參數,在最優參數組合的選取上會有一定的困難。
未來將嘗試使用用戶和項目的評論、標簽以及用戶對項目的點擊、收藏等數據,利用深度學習技術提取其中的有效信息,將其融入到深度學習推薦系統中以提高系統性能。