黃幸穎,梁 路,滕少華
(廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510006)
在推薦系統(tǒng)中,用戶對(duì)項(xiàng)目的評(píng)分通常用二維矩陣來表示,但用戶已評(píng)分的項(xiàng)目數(shù)量有限,且隨著用戶數(shù)和項(xiàng)目數(shù)的增加,評(píng)分矩陣的規(guī)模將變大,這就是稀疏性[1]的問題.在推薦系統(tǒng)中被廣泛采用的協(xié)同過濾算法是根據(jù)用戶的歷史評(píng)分?jǐn)?shù)據(jù)進(jìn)行推薦的,易受到稀疏性的影響,如何降低其影響成為實(shí)現(xiàn)協(xié)同過濾要考慮的關(guān)鍵問題之一[2].
有鑒于此,國內(nèi)外學(xué)者從降低矩陣稀疏度這一思路出發(fā),采用了多種方法來對(duì)空缺值進(jìn)行預(yù)測(cè),例如基于內(nèi)容的方法,基于聚類的方法等.這些方法有的利用項(xiàng)目或用戶的評(píng)分信息[3],有的利用用戶或項(xiàng)目的文本特征信息[4],對(duì)空缺的評(píng)分進(jìn)行預(yù)測(cè).優(yōu)點(diǎn)是簡(jiǎn)單、直觀和易于解釋,但存在特征的提取問題.填充時(shí)若使用項(xiàng)目的特征,大多情況下都只能選擇文本類信息,而對(duì)于音頻、視頻等非文本類的項(xiàng)目,可供使用的文本類特征有限,限制了預(yù)測(cè)準(zhǔn)確度的提升;若使用的是用戶特征,用戶出于對(duì)自身隱私的保護(hù),普遍對(duì)顯式特征收集表現(xiàn)出抗拒的情緒,而隱式特征收集又會(huì)涉及復(fù)雜的用戶行為分析與建模,所得特征既不易于解釋,也難以保證準(zhǔn)確性.
本文采用一種基于自編碼網(wǎng)絡(luò)的模型,僅利用現(xiàn)有的評(píng)分信息,通過調(diào)整網(wǎng)絡(luò)節(jié)點(diǎn)之間的連接狀態(tài)來緩解稀疏性的影響,實(shí)現(xiàn)對(duì)評(píng)分矩陣空缺值的預(yù)測(cè).實(shí)驗(yàn)結(jié)果表明此方法的預(yù)測(cè)準(zhǔn)確度超過了部分常用的推薦算法.本文第二部分為協(xié)同過濾領(lǐng)域的評(píng)分預(yù)測(cè)方法及其特點(diǎn)介紹;第三部分描述自編碼網(wǎng)絡(luò)在電影評(píng)分預(yù)測(cè)中的應(yīng)用;第四部分展示實(shí)驗(yàn)結(jié)果及分析;第五部分總結(jié)并提出下一步工作.
稀疏性問題使得推薦算法產(chǎn)生推薦序列時(shí)要分兩步:第一,按照一定的標(biāo)準(zhǔn)預(yù)測(cè)評(píng)分矩陣當(dāng)中的空缺值;第二,在第一步的基礎(chǔ)上進(jìn)行Top-N推薦[5].解決稀疏性問題的常用方法有固定值、基于人口統(tǒng)計(jì)屬性、基于內(nèi)容、基于社交網(wǎng)絡(luò)等.以上方法能在一定程度上緩解稀疏性對(duì)推薦所帶來的影響,但有的沒有考慮用戶之間或項(xiàng)目之間的評(píng)分差異,難以保證預(yù)測(cè)結(jié)果的個(gè)性化;有的需要用戶或項(xiàng)目的額外信息,需要另外獲取[6-9].
Salakhutdinov和Hinton將深度學(xué)習(xí)和協(xié)同過濾進(jìn)行結(jié)合,通過在Netflix數(shù)據(jù)集上使用受限波爾茲曼機(jī)(Restricted Boltzmann Machine,簡(jiǎn)稱RBM)為用戶建模,對(duì)未知的電影評(píng)分進(jìn)行預(yù)測(cè),取得了不錯(cuò)的效果[10].該方法嘗試為每一個(gè)用戶建立一個(gè)模型,但用于模型訓(xùn)練的樣本只有一個(gè),即用戶自身的歷史評(píng)分記錄,而其他用戶的評(píng)分信息卻未能得到充分利用.
作為深度學(xué)習(xí)的基礎(chǔ)模塊之一,自編碼網(wǎng)絡(luò)是一個(gè)三層的神經(jīng)網(wǎng)絡(luò),輸入層到隱含層為編碼層,隱含層到輸出層為解碼層,整體來說,自編碼網(wǎng)絡(luò)是在學(xué)習(xí)輸入數(shù)據(jù)的某種表示[11].由若干個(gè)自編碼網(wǎng)絡(luò)組成的堆棧式自編碼網(wǎng)絡(luò)(Stacked Auto-encoder,簡(jiǎn)稱SAE)已被用于分類問題的求解[12].
自編碼網(wǎng)絡(luò)及其變型也常被用于輸入數(shù)據(jù)的特征提取.Xie[13]將這一結(jié)構(gòu)應(yīng)用到圖像的識(shí)別與去噪中,結(jié)果表明自編碼網(wǎng)絡(luò)提取出來的特征能提高識(shí)別準(zhǔn)確率.Vincent[14]用去噪自編碼網(wǎng)絡(luò)來提取音樂特征,取得了很好的效果.胡振[15]用去噪自編碼網(wǎng)絡(luò)組成混合模型解決作曲家分類問題,實(shí)驗(yàn)結(jié)果表明自編碼網(wǎng)絡(luò)在特征提取上存在優(yōu)勢(shì).江國薦[16]將堆疊自編碼網(wǎng)絡(luò)用于網(wǎng)頁分類,由于文本特征表示的特征向量維度高,而網(wǎng)頁文本屬于短文本,顯然用于文本特征表示的特征向量是一個(gè)稀疏向量,這與電影評(píng)分?jǐn)?shù)據(jù)中各個(gè)用戶的評(píng)分向量是稀疏的一致.此外,該文實(shí)驗(yàn)采用堆疊自編碼網(wǎng)絡(luò)進(jìn)行特征選取,結(jié)果證明自編碼網(wǎng)絡(luò)可以更貼切地表達(dá)文本特征.綜上所述,故本文采用自編碼網(wǎng)絡(luò)來提取用戶評(píng)分中的隱含特征.
假設(shè)現(xiàn)有一個(gè)用戶-項(xiàng)目評(píng)分矩陣如表1所示,共有4名用戶和5部電影.評(píng)分值為1到5之間的整數(shù),分值越大,表示用戶的喜好程度越高.現(xiàn)在要預(yù)測(cè)表中的空缺值,即用戶張三對(duì)電影《黃金時(shí)代》,用戶李四對(duì)電影《十七歲》等的評(píng)分.
表1 用戶-項(xiàng)目評(píng)分矩陣
Table 1 Users-items rating matrix
黃金時(shí)代親愛的十七歲大話西游歲月神偷張三132李四154王五233趙六513
基于用戶的協(xié)同過濾方法首先會(huì)計(jì)算用戶之間的相似度,然后用相似用戶對(duì)目標(biāo)項(xiàng)的評(píng)分來填充相應(yīng)的空缺值.例如,用戶張三和趙六的相似度最高,因此用戶張三對(duì)電影《黃金時(shí)代》的評(píng)分就用趙六對(duì)《黃金時(shí)代》的評(píng)分5分來填充.此方法優(yōu)點(diǎn)是簡(jiǎn)單直觀,但在預(yù)測(cè)空缺值時(shí)僅考慮目標(biāo)項(xiàng)的評(píng)分,忽略了各個(gè)項(xiàng)目評(píng)分之間可能存在的聯(lián)系.而自編碼網(wǎng)絡(luò)能從用戶的評(píng)分中提取特征,有利于發(fā)現(xiàn)項(xiàng)目評(píng)分之間的相關(guān)性,提高準(zhǔn)確度.
在電影評(píng)分的預(yù)測(cè)中,假設(shè)有N個(gè)用戶,M部電影,相關(guān)的定義如下:
定義1.用戶ui對(duì)電影mj的評(píng)分
定義2.用戶ui對(duì)所有電影的評(píng)分
定義3.輸入層第j個(gè)節(jié)點(diǎn)激活標(biāo)志flagj
當(dāng)自編碼網(wǎng)絡(luò)的輸入數(shù)據(jù)中隱含著一些特定結(jié)構(gòu),比如某些輸入特征是彼此相關(guān)的,那么自編碼網(wǎng)絡(luò)可以發(fā)現(xiàn)輸入數(shù)據(jù)中的這些相關(guān)性,進(jìn)而對(duì)輸入數(shù)據(jù)進(jìn)行有效的表示.
圖1 電影評(píng)分預(yù)測(cè)的自編碼網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Auto-encoder structure in film rating predicts
本文所構(gòu)建的自編碼網(wǎng)絡(luò)是一個(gè)三層神經(jīng)網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.其中輸入層節(jié)點(diǎn)個(gè)數(shù)等于電影數(shù)M,與隱層節(jié)點(diǎn)的連接狀態(tài)用虛線表示,當(dāng)該節(jié)點(diǎn)的激活標(biāo)志為1時(shí)建立與隱層節(jié)點(diǎn)的連接,否則不建立連接.輸出層為一個(gè)softmax分類器,對(duì)應(yīng)5個(gè)輸出節(jié)點(diǎn),分別代表1到5分.
圖2 電影評(píng)分預(yù)測(cè)流程Fig.2 Film rating predicts process
然而在實(shí)際應(yīng)用場(chǎng)景當(dāng)中,用戶ui已給出評(píng)分的電影數(shù)目占總電影數(shù)目的比例很小,因此r(i)中有很多空缺值.將用戶的評(píng)分輸入到模型的時(shí)候,不能簡(jiǎn)單地將空缺的評(píng)分值用0來代替,此舉會(huì)嚴(yán)重降低預(yù)測(cè)的準(zhǔn)確度.因?yàn)樽跃幋a網(wǎng)絡(luò)能夠?qū)W習(xí)輸入數(shù)據(jù)的特征表示,大量地輸入0會(huì)讓網(wǎng)絡(luò)學(xué)習(xí)到用戶評(píng)分的負(fù)偏好,錯(cuò)誤地認(rèn)為這個(gè)用戶的評(píng)分十分嚴(yán)謹(jǐn),甚至是苛刻,致使預(yù)測(cè)階段得到的評(píng)分偏低,這顯然不符合實(shí)際情況.有鑒于此,在本文所構(gòu)建的模型中增設(shè)輸入節(jié)點(diǎn)的激活標(biāo)志,當(dāng)該節(jié)點(diǎn)的激活標(biāo)志為1時(shí)才將其值作為網(wǎng)絡(luò)的輸入.因?yàn)檩斎氲亩际谴_實(shí)存在的評(píng)分,這些評(píng)分組成了概念上稠密評(píng)分記錄,每次激活值的計(jì)算及權(quán)重的調(diào)整都只發(fā)生在實(shí)際建立連接的節(jié)點(diǎn)上,使得模型能在一定程度上緩解稀疏性帶來的影響.與此同時(shí),由于自編碼網(wǎng)絡(luò)在訓(xùn)練階段學(xué)習(xí)的是一個(gè)輸出等于輸入的函數(shù),即hW,b(r(i))≈r(i)此舉保證了自編碼網(wǎng)絡(luò)提取出來的隱層特征能夠很好地還原出輸入數(shù)據(jù),從魯棒性角度而言,這些特征較一般的神經(jīng)網(wǎng)絡(luò)提取出來的特征更優(yōu),故自編碼網(wǎng)絡(luò)能夠發(fā)現(xiàn)用戶評(píng)分中的隱含特征.
現(xiàn)在要預(yù)測(cè)用戶張三對(duì)電影《黃金時(shí)代》的評(píng)分,整個(gè)預(yù)測(cè)流程參照?qǐng)D2.
首先求出張三的近鄰.以表1的數(shù)據(jù)為例,各用戶之間的皮爾遜相似度(Pearson Correlation Coefficient)如表2所示.根據(jù)用戶之間的相似度選取出近鄰,則張三的近鄰為王五和趙六.
表2 用戶的皮爾遜相似度
Table 2 Pearson similarity of users
張三李四王五趙六張三1.0-0.930.950.71李四-0.931.0-1.0-0.99王五0.95-1.01.00.90趙六0.71-0.990.901.0
由于網(wǎng)絡(luò)的輸出層是一個(gè)分類器,故需要獲得訓(xùn)練樣本的類標(biāo)簽.現(xiàn)將王五和趙六對(duì)《黃金時(shí)代》的評(píng)分進(jìn)行抽取,二值化后作為訓(xùn)練樣本的類標(biāo)簽.{1,0,0,0,0}表示評(píng)分值為1分,{0,1,0,0,0}表示評(píng)分值為2分,如此類推.但王五對(duì)《黃金時(shí)代》的評(píng)分空缺,故王五的評(píng)分?jǐn)?shù)據(jù)被拋棄不用.
利用近鄰的評(píng)分信息,通過逐層訓(xùn)練,全局微調(diào)的方式即可獲得一個(gè)用于預(yù)測(cè)的自編碼網(wǎng)絡(luò).其中,全局微調(diào)階段的整體損失函數(shù)為:
W代表整個(gè)網(wǎng)絡(luò)的權(quán)值,b代表偏置(bias).對(duì)應(yīng)上述例子,n等于1,i等于2,j等于1.上式中,第一項(xiàng)是重構(gòu)誤差項(xiàng),第二項(xiàng)是正則項(xiàng),用來防止網(wǎng)絡(luò)出現(xiàn)過擬合.由于自編碼網(wǎng)絡(luò)的優(yōu)化問題是一個(gè)非凸優(yōu)化問題,采用反向傳播求解損失函數(shù)最小值的過程中可能會(huì)陷入局部極小值.為了避免這一情況的發(fā)生,可以在權(quán)重調(diào)整時(shí)采用動(dòng)量調(diào)整的方式來降低陷入局部極小值的概率.
將用戶張三對(duì)所有電影的評(píng)分r(1)輸入到訓(xùn)練好的網(wǎng)絡(luò)中.經(jīng)過一次前向傳播即可得到輸出層節(jié)點(diǎn)的激活值.選擇激活值最大的節(jié)點(diǎn)所對(duì)應(yīng)的評(píng)分作為張三對(duì)電影《黃金時(shí)代》的預(yù)測(cè)評(píng)分.
實(shí)驗(yàn)選用MovieLens1數(shù)據(jù)集:第一個(gè)是MovieLens 100k,該數(shù)據(jù)集包含了943位用戶在1682部電影上的100,000條評(píng)分記錄,稀疏度約為93.7%;第二個(gè)是MovieLens 1m,該數(shù)據(jù)集包含了6040位用戶在3952部電影上的1,000,209條評(píng)分記錄,稀疏度約為95.8%.兩個(gè)數(shù)據(jù)集的評(píng)分都是1到5之間的整數(shù),分布情況如表3所示,可見在兩個(gè)數(shù)據(jù)集中,3分及以上的評(píng)分均占總評(píng)分?jǐn)?shù)的80%以上,4分及以上的評(píng)分占總評(píng)分?jǐn)?shù)的50%以上,評(píng)分分布明顯不平衡.
表3 數(shù)據(jù)集評(píng)分分布
Table 3 Distribution of rating datasets
評(píng)分分布MovieLens 100kMovieLens 1m1分6110條,約占6.1%56174條,約占5.6%2分11370條,約占11.4%107557條,約占10.8%3分27145條,約占27.1%261197條,約占26.1%4分34174條,約占34.2%348971條,約占34.9%5分21201條,約占21.2%226310條,約占22.6%
數(shù)據(jù)集中的數(shù)據(jù)隨機(jī)選取80%的評(píng)分?jǐn)?shù)據(jù)作為訓(xùn)練樣本,剩下的20%作為測(cè)試樣本.
準(zhǔn)確度指標(biāo)采用平均絕對(duì)誤差(Mean Absolute Error,簡(jiǎn)稱MAE),和均方根誤差(Root Mean Squared Error,簡(jiǎn)稱RMSE)來衡量.
平均絕對(duì)誤差的計(jì)算公式如下:
均方根誤差的計(jì)算公式如下:
表4展示了自編碼網(wǎng)絡(luò)與基于用戶的協(xié)同過濾、基于項(xiàng)目的協(xié)同過濾、Slope One、SVD這4種常用的推薦算法和BP神經(jīng)網(wǎng)絡(luò).在兩個(gè)數(shù)據(jù)集上的對(duì)比結(jié)果.
在100k這個(gè)數(shù)據(jù)集上,自編碼網(wǎng)絡(luò)的MAE值為0.776,優(yōu)于BP神經(jīng)網(wǎng)絡(luò)的0.802和SVD的0.781,僅次于Slope One的0.747,而在RMSE值上,自編碼網(wǎng)絡(luò)的0.983要遜于Slope One的0.947,優(yōu)于基于用戶的協(xié)同過濾的1.275和BP神經(jīng)網(wǎng)絡(luò)的1.051.而在1M數(shù)據(jù)集上,自編碼網(wǎng)絡(luò)獲得的結(jié)果與100k上的相似,MAE值優(yōu)于BP神經(jīng)網(wǎng)絡(luò)和SVD,僅次于Slope One;RMSE值則位居第二,依然次于Slope One.
從實(shí)驗(yàn)結(jié)果中不難看出以下幾點(diǎn):
1)針對(duì)電影評(píng)分?jǐn)?shù)據(jù)稀疏、冗余和不平衡的特點(diǎn),本方法同時(shí)考慮了近鄰之間的評(píng)分相似性和項(xiàng)目之間的評(píng)分相關(guān)性.從預(yù)測(cè)準(zhǔn)確度來看,得益于自編碼網(wǎng)絡(luò)的特征提取優(yōu)勢(shì),自編碼網(wǎng)絡(luò)隱層提取的特征要優(yōu)于BP神經(jīng)網(wǎng)絡(luò)提取的特征.
2)自編碼網(wǎng)絡(luò)在大數(shù)據(jù)集上的準(zhǔn)確度要高于小數(shù)據(jù)集上的準(zhǔn)確度.因?yàn)檩^大的數(shù)據(jù)集能夠提供更多的訓(xùn)練樣本,強(qiáng)化了近鄰之間的評(píng)分相似性和項(xiàng)目之間的評(píng)分相關(guān)性,有助于提取評(píng)分信息的更一般特征,提高網(wǎng)絡(luò)的泛化性能.
表4 各種推薦算法的準(zhǔn)確度
Table 4 Accuracy of recommendation algorithms
實(shí)驗(yàn)方法MovieLens 100kMovieLens 1mMAERMSEMAERMSE基于用戶的協(xié)同過濾0.9811.2750.8351.099基于項(xiàng)目的協(xié)同過濾0.8481.1190.7830.995SVD0.7810.9860.7320.921Slope One0.7470.9470.7160.908BP神經(jīng)網(wǎng)絡(luò)0.8021.0510.7480.993自編碼網(wǎng)絡(luò)0.7660.9830.7290.916
3)自編碼網(wǎng)絡(luò)上的MAE值和RMSE值相差約為0.2,大于基Slope One上的差值.因?yàn)橛?xùn)練自編碼網(wǎng)絡(luò)涉及非凸函數(shù)的優(yōu)化求解,存在局部極小值,使得預(yù)測(cè)結(jié)果不夠穩(wěn)定,波動(dòng)較大.
本文利用自編碼網(wǎng)絡(luò)將評(píng)分預(yù)測(cè)問題轉(zhuǎn)換為多分類問題來解決,通過設(shè)置節(jié)點(diǎn)激活標(biāo)志來調(diào)整輸入節(jié)點(diǎn)與隱層節(jié)點(diǎn)連接狀態(tài),能在一定程度上降低稀疏性對(duì)預(yù)測(cè)準(zhǔn)確度的影響.所得隱含特征在實(shí)現(xiàn)評(píng)分信息近似表示的同時(shí),提高了預(yù)測(cè)準(zhǔn)確度,為處理評(píng)分冗余且分布不平衡的稀疏矩陣形成支撐,在協(xié)同過濾稀疏性問題的背景下有一定的應(yīng)用價(jià)值.實(shí)驗(yàn)表明,本方法能獲得比部分常用的協(xié)同過濾算法更高的預(yù)測(cè)準(zhǔn)確度,具有較好的可擴(kuò)展性,但在訓(xùn)練網(wǎng)絡(luò)時(shí)需要較多的計(jì)算資源,對(duì)冷啟動(dòng)問題的解決也有待加強(qiáng).