韓浩先,葉春明
(上海理工大學(xué) 管理學(xué)院,上海 200093)
推薦系統(tǒng)被廣泛用于處理過載信息,為用戶甄選有價值的事物.在一個推薦系統(tǒng)中,企業(yè)記錄下用戶和內(nèi)容之間的交互數(shù)據(jù),利用此數(shù)據(jù),向用戶推薦他們可能感興趣的內(nèi)容.隨著網(wǎng)絡(luò)數(shù)據(jù)的膨脹,推薦系統(tǒng)如何使用戶和內(nèi)容之間進行更有效的交互是一個重要的課題.
協(xié)同過濾在推薦系統(tǒng)中的應(yīng)用較為廣泛.并且由于隱因子模型的簡單有效,其在很大程度上仍然主導(dǎo)著協(xié)同過濾推薦算法的研究.然而,這些模型本質(zhì)上是線性的,在面對數(shù)據(jù)稀疏性的問題時,其建模能力有限.近年來,以神經(jīng)網(wǎng)絡(luò)為核心的深度學(xué)習(xí)技術(shù)突飛猛進.由于其高效的特征提取能力和非線性的學(xué)習(xí)方式,越來越多的研究將深度學(xué)習(xí)應(yīng)用于協(xié)同過濾方法中.
為解決線性模型性能差,難以處理打分矩陣稀疏性的問題.2007年,Salakhutdinov 等人提出一種基于受限玻爾茲曼機的協(xié)同過濾推薦模型,第一次將深度學(xué)習(xí)應(yīng)用到推薦系統(tǒng)中[1].Strub 等人采用兩個棧式降噪自編碼器(SDAE),分別學(xué)習(xí)用戶和項目的隱因子,然后通過隱因子模型對缺失評分進行預(yù)測[2].Cheng 等人使用了一種深廣學(xué)習(xí)模型處理多源數(shù)據(jù),該方法同時具有高的記憶能力和泛化能力[3].Liang 等人首次將變分自編碼器(VAE)應(yīng)用到協(xié)同過濾模型中,通過用戶的隱式反饋數(shù)據(jù)預(yù)測缺失值數(shù)據(jù)[4].He 等人將多層感知機和矩陣分解結(jié)合起來,提供了協(xié)同過濾模型的一種通用架構(gòu)[5].在混合推薦模型方面,霍歡等人將棧式降噪自編碼器應(yīng)用于基于內(nèi)容的推薦中,并和協(xié)同過濾算法相結(jié)合[6].李曉菊等人先用循環(huán)神經(jīng)網(wǎng)絡(luò)和變分自編碼器處理商品的文本信息,再與概率矩陣分解相結(jié)合預(yù)測商品的缺失評分[7].
在以上研究文獻的基礎(chǔ)上,本文提出了基于聚類變分自編碼器的協(xié)同過濾算法.該方法利用神經(jīng)網(wǎng)絡(luò)擬合的概率圖模型學(xué)習(xí)用戶的隱式反饋數(shù)據(jù),與傳統(tǒng)的聚類方式不同,它允許我們同時無監(jiān)督地完成聚類和生成,并且,生成器以多項式分布的方法來訓(xùn)練重構(gòu)數(shù)據(jù).
本文的主要貢獻如下:
(1) 與以往對用戶和內(nèi)容的特征進行聚類的方法不同,本文直接將隱變量特征設(shè)定為帶有聚類效果的二元變量,將聚類統(tǒng)一到算法的整體框架中;
(2) 在大規(guī)模數(shù)據(jù)上對四種模型進行了實驗,對其性能進行了評價和對比,并且對正則項的超參數(shù)進行了研究,避免了過度正則化.
變分自編碼器[8]是一種無監(jiān)督的生成模型,其結(jié)構(gòu)如圖1所示.它將神經(jīng)網(wǎng)絡(luò)技術(shù)與概率圖模型結(jié)合在一起,能夠擬合出原始數(shù)據(jù)所服從的分布,同時能夠生成出類似的數(shù)據(jù).對于每一個用戶u,它都對應(yīng)著一組數(shù)據(jù)xu,同時對應(yīng)著一個服從標準正態(tài)分布的K維隱變量zu.對zu進行采樣,生成重構(gòu)數(shù)據(jù),其服從條件概率pθ(xu|zu).由于該條件概率無法直接求出,可以用一個非線性函數(shù)fθ(zu)進行替代.該函數(shù)是一個帶有參數(shù)θ 的多層神經(jīng)網(wǎng)絡(luò),其輸出為使用softmax 函數(shù)進行了歸一化的概率矩陣 π (fθ(zu)) .本文將pθ(xu|zu)設(shè)定為多項式分布,希望通過優(yōu)化參數(shù) θ使該函數(shù)能夠以盡可能大的概率生成類似xu的數(shù)據(jù),損失函數(shù)公式:


