吳 杰,姜宜鑫*,韓國敬,馬 馳
(1.遼寧科技大學 計算機與軟件工程學院,遼寧 鞍山 114051;2.鞍山市氣象局,遼寧 鞍山 114004;3.惠州學院 計算機科學與工程學院,廣東 惠州 516007)
隨著互聯網的不斷發展,信息量的不斷暴漲,每位用戶找尋自己想要的需求信息更是難上加難。為了解決信息過載問題,幫助用戶快速準確地找到自己想要的東西,推薦系統應運而生,并且被認為是緩解信息過載問題的最有效辦法之一[1]。
傳統上推薦系統分為:基于內容的推薦系統、協同過濾推薦系統和混合推薦系統[2-4]。目前,主流推薦任務的實現依賴用戶的歷史交互行為(例如點擊記錄,購買記錄)。然而推薦系統很難從這些隱式反饋中挖掘用戶的真正偏好,使推薦結果受到很大程度的限制,并且給不出推薦某個商品的理由。對于這些問題,可評判(Critiquing)推薦系統[5-8]不僅可以對推薦的商品進行解釋,也可以通過用戶對解釋項的評判挖掘用戶的偏好,從而提高推薦質量。相比傳統推薦系統,通過用戶的評判,推薦系統能及時獲取用戶的顯示反饋,更能準確反映用戶的真實偏好。
整個推薦過程分為兩步,首先通過用戶與項目的歷史交互行為,推薦系統生成解釋項及推薦項。關鍵字作為商品的解釋項,用來解釋推薦的項目,如圖1(a)所示。其次,對于生成的項目,如果沒有滿足用戶需求,則可以對解釋項進行評判。用戶對“棕色”這個關鍵字進行評判,代表用戶并不偏好“棕色”屬性,而是對“水果味”“焦糖”這兩個屬性比較感興趣,推薦系統則可以通過偏好反饋來重新推薦,如圖1(b)所示。

