曾 安,趙恢真
廣東工業大學 計算機學院,廣州510006
在當今互聯網時代,面對海量的信息,用戶經常需要消耗大量時間和精力來找出他們最需要的物品[1]。推薦系統是解決信息過載問題最重要的技術之一。推薦系統可以利用數據挖掘等技術,為用戶提供個性化信息推薦[2]。目前,主流的推薦系統主要分為四類:基于內容的推薦、協同過濾推薦、基于知識的推薦和組合推薦[3]。其中,協同過濾算法無需用戶或項目的屬性信息,只根據相似用戶或項目的評分特性即可產生推薦,并發現用戶的潛在信息需求,在不同的應用中具有較強的適應性,從而得到廣泛的應用。
當前,為了提高推薦準確性,有專家提出了許多新穎的協同過濾算法。這些算法不僅僅考慮用戶對項目的評分信息,還考慮輔助信息,例如用戶信息、社交網絡關系和項目描述文件[4-6]。Blei 等人[7]提出的LDA 算法和Vincent等人[8]提出SDAE算法使用用戶評論、項目概要和摘要[5-6,9]來提升算法性能。Wang 等人[10]提出的一種融合了主題模型LDA和協同過濾協算法的協同主題模型(Collaborative Topic Regression,CTR)。該模型可以一定程度上分析并利用文檔信息,從而提高了推薦性能。近年來,深度學習因其具有較強的學習能力和抗干擾能力,越來越多的人將其應用到推薦系統中。Wang等人[11]提出了一種集成了堆疊降噪自動編碼器SDAE和概率矩陣分解(Probabilty Matrix Factorization,PMF)的協同深度學習方法[12](Collaborative Deep Learning,CDL),從而根據評分預測產生了更準確的評估。但是,這些集成模型并不能完全捕獲文檔信息,因為它們使用了詞袋模型[13]丟棄了單詞順序,忽略了上下文。因此,這些算法對額外信息的利用有限。
為了解決上述問題,本文提出了一種新型的推薦算法:深度協同過濾(Deep Collaborative Filtering,DCF)。DCF集成了長短期記憶網絡(Long Short-Term Memory,LSTM)和概率矩陣分解(PMF)。LSTM 是最先進的機器學習方法之一,在各種領域都表現出了極高的性能,如語言識別[14]、自然語言處理[15](Natural Language Processing,NLP)非常適合用于處理與時間序列高度相關的問題。DCF算法首先利用Word-Embedding模型如Glove[16]文檔進行預處理,之后利用LSTM進行訓練,其結果作為PMF 的輸入。PMF 作為協同過濾推薦的一個分支,能一定程度上解決稀疏性問題,近年來得到學術界的廣泛研究。PMF 在處理用戶評分矩陣時,將LSTM 訓練結果作為額外輸入,能進一步提高結果準確度。于此同時,訓練過程中誤差能反向傳播,指導LSTM 進行更好的訓練。DCF 對用戶評分矩陣,項目描述文檔的分析和挖掘并非孤立、靜止、片面的,而是聯系、發展、全面的。DCF 將LSTM 無縫集成到PMF中,兩者有機結合,成為一個整體,這極大地了提升算法性能。故DCF能學習到非常精確的用戶特征和項目特征,從而產生更精確的推薦結果。由于DCF 深度挖掘了輔助信息,當用戶評分較為稀疏時,DCF 依然可以準確進行預測。
傳統的神經網絡模型,一般由輸入層、隱含層和輸出層構成。層與層之間全連接,并且層內節點是無連接的,互相獨立。所以,網絡在處理每個時刻的信息時是獨立的。但是,循環神經網絡RNN不同,它在隱藏層中增加節點中的互連,使得隱藏層的輸入即包括輸入層的輸出又包括上一時刻隱藏層的輸出。換句話說,RNN網絡模型會記憶前時刻的信息并將其應用于處理當前輸出數據的計算中。RNN的模型結構如圖1所示,RNN按時間順序展開的示意圖如圖2所示。

