韓浩先,葉春明
(上海理工大學(xué) 管理學(xué)院,上海 200093)
推薦系統(tǒng)被廣泛用于處理過(guò)載信息,為用戶甄選有價(jià)值的事物.在一個(gè)推薦系統(tǒng)中,企業(yè)記錄下用戶和內(nèi)容之間的交互數(shù)據(jù),利用此數(shù)據(jù),向用戶推薦他們可能感興趣的內(nèi)容.隨著網(wǎng)絡(luò)數(shù)據(jù)的膨脹,推薦系統(tǒng)如何使用戶和內(nèi)容之間進(jìn)行更有效的交互是一個(gè)重要的課題.
協(xié)同過(guò)濾在推薦系統(tǒng)中的應(yīng)用較為廣泛.并且由于隱因子模型的簡(jiǎn)單有效,其在很大程度上仍然主導(dǎo)著協(xié)同過(guò)濾推薦算法的研究.然而,這些模型本質(zhì)上是線性的,在面對(duì)數(shù)據(jù)稀疏性的問(wèn)題時(shí),其建模能力有限.近年來(lái),以神經(jīng)網(wǎng)絡(luò)為核心的深度學(xué)習(xí)技術(shù)突飛猛進(jìn).由于其高效的特征提取能力和非線性的學(xué)習(xí)方式,越來(lái)越多的研究將深度學(xué)習(xí)應(yīng)用于協(xié)同過(guò)濾方法中.
為解決線性模型性能差,難以處理打分矩陣稀疏性的問(wèn)題.2007年,Salakhutdinov 等人提出一種基于受限玻爾茲曼機(jī)的協(xié)同過(guò)濾推薦模型,第一次將深度學(xué)習(xí)應(yīng)用到推薦系統(tǒng)中[1].Strub 等人采用兩個(gè)棧式降噪自編碼器(SDAE),分別學(xué)習(xí)用戶和項(xiàng)目的隱因子,然后通過(guò)隱因子模型對(duì)缺失評(píng)分進(jìn)行預(yù)測(cè)[2].Cheng 等人使用了一種深廣學(xué)習(xí)模型處理多源數(shù)據(jù),該方法同時(shí)具有高的記憶能力和泛化能力[3].Liang 等人首次將變分自編碼器(VAE)應(yīng)用到協(xié)同過(guò)濾模型中,通過(guò)用戶的隱式反饋數(shù)據(jù)預(yù)測(cè)缺失值數(shù)據(jù)[4].He 等人將多層感知機(jī)和矩陣分解結(jié)合起來(lái),提供了協(xié)同過(guò)濾模型的一種通用架構(gòu)[5].在混合推薦模型方面,霍歡等人將棧式降噪自編碼器應(yīng)用于基于內(nèi)容的推薦中,并和協(xié)同過(guò)濾算法相結(jié)合[6].李曉菊等人先用循環(huán)神經(jīng)網(wǎng)絡(luò)和變分自編碼器處理商品的文本信息,再與概率矩陣分解相結(jié)合預(yù)測(cè)商品的缺失評(píng)分[7].
在以上研究文獻(xiàn)的基礎(chǔ)上,本文提出了基于聚類(lèi)變分自編碼器的協(xié)同過(guò)濾算法.該方法利用神經(jīng)網(wǎng)絡(luò)擬合的概率圖模型學(xué)習(xí)用戶的隱式反饋數(shù)據(jù),與傳統(tǒng)的聚類(lèi)方式不同,它允許我們同時(shí)無(wú)監(jiān)督地完成聚類(lèi)和生成,并且,生成器以多項(xiàng)式分布的方法來(lái)訓(xùn)練重構(gòu)數(shù)據(jù).
本文的主要貢獻(xiàn)如下:
(1) 與以往對(duì)用戶和內(nèi)容的特征進(jìn)行聚類(lèi)的方法不同,本文直接將隱變量特征設(shè)定為帶有聚類(lèi)效果的二元變量,將聚類(lèi)統(tǒng)一到算法的整體框架中;
(2) 在大規(guī)模數(shù)據(jù)上對(duì)四種模型進(jìn)行了實(shí)驗(yàn),對(duì)其性能進(jìn)行了評(píng)價(jià)和對(duì)比,并且對(duì)正則項(xiàng)的超參數(shù)進(jìn)行了研究,避免了過(guò)度正則化.
變分自編碼器[8]是一種無(wú)監(jiān)督的生成模型,其結(jié)構(gòu)如圖1所示.它將神經(jīng)網(wǎng)絡(luò)技術(shù)與概率圖模型結(jié)合在一起,能夠擬合出原始數(shù)據(jù)所服從的分布,同時(shí)能夠生成出類(lèi)似的數(shù)據(jù).對(duì)于每一個(gè)用戶u,它都對(duì)應(yīng)著一組數(shù)據(jù)xu,同時(shí)對(duì)應(yīng)著一個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的K維隱變量zu.對(duì)zu進(jìn)行采樣,生成重構(gòu)數(shù)據(jù),其服從條件概率pθ(xu|zu).由于該條件概率無(wú)法直接求出,可以用一個(gè)非線性函數(shù)fθ(zu)進(jìn)行替代.該函數(shù)是一個(gè)帶有參數(shù)θ 的多層神經(jīng)網(wǎng)絡(luò),其輸出為使用softmax 函數(shù)進(jìn)行了歸一化的概率矩陣 π (fθ(zu)) .本文將pθ(xu|zu)設(shè)定為多項(xiàng)式分布,希望通過(guò)優(yōu)化參數(shù) θ使該函數(shù)能夠以盡可能大的概率生成類(lèi)似xu的數(shù)據(jù),損失函數(shù)公式:
圖1 變分自編碼器結(jié)構(gòu)圖
生成模型的目標(biāo)就是通過(guò)最大化條件概率pθ(xu|zu) 進(jìn)而最大化重構(gòu)數(shù)據(jù)的產(chǎn)生概率p(xu),使重構(gòu)數(shù)據(jù)盡量接近原始數(shù)據(jù).但僅靠隨機(jī)采樣一組隱變量是無(wú)法與其生成數(shù)據(jù)一一對(duì)應(yīng)的,還需要構(gòu)建其與原始數(shù)據(jù)xu的概率關(guān)系來(lái)獲得隱變量的分布參數(shù).所以,我們用貝葉斯變分推斷的方法構(gòu)造一個(gè)高斯分布qφ(zu|xu)來(lái)對(duì)隱變量進(jìn)行采樣.采樣的參數(shù)實(shí)質(zhì)上是神經(jīng)網(wǎng)絡(luò)生成的均值(μ)和標(biāo)準(zhǔn)差(σ)兩個(gè)K維向量.編碼器產(chǎn)生的分布是否接近標(biāo)準(zhǔn)分布是使用KL散度來(lái)計(jì)算的.所以用編碼器構(gòu)建的神經(jīng)網(wǎng)絡(luò)所計(jì)算出的條件概率qφ(zu|xu) 來(lái) 近似真實(shí)后驗(yàn)概率pθ(zu|xu),兩者之間的相似度:
由于KL散度非負(fù),可以將式(2)變化,得到:
其中,
式(4)為變分自編碼器的變分下界,在最大化變分下界時(shí),l ogpθ(xu)也在增加.因此模型的優(yōu)化目標(biāo)可以轉(zhuǎn)化為最大化式(4).
但是,均值與方差都是用神經(jīng)網(wǎng)絡(luò)算出來(lái)的,然后再對(duì)其進(jìn)行隨機(jī)采樣,由于隨機(jī)采樣不是一個(gè)連續(xù)過(guò)程,無(wú)法求導(dǎo),但采樣的結(jié)果可以求導(dǎo),以此可以實(shí)現(xiàn)反向傳播以優(yōu)化網(wǎng)絡(luò)參數(shù).因此,我們用一個(gè)隨機(jī)變量ε對(duì)隱變量進(jìn)行重參數(shù)化,可得:
本文用元素i∈{1,···,I}索引每個(gè)內(nèi)容,將每個(gè)用戶u的數(shù)據(jù)設(shè)為向量xu=[xu1,···,xuI]T,其中,xui代表用戶u對(duì)內(nèi)容i的打分值.因?yàn)閷?shí)驗(yàn)所用數(shù)據(jù)為MovieLens數(shù)據(jù)集,所以打分值大小為1 到5.但為了提高推薦的預(yù)測(cè)準(zhǔn)確率,本文將xu轉(zhuǎn)換為隱式反饋數(shù)據(jù),先篩選出觀看數(shù)超過(guò)五部電影的用戶再保留評(píng)分大于等于4 的電影,將這些電影的打分值轉(zhuǎn)化為1,表示用戶所點(diǎn)擊過(guò)的喜愛(ài)的項(xiàng)目,最后用0 填充缺失值.
本文將隱變量設(shè)置為二元變量(z,y),其中z為連續(xù)變量,代表著對(duì)交互特征進(jìn)行編碼的編碼向量,而y為離散變量,代表著聚類(lèi)類(lèi)別,可以在隱變量計(jì)算階段完成對(duì)特征的聚類(lèi)[9].因離散變量y是在連續(xù)變量z的基礎(chǔ)上計(jì)算而得,我們假設(shè):
于是,有:
由第1 節(jié)可知,zu是服從標(biāo)準(zhǔn)正態(tài)分布的,所以pθ(zu|yu)是 服從均值為μy,方差為1 的正態(tài)分布,μy為解碼網(wǎng)絡(luò)參數(shù)之一;pθ(y)為均勻分布即各類(lèi)別的電影數(shù)量大致相同;qφ(yu|zu)是 對(duì)隱變量zu的分類(lèi)器,可以通過(guò)softmax 網(wǎng)絡(luò)進(jìn)行擬合.因此,可以得到:
模型優(yōu)化目標(biāo)為最大化式(9).神經(jīng)網(wǎng)絡(luò)的激活函數(shù)均為tanh,而最后一層的Softmax 分類(lèi)網(wǎng)絡(luò)的輸出π(fθ(zu))為模型的歸一化概率,其參與到服從多項(xiàng)式分布的重構(gòu)誤差中進(jìn)行網(wǎng)絡(luò)優(yōu)化,以使更多的概率分配給更有可能被觀看的電影項(xiàng)目.
式(9)中的第二和第三項(xiàng)可看作是重構(gòu)誤差項(xiàng)的正則化表達(dá)式,以避免其過(guò)擬合.同時(shí),為了權(quán)衡擬合效果,本文引入了參數(shù) β來(lái)控制正則化的強(qiáng)度[10],再將優(yōu)化目標(biāo)轉(zhuǎn)換為最小化損失函數(shù):
如果 β <1,那么會(huì)削弱正則項(xiàng)的影響,也就是避免了過(guò)度正則化.從模型角度來(lái)看,該方法對(duì)于第二項(xiàng)避免了過(guò)度的聚類(lèi)效果,同時(shí),對(duì)于第三項(xiàng)避免了聚類(lèi)類(lèi)別的分布過(guò)度均衡,這符合推薦內(nèi)容多類(lèi)別多標(biāo)簽、無(wú)法完全歸納到單一類(lèi)的實(shí)際情況,在實(shí)驗(yàn)中也展現(xiàn)了正則項(xiàng)參數(shù)的良好效果.
CAVE 的隨機(jī)梯度下降算法(SDG)以一個(gè)訓(xùn)練樣本xu和其重構(gòu)數(shù)據(jù)x′u計(jì)算梯度?θL和?φL,再對(duì)批量數(shù)據(jù)的梯度求均值,利用該值更新網(wǎng)絡(luò)的參數(shù):
對(duì)于一個(gè)用戶的歷史數(shù)據(jù)xu,通過(guò)訓(xùn)練好的模型,可以利用預(yù)測(cè)出的未歸一化的多項(xiàng)式分布概率fθ(zu)對(duì)所有的推薦項(xiàng)目進(jìn)行排序.
本文實(shí)驗(yàn)所使用的數(shù)據(jù)為MovieLens 100k、MovieLens 1M和MovieLens 20M 三個(gè)規(guī)模不同的公開(kāi)數(shù)據(jù)集.我們只保留至少觀看過(guò)五部電影的用戶,最終輸入模型的特征數(shù)據(jù)為用戶的隱式反饋數(shù)據(jù).數(shù)據(jù)集的詳細(xì)內(nèi)容如表1所示.本文實(shí)驗(yàn)所用語(yǔ)言為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ù)集
本文使用兩個(gè)top-K 排序的指標(biāo)作為實(shí)驗(yàn)結(jié)果的評(píng)價(jià)方法,分別是召回率 R ecall@K和歸一化折扣累積增益NDCG@K.同時(shí),定義w(k) 為排名k的項(xiàng)目,h[·]為等級(jí)關(guān)聯(lián)性函數(shù),如果真正打過(guò)分的項(xiàng)目在預(yù)測(cè)集中則該函數(shù)值為1,否則為0,Iu為測(cè)試集用戶u評(píng)過(guò)分的項(xiàng)目集合.兩者的定義分別如下:其中,ZK是歸一化系數(shù),表示h[w(k)∈Iu]=1都成立的理想情況下,ZK其后的累加項(xiàng)值的倒數(shù).因?yàn)槎际褂昧藲w一化方法,所以兩指標(biāo)的數(shù)值都在0-1 之內(nèi).
4.3.1 基線
DAE[4]:降噪自編碼的訓(xùn)練過(guò)程中,輸入的數(shù)據(jù)有一部分是“損壞”的,能夠?qū)Α皳p壞”的原始數(shù)據(jù)編碼、解碼,然后盡可能接近原始數(shù)據(jù)地預(yù)測(cè)打分矩陣的缺失值.
SDAE:棧式降噪自編碼器就是在數(shù)據(jù)部分“損壞”的基礎(chǔ)上多個(gè)自編碼器相接,以完成逐層特征提取的任務(wù),最后得到的特征作為分類(lèi)器的輸入,完成推薦項(xiàng)目的概率預(yù)測(cè).
WMF[11]:加權(quán)矩陣分解,這是一種線性的、低秩的矩陣分解模型.
SLIM[12]:稀疏線性模型,該方法是基于物品相似度的推廣形式.
CDAE[13]:協(xié)同降噪自編碼器通過(guò)向輸入添加每個(gè)用戶的潛在因子來(lái)表示用戶偏好,同時(shí)在隱變量層加入了偏置表示.
DAE和SDAE 在ML-100k和ML-1M 上的評(píng)價(jià)結(jié)果由本文實(shí)驗(yàn)得出;WMF、SLIM和CDAE 在ML-20M 上的實(shí)驗(yàn)數(shù)據(jù)源于文獻(xiàn)[4].
4.3.2 參數(shù)
為了訓(xùn)練不同模型的性能,我們把所有樣本分為訓(xùn)練/驗(yàn)證/測(cè)試3 個(gè)集合,驗(yàn)證集和測(cè)試集的樣本數(shù)一樣.同時(shí),對(duì)模型的輸入層使用dropout 方法,對(duì)最后的輸出使用Softmax 層進(jìn)行歸一化.CVAE 模型的隱變量z到y(tǒng)的分類(lèi)器結(jié)構(gòu)為200→n,即聚類(lèi)類(lèi)別為n類(lèi),激活函數(shù)為Softmax.其他參數(shù)如表2所示,I為項(xiàng)目個(gè)數(shù).
為了觀察β值對(duì)算法評(píng)價(jià)結(jié)果的影響,本文將其從0 到1 分成十份并使用MovieLens1M 測(cè)試集數(shù)據(jù)進(jìn)行計(jì)算,發(fā)現(xiàn)CVAE 協(xié)同過(guò)濾模型在3 個(gè)指標(biāo)上都隨著β值的增加而先增后減,門(mén)檻值均在0.4 附近.所以后續(xù)實(shí)驗(yàn)均將β值設(shè)置為0.4,以此為最優(yōu)的CVAE協(xié)同過(guò)濾模型.如圖2所示.
由于聚類(lèi)的類(lèi)別數(shù)會(huì)影響到算法的性能[14],本文從0 到50 依次選值進(jìn)行實(shí)驗(yàn).發(fā)現(xiàn)當(dāng)類(lèi)別數(shù)為20 時(shí),該算法在3 個(gè)指標(biāo)上的表現(xiàn)均最佳,所以以此值為最優(yōu)的超參數(shù).并且該大小也符合電影分類(lèi)的類(lèi)別數(shù).如圖3所示.
表2 實(shí)驗(yàn)超參數(shù)
圖2 β 值對(duì)結(jié)果的影響
圖3 類(lèi)別個(gè)數(shù)對(duì)結(jié)果的影響
圖4顯示了在MovieLens1M 驗(yàn)證集上的CVAE協(xié)同過(guò)濾模型的NDCG@100 值的迭代過(guò)程.隨著模型迭代次數(shù)的增加,評(píng)價(jià)指標(biāo)依次逐漸上升,直至穩(wěn)定.實(shí)驗(yàn)最優(yōu)的迭代次數(shù)大概在60 代-80 代.在之后MovieLens 100K和MovieLens 20M 的實(shí)驗(yàn)中,其走勢(shì)與MovieLens1M 的類(lèi)似.
圖4 NDCG@100 指標(biāo)的迭代
由表3、表4和表5所知,CVAE 協(xié)同過(guò)濾模型在三個(gè)數(shù)據(jù)集上的八個(gè)評(píng)價(jià)結(jié)果上均優(yōu)于基線.但在MovieLens 100K 數(shù)據(jù)集上的Recall@50 指標(biāo)表現(xiàn)最好的是SDAE 模型,并發(fā)現(xiàn)隨著K值的增加,CVAE 方法的Recall@K值表現(xiàn)不如其他兩個(gè)模型,對(duì)于該方面的問(wèn)題是由于CVAE 方法在小規(guī)模數(shù)據(jù)集和高K值召回率上性能欠佳造成的,還是由于其他原因造成的,需要設(shè)置多個(gè)K值進(jìn)一步實(shí)驗(yàn),對(duì)比研究.除此之外,可以看出對(duì)于更加稀疏、規(guī)模更大的打分矩陣,CVAE的處理能力是更強(qiáng)的,比基線方法表現(xiàn)出了更為優(yōu)越的推薦性能.
表3 MovieLens 1M
表4 MovieLens 100K
表5 MovieLens 20M
本文提出了一種具有聚類(lèi)效果的變分自編碼器,并將其運(yùn)用到協(xié)同過(guò)濾推薦算法中.該方法既能學(xué)習(xí)到用戶和項(xiàng)目間的隱因子,又可以在編碼階段完成對(duì)項(xiàng)目特征的聚類(lèi).該模型還引入了正則化系數(shù),通過(guò)對(duì)其在0-1 之間的研究,發(fā)現(xiàn)了擬合效果更好的參數(shù)值.最后,以多項(xiàng)式分布對(duì)缺失值進(jìn)行了預(yù)測(cè).該方法在3 個(gè)規(guī)模不同的數(shù)據(jù)集上進(jìn)行測(cè)試,展現(xiàn)了其良好的推薦性能.
未來(lái)還可以使用自然語(yǔ)言處理技術(shù)處理文本信息,將電影標(biāo)簽信息和用戶評(píng)語(yǔ)融入到該算法中,用混合模型提高推薦系統(tǒng)的性能.
計(jì)算機(jī)系統(tǒng)應(yīng)用2019年9期