鐘裔靈,朵 琳
(昆明理工大學(xué) 信息工程與自動(dòng)化學(xué)院,云南 昆明 650500)
作為緩解信息過(guò)載的有效手段,推薦系統(tǒng)在電商、音樂(lè)及短視頻等領(lǐng)域得到了廣泛應(yīng)用。傳統(tǒng)的推薦方法包括基于協(xié)同過(guò)濾的推薦、基于內(nèi)容的推薦以及混合推薦方法?;趨f(xié)同過(guò)濾的推薦利用用戶對(duì)項(xiàng)目的評(píng)分?jǐn)?shù)據(jù),通過(guò)相似度計(jì)算或建模的方式來(lái)進(jìn)行推薦。由于依賴于評(píng)分?jǐn)?shù)據(jù),往往存在數(shù)據(jù)稀疏和冷啟動(dòng)問(wèn)題?;趦?nèi)容的推薦利用用戶生成內(nèi)容(評(píng)論、標(biāo)簽等),通過(guò)計(jì)算內(nèi)容相似度來(lái)進(jìn)行推薦。由于未使用評(píng)分?jǐn)?shù)據(jù),所以不存在數(shù)據(jù)稀疏的問(wèn)題,但依舊存在新用戶冷啟動(dòng)的問(wèn)題。目前,對(duì)于推薦系統(tǒng)的研究主要致力于如何使用不同的數(shù)據(jù)進(jìn)行混合推薦,來(lái)緩解數(shù)據(jù)稀疏和冷啟動(dòng)問(wèn)題,以提高推薦的準(zhǔn)確性。通過(guò)使用深度學(xué)習(xí)模型代替?zhèn)鹘y(tǒng)的簡(jiǎn)單模型,提供非線性建模能力和有效的內(nèi)容特征提取能力,往往能獲得更好的推薦性能。然而,這些研究大多忽略了自然噪聲的影響。
用戶與項(xiàng)目沒(méi)有發(fā)生交互行為(用戶對(duì)項(xiàng)目的點(diǎn)擊、瀏覽、收藏等行為),存在兩種可能:一種可能是用戶知道但不喜歡該項(xiàng)目,另一種可能是用戶不知道該項(xiàng)目的存在。這種項(xiàng)目的曝光偏差使得數(shù)據(jù)無(wú)法完全表達(dá)用戶的真實(shí)想法,為推薦模型的訓(xùn)練引入了自然噪聲,影響了推薦的準(zhǔn)確性。大多數(shù)的研究工作通過(guò)執(zhí)行負(fù)采樣來(lái)緩解這個(gè)問(wèn)題。隨機(jī)采樣[1]是按照一定的采樣比從沒(méi)有觀察到交互行為的項(xiàng)目中隨機(jī)均勻地進(jìn)行采樣?;陧?xiàng)目流行度的采樣[2]是根據(jù)項(xiàng)目的流行度來(lái)進(jìn)行隨機(jī)非均勻地采樣。這種隨機(jī)的采樣策略,可能把用戶知道但不喜歡的項(xiàng)目篩選出來(lái),而排除了用戶不知道但可能喜歡的項(xiàng)目。雖然執(zhí)行了負(fù)采樣,但對(duì)推薦性能的提升非常有限。一些研究者利用其他的輔助數(shù)據(jù)來(lái)改進(jìn)采樣器,如查看但未點(diǎn)擊和點(diǎn)擊但未購(gòu)買[3]的數(shù)據(jù)。但由于這類數(shù)據(jù)規(guī)模有限,對(duì)推薦性能的提升效果不佳,甚至比上述隨機(jī)的采樣策略效果更差。有研究者利用采樣器和推薦器之間的對(duì)抗訓(xùn)練[4]來(lái)獲取高質(zhì)量的負(fù)樣本,在參數(shù)優(yōu)化上表現(xiàn)出比隨機(jī)采樣更好的性能,但該方法的缺陷在于可能把正例誤認(rèn)為是高質(zhì)量的負(fù)例。
基于知識(shí)圖譜的負(fù)采樣策略[5]利用項(xiàng)目與項(xiàng)目之間共同的知識(shí)實(shí)體,尋找高質(zhì)量的負(fù)例來(lái)與正例匹配,從而提升推薦模型的性能。該方法能夠有效緩解誤采樣問(wèn)題,通過(guò)確保采樣負(fù)例的真實(shí)性,從而提高推薦的準(zhǔn)確性,獲得了比上述方法更好的性能表現(xiàn)。但是,為了減小算法的時(shí)間復(fù)雜度,該方法在確定候選負(fù)例集后,選擇了候選負(fù)例集中的最后一個(gè)元素作為負(fù)例來(lái)優(yōu)化推薦模型。然而,最后一個(gè)候選負(fù)例并不一定是最佳負(fù)例,通過(guò)改進(jìn)采樣策略,可以進(jìn)一步提升推薦性能。為了簡(jiǎn)化整個(gè)模型,該方法使用了推薦領(lǐng)域最為經(jīng)典和簡(jiǎn)單的矩陣分解模型作為推薦器。然而,簡(jiǎn)單的線性建模無(wú)法有效地?cái)M合用戶與項(xiàng)目之間復(fù)雜的交互關(guān)系,通過(guò)使用更加優(yōu)秀的推薦模型作為推薦器,可以進(jìn)一步提升推薦質(zhì)量。此外,僅采樣一個(gè)負(fù)例與正例匹配,通過(guò)成對(duì)損失來(lái)優(yōu)化推薦模型,這種固定的采樣比也限制了推薦模型的性能。
本文的研究工作圍繞基于知識(shí)圖譜的負(fù)采樣策略展開(kāi),從3 個(gè)方面對(duì)該方法做了改進(jìn)。
(1)設(shè)計(jì)了一個(gè)獎(jiǎng)勵(lì)函數(shù),對(duì)候選負(fù)例集中的元素評(píng)分,根據(jù)評(píng)分高低選擇與正例匹配的最佳負(fù)例,然后通過(guò)最大化累積獎(jiǎng)勵(lì)函數(shù)期望來(lái)優(yōu)化采樣器。目的是尋找更真實(shí)的負(fù)例來(lái)訓(xùn)練推薦器,提升推薦性能。
(2)使用神經(jīng)協(xié)同過(guò)濾作為推薦器,以取代矩陣分解模型。神經(jīng)協(xié)同過(guò)濾是一個(gè)雙通道推薦模型,一個(gè)通道在矩陣分解的基礎(chǔ)上引入邏輯函數(shù)作為激活函數(shù),將輸出結(jié)果限制在[0,1]的范圍內(nèi),賦予了模型概率學(xué)解釋。另一個(gè)通道利用多層感知機(jī)學(xué)習(xí)用戶和項(xiàng)目之間復(fù)雜的交互關(guān)系,代替了矩陣分解中的內(nèi)積,提高了非線性建模能力。通過(guò)線性與非線性的結(jié)合,獲得了比矩陣分解更好的推薦性能。
(3)為了能靈活地控制采樣比,用逐點(diǎn)損失代替成對(duì)損失來(lái)優(yōu)化推薦器,以獲得更好的推薦性能。在真實(shí)數(shù)據(jù)集上進(jìn)行了廣泛實(shí)驗(yàn),以驗(yàn)證所提方法的有效性。
本文提出一種新的推薦框架——基于知識(shí)感知采樣的神經(jīng)協(xié)同過(guò)濾(Neural Collaborative Filtering Based on Knowledge-Aware Sampling,NCFKAS),框架包括一個(gè)推薦器和一個(gè)采樣器??傮w而言,采樣器負(fù)責(zé)尋找高質(zhì)量的負(fù)例作為訓(xùn)練數(shù)據(jù),推薦器負(fù)責(zé)訓(xùn)練推薦模型,同時(shí)將預(yù)測(cè)分?jǐn)?shù)反饋給采樣器作為獎(jiǎng)勵(lì)來(lái)強(qiáng)化學(xué)習(xí)。
推薦器的任務(wù)是利用用戶正例和采樣得到的負(fù)例來(lái)訓(xùn)練推薦模型。文獻(xiàn)[5]使用的是矩陣分解模型,該模型用用戶潛在特征向量和項(xiàng)目潛在特征向量的內(nèi)積來(lái)表示用戶與項(xiàng)目之間的交互關(guān)系。由于矩陣分解模型屬于線性建模,而線性建模無(wú)法擬合用戶與項(xiàng)目之間的非線性交互關(guān)系。于是,本文采用神經(jīng)協(xié)同過(guò)濾作為推薦器。
神經(jīng)協(xié)同過(guò)濾是一個(gè)雙通道推薦模型。一個(gè)通道是廣義矩陣分解(Generalized Matrix Factorization,GMF),在矩陣分解的基礎(chǔ)上增加一個(gè)邏輯函數(shù)作為激活函數(shù),將輸出限制在[0,1]的范圍內(nèi),賦予了模型概率學(xué)解釋。具體公式如下:
式中:pu,qi分別是用戶和項(xiàng)目潛在特征向量,hT是連接權(quán)重,aout是激活函數(shù),為邏輯函數(shù)。
另一個(gè)通道是多層感知機(jī)(Multilayer Perceptron,MLP),低層的輸出作為高層的輸入,任務(wù)是學(xué)習(xí)一個(gè)復(fù)雜的非線性函數(shù)來(lái)擬合用戶與項(xiàng)目之間的交互關(guān)系,具體公式如下:
式中:Wx,ax,bx分別是x層感知機(jī)的權(quán)重矩陣、激活函數(shù)、偏置向量,σ也是激活函數(shù),這里的激活函數(shù)統(tǒng)一使用ReLU。
神經(jīng)協(xié)同過(guò)濾的最終輸出為:
通過(guò)線性與非線性的結(jié)合,神經(jīng)協(xié)同過(guò)濾極大地提升了推薦的性能。
文獻(xiàn)[5]采用成對(duì)損失優(yōu)化推薦模型,該方法存在的缺陷在于僅采樣一個(gè)負(fù)例與正例匹配,無(wú)法靈活地控制采樣比來(lái)進(jìn)一步提升推薦性能。于是,本文通過(guò)最小化逐點(diǎn)損失來(lái)優(yōu)化推薦模型,損失函數(shù)如下:
1.2.1 構(gòu)建知識(shí)圖譜
本文利用用戶對(duì)項(xiàng)目的隱式反饋和項(xiàng)目的知識(shí)信息來(lái)構(gòu)建知識(shí)圖譜。圖譜中的每一個(gè)節(jié)點(diǎn)e代表一個(gè)用戶u、項(xiàng)目i或知識(shí)實(shí)體k,圖譜中的每一條邊代表用戶u與項(xiàng)目i存在交互行為或項(xiàng)目i具有某個(gè)知識(shí)實(shí)體k。利用多個(gè)圖卷積層來(lái)更新每個(gè)節(jié)點(diǎn)e的表示形式,在第l個(gè)圖卷積層中,以節(jié)點(diǎn)e為起始節(jié)點(diǎn)接收其相鄰節(jié)點(diǎn)的信息并更新其向量表示。更新公式如下:
1.2.2 知識(shí)感知采樣
將知識(shí)圖譜作為采樣環(huán)境,將采樣作為馬爾科夫決策過(guò)程M={S,A,P,R},其中S={s}是探索狀態(tài),A={a}是探索動(dòng)作,P是狀態(tài)轉(zhuǎn)移矩陣,R是獎(jiǎng)勵(lì)函數(shù)。在第t步探索操作中,st=(u,et)表示用戶u當(dāng)前的狀態(tài),即用戶u訪問(wèn)節(jié)點(diǎn)et。at=(et→→et+1)表示從項(xiàng)目et經(jīng)過(guò)知識(shí)實(shí)體到達(dá)項(xiàng)目et+1的兩跳路徑。給定狀態(tài)st下的動(dòng)作at,則向st+1的狀態(tài)轉(zhuǎn)移為:p(st+1=(u,et+1)|st=(u,et),at=(et→→et+1))=1。探索過(guò)程可以形式化為{s0,a1,s1,…,at,st},其中s0=(u,i)表示用戶u的初始狀態(tài)。
經(jīng)過(guò)t次探索操作之后,確定了一個(gè)候選負(fù)例集C={e1,e1,…,et},其中et表示第t個(gè)探索操作找到的候選負(fù)例。原來(lái)的采樣策略[5]將最后一個(gè)探索操作找到的候選負(fù)例作為正式負(fù)例,然而,最后一個(gè)候選負(fù)例并不一定是最佳負(fù)例。有的正例經(jīng)過(guò)一個(gè)探索操作就找到了最佳負(fù)例,有的負(fù)例經(jīng)過(guò)多個(gè)探索操作才能找到最佳負(fù)例。由于并沒(méi)有相關(guān)的理論依據(jù)來(lái)證明哪一個(gè)候選負(fù)例就是最佳負(fù)例,為了確保采樣的真實(shí)性,進(jìn)一步提升推薦的準(zhǔn)確性,本文設(shè)計(jì)了一個(gè)獎(jiǎng)勵(lì)函數(shù),來(lái)評(píng)價(jià)每一個(gè)候選負(fù)例的質(zhì)量。獎(jiǎng)勵(lì)函數(shù)如下:
式中:R(e?)表示候選負(fù)例e?的得分,f(u,j)表示用戶u對(duì)負(fù)例j的預(yù)測(cè)評(píng)分,g(i,j)表示正例i和負(fù)例j的相似度。
預(yù)測(cè)評(píng)分的計(jì)算公式如下:
相似度的計(jì)算公式如下:
式中:n(i),n(j)分別表示項(xiàng)目i,j具有的知識(shí)實(shí)體數(shù)量,n(i∩j)表示項(xiàng)目i,j同時(shí)具有的知識(shí)實(shí)體數(shù)量。
預(yù)測(cè)評(píng)分衡量了用戶與負(fù)例之間的匹配度。預(yù)測(cè)評(píng)分越高,用戶與負(fù)例的匹配度就越高。質(zhì)量越高的負(fù)例促使推薦模型為其產(chǎn)生更高的預(yù)測(cè)評(píng)分。通過(guò)這樣一種反饋機(jī)制,來(lái)衡量負(fù)例的質(zhì)量。相似度衡量了正例與負(fù)例之間的匹配度,相似度越高,正例與負(fù)例的匹配度就越高。類似于基于項(xiàng)目的協(xié)同過(guò)濾推薦,為目標(biāo)用戶推薦偏好項(xiàng)目的相似項(xiàng)目。
此外,考慮到僅選取得分最高的一個(gè)候選負(fù)例作為正式負(fù)例來(lái)優(yōu)化推薦模型,不符合一個(gè)正例存在多個(gè)負(fù)例的實(shí)際情況,制約了推薦性能的發(fā)揮,因此,本文允許選擇得分最高的n個(gè)候選負(fù)例作為正式負(fù)例,來(lái)與正例匹配,用逐點(diǎn)損失代替原來(lái)的成對(duì)損失來(lái)優(yōu)化推薦模型,并評(píng)估n對(duì)推薦性能的影響。通過(guò)最大化累積獎(jiǎng)勵(lì)函數(shù)期望,來(lái)優(yōu)化采樣器參數(shù)Θs,如下:
2.1.1 數(shù)據(jù)集描述
本文利用網(wǎng)上公開(kāi)的Amazon-book 數(shù)據(jù)集來(lái)進(jìn)行NCF-KAS 算法的驗(yàn)證實(shí)驗(yàn)。Amazon-book 是亞馬遜電商平臺(tái)上關(guān)于書(shū)籍的電商數(shù)據(jù),其中包含了70 679 個(gè)用戶對(duì)24 985 個(gè)項(xiàng)目的847 733 條交互數(shù)據(jù)。使用的用戶輔助信息為年齡、性別、職業(yè)等,項(xiàng)目輔助信息為作者、類別、出版社等。
2.1.2 基準(zhǔn)線
由于文獻(xiàn)[5]已經(jīng)通過(guò)大量實(shí)驗(yàn)證明了其方法的優(yōu)越性,而本文的研究工作是針對(duì)該方法在采樣器、推薦器、損失函數(shù)三方面的改進(jìn),因此本文采用控制變量的原則來(lái)進(jìn)行對(duì)比實(shí)驗(yàn)。即在推薦器、損失函數(shù)相同的情況下,僅對(duì)比不同采樣器下的推薦性能,以此類推,以驗(yàn)證本文所提的每一處改進(jìn)都有其意義。參與對(duì)比的采樣器為知識(shí)圖譜策略網(wǎng)絡(luò)[5](KGpolicy)和知識(shí)感知采樣(KAS),參與對(duì)比的推薦器為矩陣分解[5](MF)和神經(jīng)協(xié)同過(guò)濾(NCF),參與對(duì)比的損失函數(shù)為成對(duì)損失[5](BPR)和逐點(diǎn)損失(CEL)。
2.1.3 性能指標(biāo)
評(píng)價(jià)推薦質(zhì)量的性能指標(biāo)為召回率(recall@K)和歸一化折扣累積增益(ndcg@K)。在沒(méi)有特別說(shuō)明的情況下,本文將K設(shè)置為10。對(duì)于測(cè)試集中的每一個(gè)用戶,觀察所有的正例項(xiàng)目,并評(píng)估推薦器在整個(gè)項(xiàng)目空間中對(duì)正例項(xiàng)目進(jìn)行排名的性能,報(bào)告每個(gè)測(cè)試集中所有用戶的平均指標(biāo)。
2.1.4 參數(shù)設(shè)置
將所有推薦器和采樣器的嵌入大小固定為64,用Adam 來(lái)優(yōu)化模型,使用Xavier 初始化采樣器參數(shù)。本文使用經(jīng)過(guò)預(yù)訓(xùn)練的MF 和NCF 來(lái)與采樣器匹配,從而加速模型訓(xùn)練。對(duì)于超參數(shù),本文進(jìn)行網(wǎng)格搜索以找到每個(gè)模型的最佳設(shè)置,根據(jù)搜索推薦器和采樣器的學(xué)習(xí)率,以L2 正則系數(shù)搜索;用兩個(gè)圖卷積層來(lái)進(jìn)行圖形學(xué)習(xí),即式(8)、式(9)中的l=2。將負(fù)例的個(gè)數(shù)n設(shè)置為1 到10 的整數(shù),并在3.2.3 節(jié)報(bào)告其性能。
2.2.1 知識(shí)圖譜策略網(wǎng)絡(luò)與知識(shí)感知采樣的性能對(duì)比
在這組實(shí)驗(yàn)中,統(tǒng)一使用神經(jīng)協(xié)同過(guò)濾作為推薦器,用逐點(diǎn)損失作為損失函數(shù),比較了在知識(shí)圖譜策略網(wǎng)絡(luò)、知識(shí)感知采樣下的推薦性能。記錄了在數(shù)據(jù)集上獲得的最佳性能,如表2 所示。
表1 不同采樣策略對(duì)比
實(shí)驗(yàn)結(jié)果表明,本文提出的知識(shí)感知采樣相比于原來(lái)的知識(shí)圖譜策略網(wǎng)絡(luò),在數(shù)據(jù)集上的所有性能指標(biāo)都有明顯提升。對(duì)于Amazon-book 數(shù)據(jù)集,recall@10 提升了3.47%,ndcg@10 提升了4.52%。本文將這種改進(jìn)歸因于以下兩個(gè)方面:
(1)通過(guò)利用知識(shí)圖譜中項(xiàng)目與知識(shí)實(shí)體間豐富的關(guān)系,特別是高階連通性,使得知識(shí)感知采樣能有效地避免誤采樣問(wèn)題,從而找到更高質(zhì)量的負(fù)例;
(2)通過(guò)獎(jiǎng)勵(lì)函數(shù)對(duì)候選負(fù)例的進(jìn)一步篩選,使得負(fù)例與正例在內(nèi)容和評(píng)分兩個(gè)方面都具有較高的相似度,為推薦器的訓(xùn)練提供了較大的梯度貢獻(xiàn)。
總體而言,實(shí)驗(yàn)驗(yàn)證了本文所提的采樣策略對(duì)于提升推薦性能的有效性。
2.2.2 矩陣分解與神經(jīng)協(xié)同過(guò)濾的性能對(duì)比
在這組實(shí)驗(yàn)中,統(tǒng)一使用知識(shí)感知采樣作為采樣器,用逐點(diǎn)損失作為損失函數(shù),比較了在矩陣分解和神經(jīng)協(xié)同過(guò)濾下的推薦性能。記錄了在數(shù)據(jù)集上獲得的最佳性能,如表2 所示。
表2 不同推薦策略對(duì)比
實(shí)驗(yàn)結(jié)果表明,神經(jīng)協(xié)同過(guò)濾相比于矩陣分解,在數(shù)據(jù)集上的所有性能指標(biāo)都有明顯提升。對(duì)于Amazon-book 數(shù)據(jù)集,recall@10 提升了2.31%,ndcg@10 提升了3.13%。本文將這種改進(jìn)歸因于以下兩個(gè)方面:
(1)非線性建模比線性建模更有效地?cái)M合用戶與項(xiàng)目之間復(fù)雜的交互關(guān)系;
(2)神經(jīng)協(xié)同過(guò)濾通過(guò)線性與非線性的結(jié)合,進(jìn)一步提升了推薦性能。
總體而言,實(shí)驗(yàn)驗(yàn)證了本文使用神經(jīng)協(xié)同過(guò)濾作為推薦器對(duì)于提升推薦性能的有效性。
2.2.3 成對(duì)損失與逐點(diǎn)損失的性能對(duì)比
在這組實(shí)驗(yàn)中,統(tǒng)一使用知識(shí)感知采樣作為采樣器,神經(jīng)協(xié)同過(guò)濾作為推薦器,比較了在成對(duì)損失和逐點(diǎn)損失下的推薦性能。記錄了負(fù)例數(shù)從1 到10 的推薦性能,實(shí)驗(yàn)結(jié)果如圖1 所示。
圖1 不同損失函數(shù)對(duì)比
實(shí)驗(yàn)結(jié)果表明,在所有性能指標(biāo)上,逐點(diǎn)損失在優(yōu)化推薦模型上表現(xiàn)出比成對(duì)損失更好的性能。本文將這種改進(jìn)歸因于以下兩個(gè)方面:
(1)成對(duì)損失利用一個(gè)正例與一個(gè)負(fù)例匹配來(lái)優(yōu)化推薦器,這種固定的采樣比限制了推薦性能的發(fā)揮;
(2)逐點(diǎn)損失可以靈活地控制采樣比,更加符合一個(gè)正例對(duì)應(yīng)多個(gè)負(fù)例的真實(shí)情況,從而提升推薦性能。
此外注意到,Amazon-book 數(shù)據(jù)集在4 個(gè)負(fù)例的情況下達(dá)到最佳性能。這就意味著,采樣比并不是越大越好。達(dá)到最佳性能后,繼續(xù)增大采樣比,將導(dǎo)致推薦性能下降,這是由于后面的采樣引入了低價(jià)值的負(fù)例。總體而言,實(shí)驗(yàn)驗(yàn)證了本文利用逐點(diǎn)損失作為損失函數(shù)對(duì)于提升推薦性能的有效性。
本文提出了一種新的推薦框架——基于知識(shí)感知采樣的神經(jīng)協(xié)同過(guò)濾。在知識(shí)圖譜策略網(wǎng)絡(luò)的基礎(chǔ)之上,對(duì)采樣器、推薦器、損失函數(shù)做了改進(jìn):設(shè)計(jì)了一個(gè)獎(jiǎng)勵(lì)函數(shù)來(lái)衡量候選負(fù)例的質(zhì)量,從而更有效地獲取高質(zhì)量的負(fù)例;使用神經(jīng)協(xié)同過(guò)濾作為推薦器,通過(guò)結(jié)合線性建模和非線性建模來(lái)提升推薦性能;利用逐點(diǎn)損失作為損失函數(shù),突破了成對(duì)損失的固定采樣比對(duì)于推薦性能的限制。在三個(gè)真實(shí)數(shù)據(jù)集上的廣泛實(shí)驗(yàn)驗(yàn)證了所提方法的有效性。
基于深度學(xué)習(xí)的推薦方法不僅能夠挖掘用戶和項(xiàng)目深層次本質(zhì)特征,還能有效融合多源異構(gòu)數(shù)據(jù)。在后續(xù)的工作中,將嘗試引入其他輔助信息,如用戶評(píng)論、時(shí)間信息等,以進(jìn)一步提升推薦質(zhì)量。另外,對(duì)于用戶而言,實(shí)時(shí)性可能是比準(zhǔn)確性更加重要的性能指標(biāo),為此,將進(jìn)一步探索實(shí)現(xiàn)實(shí)時(shí)推薦的方法。