圖1 RNN模型

圖2 RNN展開結構示意圖
圖2 中的每個節點代表在相應時刻RNN 網絡的一層。w1是輸入層到隱藏層的連接權值,w2是上一時刻隱藏層到當前時刻隱藏層的連接權值,w3是隱藏層到輸出層的連接權值。RNN 中每時刻的權值是相同的,當前時刻的輸出依賴于上一時刻的輸出。t時刻隱藏層輸出為:

其中,x(t)是t時刻的輸入,h(t-1)是t-1 時刻的隱藏狀態,U
是輸入層到隱藏層的權值矩陣,W是隱藏層到輸出層的權值矩陣,b是偏置參數。
LSTM[17]網絡的一種變體。理論上,RNN 可以處理任何長距離依賴問題,但實際上,由于梯度爆炸、消失等問題而很難實現。LSTM 網絡通過引入門機制和記憶單元來解決此類問題,用LSTM 單元代替RNN 中的隱藏層。LSTM單元結構圖如圖3所示。

圖3 LSTM模型

其中,c(t)是t時刻記憶單元的狀態值,?表示元素間的點積,逐點相乘。記憶單元的狀態值由輸入門和遺忘門共同調節。

輸出門的輸出狀態值o(t),控制記憶單元狀態值的輸出。

其中,h(t)是t時刻LSTM單元的輸出狀態值,當前時刻的隱藏狀態。
LSTM 的門機制使得模型可以捕捉長距離歷史信息,為了同時獲取上下文信息,采用雙向LSTM,因此,BLSTM中的隱藏狀態h(t)可表示如下:

PMF 算法是現代推薦系統的基礎算法之一。設有N個用戶,M部電影。一個評分系統可以用N×M矩陣R來表示。R矩陣中只有部分元素是已知的(用戶只給一部分項目打過分),且R往往非常稀疏,需要求出R缺失的部分。PMF 算法是一種low-dimensional factor模型。其核心思想是:用戶和電影之間的關系(即用戶對電影的偏好)可以由較少的幾個因素的線性組合決定。用矩陣語言來描述,就是評分矩陣可以分解為兩個低維矩陣的乘積R=UTV,其中D×N矩陣U描述N個用戶的屬性,D×M矩陣V描述M部電影的屬性。PMF 算法假設用戶和電影的隱式特征向量服從高斯先驗分布。即:


圖4 PMF概率圖
本文提出的深度協同過濾模型(DCF)結構圖如圖5所示。DCF 主要分為兩部分:左邊的藍色點線框內是PMF模型;右邊的紅色虛線框內是LSTM模型。

圖5 DCF概率圖
其中,U是用戶特征矩陣,V是項目特征矩陣,R是評分矩陣。、和分別為U,V,R的高斯誤差。DCF 中的LSTM 部分結構共有六層:(1)輸入層;(2)Embedding層;(3)LSTM層;(4)線性層;(5)Dropout層;(6)輸出層。
基于詞袋模型的推薦算法無法挖掘文檔的深層次信息,只能對文檔做出淺層的理解。詞袋模型丟棄了單詞順序,忽略了上下文。例如:this is interesting 和is this interesting。基于詞袋模型的方法,無法區分這兩句話的不同之處。這兩句話一句是肯定表達,一句是疑問表達。文檔中這種微妙的差異是深入理解文檔的一個重要因素。本文提出的深度協同過濾模型(DCF)集成了PMF和LSTM。DCF算法首先利用Word-Embedding模型將項目描述文檔進行預處理,之后利用LSTM進行訓練。DCF 的LSTM 結構具有很強的學習能力,可以:(1)學習序列順序邏輯結構的上下文關系;(2)回避RNN在長序列上的梯度消失和梯度爆炸問題。故其可以學習到項目描述文檔的信息的更精確的表示。該結果作為PMF 算法的額外輸入,使得PMF 將評分矩陣分解為代表了用戶和電影之間的關系(即用戶對電影的偏好)兩個低維矩陣時,產生更接近于實際的結果。當評分矩陣非稀疏時,用戶對電影的偏好更偏向于評分矩陣產生,即對評分矩陣擁有更多的權重;當評分矩陣稀疏時,用戶對電影的偏好更偏向于項目描述文檔產生,即對項目描述文檔擁有更多權重。這種權重的變化在DMF中基于數據集是自適應的。本文提出的DCF算法將LSTM無縫集成到PMF中,兩者成為一個整體。PMF將LSTM網絡的輸出作為輸入進行訓練,訓練中的誤差可反向傳播,指導LSTM網絡進行訓練。信息在LSTM網絡和PMF中的雙向流動使得DMF 算法具有更好的學習能力,更強的挖掘能力,表現出了更好的性能。
在DCF 模型中,用戶的隱式特征向量和PMF 中的一致,即公式(9)。
和PMF 不同的是,本文假設項目的隱式特征向量由三部分構成:(1)LSTM的網絡權重W;(2)項目j的文檔信息Xj;(3)高斯噪聲ε變量。其中:

