1. 程式人生 > >機器學習-推薦系統中基於深度學習的混合協同過濾模型

機器學習-推薦系統中基於深度學習的混合協同過濾模型

 

近些年,深度學習在語音識別、影象處理、自然語言處理等領域都取得了很大的突破與成就。相對來說,深度學習在推薦系統領域的研究與應用還處於早期階段。

攜程在深度學習與推薦系統結合的領域也進行了相關的研究與應用,並在國際人工智慧頂級會議AAAI 2017上發表了相應的研究成果《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》,本文將分享深度學習在推薦系統上的應用,同時介紹攜程基礎BI團隊在這一領域上的實踐。

一、推薦系統介紹

推薦系統的功能是幫助使用者主動找到滿足其偏好的個性化物品並推薦給使用者。推薦系統的輸入資料可以多種多樣,歸納起來分為使用者(User)、物品(Item)和評分(Ratings)三個層面,它們分別對應於一個矩陣中的行、列、值。對於一個特定使用者,推薦系統的輸出為一個推薦列表,該列表按照偏好得分順序給出了該使用者可能感興趣的物品。

 

圖片描述
圖1. 推薦系統問題描述

 

如圖1右邊所示,推薦問題一個典型的形式化描述如下:我們擁有一個大型稀疏矩陣,該矩陣的每一行表示一個User,每一列表示一個Item,矩陣中每個“+”號表示該User對Item的Rating,(該分值可以是二值化分值,喜歡與不喜歡;也可以是0~5的分值等)。

現在需要解決的問題是:給定該矩陣之後,對於某一個User,向其推薦那些Rating缺失的Item(對應於矩陣中的“?”號)。有了如上的形式化描述之後,推薦系統要解決的問題歸結為兩部分,分別為預測(Prediction)與推薦(Recommendation)。

“預測”要解決的問題是推斷每一個User對每一個Item的偏愛程度,“推薦”要解決的問題是根據預測環節所計算的結果向用戶推薦他沒有打過分的Item。但目前絕大多數推薦演算法都把精力集中在“預測”環節上,“推薦”環節則根據預測環節計算出的得分按照高低排序推薦給使用者,本次分享介紹的方案主要也是”預測”評分矩陣R中missing的評分值。

二、基於協同過濾的推薦

基於協同過濾的推薦通過收集使用者過去的行為以獲得其對物品的顯示或隱式資訊,根據使用者對物品的偏好,發現物品或者使用者的相關性,然後基於這些關聯性進行推薦。 
其主要可以分為兩類:分別是memory-based推薦與model-based推薦。其中memory-based推薦主要分為Item-based方法與User-based方法。協同過濾分類見圖2。

 

圖片描述
圖2. 協同過濾分類

 

Memory-based推薦方法通過執行最近鄰搜尋,把每一個Item或者User看成一個向量,計算其他所有Item或者User與它的相似度。有了Item或者User之間的兩兩相似度之後,就可以進行預測與推薦了。

 

圖片描述
圖3. 矩陣分解示意圖

 

Model-based推薦最常見的方法為Matrix factorization,其示意圖見圖3左邊。矩陣分解通過把原始的評分矩陣R分解為兩個矩陣相乘,並且只考慮有評分的值,訓練時不考慮missing項的值,如圖3右邊所示。R矩陣分解成為U與V兩個矩陣後,評分矩陣R中missing的值就可以通過U矩陣中的某列和V矩陣的某行相乘得到。矩陣分解的目標函式見圖3,U矩陣與V矩陣的可以通過梯度下降(gradient descent)演算法求得,通過交替更新u與v多次迭代收斂之後可求出U與V。

矩陣分解背後的核心思想,找到兩個矩陣,它們相乘之後得到的那個矩陣的值,與評分矩陣R中有值的位置中的值儘可能接近。這樣一來,分解出來的兩個矩陣相乘就儘可能還原了評分矩陣R,因為有值的地方,值都相差得儘可能地小,那麼missing的值通過這樣的方式計算得到,比較符合趨勢。

協同過濾中主要存在如下兩個問題:稀疏性與冷啟動問題。已有的方案通常會通過引入多個不同的資料來源或者輔助資訊(Side information)來解決這些問題,使用者的Side information可以是使用者的基本個人資訊、使用者畫像資訊等,而Item的Side information可以是物品的content資訊等。例如文獻[1]提出了一個Collective Matrix Factorization(CMF)模型,如圖4所示。

 

圖片描述
圖4. Collective Matrix Factorization模型

 

CMF模型通過分別分解評分矩陣R,User的side information矩陣,Item的side information矩陣,其中User或者Item出現在多個矩陣中,其所分解的隱向量都是一致的。

三、深度學習在推薦系統中的應用

Model-based方法的目的就是學習到User的隱向量矩陣U與Item的隱向量矩陣V。我們可以通過深度學習來學習這些抽象表示的隱向量。

Autoencoder(AE)是一個無監督學習模型,它利用反向傳播演算法,讓模型的輸出等於輸入。文獻[2]利用AE來預測使用者對物品missing的評分值,該模型的輸入為評分矩陣R中的一行(User-based)或者一列(Item-based),其目標函式通過計算輸入與輸出的損失來優化模型,而R中missing的評分值通過模型的輸出來預測,進而為使用者做推薦,其模型如圖5所示。

 

圖片描述
圖5. Item-based AutoRec模型

 