圖1 變分自編碼器結(jié)構(gòu)圖
生成模型的目標就是通過最大化條件概率pθ(xu|zu) 進而最大化重構(gòu)數(shù)據(jù)的產(chǎn)生概率p(xu),使重構(gòu)數(shù)據(jù)盡量接近原始數(shù)據(jù).但僅靠隨機采樣一組隱變量是無法與其生成數(shù)據(jù)一一對應(yīng)的,還需要構(gòu)建其與原始數(shù)據(jù)xu的概率關(guān)系來獲得隱變量的分布參數(shù).所以,我們用貝葉斯變分推斷的方法構(gòu)造一個高斯分布qφ(zu|xu)來對隱變量進行采樣.采樣的參數(shù)實質(zhì)上是神經(jīng)網(wǎng)絡(luò)生成的均值(μ)和標準差(σ)兩個K維向量.編碼器產(chǎn)生的分布是否接近標準分布是使用KL散度來計算的.所以用編碼器構(gòu)建的神經(jīng)網(wǎng)絡(luò)所計算出的條件概率qφ(zu|xu) 來 近似真實后驗概率pθ(zu|xu),兩者之間的相似度:

由于KL散度非負,可以將式(2)變化,得到:

其中,

式(4)為變分自編碼器的變分下界,在最大化變分下界時,l ogpθ(xu)也在增加.因此模型的優(yōu)化目標可以轉(zhuǎn)化為最大化式(4).
但是,均值與方差都是用神經(jīng)網(wǎng)絡(luò)算出來的,然后再對其進行隨機采樣,由于隨機采樣不是一個連續(xù)過程,無法求導(dǎo),但采樣的結(jié)果可以求導(dǎo),以此可以實現(xiàn)反向傳播以優(yōu)化網(wǎng)絡(luò)參數(shù).因此,我們用一個隨機變量ε對隱變量進行重參數(shù)化,可得:

本文用元素i∈{1,···,I}索引每個內(nèi)容,將每個用戶u的數(shù)據(jù)設(shè)為向量xu=[xu1,···,xuI]T,其中,xui代表用戶u對內(nèi)容i的打分值.因為實驗所用數(shù)據(jù)為MovieLens數(shù)據(jù)集,所以打分值大小為1 到5.但為了提高推薦的預(yù)測準確率,本文將xu轉(zhuǎn)換為隱式反饋數(shù)據(jù),先篩選出觀看數(shù)超過五部電影的用戶再保留評分大于等于4 的電影,將這些電影的打分值轉(zhuǎn)化為1,表示用戶所點擊過的喜愛的項目,最后用0 填充缺失值.
本文將隱變量設(shè)置為二元變量(z,y),其中z為連續(xù)變量,代表著對交互特征進行編碼的編碼向量,而y為離散變量,代表著聚類類別,可以在隱變量計算階段完成對特征的聚類[9].因離散變量y是在連續(xù)變量z的基礎(chǔ)上計算而得,我們假設(shè):

于是,有:
由第1 節(jié)可知,zu是服從標準正態(tài)分布的,所以pθ(zu|yu)是 服從均值為μy,方差為1 的正態(tài)分布,μy為解碼網(wǎng)絡(luò)參數(shù)之一;pθ(y)為均勻分布即各類別的電影數(shù)量大致相同;qφ(yu|zu)是 對隱變量zu的分類器,可以通過softmax 網(wǎng)絡(luò)進行擬合.因此,可以得到:

模型優(yōu)化目標為最大化式(9).神經(jīng)網(wǎng)絡(luò)的激活函數(shù)均為tanh,而最后一層的Softmax 分類網(wǎng)絡(luò)的輸出π(fθ(zu))為模型的歸一化概率,其參與到服從多項式分布的重構(gòu)誤差中進行網(wǎng)絡(luò)優(yōu)化,以使更多的概率分配給更有可能被觀看的電影項目.
式(9)中的第二和第三項可看作是重構(gòu)誤差項的正則化表達式,以避免其過擬合.同時,為了權(quán)衡擬合效果,本文引入了參數(shù) β來控制正則化的強度[10],再將優(yōu)化目標轉(zhuǎn)換為最小化損失函數(shù):

如果 β <1,那么會削弱正則項的影響,也就是避免了過度正則化.從模型角度來看,該方法對于第二項避免了過度的聚類效果,同時,對于第三項避免了聚類類別的分布過度均衡,這符合推薦內(nèi)容多類別多標簽、無法完全歸納到單一類的實際情況,在實驗中也展現(xiàn)了正則項參數(shù)的良好效果.
CAVE 的隨機梯度下降算法(SDG)以一個訓(xùn)練樣本xu和其重構(gòu)數(shù)據(jù)x′u計算梯度?θL和?φL,再對批量數(shù)據(jù)的梯度求均值,利用該值更新網(wǎng)絡(luò)的參數(shù):

對于一個用戶的歷史數(shù)據(jù)xu,通過訓(xùn)練好的模型,可以利用預(yù)測出的未歸一化的多項式分布概率fθ(zu)對所有的推薦項目進行排序.
本文實驗所使用的數(shù)據(jù)為MovieLens 100k、MovieLens 1M和MovieLens 20M 三個規(guī)模不同的公開數(shù)據(jù)集.我們只保留至少觀看過五部電影的用戶,最終輸入模型的特征數(shù)據(jù)為用戶的隱式反饋數(shù)據(jù).數(shù)據(jù)集的詳細內(nèi)容如表1所示.本文實驗所用語言為python3.5,深度學(xué)習(xí)框架為tensorflow 1.9+keras 2.2,操作系統(tǒng)為Windows10,處理器為Intel(R) Core(TM) i7-7700 CPU @3.6 GHz,內(nèi)存為8 GB.

表1 數(shù)據(jù)集
本文使用兩個top-K 排序的指標作為實驗結(jié)果的評價方法,分別是召回率 R ecall@K和歸一化折扣累積增益NDCG@K.同時,定義w(k) 為排名k的項目,h[·]為等級關(guān)聯(lián)性函數(shù),如果真正打過分的項目在預(yù)測集中則該函數(shù)值為1,否則為0,Iu為測試集用戶u評過分的項目集合.兩者的定義分別如下:其中,ZK是歸一化系數(shù),表示h[w(k)∈Iu]=1都成立的理想情況下,ZK其后的累加項值的倒數(shù).因為都使用了歸一化方法,所以兩指標的數(shù)值都在0-1 之內(nèi).

