楊 帥,王 鵑
(1.國家多媒體軟件工程技術研究中心(武漢大學 計算機學院),武漢 430072;2.空天信息安全與可信計算教育部重點實驗室(武漢大學 計算機學院),武漢 430072)(*通信作者電子郵箱shuaiyy2358@whu.edu.cn)
隨著互聯網電子商務和多媒體社交網絡的發展,信息呈爆炸式增長,信息過載問題愈發嚴重,用戶需要高效的獲取信息方式,商業公司也希望能夠定位目標用戶并向其推薦產品或服務,因此推薦系統被廣泛應用,為用戶提供個性化推薦。現有的推薦算法模型可以分為三類:基于內容的推薦、協同過濾推薦和混合過濾推薦。基于內容的推薦算法使用用戶信息或項目內容作為推薦依據;基于協同過濾的推薦算法利用了用戶的歷史行為偏好,如用戶對項目的評分,僅考慮了用戶、項目間的聯系,沒有利用用戶或項目內容;混合推薦算法則是將上述二者結合[1]。
基于內容的推薦算法由于沒有考慮用戶的歷史偏好,推薦精度不高,且利用用戶個人信息將會涉及隱私問題,隨著隱私保護意識的提高,收集用戶個人信息的難度也不斷加大。基于協同過濾的推薦算法在用戶評分數據稀疏時性能很低,且也沒有利用關于項目內容的有價值信息,因此將二者結合的混合推薦算法逐漸成為主流[2-3]。
混合推薦算法分為兩個步驟,從項目內容中提取特征,然后利用特征和用戶歷史偏好進行協同過濾推薦[4]。如果項目內容僅通過處理一次,就作為特征提供給協同過濾模型(Collaborative Filtering Model, CFM),推薦性能往往較低,因為信息流是單向的,沒有評分信息作為特征有效性的反饋,在這種情況下提高推薦性能只有依靠人工編輯或復雜的特征工程[5]。依據有監督的機器學習思想,在提取項目內容特征時,利用評分信息進行反饋,可以提高特征的質量,而高質量的項目特征,能夠大幅提高CMF的預測能力[6]。
如何從項目內容中提取有效特征,成為提高混合推薦算法性能的關鍵因素。目前深度學習在自然語言處理領域應用廣泛,如機器翻譯、社區問答、情感分析、信息提取等都已實現商用。當前將深度學習應用到推薦系統中的研究才剛剛起步,算法尚無法準確理解書籍、電影內容,并從中提取有效特征,但是從用戶原創內容(User-Generated Content, UGC)如評論、標簽等中提取有關項目內容的特征卻是可行的[7]。在已有的研究中,國內的張敏等[8]提出的語義增強的隱因子模型(Semantics Enhanced Latent Factor Model, SELFM),利用堆棧降噪自編碼器(Stacked Denoising AutoEncoder, SDAE)提取商品評論文本特征,實現評論與評分結合,提高評分預測的準確性;國際上的深度協同推薦模型(Collaborative Deep Learning for recommender system, CDL)[9],將SDAE算法貝葉斯化,實現概率化的矩陣分解模型,預測用戶對商品評分的數學期望,同時利用商品描述信息提高模型性能;基于自然語言模型正則化的隱因子推薦模型(Language Model regularized Latent Factor model,LMLF)[10],利用循環神經網絡模型長短期記憶(Long Short-Term Memory, LSTM)網絡與CMF結合,根據評論文本的詞概率分布,計算不同評論文本的似然度,并將其作為CMF的補充推薦依據。上述3種算法模型中,CDL利用的是固定的項目內容描述或分類信息,無法反映不同個體間的興趣偏好。SELFM和LMLF雖然利用了用戶評論信息,但是評論信息的質量和內容相關度會嚴重影響推薦算法的精確度,在沒有人工編輯干預的情況下性能并不理想。在實際應用中,在線商品評論系統中往往有大量的無效評論,包括內容無關的用戶情感表達和惡意的刷評信息等,而在線標簽系統中,用戶出于追溯、管理、分享、檢索信息等目的,為感興趣的項目打上的自由文本標簽,內容相關性較高,是提取項目內容特征的有效信息源[11-12]。
綜上所述,利用深度學習對項目內容進行特征提取并用于推薦的混合推薦算法,已經是相關研究領域的趨勢所在。在真實應用場景下,用戶評論數據質量較低,難以從中提取有效項目特征。針對這些問題,本文提出基于SDAE算法改進的混合推薦(SDAE-based improved Hybrid Recommendation, SDHR)算法,通過SDAE深度模型從標簽中抽取項目內容特征,并將項目特征作為隱因子模型(Latent Factor Model, LFM)的顯式特征,將深度學習算法與傳統的協同過濾算法相結合,提高推薦算法的性能。
自編碼器(AutoEncoder, AE)是最簡單的人工神經網絡模型,僅包含一個隱含層,廣泛用于樣本特征提取。AE的網絡結構如圖1所示,樣本數據x經過編碼器函數f編碼得到編碼特征y,x和y滿足式(1):
y=fθ(x)=s(Wx+b)
(1)
其中:s為神經網絡激勵函數,一般使用非線性函數如sigmoid函數;θ={W,b}為參數集合。然后通過式(2):
(2)