(a)
該文的貢獻如下:
(1)使用變分推斷進行了模型定義和推導,提出了基于變分推斷的可評判推薦算法(CRS-VI)。
(2)利用解釋關鍵字的先驗分布對解釋向量聚類。相對于文獻[6-7]中使用自編碼器獲取解釋向量,并且在損失函數中去除了回歸預測項,減少了對推薦準確性的影響。
(3)使用貝葉斯神經網絡實現模型。消融實驗表明貝葉斯神經網絡模型在推薦性能上有更好表現。
(4)基于BeerAdvocate[9]數據集的實驗表明,在各項指標上都有所提升,表明了該方法的有效性,并且實驗代碼已經在Github開源(代碼:https://github.com/wujieaa/VariationalInferenceCRS)。
可評判推薦不僅可以使推薦項目具有可解釋性,也可以根據用戶對項目的偏好反饋獲取顯式信息,從而挖掘用戶偏好,再對推薦項目調整,以此提高推薦質量。Wu Ga等[6]提出一種端到端的學習框架,通過拓展神經協同過濾實現對項目解釋及評判,并且在隱含變量中嵌入基于關鍵字的反饋,從而提高推薦質量,最后以打分的形式體現推薦結果。
Luo Kai等[5]提出利用變分自編碼器,生成推薦項以及解釋項,通過聯合概率來建模用戶偏好及關鍵字,不僅提高了推薦質量,而且提升了整體性能。
Sanner等[8]提出基于線性嵌入推薦算法,將關鍵字屬性與用戶首選項嵌入對齊,并且利用嵌入的線性結構和推薦預測制定基于線性程序(LP)的優化問題,以確定用戶反饋的最佳權重。
Antognini等[7]提出一種基于多模態建模假設的可評判推薦算法,在一個弱監督學習下訓練模型,以模擬完全和部分觀察到的變量。有效地提高推薦以及評判的質量,并且在評判的速度上,也取得了不錯的效果。
變分推斷[11]是一種近似推斷的方法。通過更新變分參數,使觀察到的數據最大化,并且引入了一個近似分布,用KL散度[12]使近似分布逐漸接近真實的后驗分布。
變分自編碼器是變分推斷的廣泛應用之一。變分自編碼器是一種深度生成模型,是由Kingma等[13]提出基于變分推斷的生成式網絡結構,利用兩個神經網絡建立兩個概率密度分布實現推斷網絡和生成網絡。
變分自編碼器在推薦系統領域中的應用也很廣泛,并且也是解決推薦問題的方法之一[14]。
Krishnan等[15]把變分自編碼器應用在基于隱式反饋的協同過濾推薦任務中,通過非線性的概率模型解決線性因子模型的局限性問題,并且引入了一個具有多項式似然函數的生成模型。通過實驗表明,多項式相似性非常適合于隱式反饋數據的建模。
Li等[16]提出以協同過濾為框架,把項目內容和評分信息聯合建模,通過無監督的方式,學習商品內容的潛在表示,并可以從評分數據以及項目內容中學到用戶及項目間的隱式關系。
可評判推薦系統的任務是通過用戶編碼生成關鍵字的解釋項和推薦項,并對解釋項關鍵字屬性進行評判來修改用戶的興趣偏好,并再次向用戶推薦匹配的商品的過程。形式化地說,該過程可以表述如下兩個步驟:
z,c=f(u)
(1)
其中,u代表用戶編號,z代表解釋項,c代表推薦的項目編號。
(2)
基于變分推斷的思想,該文通過貝葉斯神經網絡來實現模型,不僅可以生成解釋項也可以生成推薦項。并且以用戶交互的角度對解釋項進行偏好反饋,準確挖掘用戶的興趣偏好,從而提高推薦質量。本節主要包括3部分:(1)模型推導;(2)模型優化;(3)模型實現。
由于解釋項可以看作用戶與商品的交互的屬性信息,因此公式(1)可以寫為z=f(u),c=g(z)。推薦項目c的概率可寫為:
(3)
其中,u為用戶向量編碼,c為推薦項。該公式通過變分推斷的思想進行簡化,如公式(4)所示。
(4)
公式(4)不能直接進行優化,所以轉而優化變分下界(ELBO)[13],如公式(5)所示:

Ez~q(z|u,c)[logp(c|z,u)]-
KL(q(z|u,c)‖p(z|u))
(5)
其中,u為用戶的向量編碼,z為隱變量,c為推薦項,q(z|u,c)是用來接近真實分布的后驗分布,可以假設為均值μ和方差σ的正態分布,μ和σ的值用神經網絡擬合。計算公式如公式(6)(7)所示:
(6)
(7)
其中,sigmoid(x)=1/(1+exp(-x)),ψ是解釋項向量,φuc是用戶和項目的特征向量。在公式(5)中,推薦項的分布p(c|z)也是通過神經網絡來實現,如公式(8)所示:
(8)
其中,ψz為解釋項目的概率向量,φc為推薦項目的嵌入向量。模型的先驗分布p(z|u)假設為標準正態分布,均值為μ'方差為1,這個先驗分布可以直接通過用戶與商品的交互信息來進行計算。如公式(9)所示:
(9)
其中,N為用戶與解釋項目相關的推薦項目總數,Nu為包含解釋項目的用戶推薦項目數量。公式(5)中,KL散度[12]是用來衡量兩個分布的差異,該文對后驗概率分布進行兩種假設來計算KL散度。第一種:假設后驗概率分布為伯努利分布,解釋項信息看似為離散的分布,來更準確地預測解釋項,如公式(10)所示;第二種:假設后驗概率分布為標準正態分布,如公式(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)需要通過采樣來完成,但是由于采樣不可以進行反向傳播,無法通過神經網絡來實現采樣,所以該文提出了兩種方法對期望進行近似,以達到近似采樣的效果。
(1)直接使用q(z|c,u)神經網絡生成的概率作為期望值,不進行采樣。
(2)通過Gumbel-Softmax技巧[19]實現采樣,如公式(12)(13)所示:
gi=-log(-log(ui))
(12)
(13)
其中,u為服從均勻分布的獨立樣本,g為Gumbel分布,T為溫度參數,控制Softmax函數平滑程度。再通過Softmax函數生成Z。所以,訓練時逐漸降低T,以逐步逼近真實的離散分布。
為了防止過擬合發生,公式(5)引入正則化[17],所以總體損失函數,如公式(14)所示:
L=Ez~q(z|u,c)[logp(c|u)]-
(14)
其中,λ為正則化參數,控制正則化強度,θ為神經網絡參數。
由于公式(8)計算量較大,采用負采樣進行優化,如公式(15)所示:
(15)
其中,σ(x)=1/(1+exp(-x)),pn(v)為噪聲分布,K為負樣本數。
模型采用貝葉斯神經網絡與神經協同過濾相結合,使用公式(14)作為損失函數,以用戶和項目編碼向量作為輸入,通過Embedding層生成用戶和項目嵌入編碼,連接全連接層和Sigmoid函數生成解釋項概率,選取概率值最高的前k個關鍵字作為解釋項,其中k為超參。再通過神經網絡學習均值及方差,使每個權重服從不同的高斯分布,最后生成推薦項。通過訓練來優化均值和方差,在得到解釋項的同時也可以得到推薦項,如圖2所示。

圖2 CRS-VI模型
用戶再對不感興趣的解釋項進行評判,采用修改解釋項中關鍵字的概率值(概率置0),以此實現用戶的偏好反饋。系統則會重新推薦出符合用戶偏好的商品。
使用數據集BeerAdvocat[9]對模型進行訓練及評測。該數據集是啤酒商品的數據集,包含用戶對啤酒商品的評論信息。數據集中包含6 370個用戶4 668個項目,以及263 278條評論。其中80%進行訓練,20%進行測試。
關鍵字使用和CE-VNCF[6]相同的處理方式:從數據集評論中提取高頻名詞和形容詞,為了防止選取的關鍵字具有隨機性,采用點線互信息(PMI)對關鍵字進行修剪。一共在數據集中摘取了75個關鍵字作為項目的解釋。
通過以下幾個方面介紹參數設置(見表1):(1)學習率;(2)正則化權重;(3)嵌入層的維度;(4)負采樣個數。

表1 實驗參數
其中,α表示學習率,λ1表示正則化權重,r表示嵌入層的維度,η表示負采樣個數。
實驗環境的設置:顯卡:nvida rtx 2060 6G;內存:32G;操作系統:Windows 10;pytorch版本:pytorch 1.7.1。
通過5個指標衡量推薦項的質量。分別為:R-precision、NDCG、Recall、MAP、Precision。
R-precision表示排序后真實推薦項出現在前R個的概率,越大說明推薦項與真實用戶喜好的商品越相關,R-precision越大越好。
NDCG(Normalize Discounted Cumulative Gain)是一種對搜索引擎排序進行度量的有效性方法,用來衡量推薦系統返回的列表是否優秀。一個推薦系統返回一些商品并生成一個列表,想要算出這個列表有多優秀,每一項都有一個相關的評分值,通常這些評分值是一個非負數,這就是gain(增益)。此外對于這些沒有用戶反饋的項通常設置起增益為0。
Recall稱為召回率或查全率,就是預測的信息有多少是用戶真正喜歡的商品,如公式(16)所示:
(16)
其中,TP為被模型預測為正的正樣本,FN為被模型預測為負的正樣本。在推薦系統中,MAP是十分重要的衡量指標。將所有類別檢測的平均正確率(AP)進行綜合加權平均而算出。Precision被稱為精準率或精度,指我們預測的真實商品中有多少是用戶真正感興趣的商品,如公式(17)所示:
(17)
其中,TP為被模型預測為正的正樣本,FP為被模型預測為正的負樣本。
對于評判任務,加入了F-MAP[5]評價指標,以此衡量評判前與評判后推薦的項目是否有效,如公式(18)所示:
(18)
其中,N表示推薦的項目數量,Sk表示觀察到的項目,MAP@表示平均精度。修改關鍵字前推薦的項目平均精度與修改關鍵字后推薦的項目平均精度相比是正值則代表評判是有效的。希望通過修改關鍵字使關鍵字對應的項目,在重新推薦后的排名下降,代表評判是有效的。
該文關注于可評判推薦領域,故選用如下兩個模型作為基線模型進行比較,通過實驗證明提出的模型在推薦任務上的有效性。
(1)CE-VNCF[6]:一種端到端的模型,拓展了神經協同過濾[10]模型,增加了解釋和評判的神經網絡。
(2)CE-VAE[5]:改進了CE-VNCF的評判策略,輸入層也進行了優化。
CRS-VI-GS:對損失函數中的期望,使用Gumbel-Softmax的方法[18]進行采樣,并把后驗分布看作伯努利分布計算KL散度。
CRS-VI-ND:使用重參數技巧對標準正態分布進行的采樣。
CRS-VI:模型直接運用概率對期望值進行計算。
通過實驗表明,這三種模型收斂速度很快,訓練達到50輪左右就可以收斂,如圖3所示。

圖3 模型收斂效果
通過實驗表明,這三種模型在可評判推薦任務的準確率、召回率、排序準確度及歸一化折損累計增益上均有著較突出的表現,這是由于模型利用解釋關鍵字的先驗分布對解釋向量聚類。相對于CE-VAE[5]中使用自編碼器獲取解釋向量,并且在損失函數中去除了回歸預測項,優化了損失函數,減少了對推薦準確性的影響,這使得推薦項的評價指標均有提升。評判和解釋任務實驗結果如表3和圖4所示。解釋項任務在召回率方面具有很高的水平,評判解釋項任務上的表現也具有相似的水平,部分指標提升并不明顯,這種情況是由于模型使用KL散度,讓關鍵字的概率分布接近先驗分布,屬于聚類操作,表現結果弱于有監督的學習。所以,在評判解釋項的任務上并沒有得到很好的結果。

表3 BeerAdvocat數據集評判及解釋任務評測

圖4 BeerAdvocat數據集評判及解釋任務評測
模型采用貝葉斯神經網絡,其核心是通過采樣來實現損失函數中的期望值。通過不使用Gumbel-Softmax[18]采樣技巧來實現模型,實驗結果如表4和圖5所示。

表4 BeerAdvocat數據集評判及解釋任務評測

圖5 BeerAdvocat數據集評判及解釋任務評測
通過表4和圖5可知,采用貝葉斯神經網絡可以有效地提高評判及解釋項性能。
該文提出了一種基于變分推斷的可評判推薦算法,通過評判解釋項挖掘用戶的真實偏好,從而推薦出用戶喜好的商品。與文獻[5-6]相比,提出的模型在推薦任務的準確率、召回率、排序準確度及歸一化折損累計增益方面有著較突出的表現,并且在評判解釋項任務中也有相似水平。該模型在優化損失函數的同時,也有效避免了局部最小值等問題。這些研究成果提高了可評判推薦系統的推薦質量,從而增加了深度評判模型在大規模交互推薦應用中的實用性。該框架可以應用于各種領域,例如擴展到其他協同過濾領域,如組推薦和項目生成。
接下來的工作中,可以進一步挖掘用戶偏好,采用多輪評判的方式,獲取更多的顯示反饋,以此提高推薦質量。