Denoising Autoencoder(DAE)是在AE的基礎之上,對輸入的訓練資料加入噪聲。所以DAE必須學習去除這些噪聲而獲得真正的沒有被噪聲汙染過的輸入資料。因此,這就迫使編碼器去學習輸入資料的更加魯棒的表達,通常DAE的泛化能力比一般的AE強。Stacked Denoising Autoencoder(SDAE)是一個多層的AE組成的神經網路,其前一層自編碼器的輸出作為其後一層自編碼器的輸入,如圖6所示。

 

圖片描述
圖6. SDAE

 

文獻[3]在SDAE的基礎之上,提出了Bayesian SDAE模型,並利用該模型來學習Item的隱向量,其輸入為Item的Side information。該模型假設SDAE中的引數滿足高斯分佈,同時假設User的隱向量也滿足高斯分佈,進而利用概率矩陣分解來擬合原始評分矩陣。該模型通過最大後驗估計(MAP)得到其要優化的目標函式,進而利用梯度下降學習模型引數,從而得到User與Item對應的隱向量矩陣。其圖模型如圖7所示。

 

圖片描述
圖7. Bayesian SDAE for Recommendation Sysytem

 

在已有工作的基礎之上,攜程基礎BI演算法團隊通過改進現有的深度模型,提出了一種新的混合協同過濾模型,並將其成果投稿與國際人工智慧頂級會議AAAI 2017並被接受。該成果通過利用User和Item的評分矩陣R以及對應的Side information來學習User和Item的隱向量矩陣U與V,進而預測出評分矩陣R中missing的值,併為使用者做物品推薦。

 

圖片描述
圖8. Additional Stacked Denoising Autoencoder(aSDAE)

 

該成果中提出了一種Additional Stacked Denoising Autoencoder(aSDAE)的深度模型用來學習User和Item的隱向量,該模型的輸入為User或者Item的評分值列表,每個隱層都會接受其對應的Side information資訊的輸入(該模型靈感來自於NLP中的Seq-2-Seq模型,每層都會接受一個輸入,我們的模型中每層接受的輸入都是一樣的,因此最終的輸出也儘可能的與輸入相等),其模型圖見圖8。

結合aSDAE與矩陣分解模型,我們提出了一種混合協同過濾模型,見圖9所示。該模型通過兩個aSDAE學習User與Item的隱向量,通過兩個學習到隱向量的內積去擬合原始評分矩陣R中存在的值,其目標函式由矩陣分解以及兩個aSDAE的損失函式組成,可通過stochastic gradient descent(SGD)學習出U與V,詳情大家可以閱讀我們的paper《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》[4]。

 

圖片描述
圖9. 混合協同過濾模型

 

我們利用RMSE以及RECALL兩個指標評估了我們模型的效果效能,並且在多個數據集上和已有的方案做了對比實驗。實驗效果圖如圖10所示,實驗具體詳情可參看我們的paper。

 

圖片描述
圖10. 實驗效果對比

 

在今年的推薦系統頂級會議RecSys上,Google利用DNN來做YouTube的視訊推薦[5],其模型圖如圖11所示。通過對使用者觀看的視訊,搜尋的關鍵字做embedding,然後在串聯上使用者的side information等資訊,作為DNN的輸入,利用一個多層的DNN學習出使用者的隱向量,然後在其上面加上一層softmax學習出Item的隱向量,進而即可為使用者做Top-N的推薦。

 

圖片描述
圖11. YouTube推薦模型圖

 

此外,文獻[6]通過卷積神經網路(CNN)提出了一種卷積矩陣分解,來做文件的推薦,該模型結合了概率矩陣分解(PMF)與CNN模型,圖見圖12所示。該模型利用CNN來學習Item的隱向量,其對文件的每個詞先做embedding,然後拼接所有片語成一個矩陣embedding矩陣,一篇文件即可用一個二維矩陣表示,其中矩陣的行即為文件中詞的個數,列即為embedding詞向量的長度,然後在該矩陣上做卷積、池化以及對映等,即可得到item的隱向量。User的隱向量和PMF中一樣,假設其滿足高斯分佈,其目標函式由矩陣分解以及CNN的損失函式組成。

 

圖片描述
圖12. 卷積矩陣分解模型

 

四、總結

本文介紹了一些深度學習在推薦領域的應用,我們發現一些常見的深度模型(DNN, AE, CNN等)都可以應用於推薦系統中,但是針對不同領域的推薦,我們需要更多的高效的模型。隨著深度學習技術的發展,我們相信深度學習將會成為推薦系統領域中一項非常重要的技術手段。

本文由攜程技術中心投遞,ID:ctriptech。作者:董鑫,攜程基礎業務部BI團隊高階演算法工程師,博士畢業於上海交通大學電腦科學與技術系。

引用: 
[1] Ajit P. Singh, Geoffrey J. Gordon. “Relational Learning via Collective Matrix Factorization”, KDD 2008 
[2] Suvash Sedhain, Aditya Krishna Menon, Scott Sanner, Lexing Xie. “AutoRec: Autoencoders Meet Collaborative Filtering”, WWW 2015 
[3] Hao Wang,Naiyan Wang, Dit-Yan Yeung. “Collaborative Deep Learning for Recommender Systems”, KDD 2015 
[4] Xin Dong, Lei Yu, ZhonghuoWu, Yuxia Sun, Lingfeng Yuan, Fangxi Zhang. “A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems”, AAAI 2017 
[5] Paul Covington, Jay Adams, Emre Sargin. “Deep Neural Networks for YouTube Recommendations”, RecSys 2016 
[6] Donghyun Kim, Chanyoung Park, Jinoh Oh, Sungyoung Lee, Hwanjo Yu. “Convolutional Matrix Factorization for Document Context-Aware Recommendation”, RecSys 2016

ref:https://blog.csdn.net/sinat_36709248/article/details/72470040