張 杰,付立軍,劉俊明
(中國科學院大學,北京 100049)
(中國科學院 沈陽計算技術研究所,沈陽 110168)
推薦系統(tǒng)構建已經(jīng)成為各類信息服務平臺、電商平臺等搭建過程中重要的技術要點,其核心思想是充分發(fā)揮信息過濾的作用,幫助用戶快速獲取到自己感興趣的信息.以網(wǎng)絡信息的獲取為例,面對海量的、類別多樣、條目復雜的網(wǎng)絡信息,用戶想要在短時間內辨別、獲取自己感興趣的信息,過濾垃圾無用的信息是非常困難的.在實際應用中,傳統(tǒng)的推薦系統(tǒng)應用場景是基于用戶個性化喜好特征和歷史行為數(shù)據(jù),向用戶推薦一系列其可能感興趣的信息或者預測用戶對某些信息的喜好程度[1-3].實現(xiàn)過程中,推薦系統(tǒng)的數(shù)據(jù)來源主要由該用戶的歷史偏好數(shù)據(jù)和用戶-項目的屬性信息組成,推薦系統(tǒng)主要分為三種類別,分別是基于內容屬性和協(xié)同過濾的推薦系統(tǒng),以及將前兩者結合的混合推薦系統(tǒng)[4,5].其中,協(xié)同過濾推薦系統(tǒng)由于具備提供新異性推薦的優(yōu)勢,可以提升用戶體驗而成為目前應用最為廣泛的推薦系統(tǒng).但實際應用場景下,數(shù)據(jù)稀疏性和冷啟動問題依然存在,降低了推薦效率.
近年來,深度學習作為人工智能的研究熱潮,在圖像處理、自然語言處理、語音識別等領域取得突破性的進展,也為推薦系統(tǒng)的發(fā)展帶來新的契機.在協(xié)同過濾算法實施過程中,借助深度學習的深層非線性結構構建用戶和項目的潛在特征向量,從用戶和項目相關的海量數(shù)據(jù)中學習到深層次表示信息,從而挖掘數(shù)據(jù)背后的隱含特征,提高推薦系統(tǒng)的效率[6-9].
本文提出一種結合自編碼器和深度神經(jīng)網(wǎng)絡的混合協(xié)同過濾推薦模型,基于用戶-項目的交互矩陣提取隱式特征向量,利用深度學習的深層特征表示能力來克服傳統(tǒng)協(xié)同過濾算法中矩陣分解的低效性和稀疏性問題,以此來提高推薦算法的效率.本算法模型經(jīng)在MovieLens數(shù)據(jù)集中反復試驗,結果證明本算法比傳統(tǒng)協(xié)同過濾算法的推薦效果更好.
協(xié)同過濾推薦算法的思想是通過數(shù)據(jù)比對找到與目標用戶具有相似喜好的鄰居用戶,然后將鄰居用戶的偏好項目推薦給目標用戶;從實現(xiàn)原理的角度,將協(xié)同過濾算法定義為基于用戶或項目之間的相似度和抽取隱式特征向量的協(xié)同過濾推薦算法[10].在實際應用中,用戶-項目之間的交互行為數(shù)據(jù)存在較高的稀疏特征,以及對于新用戶或新項目之類的冷啟動問題等,都是推薦算法亟待解決的問題.
目前國內外學者已經(jīng)針對這些問題進行一系列的研究.針對傳統(tǒng)的矩陣分解算法,文獻[11]提出了基于奇異值(SVD)分解的協(xié)同過濾算法,有效解決了數(shù)據(jù)稀疏問題;文獻[12]利用包含用戶喜好的隱性特征向量矩陣,提出非對稱奇異值分解(ASVD)模型,提高了推薦算法的準確度;文獻[13]通過評分矩陣計算得到顯式信任和隱式信任,融入到SVD++算法中,提高對冷啟動用戶的預測表現(xiàn);文獻[14]提出基于LDA 主題提取,利用物品-主題概率分布矩陣和項目的輔助信息來構建用戶興趣模型,有效的解決了數(shù)據(jù)稀疏性和冷啟動問題.文獻[15]詳細介紹了深度學習與推薦系統(tǒng)相結合的研究現(xiàn)狀,提出了優(yōu)化方向;文獻[16]提出了結合協(xié)同過濾和基于內容推薦的混合模型,引入詞向量模型,將用戶和論文映射到詞向量空間,以此來提高計算相似度的準確性;文獻[17]提出了神經(jīng)網(wǎng)絡協(xié)同過濾框架(NCF),該框架取代傳統(tǒng)特征向量內積的方式,訓練用戶-項目交互興趣模型,充分挖掘評分矩陣的非線性深層特征表示,提高了推薦效率的準確度.
自編碼器作為深度學習的分支,主要用于數(shù)據(jù)降維或特征學習,研究人員將其特征學習的優(yōu)勢結合到推薦系統(tǒng)中,已取得一定的成果.文獻[18]通過傳統(tǒng)的自編碼器學習隱式特征向量來實現(xiàn)協(xié)同過濾算法,提高推薦效率;文獻[19]在前者的基礎上,引入棧式降噪自編碼器來提高隱式特征向量的質量,并且在學習過程中加入用戶和項目的輔助信息來提高推薦質量.文獻[20]提出將降噪自編碼與最近鄰推薦算法結合,將模型提取到的抽象特征應用到最近鄰評分來解決數(shù)據(jù)稀疏性問題.上述研究均忽略了用戶-項目的交互興趣行為,評分數(shù)據(jù)隱藏了用戶和項目之間的交互關系,而此模型只能通過最優(yōu)比較,在基于項目的自編碼器網(wǎng)絡和基于用戶的自編碼器網(wǎng)絡中二選其一,進而實現(xiàn)評分預測,并且未充分挖掘用戶-項目之間的深層特征表示.
上述研究內容中利用深度學習的自適應學習能力來優(yōu)化構建隱式特征向量的過程,一定程度上解決數(shù)據(jù)稀疏的問題,提高推薦算法的準確度,為本文提供了思路上的建議.基于已有研究,本文主要結合棧式降噪自編碼器和深度神經(jīng)網(wǎng)絡構建混合推薦模型,希望通過充分利用用戶-項目的歷史交互數(shù)據(jù),優(yōu)化隱式特征向量的質量,達到更好的推薦效果.
降噪自編碼器(DAE)是一種特殊的神經(jīng)網(wǎng)絡,屬于無監(jiān)督學習的一種,本質是通過接收損壞的數(shù)據(jù)作為輸入,并訓練原始未被損壞的數(shù)據(jù)作為輸出的自編碼器.相比較傳統(tǒng)的自編碼器,引入一個損壞數(shù)據(jù)的過程,從損壞的數(shù)據(jù)的基礎上學習到的隱特征變量更具有魯棒性,并且在學習過程中,每個失真的樣本是不同的,增加了訓練集的大小,極大的緩和過擬合現(xiàn)象的發(fā)生.
圖1 降噪自編碼器的訓練過程
降噪自編碼器網(wǎng)絡的訓練過程如下:
算法.降噪自編碼器訓練1)將訓練集中采樣一個數(shù)據(jù)樣本X;?x 2)在數(shù)據(jù)樣本X的基礎上,隨機添加高斯噪聲得到受損數(shù)據(jù) ;?x y= f(?x;θ)3)將受損訓練數(shù)據(jù) 與原始數(shù)據(jù)X 作為訓練樣本來接入到隱藏層y,此部分為編碼部分;z=g(y;δ)4)隱藏層y 連接到輸出層Z,此部分為解碼部分;5)根據(jù)輸出層z 和原始數(shù)據(jù)X 來估計重構誤差,采用隨機梯度下降的方式來實現(xiàn)近似最小化.
現(xiàn)有的降噪自編碼器,一般采用高斯噪聲和均方誤差作為重構誤差,其中激活函數(shù)采用Sigmoid 函數(shù),目標函數(shù)如下:
式(1)中,L為一個損失函數(shù),θ和δ代表權重參數(shù).其中L常采用均方誤差函數(shù),最終得到的y層數(shù)據(jù)就是對輸入數(shù)據(jù)的壓縮降維,即輸入數(shù)據(jù)的隱式特征變量.
在顯式反饋的推薦場景下,設用戶數(shù)為m個,項目數(shù)為n個,存在一個用戶-項目的交互評分矩陣Rm*n,則用戶集為U={U1,U2,…,Um},項目集I={I1,I2,…,In},Ru,i代表用戶u對項目i的評分數(shù).當Ru,i=0時,代表用戶u未對項目i評分,并不是代表用戶u不喜歡項目i,因為可能用戶u沒有觀察到項目i.對任意一個用戶u∈U={1,…,m},根據(jù)其對項目的評分序列構成一個向量r(u)=(Ru1,Ru2,…,Run)∈?n,對任意一個項目i∈I={1,…,n},根據(jù)用戶對項目i的評分序列構成一個向量r(i)=(R1i,R2i,…,Rni)∈?m.
基于模型思想的協(xié)同過濾算法的核心在于抽取用戶-項目的隱特征向量,并基于隱特征向量來實現(xiàn)用戶u對未評分項目i的預測評分.設定向量P(u)和Q(i)分別為用戶u和項目i的隱特征向量,并且隱特征向量的維度為k.
本文提出的混合網(wǎng)絡模型總體分為兩個部分,第1 部分為通過深度棧式降噪自編碼器學習得到用戶和項目的隱式特征向量,第2 部分為基于用戶-項目的隱式特征向量,構建深度神經(jīng)網(wǎng)絡來學習用戶和項目之間的交互模型,并實現(xiàn)預測評分,模型結構如圖2所示.下面分別介紹混合神經(jīng)網(wǎng)絡的兩個組成部分.
圖2 混合深度神經(jīng)網(wǎng)絡結構
(1)抽取隱式特征向量
本部分的任務是抽取出用戶和項目的隱式特征矩陣P,Q∈?k,故細分為兩個學習過程U-SDAE 和ISDAE.以基于項目的棧式降噪自編碼器網(wǎng)絡模型(ISDAE)的學習過程為例,結構為棧式降噪自編碼器,輸入數(shù)據(jù)為項目的評分向量集合R=[r(1),r(2),…,r(n)],首先在輸入數(shù)據(jù)中隨機的進行損壞得到受損數(shù)據(jù)R?,通過編碼過程轉換為低維的隱式特征向量矩陣Q,再重構出于原始數(shù)據(jù)R,使得重構誤差的盡可能小,具體的編碼和解碼過程如下:
對于每一層隱藏層l∈{1,···,-1},隱藏層表示為hl:
對于輸出層L的計算公式為:
目標損失函數(shù)為:
式(2)和式(3)中的g(·)和f(·)分別是編碼和解碼函數(shù),W是權重矩陣,b是偏置值.網(wǎng)絡模型中的前L/2 層理解成編碼部分,后L/2 層理解成解碼層.學習過程的目標函數(shù)為式(4),即最小化預測值和原始值的平方損失.采用反向傳播算法來優(yōu)化學習每一層的權重矩陣Wl和偏置值bl,本模型對比多種優(yōu)化算法,選定隨機梯度下降法來優(yōu)化模型的學習過程.
I-SDAE的學習結果為獲得最中間層的數(shù)據(jù)作為學習到的項目隱式特征矩陣,即L/2 層的特征數(shù)據(jù).同樣的方式,在U-SDAE網(wǎng)絡中學習到用戶的隱式特征矩陣P.由此,獲得項目的隱特征矩陣P∈?k和用戶的隱特征矩陣Q∈?k.
(2)學習用戶-項目交互網(wǎng)絡
從過程(1)中得到的用戶和項目的隱特征矩陣P、Q作為深度神經(jīng)網(wǎng)絡的Embedding Layer,共同接入到深度神經(jīng)網(wǎng)絡來學習用戶-項目之間的交互函數(shù).在訓練過程中,采用的目標評分數(shù)據(jù)為用戶對項目已經(jīng)評分的數(shù)據(jù),過濾掉未被評分的數(shù)據(jù).此深度神經(jīng)網(wǎng)絡的每一層可以理解成學習用戶-項目的深層次交互關系,并且層的維度逐漸減小,直到隱藏層X,最后得出一個預測評分值,然后訓練過程中的目標函數(shù)是盡量減少預測值與目標值的誤差,那么深度神經(jīng)網(wǎng)絡可以表示為:
∈?m?k∈?n?k
式(5)中的P和Q為用戶和項目的潛在特征向量矩陣,θf是交互函數(shù)f(·)的模型參數(shù),并且該函數(shù)代表的是多層的神經(jīng)網(wǎng)絡,前一層隱藏層的結果作為后一層隱藏層的輸入.學習過程中的損失函數(shù)即:
學習過程中取得Lsqr的最小值,注意式(6)中的Z代表用戶u和項目i存在評分數(shù)據(jù),即值不為0.采取的邏輯是僅用存在的評分來訓練,部分研究人員在訓練類似交互函數(shù)時采用用平均分來填充缺失值,這種方式的弊端是每個用戶的評分準則不同,故只采用存在的評分數(shù)據(jù)作為訓練數(shù)據(jù).
在深度交互神經(jīng)網(wǎng)絡的學習過程中采用隨機梯度下降法來優(yōu)化.最終在預測分值時通過該用戶和項目的隱特征向量,經(jīng)深度交互網(wǎng)絡模型來實現(xiàn)預測分值,即:
根據(jù)式(7)所示,Pu代表用戶u的隱式特征向量,而Qi代表項目i的隱式特征向量,再經(jīng)由用戶-項目的深度神經(jīng)交互網(wǎng)絡模型得到最終的預測評分.
本實驗采用的數(shù)據(jù)集為經(jīng)典的電影評分數(shù)據(jù)集MoviesLen 進行實驗,包括MovieLens-100K 和MovieLens-1M 兩個數(shù)據(jù)集.其中,MovieLens-100K 數(shù)據(jù)集中包含943個用戶和1682個電影,超過十萬條評分記錄,分值為1~5的整數(shù);MovieLens-1M 數(shù)據(jù)集中包含6040個用戶和3706個電影,以及超過一百萬條評分數(shù)據(jù).對于二者的數(shù)據(jù)稀疏度都非常高,分別是3.49%和2.57%.除此之外,在選取用戶和項目的數(shù)據(jù)時,過濾掉少于20 次交互行為的用戶或項目數(shù)據(jù).
本實驗選取數(shù)據(jù)集中的90%作為訓練集,10%作為測試集,模型參數(shù)使用5 折交叉平均值作為最終結果,使用均方根誤差RMSE作為實驗的評價指標[21].
定義RMSE公式為:
式(8)中,Rij為用戶i對項目j的評分,Rij為算法模型的預測評分,T代表測試集的數(shù)目大小.
在棧式降噪自編碼器部分,加入噪聲率為0.3,設定激活函數(shù)采用Sigmoid 函數(shù),隱式特征向量的維度k∈{20,40,80,200,400,500},U-SDAE模塊的網(wǎng)絡層神經(jīng)元個數(shù)依次為943-700-400-700-943,學習率為0.004,dropout為0.15;I-SDAE模塊的各網(wǎng)絡層神經(jīng)元個數(shù)依次為1682-900-400-900-1682,dropout為0.15,學習率為0.004;深度交互神經(jīng)網(wǎng)絡部分,學習率為0.001,激活函數(shù)采用Sigmoid 函數(shù),dropout為0.15,將用戶和項目的隱特征向量進行拼接作為交互神經(jīng)網(wǎng)絡的嵌入層,網(wǎng)絡層神經(jīng)元個數(shù)依次為800-400-32.
本論文與以下傳統(tǒng)推薦算法進行了對比驗證.
(1)基于平均分.此推薦算法通過用戶或者項目的平均得分來實現(xiàn)預測評分,即ItemAvg和UserAvg.
(2)SVD 算法,實驗過程首先對評分矩陣根據(jù)用戶的平均評分來填充缺失數(shù)據(jù),設定分解后的矩陣維度k需滿足前k個奇異值的平方和占總奇異值的平方和的90%,得到的降維矩陣再根據(jù)皮爾森相似系數(shù)計算用戶之間的相似度,設近鄰用戶數(shù)為5,最后根據(jù)相似度作為權重來預測最后的評分.
(3)PMF 算法,此推薦算法引入概率統(tǒng)計角度來實現(xiàn)矩陣分解,設定觀測噪聲符合高斯分布并且用戶或項目的隱特征向量的值也符合高斯分布,得到特征矩陣后,再實現(xiàn)預測評分.實現(xiàn)過程中通過隨機梯度下降(SGD)來訓練函數(shù),并利用指數(shù)衰減法(exponential_decay)來設定學習率,以此來優(yōu)化模型表現(xiàn).
(4)I-AutoRec 算法,此算法模型為文獻[18]提出的基于自編碼器實現(xiàn)協(xié)同過濾,并選取表現(xiàn)較好的基于項目的單層自編碼器網(wǎng)絡(I-AutoRec),隱藏層維度設為500,未被觀察到的評分數(shù)據(jù)默認為3,激活函數(shù)采用Sigmoid 函數(shù),正則系數(shù)取0.001,神經(jīng)元個數(shù)依次為943-500-943,損失函數(shù)為,只考慮已存在的評分,最小化原始數(shù)據(jù)與重建數(shù)據(jù)之間的誤差.
表1 各推薦算法在不同數(shù)據(jù)集中的效率比較
表1中所示的結果為傳統(tǒng)協(xié)同過濾推薦算法和本文提出的混合神經(jīng)網(wǎng)絡算法的RMSE的平均值,通過對比得知,本文提出的混合神經(jīng)網(wǎng)絡模型在MovieLens上的表現(xiàn)均好于傳統(tǒng)的協(xié)同過濾算法,并且在稀疏度較強的Ml-1M 數(shù)據(jù)集上的效率也優(yōu)于傳統(tǒng)算法,一定程度上解決數(shù)據(jù)稀疏性的問題.
圖3 隱式特征變量的維度k 對推薦效率的影響
如圖3所示,隱式特征向量維度k的不同對本算法效率的影響程度較明顯.根據(jù)對比在實驗中設定的不同k值,明顯看出隨著k值的遞增,RMSE的平均值在不斷減小,直到k=400時,RMSE的值趨于穩(wěn)定,并且優(yōu)于當k為500 維的效率,這是因為維度越高的隱特征變量所包含數(shù)據(jù)越充分,但隨之帶來的問題的網(wǎng)絡的模型更加復雜,參數(shù)訓練更加困難,綜上,在進行對比實驗時設定隱式特征向量的維度k為400.
本文針對傳統(tǒng)的基于隱式特征變量的協(xié)同過濾推薦算法,提出一種結合棧式降噪自編碼器和深度神經(jīng)網(wǎng)絡的混合神經(jīng)網(wǎng)絡模型,學習得到強魯棒性的用戶-項目的隱特征向量和交互興趣模型,實驗結果證明本算法一定程度上解決了數(shù)據(jù)稀疏性問題,較傳統(tǒng)的協(xié)同過濾算法,提高了推薦效率.但算法的擴展性和模型訓練中的參數(shù)優(yōu)化過程會直接影響推薦系統(tǒng)的質量,這對模型的訓練過程提出了較高的要求.當用戶和項目的數(shù)據(jù)量逐漸增長,如何優(yōu)化推薦算法的運算效率,達到實時推薦將是下一階段的研究重點.