(3)
通過不斷修正參數θ和θ′,使得平均重構誤差L最小,此時得到的y就可以認為保留了原始樣本的大部分信息,即樣本x的等價特征。

圖1 AutoEncoder網絡結構
當僅保留原始輸入數據的信息時,AE無法保證學到有效的特征表示,比如在極端情況下,AE只需使用恒等函數就能實現輸入數據的完美重構,因此需要給予AE一定的約束以使其學到比輸入數據更好的特征表示。降噪自編碼器(Denoising AutoEncoder, DAE)算法是在AE的基礎上,隨機丟棄輸入向量x中的某些元素,得到腐蝕的輸入數據x′,然后利用x′恢復輸入向量x,得到重構輸入z。DAE的主要思想是“一個好的特征能夠從一個腐蝕輸入魯棒地得到,并且能夠恢復出未腐蝕的輸入”,DAE能夠減輸入樣本中無效特征的干擾[13],DAE的優化目標如下:

(4)
其中:α為腐蝕維度重構代價權重,β為未腐蝕維度重構代價。
由于一層DAE網絡的編碼能力有限,SDAE將多個DAE堆疊在一起組成深度學習架構,用于處理超大規模的數據集,挖掘輸入樣本的深層特征[14]。SDAE網絡模型如圖2,第i層DAE的輸出作為第i+1層的輸入,最后一層DAE的輸出作為原始輸入的重構數據。

圖2 SDAE網絡結構

隱因子矩陣分解(Latent Factor Model, LFM)在基于協同過濾推薦算法中應用廣泛,其目標是將用戶-項目評分矩陣Rm×n降維分解,得到用戶-特征關注矩陣Un×k和項目-特征質量矩陣Vk×m(k為隱因子特征空間維度,ui表示用戶i對k種特征的喜愛程度,vj表示項目j包含k種特征的程度),如果LFM能夠在已有的用戶評分數據上使得:
Rn×m≈Un×k·Vk×m
(5)
那么通過ui*vj計算得到的評分rij,就可以作為用戶i對項目j預測評分,因此LFM的優化目標函數為:
(6)
基于LFM的協同過濾算法在評分數據稀疏時容易過擬合,且隱因子空間維度k無實際語義,可解釋性差,無法反映項目的真實特征[16]。
SDHR算法框架如圖3所示,框架由2部分組成:基于SDAE的項目特征提取模型和基于LFM的協同過濾推薦模型。在特征提取部分,通過SDAE算法從自由標簽文本中提取項目特征。對原始的SDAE算法加以改進,加入一個softmax分類器用于項目預測評分,并引入項目評分作為特征有效性反饋,參與SDAE網絡微調。在協同過濾部分,改進LFM算法,使用SDAE網絡的輸出編碼特征矩陣替換LFM中的項目隱因子特征矩陣,將項目-特征質量矩陣由隱因子空間轉換為顯因子空間。

圖3 SDHR框架結構示意圖

由于SDAE網絡本身無法實現評分預測,故SDAE提取的特征無法反映用戶對項目的喜愛偏好。為了充分利用評分信息提高特征質量,在最后一層DAE網絡后添加一個softmax分類器,將標簽特征分為5個類別,對應項目的5分制評分,預測評分和真實評分數據將參與網絡參數的整體微調,此時的優化目標需在式(3)的基礎上作出相應的調整:
(7)


