張宇生,張桂珠,王曉鋒
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無(wú)錫 214122)
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,很多互聯(lián)網(wǎng)網(wǎng)站(如阿里巴巴、PaperWeekly等)都面臨嚴(yán)重的信息過(guò)載問(wèn)題,這增加了用戶獲得有價(jià)值信息的難度。優(yōu)秀的推薦算法能夠幫助用戶在海量商品中找到自己感興趣的商品,對(duì)于新進(jìn)入系統(tǒng)的商品也能實(shí)現(xiàn)精準(zhǔn)推薦,因此,對(duì)于推薦算法的研究具有重要意義。
現(xiàn)有的推薦算法可分為基于內(nèi)容的推薦[1]、協(xié)同過(guò)濾[2]以及結(jié)合這兩者的混合算法[3]?;趦?nèi)容的推薦算法對(duì)商品提取特征,將與已購(gòu)買商品特征相似的商品推薦給用戶。文獻(xiàn)[4]使用向量空間模型表示商品特征,并利用K近鄰得到基于內(nèi)容的支持度,緩解了冷啟動(dòng)問(wèn)題,但特征提取算法仍有改進(jìn)空間,而且單獨(dú)使用基于內(nèi)容的推薦算法效果較差。在協(xié)同過(guò)濾算法中,目前應(yīng)用最廣泛的方法是矩陣分解,即使用奇異值分解(Singular Value Decomposition,SVD)模型對(duì)評(píng)分矩陣的缺失值進(jìn)行填充。SVD++模型[5]引入用戶和商品的偏置項(xiàng)并融合了隱反饋信息,timeSVD++模型[6]在此基礎(chǔ)上引入時(shí)間效應(yīng),這類隱因子模型在國(guó)際競(jìng)賽中取得了優(yōu)異成績(jī)并被封裝成SVDFeature工具包[7]。概率矩陣分解(Probabilistic Matrix Factorization,PMF)模型[8]引入特征向量的先驗(yàn)分布,用最大后驗(yàn)概率求解參數(shù)。貝葉斯概率矩陣分解模型[9]將PMF中先驗(yàn)分布的超參數(shù)視為變量,對(duì)其做馬爾科夫鏈蒙特卡洛(Markov Chain Monte Carlo,MCMC)采樣,避免了調(diào)參時(shí)復(fù)雜的網(wǎng)格搜索。局部低秩矩陣近似模型[10]則將完整矩陣近似成多個(gè)可分解的局部低秩矩陣之和。上述矩陣分解模型效果較好,但都無(wú)法解決冷啟動(dòng)問(wèn)題?;旌贤扑]算法結(jié)合了上述兩類算法的優(yōu)勢(shì),是目前的研究趨勢(shì)?;跅J浇翟胱跃幋a器的混合推薦算法[11]使用棧式降噪自編碼器抽取用戶特征并用于協(xié)同過(guò)濾。協(xié)同主題回歸模型(Collaborative Topic Model,CTR)[12]利用潛在狄利克雷分布(Latent Dirichlet Allocation,LDA)[13]算法抽取商品特征并用于協(xié)同過(guò)濾,但LDA在文本以外的領(lǐng)域特征提取能力較弱。
上述推薦算法都默認(rèn)評(píng)分矩陣中的缺失值表示用戶對(duì)該商品不感興趣,沒(méi)有考慮可能是由于地理位置等因素造成該商品未能曝光給用戶,在這種無(wú)法區(qū)分負(fù)樣本和未曝光樣本的推薦場(chǎng)景下,直接對(duì)完整的矩陣進(jìn)行操作往往效果不佳。為此,單類協(xié)同過(guò)濾算法[14]通過(guò)負(fù)采樣得到負(fù)樣本,權(quán)重矩陣分解算法[15]對(duì)觀測(cè)值和缺失值采用不同的損失權(quán)重,但這兩種算法對(duì)曝光因素的處理都不夠細(xì)致。曝光矩陣分解模型ExpoMF[16]將曝光變量看作隱變量,使用EM算法對(duì)曝光隱變量、曝光先驗(yàn)、用戶特征向量和商品特征向量做參數(shù)估計(jì),但破壞了先驗(yàn)和似然的共軛關(guān)系,推斷結(jié)果較差,而且無(wú)法解決冷啟動(dòng)問(wèn)題。
另一方面,深度學(xué)習(xí)在自然語(yǔ)言處理和計(jì)算機(jī)視覺(jué)等領(lǐng)域應(yīng)用廣泛,理論上神經(jīng)網(wǎng)絡(luò)可擬合任意的連續(xù)函數(shù),表征能力遠(yuǎn)超線性模型。文獻(xiàn)[17]通過(guò)引入噪聲增加了棧式自編碼器的魯棒性。文獻(xiàn)[18]對(duì)觀測(cè)變量和隱變量使用二部圖建模,利用吉布斯采樣推斷隱變量的后驗(yàn)分布。文獻(xiàn)[19]將受限玻爾茲曼機(jī)堆疊,使用逐層貪婪預(yù)訓(xùn)練,得到了更好的特征提取效果。文獻(xiàn)[20]將變分推斷與深度學(xué)習(xí)結(jié)合提出的變分自編碼器(Variational Auto-Encoder,VAE),具有更好的可解釋性,而且在圖像等領(lǐng)域的特征提取任務(wù)上表現(xiàn)優(yōu)異,也可用于推薦算法。
受此啟發(fā),本文提出基于變分自編碼器(Variational Auto-Encoder,VAE)的推薦算法VAHR,使用MCMC采樣保證先驗(yàn)和似然的共軛關(guān)系,設(shè)計(jì)變分自編碼器VAEe對(duì)用戶曝光向量進(jìn)行重構(gòu),并通過(guò)推斷得到的用戶特征矩陣、曝光矩陣和評(píng)分矩陣訓(xùn)練變分自編碼器VAEi,用于提取新商品的協(xié)同隱特征向量進(jìn)行協(xié)同過(guò)濾,從而完成新商品的推薦。
VAHR算法最核心的部分是對(duì)曝光隱變量等參數(shù)的推斷以及變分自編碼器的使用,因此,本節(jié)介紹近似推斷和引入了曝光隱變量的ExpoMF模型。
貝葉斯推斷中的近似推斷指對(duì)模型參數(shù)或隱變量的后驗(yàn)分布做近似的推斷,根據(jù)推斷結(jié)果的確定性可分為隨機(jī)推斷和確定推斷,具體如下:
1)隨機(jī)推斷中最常見(jiàn)的方法為MCMC采樣。該方法先構(gòu)造一條以真實(shí)后驗(yàn)分布為平穩(wěn)分布和極限分布的馬爾科夫鏈,隨機(jī)選取一個(gè)參數(shù)初始值(即相當(dāng)于隨機(jī)選取一個(gè)初始分布),不斷按照該馬氏鏈做狀態(tài)轉(zhuǎn)移,迭代一定次數(shù)后則認(rèn)為當(dāng)前采樣近似服從真實(shí)后驗(yàn)分布。MCMC采樣對(duì)初始值不敏感,推斷效果較好,因此,VAHR算法使用MCMC采樣中的吉布斯采樣做參數(shù)推斷。
2)確定推斷中最常見(jiàn)的方法為變分推斷。通常隱變量后驗(yàn)分布形式復(fù)雜,因此,本文采用類似變分法的方法尋找一個(gè)簡(jiǎn)單的變分分布作為近似,通過(guò)最大化證據(jù)下界(Evidence Lower Bound,ELBO)得到該變分分布。文獻(xiàn)[20]提出的變分自編碼器使用攤余推斷最大化ELBO,將變分分布看作高斯分布,由編碼器學(xué)習(xí)均值和協(xié)方差矩陣,再由解碼器對(duì)輸入進(jìn)行重構(gòu)。目標(biāo)函數(shù)如式(1)所示:
L(φ,θ)=EZ~Qφ(Z|X)[logaPθ(X|Z)]-
KL(Qφ(Z|X)‖P(Z))
(1)
其中,φ和θ表示編碼器和解碼器的網(wǎng)絡(luò)參數(shù),X表示輸入樣本,Z表示隱變量,Qφ(Z|X)表示變分分布。
VAE利用蒙特卡洛方法近似對(duì)數(shù)似然的期望,使用重參數(shù)化技巧確保梯度順利傳播到編碼器的參數(shù)。本文提出的VAHR算法使用VAE重構(gòu)用戶的曝光向量和抽取商品的協(xié)同隱特征。
文獻(xiàn)[16]提出的ExpoMF模型,是一種引入曝光隱變量的生成模型。以i表示用戶(i=1,2,…,N),j表示商品(j=1,2,…,M),二元的點(diǎn)擊變量Yij表示用戶i是否點(diǎn)擊過(guò)商品j,二元的曝光變量Aij表示商品j是否曝光給用戶i,θi和βj表示用戶i和商品j的K維特征向量,對(duì)商品j使用統(tǒng)一的曝光先驗(yàn)μj,Yij的生成過(guò)程如式(2)所示:
Aij~Bernoulli(μj)
(2)
其中,λθ、λβ和λy為超參數(shù),IK為K維單位矩陣。ExpoMF的概率圖模型如圖1所示。
圖1 ExpoMF的概率圖模型Fig.1 Probability graph model of ExpoMF
ExpoMF使用EM算法在有隱變量A的情況下做θ、β和μ的參數(shù)估計(jì),其中θ、β和μ表示相應(yīng)參數(shù)對(duì)應(yīng)的矩陣或向量。
(3)
在EM算法迭代較多次數(shù)后認(rèn)為模型參數(shù)已經(jīng)收斂,得到最終參數(shù)。在預(yù)測(cè)階段,根據(jù)ExpoMF的生成過(guò)程,預(yù)測(cè)結(jié)果的期望如式(4)所示:
(4)
本文VAHR算法使用吉布斯采樣,將前一次迭代結(jié)果作為先驗(yàn),推斷效果更好,而且ExpoMF無(wú)法解決新商品的冷啟動(dòng)問(wèn)題,對(duì)曝光信息的使用也存在缺陷,VAHR對(duì)此也加以改進(jìn)。
VAHR算法結(jié)構(gòu)分為3層,即推斷層、VAE層和預(yù)測(cè)層。該算法在推斷層推斷曝光矩陣、曝光先驗(yàn)向量、用戶特征矩陣和商品特征矩陣4組參數(shù),在VAE層訓(xùn)練2個(gè)VAE,分別用于重構(gòu)用戶曝光向量和抽取商品協(xié)同隱特征,在預(yù)測(cè)層做用戶對(duì)舊商品和新商品點(diǎn)擊情況的預(yù)測(cè)。其中:商品的協(xié)同隱特征向量指可以用于協(xié)同過(guò)濾的特征向量;商品的隱特征向量指用特征提取模型(如VAE)提取出的特征向量,不能很好地用于協(xié)同過(guò)濾;商品的特征向量指經(jīng)特征工程得到的商品輔助信息,作為VAE的輸入。在不會(huì)產(chǎn)生歧義時(shí),為敘述簡(jiǎn)便,本文不對(duì)其進(jìn)行嚴(yán)格區(qū)分。
VAHR算法使用吉布斯采樣做A、μ、θ和β的推斷。根據(jù)吉布斯采樣的收斂性,可以隨機(jī)初始化上述4組參數(shù),但為了加快收斂速度,4組參數(shù)的初始化方式見(jiàn)3.4.1節(jié)。首先對(duì)A進(jìn)行采樣,Yij=1時(shí)Aij一定為1,Yij=0時(shí)Aij的完整條件概率見(jiàn)式(3),可從式(5)的伯努利分布中采樣出Aij。
(5)
θi和βj完整條件概率的計(jì)算方式類似,下面以θi舉例說(shuō)明。根據(jù)D分離方法,θi和θ、θi和A、θi和Y均被β阻斷,θi和μj被Aij阻斷,如式(6)所示:
θi~P(θi|β,A,Y,μ,θ)=P(θi|β,Ai,Yi,μ)=
P(θi|β,Ai,Yi)
(6)
由于此時(shí)β、A和Y為已知值,因此式(6)正比于式(7)左邊的聯(lián)合概率:
P(θi,β,Ai,Yi)=P(θi)P(Yi|θi,β,Ai)P(β)P(Ai)∝
P(θi)P(Yi|θi,β,Ai)
(7)
當(dāng)Aij=0時(shí),P(Yij|θi,βj,Aij)=1;當(dāng)Aij=1時(shí),P(Yij|θi,βj,Aij)為高斯分布,而且初始的P(θi)為高斯分布。根據(jù)高斯相乘引理和數(shù)學(xué)歸納法可知,可實(shí)現(xiàn)以前一次迭代得到的高斯分布作為先驗(yàn)來(lái)進(jìn)行本次迭代,得到更精準(zhǔn)的推斷,如式(8)所示:
θi~N(θi|μ*,[Λ*]-1)
(8)
其中,μ和Λ為前一次迭代得到的高斯分布的均值向量和協(xié)方差矩陣的逆矩陣,μ*和Λ*為本次迭代得到的高斯分布的均值向量和協(xié)方差矩陣的逆矩陣。
對(duì)于μj,根據(jù)D分離方法,在給定Aj的條件下,μj與其他所有參數(shù)獨(dú)立,μj僅與Aj有關(guān)(如式(9)所示),指定μj服從Beta分布,設(shè)先驗(yàn)為Beta(α1,α2),根據(jù)Beta分布與二項(xiàng)分布的共軛關(guān)系可以直接得到μj的后驗(yàn)分布(如式(10)所示),由此可將前一次迭代得到的Beta分布作為先驗(yàn)來(lái)進(jìn)行本次迭代。
μj~P(μj|θ,β,A,Y,μ)=P(μj|Aj)
(9)
(10)
使用數(shù)學(xué)計(jì)算庫(kù)(如numpy)實(shí)現(xiàn)μ的采樣需要較大計(jì)算量,而在現(xiàn)實(shí)的推薦場(chǎng)景中,用戶數(shù)N往往非常巨大,根據(jù)Beta分布的特性,其概率密度函數(shù)幾乎完全集中于尖銳的一點(diǎn),該尖點(diǎn)概率密度極大,其余點(diǎn)的概率密度接近為0,并且形狀參數(shù)越大此特性越明顯。為了簡(jiǎn)化運(yùn)算,可以選擇不從式(10)分布中采樣,而是指定μj為式(10)Beta分布的眾數(shù),因?yàn)槭褂貌蓸臃绞降玫降臉颖疽欢〞?huì)落在眾數(shù)附近極狹小的區(qū)間內(nèi),2種方法對(duì)后面其他3組參數(shù)的采樣幾乎沒(méi)有差別。眾數(shù)計(jì)算公式如式(11)所示:
(11)
按照以上順序迭代采樣A、θ、β和μ,在迭代較多次數(shù)后,認(rèn)為4組參數(shù)收斂到真實(shí)的后驗(yàn)分布。吉布斯采樣效果較好,缺點(diǎn)是計(jì)算量過(guò)大,其中矩陣求逆的時(shí)間復(fù)雜度高達(dá)O(K3),對(duì)4組參數(shù)采樣一次的時(shí)間復(fù)雜度為O(MN(K2+K+1)+(M+N)(K3+K2))。但筆者發(fā)現(xiàn)在采樣過(guò)程中,曝光矩陣的各元素之間、用戶與用戶的特征向量之間、商品與商品的特征向量之間和商品與商品的曝光先驗(yàn)之間是各自相互獨(dú)立的,因此,本文對(duì)4組參數(shù)進(jìn)行組內(nèi)并行、組間串行的吉布斯采樣。采樣A、β和μ時(shí),對(duì)商品集分組,每組商品放到不同CPU內(nèi)核上并行;采樣θ時(shí),對(duì)用戶集分組,每組用戶放到不同CPU內(nèi)核上并行。一般來(lái)說(shuō)并行的效率提升倍數(shù)與設(shè)定的內(nèi)核數(shù)近似呈正比,但不宜過(guò)大,否則會(huì)導(dǎo)致內(nèi)核間的數(shù)據(jù)交換耗費(fèi)過(guò)多時(shí)間,每個(gè)內(nèi)核上的利用率不足,反而降低效率。選擇恰當(dāng)?shù)膬?nèi)核數(shù)和分組尺寸需要反復(fù)嘗試,具體參數(shù)設(shè)定見(jiàn)本文實(shí)驗(yàn)部分。
2.2.1 用戶曝光信息重構(gòu)
(12)
其中,fθ為VAEe解碼器的函數(shù)形式,zi為用戶i曝光向量的隱特征,fθ(zi)為VAEe的重構(gòu)結(jié)果,λe為VAEe解碼器高斯分布的協(xié)方差矩陣系數(shù)的倒數(shù)。由于Aij為離散值0和1,因此在解碼器部分使用邏輯似然,此時(shí)對(duì)數(shù)似然等效于交叉熵?fù)p失,如式(13)所示。此外,對(duì)于離散的二元特征也可以選擇多項(xiàng)式似然。
(1-Aij)ln(1-fθ(zi)j)
(13)
2.2.2 商品協(xié)同隱特征抽取
為解決新商品的冷啟動(dòng)問(wèn)題,使用用戶特征矩陣θ、曝光矩陣A和點(diǎn)擊矩陣Y訓(xùn)練一個(gè)提取商品協(xié)同隱特征的VAE,稱之為VAEi。同樣地,對(duì)于連續(xù)的特征使用高斯似然,對(duì)于離散的二元特征使用邏輯似然。將協(xié)同過(guò)濾的損失、VAEi的損失以及網(wǎng)絡(luò)參數(shù)正則化項(xiàng)三者綜合,得到完整目標(biāo)函數(shù),如式(14)所示,然后使用梯度上升優(yōu)化VAEi的網(wǎng)絡(luò)參數(shù)。
EZ~Q(Z|X)lnP(X|Z)-
(14)
在式(14)中,X為商品的特征矩陣(輔助信息),Z為商品對(duì)應(yīng)的協(xié)同隱特征矩陣,W為VAEi的網(wǎng)絡(luò)參數(shù)矩陣,λW和λy為超參數(shù),先驗(yàn)分布P(Z)一般選擇標(biāo)準(zhǔn)高斯分布。由于VAEi提取出的特征向量服從高斯分布,因此對(duì)協(xié)同過(guò)濾損失使用期望形式表示??梢园咽?14)的第2項(xiàng)和第3項(xiàng)之和視為VAEi的目標(biāo)函數(shù)ELBO1,也可以把第2項(xiàng)視為樣本重構(gòu)誤差的期望,把第3項(xiàng)看做分布正則化項(xiàng)。具體地,當(dāng)?shù)?項(xiàng)很大即重構(gòu)誤差很小時(shí),Q(Z|X)很復(fù)雜,可以對(duì)商品進(jìn)行精準(zhǔn)的重構(gòu),但此時(shí)它與P(Z)的KL散度也很大,ELBO1不會(huì)因?yàn)橹貥?gòu)誤差小而變得很大,當(dāng)?shù)?項(xiàng)很小時(shí)同理。因此,第3項(xiàng)KL散度對(duì)最大化ELBO1起到了正則作用,既不會(huì)得到過(guò)于簡(jiǎn)單但重構(gòu)性能過(guò)差的VAEi,又不會(huì)得到過(guò)于復(fù)雜的VAEi,而是在兩者之間進(jìn)行權(quán)衡。
以上為式(14)損失函數(shù)角度(損失函數(shù)之和)的解釋,此外,筆者還發(fā)現(xiàn)了其概率角度解釋。在VAE層,Y、X和θ為已知值,本文構(gòu)造P(Y,X,θ)的證據(jù)下界ELBO2,如式(15)所示:
ELBO2=logaP(Y,X,θ)-
KL(Q(Z|X)‖P(Z|Y,X,θ))=
EZ~Q(Z|X)logaP(Y,X,θ|Z)-
KL(Q(Z|X)‖P(Z))
(15)
筆者希望尋找一個(gè)變分分布Q(Z|X),使其盡量接近真實(shí)后驗(yàn)分布P(Z|Y,X,θ),因此,通過(guò)最大化ELBO2來(lái)達(dá)到這一目的,巧合的是,最大化帶有網(wǎng)絡(luò)參數(shù)正則化項(xiàng)的ELBO2與最大化式(14)是完全等價(jià)的,如式(16)所示:
EZ~Q(Z|X)logaP(Y,X,θ|Z)-
KL(Q(Z|X)‖P(Z))=
EZ~Q(Z|X)loga[P(θ)P(Y|Z,θ)P(X|Z)]-
KL(Q(Z|X)‖P(Z))=
EZ~Q(Z|X)[logaP(Y|Z,θ)+logaP(X|Z)]-
KL(Q(Z|X)‖P(Z))+const
(16)
協(xié)同主題回歸(CTR)模型[12]、協(xié)同變分自編碼器(CVAE)[21]和協(xié)同深度學(xué)習(xí)模型(CDL)[22]都將特征提取算法與協(xié)同過(guò)濾結(jié)合,使用了類似形式的損失函數(shù),但它們都只有損失函數(shù)角度的解釋,而沒(méi)有概率角度解釋。其中,CVAE使用VAE學(xué)習(xí)商品的隱特征矩陣Z,加上彌補(bǔ)項(xiàng)ε得到協(xié)同隱特征矩陣V,用U和V做協(xié)同過(guò)濾,訓(xùn)練時(shí)對(duì)協(xié)同過(guò)濾參數(shù)(U和V)與VAE的網(wǎng)絡(luò)參數(shù)使用塊坐標(biāo)上升交替優(yōu)化,損失函數(shù)如式(17)所示:
L=EZ~Q(Z|X)logaP(Y,X,U,V|Z)-
KL(Q(Z|X)‖P(Z))
(17)
由于P(Y,X,θ|Z)包含了未知參數(shù)U和V,因此無(wú)法解釋成似然,式(17)不可看作ELBO,破壞了概率角度的可解釋性,只能從損失函數(shù)的角度進(jìn)行解釋。此外,以上4種模型均沒(méi)有考慮曝光度的問(wèn)題,只是對(duì)缺失值的損失采用較低權(quán)重,對(duì)觀測(cè)值的損失采用較高權(quán)重,因此,對(duì)舊商品的推薦(in-matrix)效果較差。而對(duì)于新商品的推薦(out-of-matrix),由于新商品彌補(bǔ)項(xiàng)為0,上述模型僅用LDA、VAE或SDAE學(xué)習(xí)出了商品的隱特征而不是協(xié)同隱特征,無(wú)法有效地用于協(xié)同過(guò)濾,因此,推薦效果不如利用VAE直接學(xué)習(xí)協(xié)同隱特征的VAHR算法。
為保證目標(biāo)函數(shù)可計(jì)算,與VAE相同,本文使用蒙特卡洛方法對(duì)Q(Z|X)采樣L個(gè)Z來(lái)得到損失函數(shù)前兩項(xiàng)期望的近似;為保證梯度的順利傳播,使用重參數(shù)化技術(shù)模擬對(duì)Z的采樣;為防止KL坍塌,使用KL退火[23]在KL散度前添加系數(shù)并在訓(xùn)練初期使其為0,在訓(xùn)練前中期讓其逐漸增加至1以保證VAE的學(xué)習(xí)效果;為了加快VAE的收斂速度,先用特征矩陣(輔助信息)X對(duì)VAE單獨(dú)進(jìn)行預(yù)訓(xùn)練,然后與協(xié)同過(guò)濾部分整合進(jìn)行微調(diào)。
2.3.1 in-matrix推薦
在預(yù)測(cè)用戶i對(duì)舊商品j的點(diǎn)擊情況時(shí),使用VAEe對(duì)Ai重構(gòu)得到Ei,預(yù)測(cè)結(jié)果如式(18)所示:
(18)
但式(18)不是在所有推薦場(chǎng)景都表現(xiàn)良好,考慮以下兩個(gè)例子:在餐廳的推薦場(chǎng)景下,曝光因素體現(xiàn)為地理位置,由于上海的用戶很難去北京的餐廳,因此預(yù)測(cè)時(shí)應(yīng)考慮曝光變量的制約,如式(18)所示;在電影網(wǎng)站的推薦場(chǎng)景下,曝光因素可以理解為英語(yǔ)地區(qū)的用戶收到英語(yǔ)電影推薦較多,由于是網(wǎng)上觀影,因此預(yù)測(cè)時(shí)不應(yīng)受曝光變量的制約,如式(19)所示。在不同的推薦場(chǎng)景下應(yīng)該選擇相應(yīng)的in-matrix預(yù)測(cè)公式。
(19)
2.3.2 out-of-matrix推薦
在預(yù)測(cè)用戶i對(duì)新商品j的點(diǎn)擊情況時(shí),先用VAEi提取新商品的協(xié)同隱特征,由于無(wú)法通過(guò)推斷得知新商品的曝光情況,因此預(yù)測(cè)結(jié)果如式(20)所示:
(20)
其中,xj表示新商品j的特征向量(輔助信息),μφ表示VAEi編碼器的均值網(wǎng)絡(luò),μφ(xj)表示該網(wǎng)絡(luò)的輸出。
VAHR算法的具體步驟如下:
步驟2采樣A。若Yij=1,則Aij=1;若Yij=0,則根據(jù)式(5)并行采樣Aij。
步驟3采樣θ。對(duì)于每個(gè)用戶i=1,2,…,N,根據(jù)式(8)并行采樣θi。
步驟4采樣β。對(duì)于每個(gè)商品j=1,2,…,M,類似式(8)并行采樣βj。
步驟5采樣μ。對(duì)于每個(gè)商品j=1,2,…,M,根據(jù)式(11)更新μj。
步驟6在迭代次數(shù)達(dá)到預(yù)設(shè)值時(shí)執(zhí)行步驟7,否則返回執(zhí)行步驟2~步驟5。
VAHR算法引入曝光隱變量并使用精準(zhǔn)的參數(shù)先驗(yàn),通過(guò)步驟1~步驟6推斷出更準(zhǔn)確的參數(shù),這些參數(shù)是在各種場(chǎng)景下能取得高推薦質(zhì)量的基礎(chǔ)。在不應(yīng)受曝光制約的in-matrix場(chǎng)景下,直接用內(nèi)積作為預(yù)測(cè)結(jié)果,雖然預(yù)測(cè)結(jié)果中沒(méi)有體現(xiàn)曝光信息,但前面推斷層得到的準(zhǔn)確參數(shù)使得在該場(chǎng)景下可以得到更好的推薦效果。在應(yīng)受曝光制約的in-matrix場(chǎng)景下,將曝光預(yù)測(cè)值與內(nèi)積相乘得到預(yù)測(cè)結(jié)果,由于曝光預(yù)測(cè)值是用VAEe對(duì)用戶曝光向量重構(gòu)得到的,而不是直接使用推斷得出的結(jié)果,因此推薦效果更好。在out-of-matrix場(chǎng)景下,將曝光信息與VAE結(jié)合訓(xùn)練出VAEi,用以提取新商品的協(xié)同特征,可以很好地解決冷啟動(dòng)問(wèn)題。
本文使用2個(gè)真實(shí)世界數(shù)據(jù)集citeulike-a和citeulike-t進(jìn)行實(shí)驗(yàn),并將VAHR算法與多個(gè)經(jīng)典算法進(jìn)行對(duì)比,以證明其有效性。
本文實(shí)驗(yàn)選用的數(shù)據(jù)集為推薦系統(tǒng)領(lǐng)域常用的公開(kāi)數(shù)據(jù)集citeulike-a和citeulike-t,包含英文論文網(wǎng)站CiteULike中的一些用戶索引與用戶看過(guò)的文章索引,citeulike-a包含5 551名用戶與16 980篇文章,共204 986個(gè)用戶-文章點(diǎn)對(duì),其中看過(guò)的總文章數(shù)少于10的用戶已經(jīng)被剔除,經(jīng)計(jì)算該數(shù)據(jù)集的稀疏度為99.78%,即該數(shù)據(jù)集構(gòu)成的用戶-文章點(diǎn)擊矩陣中99.78%的元素為0,其余元素為1。citeulike-t比第1個(gè)數(shù)據(jù)集更大且稀疏程度更高,其包含7 947名用戶與25 975篇文章,共134 860個(gè)用戶-文章點(diǎn)對(duì),其中看過(guò)的總文章數(shù)少于3篇的用戶已經(jīng)被剔除,稀疏度為99.93%。2個(gè)數(shù)據(jù)集均通過(guò)獨(dú)立采樣得到。
數(shù)據(jù)集中的每篇文章都包含標(biāo)題與摘要,為得到變分自編碼器的輸入商品特征同時(shí)保證實(shí)驗(yàn)的公平性與客觀性,本文對(duì)數(shù)據(jù)采用與基準(zhǔn)算法相同的處理方式。首先將標(biāo)題和摘要連接到一起,然后將沒(méi)有實(shí)際意義的停用詞去除,使用TF-IDF對(duì)所有詞進(jìn)行計(jì)算,根據(jù)TF-IDF值得到詞匯表。citeulike-a的詞匯表尺寸為8 000,citeulike-t的詞匯表尺寸為20 000,對(duì)每篇文章都用一個(gè)詞袋直方圖向量表示,向量的維度即詞匯表尺寸,分別進(jìn)行向量堆疊得到2個(gè)數(shù)據(jù)集對(duì)應(yīng)的矩陣,然后對(duì)這兩個(gè)矩陣進(jìn)行歸一化,即對(duì)于每個(gè)詞,將它出現(xiàn)最多的文章中該詞所對(duì)應(yīng)的維度歸一化為1,而對(duì)于其余文章,該維度都要除以其最大出現(xiàn)次數(shù)。
本文使用召回率衡量推薦效果。召回率等于測(cè)試集中真正例的數(shù)量除以正例的數(shù)量,即某用戶喜歡的商品中被推薦系統(tǒng)命中的商品比例。一般用recall@M表示推薦列表尺寸為M時(shí)的召回率,如式(21)所示:
(21)
其中,hitsM表示推薦M個(gè)商品時(shí)系統(tǒng)命中的數(shù)量,testsetu表示用戶u標(biāo)注過(guò)的商品數(shù)量,同時(shí)也是系統(tǒng)命中的理論最大值。因?yàn)闇y(cè)試集中有些用戶的文章數(shù)為0,所以最終的召回率結(jié)果取測(cè)試集中所有文章數(shù)不為0用戶召回率的平均值。
在in-matrix和out-of-matrix的實(shí)驗(yàn)中,本文選擇以下算法進(jìn)行對(duì)比:
1)CTR算法[12]:將協(xié)同過(guò)濾與特征提取模型結(jié)合的推薦算法,憑借LDA的優(yōu)越性能,文本推薦效果較好。
2)CDL算法[22]:將CTR算法中的LDA改進(jìn)成棧式降噪自編碼器(SDAE)。
3)CVAE算法[21]:將協(xié)同過(guò)濾與變分自編碼器結(jié)合的模型。
4)ExpoMF算法[16]:引入曝光隱變量的生成模型,使用EM算法估計(jì)模型參數(shù)。
5)ACF算法[24]:使用自編碼器做特征提取再做協(xié)同過(guò)濾,本文在冷啟動(dòng)的實(shí)驗(yàn)中以此作為對(duì)比算法。
6)LDA算法[13]:使用LDA提取商品特征,再用K近鄰算法完成推薦,屬于基于內(nèi)容的推薦算法。
7)VAHR算法:考慮曝光隱變量,使用VAE處理曝光信息并解決了商品的冷啟動(dòng)問(wèn)題。
在做in-matrix推薦時(shí)對(duì)CTR、CDL、CVAE、ExpoMF與VAHR進(jìn)行比較,在做out-of-matrix推薦時(shí)考慮到本文實(shí)驗(yàn)選擇的數(shù)據(jù)集是文本,因此,選擇對(duì)LDA、CTR、ACF與VAHR做縱向比較,最后選擇VAHR的不同超參數(shù)做橫向比較。
3.4.1 參數(shù)設(shè)定
(22)
超參數(shù)設(shè)定如下:VAEe編碼器的輸入層節(jié)點(diǎn)數(shù)為商品數(shù)M,第1層隱藏層節(jié)點(diǎn)數(shù)為500,輸出層節(jié)點(diǎn)數(shù)為200,VAEi編碼器的輸入層節(jié)點(diǎn)數(shù)為8 000,第1層隱藏層節(jié)點(diǎn)數(shù)為200,輸出層節(jié)點(diǎn)數(shù)為特征向量維度K,2個(gè)VAE的解碼器和編碼器結(jié)構(gòu)均對(duì)稱,高斯重構(gòu)分布的協(xié)方差矩陣均為σ2I,其中,σ=0.1,在2個(gè)VAE的全部6個(gè)神經(jīng)網(wǎng)絡(luò)中使用批量歸一化和隨機(jī)失活,隨機(jī)失活的比例為0.1,學(xué)習(xí)率為0.01,正則化系數(shù)λw=0.001,λy=0.1,在訓(xùn)練集上的迭代次數(shù)均為500次。文獻(xiàn)[21]指出,當(dāng)隨機(jī)梯度下降的批尺寸B足夠大時(shí),VAE中的采樣數(shù)L可設(shè)為1,本文將B設(shè)為128。VAHR的超參數(shù)相比CVAE和CDL要少一些,因?yàn)閂AHR將隱變量推斷出來(lái)再做協(xié)同過(guò)濾,而不是對(duì)觀測(cè)值和缺失值直接使用不同的權(quán)重(如CVAE令觀測(cè)值的權(quán)重a=1,令缺失值的權(quán)重b=0.01),由于它們含有商品隱特征向量的彌補(bǔ)項(xiàng),因此還要設(shè)定λV來(lái)對(duì)彌補(bǔ)項(xiàng)正則化。使用機(jī)器學(xué)習(xí)庫(kù)scikit-learn中的joblib模塊實(shí)現(xiàn)吉布斯采樣的并行,商品集的分組尺寸為2 000,用戶集的分組尺寸為500,joblib中的并行內(nèi)核數(shù)n_jobs為8。對(duì)于KL退火,讓KL散度前的系數(shù)從0開(kāi)始線性增長(zhǎng),如果增長(zhǎng)速度較快則系數(shù)為1后的迭代次數(shù)相應(yīng)較少,網(wǎng)絡(luò)收斂速度更快,因此,本文選擇讓其在第100次訓(xùn)練集迭代時(shí)達(dá)到1,通過(guò)KL退火解決 KL坍塌問(wèn)題[24]。
3.4.2 in-matrix推薦
在in-matrix推薦中,劃分訓(xùn)練集和測(cè)試集時(shí)將citeulike-a和citeulike-t分成稀疏和密集2種情況:稀疏情況下對(duì)每個(gè)用戶隨機(jī)選出1篇已標(biāo)注的文章放入訓(xùn)練集,將該用戶的剩余文章放入測(cè)試集;密集情況下對(duì)每個(gè)用戶隨機(jī)選出10篇文章放入訓(xùn)練集,將剩余文章放入測(cè)試集,共得到4組訓(xùn)練集和測(cè)試集。特征向量的維度K=50,推薦列表尺寸分別取50、100、150、200、250和300,取第100次吉布斯采樣的迭代結(jié)果,稀疏劃分情況下的實(shí)驗(yàn)結(jié)果如圖2所示,密集劃分情況下的實(shí)驗(yàn)結(jié)果如圖3所示。
圖2 稀疏劃分情況下不同算法的召回率對(duì)比Fig.2 Comparison of recall rates of different algorithmsunder sparse partition condition
圖3 密集劃分情況下不同算法的召回率對(duì)比Fig.3 Comparison of recall rates of different algorithmsunder dense partition condition
對(duì)比圖2、圖3可以看出,CVAE和CDL在4組測(cè)試集上都明顯優(yōu)于其他2個(gè)基準(zhǔn)算法,在密集劃分的citeulike-a測(cè)試集上,CVAE相比于ExpoMF和CTR召回率提升約14.5%和16.1%,CDL相比于ExpoMF和CTR召回率提升約10.9%和13.1%,說(shuō)明CVAE和CDL憑借VAE和SDAE強(qiáng)大的特征提取能力取得了優(yōu)秀的推薦性能,LDA提取文本特征的能力強(qiáng),但仍不如深層非線性模型,ExpoMF雖然用EM算法對(duì)曝光隱變量進(jìn)行了更細(xì)致的處理,但由于特征向量的先驗(yàn)選擇較差,并且沒(méi)有對(duì)曝光信息重構(gòu),因此效果僅與CTR相當(dāng)。同時(shí)可以看出,CVAE的效果優(yōu)于CDL,在密集劃分的citeulike-a上,CVAE相比CDL的召回率提升約3.5%,說(shuō)明VAE的抽取特征能力強(qiáng)于SDAE,這也是VAHR選擇VAE而不是SDAE的原因。VAHR的效果優(yōu)于CVAE和CDL,相對(duì)于兩者的召回率提升約3.8%和6.2%,說(shuō)明VAHR通過(guò)更精確的推斷和對(duì)曝光信息重構(gòu),能夠更好地解決單類推薦問(wèn)題。對(duì)比不同的數(shù)據(jù)集可見(jiàn),在數(shù)據(jù)集稀疏度高或規(guī)模小時(shí),所有模型效果均較差,隨著訓(xùn)練樣本的增多,所有模型召回率均有明顯提升,從稀疏劃分的citeulike-a到密集劃分的citeulike-t,數(shù)據(jù)集尺寸增大約10倍,VAHR召回率提升約30.1%,推測(cè)是由于推薦算法的訓(xùn)練數(shù)據(jù)量相比于參數(shù)數(shù)目來(lái)說(shuō)少很多,小數(shù)據(jù)集更易過(guò)擬合,在測(cè)試集上表現(xiàn)較差。
3.4.3 out-of-matrix推薦
out-of-matrix推薦考慮當(dāng)有一批新文章進(jìn)入系統(tǒng)時(shí),應(yīng)該向用戶推薦新文章中的哪些文章,即新商品的冷啟動(dòng)問(wèn)題。這里只選擇citeulike-a進(jìn)行實(shí)驗(yàn),取3 396篇文章作為測(cè)試集,其余13 584篇文章對(duì)應(yīng)的用戶-文章點(diǎn)對(duì)作為訓(xùn)練集。特征向量維度K=100,推薦列表的尺寸為20,40,…,200,實(shí)驗(yàn)結(jié)果如圖4所示。
圖4 K=100時(shí)citeulike-a上不同算法的召回率對(duì)比Fig.4 Comparison of recall rates of different algorithms onciteulike-a when K=100
由圖4可見(jiàn),LDA和CTR性能非常接近,說(shuō)明這兩個(gè)算法受制于LDA的特征提取能力。VAHR的召回率相比CTR、LDA和ACF提升了約6.3%、6.5%和21.5%。說(shuō)明VAE的特征提取能力強(qiáng)于SDAE和LDA,VAHR引入曝光隱變量并且讓VAE直接學(xué)習(xí)商品協(xié)同隱特征,取得了更好的新商品推薦效果。
使用以上數(shù)據(jù)集對(duì)VAHR算法選擇不同的K做橫向?qū)Ρ?K分別取25、50、75和100,實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 不同特征向量維度時(shí)citeulike-a上VAHR算法的召回率Fig.5 Recall rates of VAHR algorithm on citeulike-ain different feature vector dimensions
由圖5可見(jiàn),本文算法在K=100時(shí)相比K為25、50和75時(shí)最多取得了約14.5%、11.4%和5.5%的召回率提升。原因如下:在VAHR的前兩層中都包含矩陣分解,特征向量維度對(duì)矩陣分解的效果影響明顯;第2層的VAEi提取商品協(xié)同隱特征,較大的K使提取出的向量表征能力更強(qiáng)。然而使用較大的K值會(huì)增加吉布斯采樣和VAEi的訓(xùn)練時(shí)長(zhǎng),尤其是吉布斯采樣的訓(xùn)練時(shí)長(zhǎng)一般以小時(shí)或天為量級(jí),K=75與K=50的召回率相差僅3.6%,吉布斯采樣時(shí)長(zhǎng)卻相差數(shù)十小時(shí),因此,在不同的推薦場(chǎng)景下,應(yīng)根據(jù)需求選擇合適的特征維度。
本文提出VAHR算法,使用MCMC采樣做精準(zhǔn)參數(shù)推斷,利用變分自編碼器強(qiáng)大的特征提取能力重構(gòu)曝光信息和提取商品特征,并在傳統(tǒng)協(xié)同過(guò)濾算法的框架下加以改進(jìn),以解決單類推薦問(wèn)題與冷啟動(dòng)問(wèn)題?;赾iteulike-a和citeulike-t數(shù)據(jù)集的仿真實(shí)驗(yàn)結(jié)果表明,VAHR算法對(duì)于舊商品和新商品都能取得較好的推薦效果。下一步將在文本的預(yù)處理過(guò)程中使用LSTM或RNN等自然語(yǔ)言處理中經(jīng)典的時(shí)序模型,同時(shí)對(duì)吉布斯采樣的并行運(yùn)算加以優(yōu)化,縮短算法在大數(shù)據(jù)集中的運(yùn)算時(shí)長(zhǎng)。由于VAHR未考慮用戶喜好可能會(huì)隨時(shí)間推移而變化的特點(diǎn),因此還將引入時(shí)間效應(yīng),進(jìn)一步提高推薦質(zhì)量。