胡 楊 陳健美
(江蘇大學(xué)計算機(jī)科學(xué)與通信工程學(xué)院 鎮(zhèn)江 212013)
在這個數(shù)據(jù)爆炸的時代,如何快速找到需求的信息變得越來越困難。搜索引擎的出現(xiàn)幫助人們通過關(guān)鍵字快速找到想要的信息,但是很多時候,人們的需求往往不是很明確,或者是想要更加符合個人口味和喜好的結(jié)果,推薦系統(tǒng)便應(yīng)運而生。除此之外,很多商業(yè)組織也使用推薦系統(tǒng)來拓展業(yè)務(wù),提高業(yè)績。
這些年來研究產(chǎn)生了大量的推薦算法,它們大體上可以劃分成兩類[1]:基于內(nèi)容的推薦[2]和協(xié)同過濾[3],其中最為常用的是協(xié)同過濾?;趦?nèi)容的推薦主要是根據(jù)推薦物品或內(nèi)容的元數(shù)據(jù),發(fā)現(xiàn)物品或者內(nèi)容的相關(guān)性,進(jìn)行推薦;而協(xié)同過濾則根據(jù)用戶對物品的評分記錄,分析出用戶與用戶之間存在的關(guān)系以及物品與物品之間隱藏的關(guān)聯(lián),預(yù)測用戶對某個物品的潛在評分,進(jìn)行推薦。
當(dāng)前,在協(xié)同過濾方法中最為成功有效的是隱含因子模型(Latent Factor Model,LFM)[4]算法。隱含因子模型算法直接從用戶-物品評分矩陣中學(xué)習(xí)有效的隱含因子。但是,在實際情況下用戶-物品評分矩陣往往是特別稀疏的,只有小部分元素有值,這就導(dǎo)致協(xié)同過濾算法在學(xué)習(xí)隱含因子時性能會顯著下降。協(xié)同過濾存在的另外一個問題是冷啟動問題,在系統(tǒng)中出現(xiàn)新用戶和新物品時,無法對其進(jìn)行精準(zhǔn)推薦。
因此,對于協(xié)同過濾算法存在的冷啟動問題,融合輔助信息進(jìn)行推薦是必然的,混合推薦[1]也變得越來越流行。雖然現(xiàn)在有很多種混合推薦來解決推薦系統(tǒng)的稀疏性和冷啟動問題,但是冷啟動問題依舊是一個開放的問題。
為了解決協(xié)同過濾的冷啟動問題,本文提出了一種深度混合協(xié)同過濾推薦算法,它是基于深度學(xué)習(xí)方法、融合物品信息的混合推薦模型,并考慮到時間因素。主要貢獻(xiàn)如下:1)提出了一種結(jié)合協(xié)同過濾與機(jī)器學(xué)習(xí)的通用框架,該框架可用于對冷啟動物品進(jìn)行推薦;2)提出了一種基于堆棧降噪自編碼機(jī)器的物品特征學(xué)習(xí)算法,將稀疏高維的物品內(nèi)容編碼成稠密、低維度的物品特征向量;3)提出一種結(jié)合安全的半監(jiān)督S4VM 的預(yù)測算法,對冷啟動物品進(jìn)行評分預(yù)測,并將堆棧降噪自編碼機(jī)學(xué)習(xí)的特征向量和S4VM 預(yù)測的結(jié)果融入完全冷啟動情景下的LMF 算法中。實驗結(jié)果證明,所提出的算法能有效緩解冷啟動與稀疏性問題,與現(xiàn)有的算法相比,在推薦精度上有較大提升。
傳統(tǒng)的協(xié)同過濾算法主要分為基于鄰域的算法和基于模型的算法?;卩徲虻乃惴ㄖ饕ㄟ^相似度計算公式,計算出物品與物品之間的相似度后,再依據(jù)計算出的結(jié)果以及用戶曾經(jīng)的評分行為為系統(tǒng)用戶進(jìn)行相關(guān)物品的推薦[5]?;谀P偷乃惴▏L試填充用戶-物品評分矩陣,依托一些機(jī)器學(xué)習(xí)算法來對物品的向量進(jìn)行訓(xùn)練,建立模型預(yù)測用戶對新物品的評分,如基于樸素貝葉斯(Na?ve Bayesian)[6]、主題模型(Topic Model)[7]、支持向量機(jī)(SVM)[8]等協(xié)同過濾算法。
由于協(xié)同過濾受數(shù)據(jù)稀疏性和冷啟動的影響較大,越來越多的方法嘗試融入額外的信息來克服這個問題。廣泛受到關(guān)注的是HFT(Hidden Factors as Topic)[9]將主題模型 LDA(Latent Dirichlet Allocation)[10]與協(xié)同過濾結(jié)合,其準(zhǔn)確率較經(jīng)典的LFM 模型有一定的提升。其余多融合用戶的社會標(biāo)簽或人口統(tǒng)計學(xué)信息進(jìn)行協(xié)同過濾推薦,但是它們的輔助信息的隱含表示受到極度稀疏的內(nèi)容信息的影響,不能有效的學(xué)習(xí)。
近些年來,深度學(xué)習(xí)在自然語言處理、圖像處理等領(lǐng)域上取得了巨大的成功,而在推薦系統(tǒng)方向,它的應(yīng)用仍處于萌芽時期。國內(nèi)外學(xué)者將深度學(xué)習(xí)引入到推薦系統(tǒng)的主要有以下幾個經(jīng)典模型:1)Hinton 等 使 用 RBM(Restricted Boltzmann Machines)[11]來進(jìn)行協(xié)同過濾,但是其沒有融入輔助信息;2)王[12]等直接使用 CNN(Convolutional Neural Network)和DBN(Deep Belief Network)從主題信息中獲取隱含因子,但是他們只考慮物品信息,且該方法只適用于音樂數(shù)據(jù);3)王[13]等在SDAE 的基礎(chǔ)上提出了Bayesian SDAE 模型,并與概率化LFM 模型結(jié)合,但是它僅關(guān)注到用戶信息稀疏的情況,而且主要任務(wù)是進(jìn)行TopN推薦。
由上可知,利用深度學(xué)習(xí)及輔助信息來解決推薦的稀疏性和冷啟動問題是一個必然趨勢,但是現(xiàn)有研究工作仍存在很多不足,例如很難從有限的粗糙的屬性中挖掘出具體的特征,沒有充分考慮到時間、位置等因素。
針對上述問題,本文提出了一種深度混合協(xié)同過濾推薦算法(DCF_CS),結(jié)合 SDAE、S4VM 與LFM 模型,同時考慮到時間因素,有效緩解冷啟動問題,提高推薦精度。
深度混合協(xié)同過濾推薦算法主要思想為采用深度降噪自編碼機(jī)獲取物品特征,然后根據(jù)特征使用安全的S4VM 初步預(yù)測完全冷啟動物品的評分,結(jié)合考慮時間因素的LFM 模型,最終產(chǎn)生預(yù)測評分。下面將介紹算法使用到的模型的原理及意義,最終展示所提的預(yù)測算法。
降噪自編碼器(denoising auto-encoder,DAE)[14]是一種三層神經(jīng)網(wǎng)絡(luò),它包含輸入層、隱藏層和輸出層。其目標(biāo)是學(xué)習(xí)恒等函數(shù)h(x)=x,即學(xué)習(xí)一個近似的恒等函數(shù),使得輸出近似等于輸入。同時,為了解決恒等函數(shù)的風(fēng)險,我們往往會隨機(jī)采用部分受損的輸入,使得自動編碼器必須進(jìn)行恢復(fù)或者降噪,從而在隱藏層得到輸入的良好表征。具體做法是對原始數(shù)據(jù),進(jìn)行人為隨機(jī)損壞加噪聲,得到損壞的數(shù)據(jù),該噪聲可以采用高斯噪聲或bi-nary mask噪聲。
對于給定樣本集合S,降噪自編碼器對輸入的編碼和解碼如下:
其中代表加噪后的輸入,代表重建的輸入樣本,h為隱藏層,即輸入的隱含表示,W為權(quán)重矩陣,b為偏置向量,g(·)為編碼函數(shù),f(·)為解碼函數(shù)。
因為單個降噪自編碼器的編碼能力是有限的,現(xiàn)有研究表明[15~17],將多個降噪自編碼器堆疊在一起,可以在隱藏層中產(chǎn)生更加豐富的表示,從而使SDAE 比DAE 有更出色的處理能力。SDAE 的每一層都當(dāng)成一個DAE,通過逐層貪婪的訓(xùn)練方式,首先對第一層DAE 進(jìn)行訓(xùn)練,將第一層的輸出作為第二層的輸入,再將第二層的輸出作為第三層的輸入,以此類推。假設(shè)SDAE 有L層,我們通常把前2/L 層作為編碼部分,后2/L 層作為解碼部分,編碼部分學(xué)習(xí)受損輸入的特征表示,解碼部分恢復(fù)其受損前輸入。L層SDAE解決如下優(yōu)化問題:
其中SL表示 L 層的輸出,Wl和bl表示 L 層的權(quán)重矩陣和偏置項,本次研究采用的是4 層SDAE。隱藏層學(xué)習(xí)得物品特征后,將用于LFM模型中。
本文是采用SDAE 替代LDA 模型及矩陣分解得到物品特征向量,主要原因如下:1)矩陣分解得到的物品特征向量缺乏語義上的解釋,而SDAE 的隱藏層學(xué)習(xí)得的物品特征向量能更好地反映出物品的特征;2)降低物品內(nèi)容向量的維度,使其與隱含因子向量相等,能夠融入隱含因子模型中,并增加矩陣分解的一般性。
半監(jiān)督學(xué)習(xí)是一種將少部分有標(biāo)記的樣本和絕大部分無標(biāo)注的樣本結(jié)合的學(xué)習(xí)框架,其中的直推式學(xué)習(xí)把將要預(yù)測的數(shù)據(jù)作為未標(biāo)記樣本,這與推薦系統(tǒng)中數(shù)據(jù)稀疏性、冷啟動問題十分一致。S4VM 是一種安全的半監(jiān)督支持向量機(jī),所謂“安全”,是指半監(jiān)督學(xué)習(xí)方法的性能不會明顯低于只利用小部分有標(biāo)記樣本的歸納學(xué)習(xí)方法的性能。由于S3VM 存在多個低密度劃分導(dǎo)致性能下降,所以才出現(xiàn)了S4VM。它首先找到候選的低密度劃分,然后對未標(biāo)記樣本的標(biāo)記進(jìn)行優(yōu)化使得性能提升最大[18]。當(dāng)半監(jiān)督學(xué)習(xí)的低密度假設(shè)成立時,S4VM 必定安全[19]。因此,使用 S4VM 來預(yù)測未標(biāo)記樣本的協(xié)同過濾推薦算法,在理論上要優(yōu)于其他的相似性、基于聚類、基于樸素貝葉斯等協(xié)同過濾算法。
傳統(tǒng)算法的針對冷啟動問題,主要是采用相似度計算將冷啟動物品與非冷啟動物品關(guān)聯(lián)起來,主要有Top-of-Al(lToA)和Top-of-User(ToU)兩種算法。ToA 主要是通過在所有的非冷啟動物品中找到M 個與冷啟動最相近的物品來預(yù)測冷啟動物品的評分,預(yù)測規(guī)則如下:
其中SM(j)表示與冷啟動物品j最相似的M 個非冷啟動物品的集合,既可以是真實評分也可以是預(yù)測評分。
ToU 則是根據(jù)一個用戶對M 個最相似的非冷啟動物品的評分來預(yù)測冷啟動物品評分,預(yù)測規(guī)則如下:
其中SM(u,j)表示用戶u 對與j 最相似的M 個非冷啟動物品的集合,rui表示訓(xùn)練集中的真實評分。
上面兩種方法簡單的通過相似性來預(yù)測評分,忽略了評分矩陣中的其他信息,經(jīng)過之前的分析,使用安全的半監(jiān)督S4VM 對冷啟動物品進(jìn)行預(yù)測理論上要優(yōu)于之前相似性算法。同時,我們也對S4VM 預(yù)測的效果與基于相似度的ToA 和ToU 進(jìn)行實驗對比,結(jié)果顯示S4VM 的性能要優(yōu)于它們。因此,為了初步預(yù)測完全冷啟動物品的評分,使用S4VM 取代相似度等算法,根據(jù)SDAE 隱藏層學(xué)習(xí)得的物品特征,將訓(xùn)練集中冷啟動物品隨機(jī)劃分為n 個數(shù)據(jù)集,非冷啟動物品構(gòu)建為初始數(shù)據(jù)集。對于冷啟動物品,構(gòu)建其屬性特征,并將其與非冷啟動物品的特征和評分標(biāo)簽作為S4VM 算法的輸入,S4VM將輸出冷啟動物品的評分標(biāo)簽。
隱含因子矩陣分解(LFM)是推薦系統(tǒng)中應(yīng)用較為普遍的模型,如果把用戶對物品的評分看為一個矩陣,則矩陣的每個元素都是某個用戶對某個物品的評分,則可以將評分矩陣R 分解成2 個低維度的矩陣P 和Q,假設(shè)用戶數(shù)為u,物品數(shù)為i,則評分R=(ru,i),預(yù)測評分為
由于不同的人有不同的評分習(xí)慣,且物品也有質(zhì)量的好壞等差別,我們從這兩個角度考慮,使用基于平均偏差的矩陣分解模型,評分預(yù)測如下:
其中,偏置項可用來模擬用戶興趣隨時間的變化以及物品的生命周期,因此將bi和bu變成一個隨時間變化而變化的參數(shù):
其中,時間相關(guān)的物品偏置由一個固定部分bi和一個隨時間變化的部分bi,Bin(t)組成。Bin 為把數(shù)據(jù)集劃分的不同間隔;時間相關(guān)的用戶偏置同樣由一個固定部分和一個隨時間變化的部分組成,其中αudevu(t)代表了用戶興趣的偏移,bu,t代表某個特殊時期的突然偏移。
由于完全冷啟動物品沒有獲得任何評分,因此冷啟動物品沒有參與到LFM 模型的訓(xùn)練。同時作為一個新物品,我們不知曉其質(zhì)量等偏置因素,相比于用戶物品因素則顯得更加靜態(tài),不會隨時間的變動而改變,所以僅考慮用戶偏置,將S4VM 預(yù)測的結(jié)果φ融入LFM 模型中,替換平均評分和物品偏置項。因為傳統(tǒng)的協(xié)同過濾算法不能直接應(yīng)用于完全冷啟動問題,所以用物品內(nèi)容特征θi替換物品因子Qi,得到所提出模型的預(yù)測公式:
具體算法步驟:
輸入:用戶-物品評分矩陣R,物品屬性集Y,評分標(biāo)簽I
輸出:推薦列表
步驟1:根據(jù)物品內(nèi)容屬性集,訓(xùn)練SDAE,SDAE的隱藏層將學(xué)習(xí)得物品的特征;
步驟2:將冷啟動物品的特征,非冷啟動物品的特征和評分標(biāo)簽作為S4VM 算法的輸入,S4VM將輸出冷啟動物品的評分標(biāo)簽;
步驟3:將S4VM輸出的評分標(biāo)簽及由步驟1獲得的物品特征融入LFM 模型中,通過隨機(jī)梯度下降法最小化損失函數(shù);
步驟4:根據(jù)預(yù)測評分,為用戶推薦其預(yù)測評分較高的物品。
所提出模型(圖1)與經(jīng)典LFM 模型(圖2)的對比如下。
圖1 DCF_C模型框架
圖2 LFM模型框架
基于矩陣分解的算法在數(shù)據(jù)稀疏時非常容易出現(xiàn)過擬合現(xiàn)象,因此,使用常用的正則化方法來避免過擬合,優(yōu)化模型的目標(biāo)就是最小化:
由于上式中所有的參數(shù)都是用戶相關(guān)的,因此訓(xùn)練之后可用來預(yù)測完全冷啟動物品的評分,我們使用隨機(jī)梯度下降法(SGD)來進(jìn)行系數(shù)優(yōu)化。
本次實驗采用的是標(biāo)準(zhǔn)數(shù)據(jù)集MovieLens中的1M 規(guī)模數(shù)據(jù)集,其包含了使用者對電影的百萬個打分,每個打分都是一個1~5 的數(shù)值,我們二值化評分?jǐn)?shù)據(jù),將評分值在4 分及以上記為1,4 分以下記為0。此外,從數(shù)據(jù)集中取出電影的內(nèi)容信息,包含電影標(biāo)題,電影發(fā)布時間,電影所屬類別等。我們將其編碼成二值向量,向量長度為1943。同時,數(shù)據(jù)集還提供了電影第一次受到評分的時間戳,我們將其劃分為10 個間隔,統(tǒng)計每個間隔中有多少部電影。為了模擬新電影出現(xiàn)的情況,我們選擇L 個最新的電影作為測試集,其余電影作為訓(xùn)練集,從而保證這L 部電影不會被訓(xùn)練集中的任何用戶看到。
與絕大部分現(xiàn)有工作一致,本次實驗采用均方根誤差(Root Mean Squared Error,RMSE)指標(biāo)來衡量算法的效果,均方根誤差的公式如下:
其中rui是用戶u對物品i的現(xiàn)實打分,是與其所對應(yīng)的預(yù)測評分。T是測試集,代表測試集中所有評分的數(shù)量。
由于評分信息是以隱式反饋的形式,與CDL一致,我們采用召回率(Recall)作為另外一種指標(biāo)。公式如下:
為了評價所提出的DCF_C 算法的優(yōu)劣,本文選擇了 Top-of-All(ToA)算法,Top-of-User(ToU)算法,timeSVD++算法和CDL 算法作為比較算法。表1 展示了預(yù)測結(jié)果的RMSE 值,其中L 指完全冷啟動電影的測試集的規(guī)模。
表1 所提算法與相關(guān)算法的性能(RMSE)對比
由表可知,我們提出的算法(DCF_C)的RMSE最低,性能最好,且顯著好于其他算法。ToA 算法主要是通過M 個最相似的物品來預(yù)測冷啟動物品的評分,而ToU算法主要是通過用戶對M 個最相似物品的評分來預(yù)測冷啟動物品的評分,它們都是基于相似性的,但是忽略了其他信息,因此它們的性能比所提出的算法要差,實驗中我們將M 取值100。timeSVD++是考慮時間因素的SVD 算法,雖然考慮了時間因素對用戶物品的影響,但是未充分利用輔助信息,因此性能不如我們提出的算法。CDL 是基于深度學(xué)習(xí)的協(xié)同過濾推薦模型的典型代表,它是由王等在SDAE的基礎(chǔ)上,提出了Bayesian SDAE 模型,利用該模型學(xué)習(xí)物品的隱含特征,進(jìn)而利用概率矩陣分解來擬合原始評分矩陣。但是,CDL 只關(guān)注于用戶稀少的情況,且主要任務(wù)是進(jìn)行Top-N 推薦,因此對于冷啟動情況性能一般,但好于另外幾種比較算法。
圖3 展示了我們提出的混合模型與ToA,ToU,timeSVD++,CDL的召回率對比,從中可以看出ToA的召回率最低,性能最差,它是最簡單的相似性算法。timeSVD++的性能低于CDL 以及我們所提出的混合模型,但高于ToA 與ToU 算法,因此考慮時間因素是必要的,但是其未考慮輔助信息。所提模型的性能最佳,推薦的物品受用戶喜歡數(shù)較多,且顯著高于CDL,因為我們結(jié)合了S4VM,預(yù)先對冷啟動物品進(jìn)行初步預(yù)測,然后結(jié)合改進(jìn)的LFM 模型進(jìn)行預(yù)測,同時充分利用SDAE 隱藏層獲得的電影特征,替換矩陣分解中的電影特征向量,因此可以進(jìn)行對冷啟動物品進(jìn)行更準(zhǔn)確的推薦。
圖3 召回率對比
在所提混合模型中,將參數(shù)λ設(shè)置為0.01,隨機(jī)梯度下降中的學(xué)習(xí)率設(shè)置為0.004。與CDL模型一致,將噪聲等級設(shè)置為0.3。由于使用到SDAE模型,其隱藏層的學(xué)習(xí)能力與編碼機(jī)的層數(shù)設(shè)置有關(guān),本次實驗也對其層數(shù)進(jìn)行研究,經(jīng)過實驗研究,將SDAE 的層數(shù)設(shè)置為4 層,其性能較單層的DAE提升0.79%。
對于協(xié)同過濾存在的數(shù)據(jù)稀疏性與冷啟動問題,本文提出了一種基于深度學(xué)習(xí)的混合協(xié)同過濾算法,既能預(yù)測冷啟動物品的評分,又可以緩解數(shù)據(jù)的稀疏性問題,同時充分考慮到物品的屬性以及時間因素的影響,從我們的分析和實驗結(jié)果可知,物品的內(nèi)容以及時間因素對推薦的影響是較大的,尤其是冷啟動物品;我們所提出的算法性能顯著優(yōu)于其他算法,對冷啟動物品的推薦精度和質(zhì)量均有較大提高。
本文使用的是深度網(wǎng)絡(luò)是SDAE,下一步工作考慮將其他深度學(xué)習(xí)網(wǎng)絡(luò)與協(xié)同過濾融合,替換SDAE來提升更多的性能,例如CNN或RNN。