(8)
為了提高項目特征的質量和可解釋性,項目-特征質量矩陣V不直接使用LFM從評分矩陣中分解,而是由SDAE模型提取的項目特征矩陣T計算得到。由于特征矩陣T是SDAE模型從項目的語義標簽中提取而來,因而能夠反映項目的真實特征。為了解決稀疏數據上的過擬合問題,在式(6)的基礎上引入L2范數作為過擬合懲罰項,由此得到改進后CFM的優化目標函數:
(9)
其中λ1、λ2為過擬合懲罰因子,V為:
V=w·T+b
(10)
1)參數初始化,取wjk=0.1,bjk=0.001,如果用戶i沒對項目j評分,則令Rij=0,bjk=0;假設用戶對項目的真實評分與算法預測評分的差值服從高斯分布,在此基礎上使用服從N(0,1)的高斯分布隨機數初始化用戶-特征關注矩陣Um×k;超參數λ1=λ2=0.1,α=0.1,ξ=e-9,其中λ1、λ2為正則項系數,α為梯度下降的學習步長,ξ為停止參數更新的閾值,超參數的取值應在不同的數據集下由調參決定(調參過程在實驗部分給出)。
2)確定損失函數梯度,即Lcfm對U、V的偏導數:
(11)
(12)

(13)

(14)
式(11)、(13)、(14)里有三組參數需要優化:U、w和b。
3)對于每一個用戶i和項目j(0

當所有的Uik、wjk、bjk都更新一次后,重復執行步驟3),進行新一輪的參數更新,直到算法收斂退出。
對于給定的觀測數據集,利用ui、vj、xij計算預測評分rij,結合式(8)、式(10),可得:

(15)
3.1.1 實驗環境和數據集
實驗編程環境為Python 3.5,深度學習計算框架為TensorFlow 1.4,系統OS為Windows 10,8 GB RAM,GPU GTX1080。
實驗采用的數據集為開源數據集MovieLens,該數據集收集了Movielens(類似豆瓣電影的電影推薦網站)上138 493個用戶對27 278個電影的20 000 263條評分、465 564個標簽,評分為5星制,取值1~5,標簽為自由文本詞匯。該數據集的評分稀疏度為1-20 000 236/(138 493×27 278)≈0.994 71,可以看出數據非常稀疏。
采用10折交叉驗證法(10-fold cross-validation)[18]評估算法性能,將MovieLens數據集隨機分成10組互斥的子集,每次選擇其中1組作為測試數據集,其余9組作為訓練數據集,重復10次測試算法,確保每個數據都參與且僅參與一次測試,最后取10次測試結果的平均值作為實驗結果。
3.1.2 評價標準和對比模型
采用均方誤差(Mean Square Error, MSE)和Top-K推薦精度(K-precision)作為衡量算法性能的標準。
1)MSE。對于給定的測試數據集,用戶對項目的評分集合R={r1,r2,…,rn},推薦算法計算得到的預測評分集合P={p1,p2,…,pn},則有:

(16)
2)K-precision。在給定的測試數據集上,算法計算用戶u在項目集合J上的預測評分,并將評分最高的前k個項目推薦給該用戶,記推薦集合為Pre(k|u;J),用戶真實評分的Top-K集合記為Real(k|u;J),則Top-K推薦精度定義為:
(17)
本次實驗使用了3組對比模型,基于標簽改進的協同過濾算法(Improved Collaborative Filtering algorithm based on Tags, ITCF)[19]、基于SDAE及極限學習機的協同過濾推薦模型(collaborative filtering model based on Stacked Denoising autoencodes and Extreme Learning Machine, SDELM)[20]和LMLF。其中文獻[19]提出的ITCF模型是在傳統的協同過濾算法基礎上引入標簽詞頻動態權重,本質上仍是一種淺層模型(Shallow Learning);SDELM和LFML屬于深度模型,文獻[20]提出的SDELM使用SDAE提取特征,并使用極限學習機和最近鄰算法預測評分,文獻[10]提出的LMLF模型使用LSTM分析文本詞匯概率分布,計算不同文本的似性度,并將似然度作為推薦參考依據。
3.1.3 數據預處理和SDHR模型超參數
需要將原始訓練數據表示為向量形式,才能參與SDHR模型的訓練。這里借助one-hot編碼的思想,使用N位狀態寄存器表示N位信息,對于評分使用長度為5的數組表示,具體編碼如表1。由于SDAE只能接收定長的輸入,數據集中不重復的標簽(忽略大小寫)共有35 173條,對標簽進行編號,并使用長度為35 173的數組表示一條標簽集合記錄,例如用戶i對項目j打上一系列標簽xij,標簽編號集合為{2,3,4,6},則xij=[011101000000…00],其中只有第2、3、4、6位置上的元素值為1,其余值全部為0。

