吳 杰,姜宜鑫*,韓國(guó)敬,馬 馳
(1.遼寧科技大學(xué) 計(jì)算機(jī)與軟件工程學(xué)院,遼寧 鞍山 114051;2.鞍山市氣象局,遼寧 鞍山 114004;3.惠州學(xué)院 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣東 惠州 516007)
隨著互聯(lián)網(wǎng)的不斷發(fā)展,信息量的不斷暴漲,每位用戶找尋自己想要的需求信息更是難上加難。為了解決信息過(guò)載問(wèn)題,幫助用戶快速準(zhǔn)確地找到自己想要的東西,推薦系統(tǒng)應(yīng)運(yùn)而生,并且被認(rèn)為是緩解信息過(guò)載問(wèn)題的最有效辦法之一[1]。
傳統(tǒng)上推薦系統(tǒng)分為:基于內(nèi)容的推薦系統(tǒng)、協(xié)同過(guò)濾推薦系統(tǒng)和混合推薦系統(tǒng)[2-4]。目前,主流推薦任務(wù)的實(shí)現(xiàn)依賴用戶的歷史交互行為(例如點(diǎn)擊記錄,購(gòu)買記錄)。然而推薦系統(tǒng)很難從這些隱式反饋中挖掘用戶的真正偏好,使推薦結(jié)果受到很大程度的限制,并且給不出推薦某個(gè)商品的理由。對(duì)于這些問(wèn)題,可評(píng)判(Critiquing)推薦系統(tǒng)[5-8]不僅可以對(duì)推薦的商品進(jìn)行解釋,也可以通過(guò)用戶對(duì)解釋項(xiàng)的評(píng)判挖掘用戶的偏好,從而提高推薦質(zhì)量。相比傳統(tǒng)推薦系統(tǒng),通過(guò)用戶的評(píng)判,推薦系統(tǒng)能及時(shí)獲取用戶的顯示反饋,更能準(zhǔn)確反映用戶的真實(shí)偏好。
整個(gè)推薦過(guò)程分為兩步,首先通過(guò)用戶與項(xiàng)目的歷史交互行為,推薦系統(tǒng)生成解釋項(xiàng)及推薦項(xiàng)。關(guān)鍵字作為商品的解釋項(xiàng),用來(lái)解釋推薦的項(xiàng)目,如圖1(a)所示。其次,對(duì)于生成的項(xiàng)目,如果沒(méi)有滿足用戶需求,則可以對(duì)解釋項(xiàng)進(jìn)行評(píng)判。用戶對(duì)“棕色”這個(gè)關(guān)鍵字進(jìn)行評(píng)判,代表用戶并不偏好“棕色”屬性,而是對(duì)“水果味”“焦糖”這兩個(gè)屬性比較感興趣,推薦系統(tǒng)則可以通過(guò)偏好反饋來(lái)重新推薦,如圖1(b)所示。
(a)
該文的貢獻(xiàn)如下:
(1)使用變分推斷進(jìn)行了模型定義和推導(dǎo),提出了基于變分推斷的可評(píng)判推薦算法(CRS-VI)。
(2)利用解釋關(guān)鍵字的先驗(yàn)分布對(duì)解釋向量聚類。相對(duì)于文獻(xiàn)[6-7]中使用自編碼器獲取解釋向量,并且在損失函數(shù)中去除了回歸預(yù)測(cè)項(xiàng),減少了對(duì)推薦準(zhǔn)確性的影響。
(3)使用貝葉斯神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)模型。消融實(shí)驗(yàn)表明貝葉斯神經(jīng)網(wǎng)絡(luò)模型在推薦性能上有更好表現(xiàn)。
(4)基于BeerAdvocate[9]數(shù)據(jù)集的實(shí)驗(yàn)表明,在各項(xiàng)指標(biāo)上都有所提升,表明了該方法的有效性,并且實(shí)驗(yàn)代碼已經(jīng)在Github開(kāi)源(代碼:https://github.com/wujieaa/VariationalInferenceCRS)。
可評(píng)判推薦不僅可以使推薦項(xiàng)目具有可解釋性,也可以根據(jù)用戶對(duì)項(xiàng)目的偏好反饋獲取顯式信息,從而挖掘用戶偏好,再對(duì)推薦項(xiàng)目調(diào)整,以此提高推薦質(zhì)量。Wu Ga等[6]提出一種端到端的學(xué)習(xí)框架,通過(guò)拓展神經(jīng)協(xié)同過(guò)濾實(shí)現(xiàn)對(duì)項(xiàng)目解釋及評(píng)判,并且在隱含變量中嵌入基于關(guān)鍵字的反饋,從而提高推薦質(zhì)量,最后以打分的形式體現(xiàn)推薦結(jié)果。
Luo Kai等[5]提出利用變分自編碼器,生成推薦項(xiàng)以及解釋項(xiàng),通過(guò)聯(lián)合概率來(lái)建模用戶偏好及關(guān)鍵字,不僅提高了推薦質(zhì)量,而且提升了整體性能。
Sanner等[8]提出基于線性嵌入推薦算法,將關(guān)鍵字屬性與用戶首選項(xiàng)嵌入對(duì)齊,并且利用嵌入的線性結(jié)構(gòu)和推薦預(yù)測(cè)制定基于線性程序(LP)的優(yōu)化問(wèn)題,以確定用戶反饋的最佳權(quán)重。
Antognini等[7]提出一種基于多模態(tài)建模假設(shè)的可評(píng)判推薦算法,在一個(gè)弱監(jiān)督學(xué)習(xí)下訓(xùn)練模型,以模擬完全和部分觀察到的變量。有效地提高推薦以及評(píng)判的質(zhì)量,并且在評(píng)判的速度上,也取得了不錯(cuò)的效果。
變分推斷[11]是一種近似推斷的方法。通過(guò)更新變分參數(shù),使觀察到的數(shù)據(jù)最大化,并且引入了一個(gè)近似分布,用KL散度[12]使近似分布逐漸接近真實(shí)的后驗(yàn)分布。
變分自編碼器是變分推斷的廣泛應(yīng)用之一。變分自編碼器是一種深度生成模型,是由Kingma等[13]提出基于變分推斷的生成式網(wǎng)絡(luò)結(jié)構(gòu),利用兩個(gè)神經(jīng)網(wǎng)絡(luò)建立兩個(gè)概率密度分布實(shí)現(xiàn)推斷網(wǎng)絡(luò)和生成網(wǎng)絡(luò)。
變分自編碼器在推薦系統(tǒng)領(lǐng)域中的應(yīng)用也很廣泛,并且也是解決推薦問(wèn)題的方法之一[14]。
Krishnan等[15]把變分自編碼器應(yīng)用在基于隱式反饋的協(xié)同過(guò)濾推薦任務(wù)中,通過(guò)非線性的概率模型解決線性因子模型的局限性問(wèn)題,并且引入了一個(gè)具有多項(xiàng)式似然函數(shù)的生成模型。通過(guò)實(shí)驗(yàn)表明,多項(xiàng)式相似性非常適合于隱式反饋數(shù)據(jù)的建模。
Li等[16]提出以協(xié)同過(guò)濾為框架,把項(xiàng)目?jī)?nèi)容和評(píng)分信息聯(lián)合建模,通過(guò)無(wú)監(jiān)督的方式,學(xué)習(xí)商品內(nèi)容的潛在表示,并可以從評(píng)分?jǐn)?shù)據(jù)以及項(xiàng)目?jī)?nèi)容中學(xué)到用戶及項(xiàng)目間的隱式關(guān)系。
可評(píng)判推薦系統(tǒng)的任務(wù)是通過(guò)用戶編碼生成關(guān)鍵字的解釋項(xiàng)和推薦項(xiàng),并對(duì)解釋項(xiàng)關(guān)鍵字屬性進(jìn)行評(píng)判來(lái)修改用戶的興趣偏好,并再次向用戶推薦匹配的商品的過(guò)程。形式化地說(shuō),該過(guò)程可以表述如下兩個(gè)步驟:
z,c=f(u)
(1)
其中,u代表用戶編號(hào),z代表解釋項(xiàng),c代表推薦的項(xiàng)目編號(hào)。
(2)
基于變分推斷的思想,該文通過(guò)貝葉斯神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)模型,不僅可以生成解釋項(xiàng)也可以生成推薦項(xiàng)。并且以用戶交互的角度對(duì)解釋項(xiàng)進(jìn)行偏好反饋,準(zhǔn)確挖掘用戶的興趣偏好,從而提高推薦質(zhì)量。本節(jié)主要包括3部分:(1)模型推導(dǎo);(2)模型優(yōu)化;(3)模型實(shí)現(xiàn)。
由于解釋項(xiàng)可以看作用戶與商品的交互的屬性信息,因此公式(1)可以寫為z=f(u),c=g(z)。推薦項(xiàng)目c的概率可寫為:
(3)
其中,u為用戶向量編碼,c為推薦項(xiàng)。該公式通過(guò)變分推斷的思想進(jìn)行簡(jiǎn)化,如公式(4)所示。
(4)
公式(4)不能直接進(jìn)行優(yōu)化,所以轉(zhuǎn)而優(yōu)化變分下界(ELBO)[13],如公式(5)所示:
Ez~q(z|u,c)[logp(c|z,u)]-
KL(q(z|u,c)‖p(z|u))
(5)
其中,u為用戶的向量編碼,z為隱變量,c為推薦項(xiàng),q(z|u,c)是用來(lái)接近真實(shí)分布的后驗(yàn)分布,可以假設(shè)為均值μ和方差σ的正態(tài)分布,μ和σ的值用神經(jīng)網(wǎng)絡(luò)擬合。計(jì)算公式如公式(6)(7)所示:
(6)
(7)
其中,sigmoid(x)=1/(1+exp(-x)),ψ是解釋項(xiàng)向量,φuc是用戶和項(xiàng)目的特征向量。在公式(5)中,推薦項(xiàng)的分布p(c|z)也是通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn),如公式(8)所示:
(8)
其中,ψz為解釋項(xiàng)目的概率向量,φc為推薦項(xiàng)目的嵌入向量。模型的先驗(yàn)分布p(z|u)假設(shè)為標(biāo)準(zhǔn)正態(tài)分布,均值為μ'方差為1,這個(gè)先驗(yàn)分布可以直接通過(guò)用戶與商品的交互信息來(lái)進(jìn)行計(jì)算。如公式(9)所示:
(9)
其中,N為用戶與解釋項(xiàng)目相關(guān)的推薦項(xiàng)目總數(shù),Nu為包含解釋項(xiàng)目的用戶推薦項(xiàng)目數(shù)量。公式(5)中,KL散度[12]是用來(lái)衡量?jī)蓚€(gè)分布的差異,該文對(duì)后驗(yàn)概率分布進(jìn)行兩種假設(shè)來(lái)計(jì)算KL散度。第一種:假設(shè)后驗(yàn)概率分布為伯努利分布,解釋項(xiàng)信息看似為離散的分布,來(lái)更準(zhǔn)確地預(yù)測(cè)解釋項(xiàng),如公式(10)所示;第二種:假設(shè)后驗(yàn)概率分布為標(biāo)準(zhǔn)正態(tài)分布,如公式(11)所示:
DKL(p(z|u)‖q(z|c,u)=
(10)
DKL(p(z|u)‖q(z|c,u))=
(11)
在公式(5)中,期望Ez~q(z|u,c)需要通過(guò)采樣來(lái)完成,但是由于采樣不可以進(jìn)行反向傳播,無(wú)法通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)采樣,所以該文提出了兩種方法對(duì)期望進(jìn)行近似,以達(dá)到近似采樣的效果。
(1)直接使用q(z|c,u)神經(jīng)網(wǎng)絡(luò)生成的概率作為期望值,不進(jìn)行采樣。
(2)通過(guò)Gumbel-Softmax技巧[19]實(shí)現(xiàn)采樣,如公式(12)(13)所示:
gi=-log(-log(ui))
(12)
(13)
其中,u為服從均勻分布的獨(dú)立樣本,g為Gumbel分布,T為溫度參數(shù),控制Softmax函數(shù)平滑程度。再通過(guò)Softmax函數(shù)生成Z。所以,訓(xùn)練時(shí)逐漸降低T,以逐步逼近真實(shí)的離散分布。
為了防止過(guò)擬合發(fā)生,公式(5)引入正則化[17],所以總體損失函數(shù),如公式(14)所示:
L=Ez~q(z|u,c)[logp(c|u)]-
(14)
其中,λ為正則化參數(shù),控制正則化強(qiáng)度,θ為神經(jīng)網(wǎng)絡(luò)參數(shù)。
由于公式(8)計(jì)算量較大,采用負(fù)采樣進(jìn)行優(yōu)化,如公式(15)所示:
(15)
其中,σ(x)=1/(1+exp(-x)),pn(v)為噪聲分布,K為負(fù)樣本數(shù)。
模型采用貝葉斯神經(jīng)網(wǎng)絡(luò)與神經(jīng)協(xié)同過(guò)濾相結(jié)合,使用公式(14)作為損失函數(shù),以用戶和項(xiàng)目編碼向量作為輸入,通過(guò)Embedding層生成用戶和項(xiàng)目嵌入編碼,連接全連接層和Sigmoid函數(shù)生成解釋項(xiàng)概率,選取概率值最高的前k個(gè)關(guān)鍵字作為解釋項(xiàng),其中k為超參。再通過(guò)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)均值及方差,使每個(gè)權(quán)重服從不同的高斯分布,最后生成推薦項(xiàng)。通過(guò)訓(xùn)練來(lái)優(yōu)化均值和方差,在得到解釋項(xiàng)的同時(shí)也可以得到推薦項(xiàng),如圖2所示。
圖2 CRS-VI模型
用戶再對(duì)不感興趣的解釋項(xiàng)進(jìn)行評(píng)判,采用修改解釋項(xiàng)中關(guān)鍵字的概率值(概率置0),以此實(shí)現(xiàn)用戶的偏好反饋。系統(tǒng)則會(huì)重新推薦出符合用戶偏好的商品。
使用數(shù)據(jù)集BeerAdvocat[9]對(duì)模型進(jìn)行訓(xùn)練及評(píng)測(cè)。該數(shù)據(jù)集是啤酒商品的數(shù)據(jù)集,包含用戶對(duì)啤酒商品的評(píng)論信息。數(shù)據(jù)集中包含6 370個(gè)用戶4 668個(gè)項(xiàng)目,以及263 278條評(píng)論。其中80%進(jìn)行訓(xùn)練,20%進(jìn)行測(cè)試。
關(guān)鍵字使用和CE-VNCF[6]相同的處理方式:從數(shù)據(jù)集評(píng)論中提取高頻名詞和形容詞,為了防止選取的關(guān)鍵字具有隨機(jī)性,采用點(diǎn)線互信息(PMI)對(duì)關(guān)鍵字進(jìn)行修剪。一共在數(shù)據(jù)集中摘取了75個(gè)關(guān)鍵字作為項(xiàng)目的解釋。
通過(guò)以下幾個(gè)方面介紹參數(shù)設(shè)置(見(jiàn)表1):(1)學(xué)習(xí)率;(2)正則化權(quán)重;(3)嵌入層的維度;(4)負(fù)采樣個(gè)數(shù)。
表1 實(shí)驗(yàn)參數(shù)
其中,α表示學(xué)習(xí)率,λ1表示正則化權(quán)重,r表示嵌入層的維度,η表示負(fù)采樣個(gè)數(shù)。
實(shí)驗(yàn)環(huán)境的設(shè)置:顯卡:nvida rtx 2060 6G;內(nèi)存:32G;操作系統(tǒng):Windows 10;pytorch版本:pytorch 1.7.1。
通過(guò)5個(gè)指標(biāo)衡量推薦項(xiàng)的質(zhì)量。分別為:R-precision、NDCG、Recall、MAP、Precision。
R-precision表示排序后真實(shí)推薦項(xiàng)出現(xiàn)在前R個(gè)的概率,越大說(shuō)明推薦項(xiàng)與真實(shí)用戶喜好的商品越相關(guān),R-precision越大越好。
NDCG(Normalize Discounted Cumulative Gain)是一種對(duì)搜索引擎排序進(jìn)行度量的有效性方法,用來(lái)衡量推薦系統(tǒng)返回的列表是否優(yōu)秀。一個(gè)推薦系統(tǒng)返回一些商品并生成一個(gè)列表,想要算出這個(gè)列表有多優(yōu)秀,每一項(xiàng)都有一個(gè)相關(guān)的評(píng)分值,通常這些評(píng)分值是一個(gè)非負(fù)數(shù),這就是gain(增益)。此外對(duì)于這些沒(méi)有用戶反饋的項(xiàng)通常設(shè)置起增益為0。
Recall稱為召回率或查全率,就是預(yù)測(cè)的信息有多少是用戶真正喜歡的商品,如公式(16)所示:
(16)
其中,TP為被模型預(yù)測(cè)為正的正樣本,FN為被模型預(yù)測(cè)為負(fù)的正樣本。在推薦系統(tǒng)中,MAP是十分重要的衡量指標(biāo)。將所有類別檢測(cè)的平均正確率(AP)進(jìn)行綜合加權(quán)平均而算出。Precision被稱為精準(zhǔn)率或精度,指我們預(yù)測(cè)的真實(shí)商品中有多少是用戶真正感興趣的商品,如公式(17)所示:
(17)
其中,TP為被模型預(yù)測(cè)為正的正樣本,FP為被模型預(yù)測(cè)為正的負(fù)樣本。
對(duì)于評(píng)判任務(wù),加入了F-MAP[5]評(píng)價(jià)指標(biāo),以此衡量評(píng)判前與評(píng)判后推薦的項(xiàng)目是否有效,如公式(18)所示:
(18)
其中,N表示推薦的項(xiàng)目數(shù)量,Sk表示觀察到的項(xiàng)目,MAP@表示平均精度。修改關(guān)鍵字前推薦的項(xiàng)目平均精度與修改關(guān)鍵字后推薦的項(xiàng)目平均精度相比是正值則代表評(píng)判是有效的。希望通過(guò)修改關(guān)鍵字使關(guān)鍵字對(duì)應(yīng)的項(xiàng)目,在重新推薦后的排名下降,代表評(píng)判是有效的。
該文關(guān)注于可評(píng)判推薦領(lǐng)域,故選用如下兩個(gè)模型作為基線模型進(jìn)行比較,通過(guò)實(shí)驗(yàn)證明提出的模型在推薦任務(wù)上的有效性。
(1)CE-VNCF[6]:一種端到端的模型,拓展了神經(jīng)協(xié)同過(guò)濾[10]模型,增加了解釋和評(píng)判的神經(jīng)網(wǎng)絡(luò)。
(2)CE-VAE[5]:改進(jìn)了CE-VNCF的評(píng)判策略,輸入層也進(jìn)行了優(yōu)化。
CRS-VI-GS:對(duì)損失函數(shù)中的期望,使用Gumbel-Softmax的方法[18]進(jìn)行采樣,并把后驗(yàn)分布看作伯努利分布計(jì)算KL散度。
CRS-VI-ND:使用重參數(shù)技巧對(duì)標(biāo)準(zhǔn)正態(tài)分布進(jìn)行的采樣。
CRS-VI:模型直接運(yùn)用概率對(duì)期望值進(jìn)行計(jì)算。
通過(guò)實(shí)驗(yàn)表明,這三種模型收斂速度很快,訓(xùn)練達(dá)到50輪左右就可以收斂,如圖3所示。
圖3 模型收斂效果
通過(guò)實(shí)驗(yàn)表明,這三種模型在可評(píng)判推薦任務(wù)的準(zhǔn)確率、召回率、排序準(zhǔn)確度及歸一化折損累計(jì)增益上均有著較突出的表現(xiàn),這是由于模型利用解釋關(guān)鍵字的先驗(yàn)分布對(duì)解釋向量聚類。相對(duì)于CE-VAE[5]中使用自編碼器獲取解釋向量,并且在損失函數(shù)中去除了回歸預(yù)測(cè)項(xiàng),優(yōu)化了損失函數(shù),減少了對(duì)推薦準(zhǔn)確性的影響,這使得推薦項(xiàng)的評(píng)價(jià)指標(biāo)均有提升。評(píng)判和解釋任務(wù)實(shí)驗(yàn)結(jié)果如表3和圖4所示。解釋項(xiàng)任務(wù)在召回率方面具有很高的水平,評(píng)判解釋項(xiàng)任務(wù)上的表現(xiàn)也具有相似的水平,部分指標(biāo)提升并不明顯,這種情況是由于模型使用KL散度,讓關(guān)鍵字的概率分布接近先驗(yàn)分布,屬于聚類操作,表現(xiàn)結(jié)果弱于有監(jiān)督的學(xué)習(xí)。所以,在評(píng)判解釋項(xiàng)的任務(wù)上并沒(méi)有得到很好的結(jié)果。
表3 BeerAdvocat數(shù)據(jù)集評(píng)判及解釋任務(wù)評(píng)測(cè)
圖4 BeerAdvocat數(shù)據(jù)集評(píng)判及解釋任務(wù)評(píng)測(cè)
模型采用貝葉斯神經(jīng)網(wǎng)絡(luò),其核心是通過(guò)采樣來(lái)實(shí)現(xiàn)損失函數(shù)中的期望值。通過(guò)不使用Gumbel-Softmax[18]采樣技巧來(lái)實(shí)現(xiàn)模型,實(shí)驗(yàn)結(jié)果如表4和圖5所示。
表4 BeerAdvocat數(shù)據(jù)集評(píng)判及解釋任務(wù)評(píng)測(cè)
圖5 BeerAdvocat數(shù)據(jù)集評(píng)判及解釋任務(wù)評(píng)測(cè)
通過(guò)表4和圖5可知,采用貝葉斯神經(jīng)網(wǎng)絡(luò)可以有效地提高評(píng)判及解釋項(xiàng)性能。
該文提出了一種基于變分推斷的可評(píng)判推薦算法,通過(guò)評(píng)判解釋項(xiàng)挖掘用戶的真實(shí)偏好,從而推薦出用戶喜好的商品。與文獻(xiàn)[5-6]相比,提出的模型在推薦任務(wù)的準(zhǔn)確率、召回率、排序準(zhǔn)確度及歸一化折損累計(jì)增益方面有著較突出的表現(xiàn),并且在評(píng)判解釋項(xiàng)任務(wù)中也有相似水平。該模型在優(yōu)化損失函數(shù)的同時(shí),也有效避免了局部最小值等問(wèn)題。這些研究成果提高了可評(píng)判推薦系統(tǒng)的推薦質(zhì)量,從而增加了深度評(píng)判模型在大規(guī)模交互推薦應(yīng)用中的實(shí)用性。該框架可以應(yīng)用于各種領(lǐng)域,例如擴(kuò)展到其他協(xié)同過(guò)濾領(lǐng)域,如組推薦和項(xiàng)目生成。
接下來(lái)的工作中,可以進(jìn)一步挖掘用戶偏好,采用多輪評(píng)判的方式,獲取更多的顯示反饋,以此提高推薦質(zhì)量。