DCF中的LSTM結構主要用于從項目文檔中生成文檔隱向量。LSTM結構共有六層:(1)輸入層;(2)Embedding 層;(3)LSTM 層;(4)線性層;(5)Dropout 層;(6)輸出層。DCF的結構圖如圖5紅色虛線框所示。
輸入層:輸入數據是項目的描述文檔。
Embedding 層:Embedding 層將項目描述文檔轉換為數字矩陣,將其作為下層LSTM層的輸入。文檔可以視為長度為L的單詞序列,每一個單詞可以用一個向量表示,通過連接文檔中的單詞向量,可以將文檔表示為矩陣。這些詞向量可以隨機的初始化或者用詞嵌入模型進行預處理。這些詞向量通過優化過程進行進一步優化,如Glove[16]檔矩陣R=?p×l可以表示為:

其中,l是文檔的長度,p每一個單詞向量的維度。
LSTM層:LSTM層提取上下文特征。D是一個序列,將其作為LSTM 層的輸入。令i時刻的輸入為wi。上下文特征的第i個分量ci由LSTM 層網絡權重W,i時刻的輸入wi決定:


其中,b為網絡偏置,f是sigmoid、ReLU 或tanh 這樣的非線性的激活函數,這里選擇tanh。上下文特征向量C為:線性層:線性層具有良好的非線性映射能力,對LSTM輸出的非線性特征進行加權處理,即對這些非線性特征進行組合。實質上就是在一個向量空間里學習一個(非線性)方程,以簡易的權重方式學習到這些非線性的組合特征,類似于統計學中的主成分分析(PCA)與數學期望。
線性層輸出為:

其中,Wl 為線性層權重,bl 為偏置。
Dropout層:隨著網絡層的增加,考慮到模型訓練難度增加、收斂變慢、出現過擬合等問題,使用Dropout 策略來解決這些問題。Dropout 的原理,直觀來說就是在訓練網絡的時候,以預先設置的概率停止神經單元的輸出,這樣部分神經單元的“罷工”,意味著每次的網絡訓練只有一部分數據特征在參與,從而防止網絡過多地學習訓練集的數據特征,達到防止過擬合的目的。

其中,p 為Dropout 率,mask 為以1-p 為概率的伯努利分布生成的二值向量。
線性層后接Dropout防止過擬合,dropout層輸入為lo,輸出為y。
輸出層:輸出層結果為項目的隱式特征向量S:

其中,Wo 為輸出層權重,y 為線性層輸出,bo 為輸出層偏置。
最終,通過上述的處理,LSTM 結構將項目行文檔作為輸入,輸出每一篇文檔的隱向量:

其中,W 代表所有的權重,Xj是行文檔的子項j ,Sj是j 的文檔隱向量。
用最大化后驗估計來求解用戶和項目的隱式特征向量,LSTM網絡的權值和偏置:

使用坐標下降,迭代的優化參數。假設W 和V(或U)為常量,等式(25)即為U(或V)二次函數。然后,U(或V)的最優解就可通過簡單的優化函數Γ求解。

其中,Ii是對角矩陣,對角項為Iij,j=1,2,…,M 。 Ri是用戶i 對應的向量,Ri為(Rij)Mj=1。對項目,Ij和Rj的定義和Ii,Ri定義一致,式(27)展示了LSTM網絡生成的文檔隱向量在生成項目隱式特征向量的作用。λv是平衡參數[6]。
然而,網絡權重W 無法向U 和V 那樣求解,W 和網絡的結構密切相關。但是,筆者注意到Γ 可以被看做具有L2正則化的方差函數,公式如下:

用誤差反向傳播算法求解W 。
U 、V 、W 是交替更新的。重復優化過程直至收斂,得到最優的U 、V 、W 后,最終,可以預測用戶對項目的評分為:

步驟1將項目文檔數據按照3.2 節描述的步驟,進行預處理,得到項目的隱式特征向量S。
步驟2根據公式(26),更新用戶特征向量U 。
步驟3根據公式(27),更新項目特征向量V 。
步驟4根據公式(28),用誤差反向傳播算法更新網絡權重W 。
步驟5重復步驟2到步驟4,直到U 、V 、W 收斂。
步驟6根據公式(29),得到用戶對項目的評分。
為了展示DCF 模型的有效性,本文使用了來自美國明尼蘇達大學(University of Minnesota Twin Cities)的Grouplens團隊公開的一系列用于測試推薦算法的數據集Movielens 進行測試。Movielens 數據集由用戶對項目的評分構成,評分從1到5。由于Movielens沒有電影情節描述文檔,從http://www.imdb.com/上獲得這些信息。
和文獻[6,12]類似,所有數據集中所有電影的情節描述文檔做了如下的預處理:(1)設置文檔的行最大長度為300;(2)移除停止詞;(3)計算每一個單詞的if-idf值;(4)移除文本詞頻高于0.5的詞;(5)限制詞匯表最大長度為8 000;(6)移除所有的非詞匯表詞匯。所以,每篇文檔的平均詞匯數為97.09。
實驗移除了數據集中那些沒有情節描述的電影。ML-100K和ML-1M數據集的各項數據統計,如表1所示。

表1 ML-100K和ML-1M數據集的各項數據統計
為了評估算法的總體表現,隨機的將每一個數據集分成三部分,分別為訓練集(80%)、驗證集(10%)和測試集(10%)。其中,對所有用戶和項目,訓練集至少包含一項,這個DCF 算法將會處理到每一個用戶和項目。為了準確評估性能指標,使用根均方誤差(Root Mean Squared Error,RMSE)。RMSE 可以評價數據的變化程度,RMSE 的值越小,說明預測模型描述實驗數據具有更好的精確度,公式如下:

首先,通過設置不同的隱因子個數來測試它對DCF算法的性能影響。圖6和圖7分別顯示出了不同的隱因子個數對DCF 算法的RMSE 在ML-100K 和ML-1M 數據集上的影響。

圖6 ML-100K數據集中隱因子個數對RMSE的影響

圖7 ML-1M數據集中隱因子個數對RMSE的影響
從圖6 中可以看出,在ML-100K 數據集上,本文提出的DCF 算法的RMSE 隨著隱因子個數增大而減小,在因影子個數大于60 時,RMSE 趨于平穩,且隱因子個數越大,模型越復雜,訓練效率越低。綜合效率和性能的考量,在ML-100K 數據集上,將隱因子個數設為60。從圖7中可以看出,在ML-1M數據集上,隨隱因子個數增大,RMSE 先減小后增大,當隱因子個數為12 時,RMSE值最小,即算法性能最優。在ML-1M上,將隱因子個數設為12。
圖8和圖9分別給出了在ML-100K數據集和ML-1M數據集上,λU的取值對本文提出的DCF 算法在RMSE上的影響。