表1 評分值的one-hot編碼
SDHR模型的超參數取值如表2所示,其中SDAE網絡層數為4,由于輸入向量x的長度為35 173,所以l0和lc層的網絡節點數是為35 173,相鄰網絡層之間的節點數保持10~100倍的倍數關系。為了保持網絡的對稱性,l3的節點數和l2相同,l4的節點數和l1相同。使用隨機梯度下降法(Stochastic Gradient Descent, SGD)訓練SDAE網絡和CFM,學習率α取值0.1。超參數k=300、λ1=0.1、λ2=0.1,k、λ1、λ2的取值是由實驗調參確定的,不同取值會對SDHR模型的性能產生影響。

表2 SDHR模型的超參數
3.2.1 模型超參數的影響
由于超參數k的取值既是SDAE從文本標簽中提取出的項目特征的有效維度,也是CFM中矩陣分解的隱因子空間維度,即式(5)中的k,因此k的取值將會直接影響算法的精確度,圖4是不同k值對SDHR的模型性能的影響。由圖4可以看出,當k值較低時,無法提取到有效的項目特征;當k值較大時,又會在項目特征中引入干擾信息導致推薦精度降低;k=300時,模型性能最優。

圖4 超參數k對模型性能(MSE)的影響
式(10)中的λ1和λ2是為了防止模型過擬合,加在U、V上的正則項懲罰因子,不同取值對推薦結果準確度的影響如圖5所示。由于U是通過評分矩陣R分解得到的,λ1=0時模型處于過擬合狀態,取其他值時λ1的變化對推薦結果的影響不大。從圖5(b)可以看出,λ2=0時模型并未出嚴重的過擬合現象,由于V是由T計算得到,而T是SDAE模型學習到的特征,當λ2取值較大時,導致對V的懲罰過高,反而使得SDHR模型的性能降低。當λ1=0.1,λ2=0.1時,SDHR模型的學習效果達到最優。

圖5 超參數λ1、λ2對模型性能(MSE)的影響
3.2.2 不同模型性能對比
在測試數據集分別運行SDHR、ITCF、SDELM和LFML模型,得到的評分預測性能如表3所示。

表3 不同模型性能(MSE)對比
從表3中可知,本文提出的SDHR模型與傳統的協同過濾推薦模型ITCF相比,性能提升明顯,提升了約45.19%。ITCF是一種淺層機器學習模型,學習能力較弱,在大規模稀疏數據集上的表現很差,同時其引入標簽詞頻作為特征加強信息,對提高推薦性能效果不明顯。在同樣使用SDAE抽取特征的情況下,SDHR比SDELM性能提升了約38.83%,SDELM沒有引入額外的特征加強信息,且其評分預測使用極限學習機和最近鄰算法嚴重依賴特征質量,學習能力弱于SDHR使用的隱因子矩陣分解算法。與LFML相比SDHR模型推薦準確率提升約為16.06%,LFML模型使用的深度學習算法長短期記憶網絡雖然在自然語言特征提取上表現優異,但在評分預測上性能不如SDHR。
圖6是不同推薦模型的Top-K推薦性能表現。Top-K推薦的命中率與模型評分預測的準確性呈正相關,由表3結果可以看出,SDHR推薦準確率優于其他3個模型,因而Top-K推薦命中率最高。隨著推薦項目數量K的增大,模型推薦命中率會不斷降低。
圖7是不同模型在同一訓練數據集下的模型訓練花費時間。模型訓練所用時間與訓練數據的特征有效維度和模型復雜度相關,特征維度越低(特征質量低),數據預處理耗時越少,模型復雜度越低(學習能力弱),網絡訓練消耗的時間越少。傳統的ITCF模型簡單,僅使用項目評分矩陣作為學習特征,在數據預處理和網絡訓練花費的時間最少;SDHR模型由于引入了額外的特征輔助增強信息(自由文本標簽),且使用了深度學習網絡SDAE,因而在數據預處理和模型訓練時花費的時間較多,但是對比深度模型LFML和SDELM,SDHR模型在性能提高的同時,所花費的時間代價仍是接受的。

圖7 不同模型的訓練用時
針對協同過濾推薦算法推薦精度低,在大規模稀疏數據集上表現不佳的問題,本文提出使用深度學習模型SDAE改進的混合推薦模型,利用SDAE從自由標簽文本中提取項目特征,并結合改進的隱因子矩陣分解算法,以此提高推薦系統性能。對比深度模型LFML和SDELM,在推薦性能提升的同時,模型訓練時間并未明顯增加,能夠保證在合理時間內處理大規模數據。隨著深度學習算法研究的進步,未來利用自然語言處理相關的深度模型對項目標簽、評論、內容或分類描述文本進行語義處理,提取高質量項目特征,可以進一步提高推薦系統的推薦性能。