推薦系統(tǒng)中基于深度學(xué)習(xí)的混合協(xié)同過濾模型
近些年,深度學(xué)習(xí)在語(yǔ)音識(shí)別、圖像處理、自然語(yǔ)言處理等領(lǐng)域都取得了很大的突破與成就。相對(duì)來(lái)說,深度學(xué)習(xí)在推薦系統(tǒng)領(lǐng)域的研究與應(yīng)用還處于早期階段。
攜程在深度學(xué)習(xí)與推薦系統(tǒng)結(jié)合的領(lǐng)域也進(jìn)行了相關(guān)的研究與應(yīng)用,并在國(guó)際人工智能***會(huì)議AAAI 2017上發(fā)表了相應(yīng)的研究成果《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》,本文將分享深度學(xué)習(xí)在推薦系統(tǒng)上的應(yīng)用,同時(shí)介紹攜程基礎(chǔ)BI團(tuán)隊(duì)在這一領(lǐng)域上的實(shí)踐。
一、推薦系統(tǒng)介紹
推薦系統(tǒng)的功能是幫助用戶主動(dòng)找到滿足其偏好的個(gè)性化物品并推薦給用戶。推薦系統(tǒng)的輸入數(shù)據(jù)可以多種多樣,歸納起來(lái)分為用戶(User)、物品(Item)和評(píng)分(Ratings)三個(gè)層面,它們分別對(duì)應(yīng)于一個(gè)矩陣中的行、列、值。對(duì)于一個(gè)特定用戶,推薦系統(tǒng)的輸出為一個(gè)推薦列表,該列表按照偏好得分順序給出了該用戶可能感興趣的物品。
圖1. 推薦系統(tǒng)問題描述
如圖1右邊所示,推薦問題一個(gè)典型的形式化描述如下:我們擁有一個(gè)大型稀疏矩陣,該矩陣的每一行表示一個(gè)User,每一列表示一個(gè)Item,矩陣中每個(gè)“+”號(hào)表示該User對(duì)Item的Rating,(該分值可以是二值化分值,喜歡與不喜歡;也可以是0~5的分值等)。
現(xiàn)在需要解決的問題是:給定該矩陣之后,對(duì)于某一個(gè)User,向其推薦那些Rating缺失的Item(對(duì)應(yīng)于矩陣中的“?”號(hào))。有了如上的形式化描述之后,推薦系統(tǒng)要解決的問題歸結(jié)為兩部分,分別為預(yù)測(cè)(Prediction)與推薦(Recommendation)。
“預(yù)測(cè)”要解決的問題是推斷每一個(gè)User對(duì)每一個(gè)Item的偏愛程度,“推薦”要解決的問題是根據(jù)預(yù)測(cè)環(huán)節(jié)所計(jì)算的結(jié)果向用戶推薦他沒有打過分的Item。但目前絕大多數(shù)推薦算法都把精力集中在“預(yù)測(cè)”環(huán)節(jié)上,“推薦”環(huán)節(jié)則根據(jù)預(yù)測(cè)環(huán)節(jié)計(jì)算出的得分按照高低排序推薦給用戶,本次分享介紹的方案主要也是”預(yù)測(cè)”評(píng)分矩陣R中missing的評(píng)分值。
二、基于協(xié)同過濾的推薦
基于協(xié)同過濾的推薦通過收集用戶過去的行為以獲得其對(duì)物品的顯示或隱式信息,根據(jù)用戶對(duì)物品的偏好,發(fā)現(xiàn)物品或者用戶的相關(guān)性,然后基于這些關(guān)聯(lián)性進(jìn)行推薦。
其主要可以分為兩類:分別是memory-based推薦與model-based推薦。其中memory-based推薦主要分為Item-based方法與User-based方法。協(xié)同過濾分類見圖2。
圖2. 協(xié)同過濾分類
Memory-based推薦方法通過執(zhí)行最近鄰搜索,把每一個(gè)Item或者User看成一個(gè)向量,計(jì)算其他所有Item或者User與它的相似度。有了Item或者User之間的兩兩相似度之后,就可以進(jìn)行預(yù)測(cè)與推薦了。
圖3. 矩陣分解示意圖
Model-based推薦最常見的方法為Matrix factorization,其示意圖見圖3左邊。矩陣分解通過把原始的評(píng)分矩陣R分解為兩個(gè)矩陣相乘,并且只考慮有評(píng)分的值,訓(xùn)練時(shí)不考慮missing項(xiàng)的值,如圖3右邊所示。R矩陣分解成為U與V兩個(gè)矩陣后,評(píng)分矩陣R中missing的值就可以通過U矩陣中的某列和V矩陣的某行相乘得到。矩陣分解的目標(biāo)函數(shù)見圖3,U矩陣與V矩陣的可以通過梯度下降(gradient descent)算法求得,通過交替更新u與v多次迭代收斂之后可求出U與V。
矩陣分解背后的核心思想,找到兩個(gè)矩陣,它們相乘之后得到的那個(gè)矩陣的值,與評(píng)分矩陣R中有值的位置中的值盡可能接近。這樣一來(lái),分解出來(lái)的兩個(gè)矩陣相乘就盡可能還原了評(píng)分矩陣R,因?yàn)橛兄档牡胤剑刀枷嗖畹帽M可能地小,那么missing的值通過這樣的方式計(jì)算得到,比較符合趨勢(shì)。
協(xié)同過濾中主要存在如下兩個(gè)問題:稀疏性與冷啟動(dòng)問題。已有的方案通常會(huì)通過引入多個(gè)不同的數(shù)據(jù)源或者輔助信息(Side information)來(lái)解決這些問題,用戶的Side information可以是用戶的基本個(gè)人信息、用戶畫像信息等,而Item的Side information可以是物品的content信息等。例如文獻(xiàn)[1]提出了一個(gè)Collective Matrix Factorization(CMF)模型,如圖4所示。
圖4. Collective Matrix Factorization模型
CMF模型通過分別分解評(píng)分矩陣R,User的side information矩陣,Item的side information矩陣,其中User或者Item出現(xiàn)在多個(gè)矩陣中,其所分解的隱向量都是一致的。
三、深度學(xué)習(xí)在推薦系統(tǒng)中的應(yīng)用
Model-based方法的目的就是學(xué)習(xí)到User的隱向量矩陣U與Item的隱向量矩陣V。我們可以通過深度學(xué)習(xí)來(lái)學(xué)習(xí)這些抽象表示的隱向量。
Autoencoder(AE)是一個(gè)無(wú)監(jiān)督學(xué)習(xí)模型,它利用反向傳播算法,讓模型的輸出等于輸入。文獻(xiàn)[2]利用AE來(lái)預(yù)測(cè)用戶對(duì)物品missing的評(píng)分值,該模型的輸入為評(píng)分矩陣R中的一行(User-based)或者一列(Item-based),其目標(biāo)函數(shù)通過計(jì)算輸入與輸出的損失來(lái)優(yōu)化模型,而R中missing的評(píng)分值通過模型的輸出來(lái)預(yù)測(cè),進(jìn)而為用戶做推薦,其模型如圖5所示。
圖5. Item-based AutoRec模型
Denoising Autoencoder(DAE)是在AE的基礎(chǔ)之上,對(duì)輸入的訓(xùn)練數(shù)據(jù)加入噪聲。所以DAE必須學(xué)習(xí)去除這些噪聲而獲得真正的沒有被噪聲污染過的輸入數(shù)據(jù)。因此,這就迫使編碼器去學(xué)習(xí)輸入數(shù)據(jù)的更加魯棒的表達(dá),通常DAE的泛化能力比一般的AE強(qiáng)。Stacked Denoising Autoencoder(SDAE)是一個(gè)多層的AE組成的神經(jīng)網(wǎng)絡(luò),其前一層自編碼器的輸出作為其后一層自編碼器的輸入,如圖6所示。
圖6. SDAE
文獻(xiàn)[3]在SDAE的基礎(chǔ)之上,提出了Bayesian SDAE模型,并利用該模型來(lái)學(xué)習(xí)Item的隱向量,其輸入為Item的Side information。該模型假設(shè)SDAE中的參數(shù)滿足高斯分布,同時(shí)假設(shè)User的隱向量也滿足高斯分布,進(jìn)而利用概率矩陣分解來(lái)擬合原始評(píng)分矩陣。該模型通過***后驗(yàn)估計(jì)(MAP)得到其要優(yōu)化的目標(biāo)函數(shù),進(jìn)而利用梯度下降學(xué)習(xí)模型參數(shù),從而得到User與Item對(duì)應(yīng)的隱向量矩陣。其圖模型如圖7所示。
圖7. Bayesian SDAE for Recommendation Sysytem
在已有工作的基礎(chǔ)之上,攜程基礎(chǔ)BI算法團(tuán)隊(duì)通過改進(jìn)現(xiàn)有的深度模型,提出了一種新的混合協(xié)同過濾模型,并將其成果投稿與國(guó)際人工智能***會(huì)議AAAI 2017并被接受。該成果通過利用User和Item的評(píng)分矩陣R以及對(duì)應(yīng)的Side information來(lái)學(xué)習(xí)User和Item的隱向量矩陣U與V,進(jìn)而預(yù)測(cè)出評(píng)分矩陣R中missing的值,并為用戶做物品推薦。
圖8. Additional Stacked Denoising Autoencoder(aSDAE)
該成果中提出了一種Additional Stacked Denoising Autoencoder(aSDAE)的深度模型用來(lái)學(xué)習(xí)User和Item的隱向量,該模型的輸入為User或者Item的評(píng)分值列表,每個(gè)隱層都會(huì)接受其對(duì)應(yīng)的Side information信息的輸入(該模型靈感來(lái)自于NLP中的Seq-2-Seq模型,每層都會(huì)接受一個(gè)輸入,我們的模型中每層接受的輸入都是一樣的,因此最終的輸出也盡可能的與輸入相等),其模型圖見圖8。
結(jié)合aSDAE與矩陣分解模型,我們提出了一種混合協(xié)同過濾模型,見圖9所示。該模型通過兩個(gè)aSDAE學(xué)習(xí)User與Item的隱向量,通過兩個(gè)學(xué)習(xí)到隱向量的內(nèi)積去擬合原始評(píng)分矩陣R中存在的值,其目標(biāo)函數(shù)由矩陣分解以及兩個(gè)aSDAE的損失函數(shù)組成,可通過stochastic gradient descent(SGD)學(xué)習(xí)出U與V,詳情大家可以閱讀我們的paper《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》[4]。
圖9. 混合協(xié)同過濾模型
我們利用RMSE以及RECALL兩個(gè)指標(biāo)評(píng)估了我們模型的效果性能,并且在多個(gè)數(shù)據(jù)集上和已有的方案做了對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)效果圖如圖10所示,實(shí)驗(yàn)具體詳情可參看我們的paper。
圖10. 實(shí)驗(yàn)效果對(duì)比
在今年的推薦系統(tǒng)***會(huì)議RecSys上,Google利用DNN來(lái)做YouTube的視頻推薦[5],其模型圖如圖11所示。通過對(duì)用戶觀看的視頻,搜索的關(guān)鍵字做embedding,然后在串聯(lián)上用戶的side information等信息,作為DNN的輸入,利用一個(gè)多層的DNN學(xué)習(xí)出用戶的隱向量,然后在其上面加上一層softmax學(xué)習(xí)出Item的隱向量,進(jìn)而即可為用戶做Top-N的推薦。
圖11. YouTube推薦模型圖
此外,文獻(xiàn)[6]通過卷積神經(jīng)網(wǎng)絡(luò)(CNN)提出了一種卷積矩陣分解,來(lái)做文檔的推薦,該模型結(jié)合了概率矩陣分解(PMF)與CNN模型,圖見圖12所示。該模型利用CNN來(lái)學(xué)習(xí)Item的隱向量,其對(duì)文檔的每個(gè)詞先做embedding,然后拼接所有詞組成一個(gè)矩陣embedding矩陣,一篇文檔即可用一個(gè)二維矩陣表示,其中矩陣的行即為文檔中詞的個(gè)數(shù),列即為embedding詞向量的長(zhǎng)度,然后在該矩陣上做卷積、池化以及映射等,即可得到item的隱向量。User的隱向量和PMF中一樣,假設(shè)其滿足高斯分布,其目標(biāo)函數(shù)由矩陣分解以及CNN的損失函數(shù)組成。
圖12. 卷積矩陣分解模型
四、總結(jié)
本文介紹了一些深度學(xué)習(xí)在推薦領(lǐng)域的應(yīng)用,我們發(fā)現(xiàn)一些常見的深度模型(DNN, AE, CNN等)都可以應(yīng)用于推薦系統(tǒng)中,但是針對(duì)不同領(lǐng)域的推薦,我們需要更多的高效的模型。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,我們相信深度學(xué)習(xí)將會(huì)成為推薦系統(tǒng)領(lǐng)域中一項(xiàng)非常重要的技術(shù)手段。
本文由攜程技術(shù)中心投遞,ID:ctriptech。作者:董鑫,攜程基礎(chǔ)業(yè)務(wù)部BI團(tuán)隊(duì)高級(jí)算法工程師,博士畢業(yè)于上海交通大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系。