圖8 ML-100K數據集中λU 對RMSE的影響

圖9 ML-1M數據集中λU 對RMSE的影響
從圖8 和圖9 可以看出,隨λU的增大,RMSE 呈現先減小后增大的趨勢,且在λU=10的時候取得最小值,故將λU設置為10。
圖10 和圖11 分別給出了在ML-100K 數據集和ML-1M數據集上,λV的取值對本文提出的DCF算法在RMSE上的影響。

圖10 ML-100K數據集中λV 對RMSE的影響

圖11 ML-1M數據集中λV 對RMSE的影響
從圖10 和圖11 可以看出,隨λV的增大,RMSE 呈現先減小后增大的趨勢,且在λV=10 的時候取得最小值。故將λV設置為10。
為了與本文提出的方法做一個詳實的對比,本文一個對比了4個模型,它們分別是:
(1)本文提出的融合了LSTM 模型的深度協同過濾算法(DCF)。先構建一個概率矩陣分解模型,來提取用戶特征,然后,基于電影情節信息,采用LSTM 算法提取項目特征,將用戶特征和項目特征結合,即為最終結果。
(2)Salakhutdinov和Mnih[11]提出的概率矩陣分解算法(PMF)。PMF算法是一個標準的評分預測算法,該算法僅僅使用用戶評分信息用于協同過濾。
(3)Wang 等[12]提出的深度協同過濾算法CDL。CDL是一種新式的推薦系統模型,它使用SDAE分析電影情節文檔來提高準確率。
(4)Wang 等[10]提出的協同主題模型算法CTR。CTR 算法是另一種新式的推薦模型,它融合了PMF 算法和主題模型(LDA),利用了用戶評分信息和電影情節信息。
將U和V隱因子個數設置為60 并且將其初始化為0到1之間的隨機值。表2展現了各模型表現最佳情況下λU、λV的值。PMF、CDL和CTR模型的其他參數設置參見文獻[10-12]。

表2 各模型λU,λV 的值
圖12、13詳細展示了在ML-100K和ML-1M數據集上各個算法的RMSE指標隨迭代次數變化。

圖12 在ML-100K上RMSE指標隨迭代次數變化

圖13 在ML-1M上RMSE指標隨迭代次數變化
從圖12、13 中可以看出,本文提出的DCF 算法在ML-100K數據集上的RMSE相對于PMF、CTR、CDL分別提升了3.24%、3.18%、2.54%,在ML-1M 數據集上相對于PMF、CTR、CDL分別提升了4.88%、4.86%、3.96%。本文提出的DCF 算法融合了PMF 算法和LSTM 算法,不僅能夠基于用戶評分學習用戶特征,而且能深度挖掘輔助信息,學習到更精確的物品特征,兩者優勢疊加,因此能夠從整體上提升算法性能,從而提高推薦質量。
本文提出了一種融合PMF 和LSTM 的DCF 算法。在PMF 的基礎上,通過LSTM網絡,從項目文檔中學習項目特征,將其與PMF學習的用戶特征進行結合,能有效解決推薦系統中稀疏性問題和冷啟動問題。在數據量和稀疏性均不同的ML-100k和ML-1M數據集上的實驗結果表明,本文算法能有效的降低推薦系統的RMSE指標。該算法的不足之處在于,LSTM對序列的學習是單向的,在時間軸上表現為從左往右,而數據之間的關系可能比較復雜,單個時間軸上的信息可能并不完全。雙向LSTM(Bi-directional Long Short-Term,BiLSTM),在一個序列上向前和向后分別訓練兩個網絡,這兩個網絡都連接著同一個輸出層。雙向LSTM 能利用兩個方向上的信息,似乎可以改進本文算法。因此,如何將雙向LSTM 集成進DMF 算法,如何訓練模型及該模型是否能產生更優的結果,是接下來研究的重點。