4.3.1 基線
DAE[4]:降噪自編碼的訓(xùn)練過程中,輸入的數(shù)據(jù)有一部分是“損壞”的,能夠?qū)Α皳p壞”的原始數(shù)據(jù)編碼、解碼,然后盡可能接近原始數(shù)據(jù)地預(yù)測打分矩陣的缺失值.
SDAE:棧式降噪自編碼器就是在數(shù)據(jù)部分“損壞”的基礎(chǔ)上多個自編碼器相接,以完成逐層特征提取的任務(wù),最后得到的特征作為分類器的輸入,完成推薦項目的概率預(yù)測.
WMF[11]:加權(quán)矩陣分解,這是一種線性的、低秩的矩陣分解模型.
SLIM[12]:稀疏線性模型,該方法是基于物品相似度的推廣形式.
CDAE[13]:協(xié)同降噪自編碼器通過向輸入添加每個用戶的潛在因子來表示用戶偏好,同時在隱變量層加入了偏置表示.
DAE和SDAE 在ML-100k和ML-1M 上的評價結(jié)果由本文實驗得出;WMF、SLIM和CDAE 在ML-20M 上的實驗數(shù)據(jù)源于文獻[4].
4.3.2 參數(shù)
為了訓(xùn)練不同模型的性能,我們把所有樣本分為訓(xùn)練/驗證/測試3 個集合,驗證集和測試集的樣本數(shù)一樣.同時,對模型的輸入層使用dropout 方法,對最后的輸出使用Softmax 層進行歸一化.CVAE 模型的隱變量z到y(tǒng)的分類器結(jié)構(gòu)為200→n,即聚類類別為n類,激活函數(shù)為Softmax.其他參數(shù)如表2所示,I為項目個數(shù).
為了觀察β值對算法評價結(jié)果的影響,本文將其從0 到1 分成十份并使用MovieLens1M 測試集數(shù)據(jù)進行計算,發(fā)現(xiàn)CVAE 協(xié)同過濾模型在3 個指標上都隨著β值的增加而先增后減,門檻值均在0.4 附近.所以后續(xù)實驗均將β值設(shè)置為0.4,以此為最優(yōu)的CVAE協(xié)同過濾模型.如圖2所示.
由于聚類的類別數(shù)會影響到算法的性能[14],本文從0 到50 依次選值進行實驗.發(fā)現(xiàn)當類別數(shù)為20 時,該算法在3 個指標上的表現(xiàn)均最佳,所以以此值為最優(yōu)的超參數(shù).并且該大小也符合電影分類的類別數(shù).如圖3所示.

表2 實驗超參數(shù)

圖2 β 值對結(jié)果的影響

圖3 類別個數(shù)對結(jié)果的影響
圖4顯示了在MovieLens1M 驗證集上的CVAE協(xié)同過濾模型的NDCG@100 值的迭代過程.隨著模型迭代次數(shù)的增加,評價指標依次逐漸上升,直至穩(wěn)定.實驗最優(yōu)的迭代次數(shù)大概在60 代-80 代.在之后MovieLens 100K和MovieLens 20M 的實驗中,其走勢與MovieLens1M 的類似.

圖4 NDCG@100 指標的迭代
由表3、表4和表5所知,CVAE 協(xié)同過濾模型在三個數(shù)據(jù)集上的八個評價結(jié)果上均優(yōu)于基線.但在MovieLens 100K 數(shù)據(jù)集上的Recall@50 指標表現(xiàn)最好的是SDAE 模型,并發(fā)現(xiàn)隨著K值的增加,CVAE 方法的Recall@K值表現(xiàn)不如其他兩個模型,對于該方面的問題是由于CVAE 方法在小規(guī)模數(shù)據(jù)集和高K值召回率上性能欠佳造成的,還是由于其他原因造成的,需要設(shè)置多個K值進一步實驗,對比研究.除此之外,可以看出對于更加稀疏、規(guī)模更大的打分矩陣,CVAE的處理能力是更強的,比基線方法表現(xiàn)出了更為優(yōu)越的推薦性能.

表3 MovieLens 1M

表4 MovieLens 100K

表5 MovieLens 20M
本文提出了一種具有聚類效果的變分自編碼器,并將其運用到協(xié)同過濾推薦算法中.該方法既能學(xué)習(xí)到用戶和項目間的隱因子,又可以在編碼階段完成對項目特征的聚類.該模型還引入了正則化系數(shù),通過對其在0-1 之間的研究,發(fā)現(xiàn)了擬合效果更好的參數(shù)值.最后,以多項式分布對缺失值進行了預(yù)測.該方法在3 個規(guī)模不同的數(shù)據(jù)集上進行測試,展現(xiàn)了其良好的推薦性能.
未來還可以使用自然語言處理技術(shù)處理文本信息,將電影標簽信息和用戶評語融入到該算法中,用混合模型提高推薦系統(tǒng)的性能.