張?zhí)煳?/p>
(山東省計算中心(國家超級計算濟南中心),山東 濟南 250014)
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,用戶想要從海量的信息中獲取自己真正感興趣的內(nèi)容已經(jīng)變成了一件頗有挑戰(zhàn)性的工作。解決這種“信息過載”問題的常用技術(shù)之一就是推薦系統(tǒng)[1-2]。推薦系統(tǒng)往往利用用戶對于項目的歷史交互數(shù)據(jù)信息(如評分、評論、歷史購買記錄等)[3]建立模型來挖掘用戶與項目之間的隱性關(guān)聯(lián)[4-5],從而得以為用戶推薦與其喜好的歷史交互項目高度相似的新項目,幫助用戶篩選出其需要的信息[6-7]。
協(xié) 同 過 濾(Collaborative Filtering,CF)算 法[8]是 推薦系統(tǒng)中最為主流和使用最為廣泛的算法之一[9]。而對于推薦系統(tǒng)而言,按照其最終進行推薦的方式又可以將推薦算法分為兩類:評分預(yù)測推薦算法[10]與排序推薦算法[11]。作為基于歷史交互項的協(xié)同過濾評分預(yù)測推薦算法的代表,矩陣分解(Matrix Factorization,MF)算法[12]將用戶和項目分別抽象為向量映射到更高維度的隱空間中[13],并在最終評分預(yù)測計算環(huán)節(jié)引入偏置項來表征用戶的打分習(xí)慣和項目給大眾的整體印象,將偏置項合并入最終的評分預(yù)測計算中,從而提高預(yù)測的性能[14]。然而,這種針對用戶和項目分別獨立設(shè)置的偏置項忽視了用戶與項目之間的相關(guān)性,不能準確地表征用戶對于某一類項目的個人偏好,而這種偏好很可能是優(yōu)先于用戶日常的打分習(xí)慣的,因而影響了推薦的精確度和泛用性。
神經(jīng)協(xié)同過濾(Neural Collaborative Filtering,NCF)算法[15]是協(xié)同過濾排序推薦算法的代表作之一。與評分預(yù)測推薦算法不同的是,排序推薦中,用戶對于項目打分的高低不再具有實際意義,而是將用戶所有產(chǎn)生過交互(如打分、點評等)的項目都視為該用戶的“正例項目”,反之,將該用戶從未產(chǎn)生過交互的項目都視為該用戶的“負例項目”。相應(yīng)地,推薦任務(wù)也改變?yōu)榛谟脩襞c其所有“正例項目”的歷史交互,從用戶的“負例項目”中挖掘出用戶最為感興趣的那些,并將該用戶所有“負例項目”進行排序,排名靠前的項目則被認作是最值得推薦給用戶的。然而在這個過程中,由于算法將無論高分評價或是低分評價的項目都同等地視為產(chǎn)生過交互的正例,這在一定程度上導(dǎo)致了推薦的不合理性。
基于對上述兩個方面的觀察,本文進行了基于深度網(wǎng)絡(luò)的推薦系統(tǒng)偏置項改良研究。改良思路為:聯(lián)合用戶與其交互項目各自的特征,利用深度網(wǎng)絡(luò)學(xué)習(xí)用戶-項目關(guān)聯(lián)偏置項,該偏置項可以有效表示用戶對于項目的偏好;同時在學(xué)習(xí)過程中,為用戶打出高分的交互項賦予權(quán)重上的增益,反之,對于那些用戶打出低分的交互項則賦予權(quán)重減益。在3個真實數(shù)據(jù)集上進行了對比實驗,實驗結(jié)果表明,與原始的MF及NCF算法相比,該改良方案有效地提升了推薦效果。另外,為了驗證該改良方案的泛用性,將對比實驗的范圍擴展到了另一個經(jīng)典的排序推薦算法:貝葉斯個性化排序(Bayesian Personalized Ranking,BPR)[16]中,實驗結(jié)果表明,與原始BPR算法相比,改良后的算法同樣獲得了明顯的推薦性能提升。
矩陣分解算法的核心思想在于,將可以唯一代表某一用戶的特征(例如其在數(shù)據(jù)集中的ID編號)和可以唯一代表某一項目的特征分別抽象成兩個高維度的特征向量 pu,qi∈Rd,其中 d在訓(xùn)練中作為一個超參數(shù),代表向量的維度。將此兩向量進行點乘后所得的標量值作為預(yù)測評分的基數(shù)值,與此同時,在評分預(yù)測過程中引入了3個偏置項來提升預(yù)測的準確性。矩陣分解算法的評分預(yù)測過程可表示為如下公式:
但是這種將用戶偏置項和物品偏置項獨立開來分別計算的方式僅能表示用戶或項目自身的特征,而忽略了二者之間的關(guān)聯(lián)性,而這在實際場景中不足以全面涵蓋各種情況。例如,某男性用戶在給電影打分時往往非??量蹋雌鋫€人用戶偏置應(yīng)在評分預(yù)測過程中被設(shè)置為減益項),但是卻可能因為特別偏愛某部電影的主演而給該電影打出高分。在這個過程中,該電影主演構(gòu)成了影響用戶對項目(電影)打分的隱性關(guān)聯(lián)因素,而這個關(guān)聯(lián)因素是無法被用戶/項目各自獨立設(shè)置的偏置項所學(xué)習(xí)到的。因此,本文將矩陣分解算法中偏置項的學(xué)習(xí)方式改良為:聯(lián)合用戶與項目,深入挖掘二者之間的隱性關(guān)聯(lián)因素,為每一個用戶-項目對學(xué)習(xí)出一個關(guān)聯(lián)偏置項,用于表征特定用戶在面對特定項目時的個人偏好。
與矩陣分解算法不同的是,神經(jīng)協(xié)同過濾算法實現(xiàn)的是推薦系統(tǒng)中的排序推薦。正如前文所述,神經(jīng)協(xié)同過濾算法在數(shù)據(jù)設(shè)置過程中不再關(guān)注用戶為項目具體打出了多少分,而是將用戶所有打分過的項目(無論給出了高分或低分)都視為該用戶的正例項目,并由此學(xué)習(xí)用戶的偏好特征。本文認為這樣的處理思路在實際應(yīng)用中有不合理之處,理由在于,用戶給某項目打出低分(即差評),意味著用戶不喜歡該項目,且大多數(shù)情況下不愿在今后再次購買該項目。然而按照神經(jīng)協(xié)同過濾的數(shù)據(jù)設(shè)置方式,那些被用戶打出低分的項目也會被同等地視為該用戶的正例,并以之為基礎(chǔ)挖掘用戶的偏好,這將導(dǎo)致訓(xùn)練完成后的系統(tǒng)繼續(xù)為用戶推薦與這些低分項目高度相近的其他項目,而這種情況對于該用戶而言毫無疑問是不合理的。
針對上述問題,一個簡單有效的解決思路是,為用戶給出的評分賦予實際意義,并據(jù)此設(shè)置預(yù)測過程中的偏好增益或減益。
基于對前文所述兩個相關(guān)工作及其相關(guān)可改進之處的思考,本文提出了基于深度網(wǎng)絡(luò)的推薦系統(tǒng)偏置項改良方案,該方案致力于同時解決上述兩個問題,提高推薦性能,并且對于評分預(yù)測推薦系統(tǒng)和排序預(yù)測推薦系統(tǒng)都適用。該改良方案如下:
依據(jù)數(shù)據(jù)集中評分(1~5分),將所有評分分為三個代表用戶對項目喜好程度的類:(1)4~5分:好評類,表示用戶喜愛該項目,用標簽“1”代表;(2)3分:中評類,表示用戶對于該項目持中立態(tài)度,沒有特別明顯的喜愛或厭惡情緒,用標簽“0”代表;(3)1~2分:差評類,表示用戶厭惡該項目,用標簽“-1”代表。由此,將數(shù)據(jù)集中的評分作為了額外信息輸入到推薦系統(tǒng)中參與學(xué)習(xí)。這里本文將此步驟設(shè)計為一個機器學(xué)習(xí)中的多分類問題,分類數(shù)為3。設(shè)置一個多層感知機(Multi-Layer Perception,MLP)來擬合這個三分類學(xué)習(xí),并選用交叉熵(Cross-entropy cost function)作為該多分類問題學(xué)習(xí)過程中的損失函數(shù):
本方案將用戶和項目各自的向量特征(也即公式(1)中的pu,qi)融合為一個聯(lián)合特征向量,將該聯(lián)合特征作為輸入,輸入到上述MLP中進行三分類學(xué)習(xí)。同時,該聯(lián)合特征向量將在接下來的評分預(yù)測或排序推薦任務(wù)的最終輸出環(huán)節(jié)充當(dāng)該用戶-項目對的聯(lián)合偏置。對于矩陣分解算法,用聯(lián)合偏置代替其評分預(yù)測過程中的用戶偏置與項目偏置兩項(保留“平均偏差”項)。對于神經(jīng)協(xié)同過濾算法而言,由于其算法本身沒有考慮加入偏置項,則可以直接將該聯(lián)合偏置加入到算法最終的排序評分計算環(huán)節(jié)中。
本文以基于矩陣分解算法的偏置項改良推薦系統(tǒng)模型為例,完整地闡述進行偏置項改良后的推薦系統(tǒng)運行流程。圖1展示了基于矩陣分解算法的偏置項改良推薦系統(tǒng)模型圖。
圖1 基于矩陣分解算法的偏置項改良推薦系統(tǒng)模型圖
其中分類損失(Loss of Classification)即為公式(2)所確定的 Lc,而回歸損失(Loss of Regression)選用評分預(yù)測問題中最為常用的均方誤差(Mean Square Error,MSE)函數(shù):
本方案將整個模型設(shè)計為端到端(End-to-End)結(jié)構(gòu),這意味著可以在輸出及誤差反向傳播環(huán)節(jié)統(tǒng)一地學(xué)習(xí)分類損失和回歸損失。這里將整個模型最終的整體損失函數(shù)設(shè)計為:
其中,γ為系數(shù),可以作為端到端模型的一個超參數(shù),在訓(xùn)練過程中動態(tài)地調(diào)節(jié)分類損失在學(xué)習(xí)中所占的比重。以上即為本文設(shè)計的基于深度網(wǎng)絡(luò)的推薦系統(tǒng)偏置項改良方案,上文中提到的神經(jīng)協(xié)同過濾算法(NCF)可以同理地施加此改良方案。為了驗證該方案的泛用性,本文在另一個推薦領(lǐng)域經(jīng)典排序推薦算法——貝葉斯個性化排序(BPR)上也同樣施加了此方案,并進行了對比實驗。三組原始算法與其改良模型的實驗結(jié)果對比與分析見下節(jié)。
由于所設(shè)計改良方案應(yīng)用了深度學(xué)習(xí),為了更高效地運行包含深度神經(jīng)網(wǎng)絡(luò)的模型,本文選擇使用GPU+CUDA的環(huán)境來進行實驗。本實驗運行環(huán)境如下:
操作系統(tǒng):Windows 10 ver1909;
CPU:Intel? CoreTMi5-7300HQ CPU;
GPU:NVIDIA GeForce GTX 1050 Ti;
GPU顯存:4 GB;
CUDA 版本:10.1。
在3個推薦領(lǐng)域公開數(shù)據(jù)集上進行了對比實驗,其中兩個來自于 MovieLens,分別為 ml-latest-small和ml-1m;另外一個數(shù)據(jù)集來自于亞馬遜電商網(wǎng)站,為Amazon Home and Kitchen。此三個數(shù)據(jù)集的體量大小(按所含的交互行數(shù)計算)涵蓋了 10萬、50萬和100萬三個數(shù)量級,具體地,各數(shù)據(jù)集屬性如表1所示。
表1 所選數(shù)據(jù)集屬性展示
對于矩陣分解算法(MF),由于其是一個評分預(yù)測推薦算法,屬于回歸問題,故本文在設(shè)計評價指標時選用了均方誤差(MSE)值直接作為其評價指標,經(jīng)過改良后的模型運行所得結(jié)果同樣由均方誤差值來進行衡量。對于神經(jīng)協(xié)同過濾算法(NCF)及貝葉斯個性化排序算法(BPR),由于它們均為排序推薦算法,故本文選用了排序推薦常用的評價指標:歸一化折損累計增益(Normalized Discounted Cumulative Gain,NDCG)和召回率(Recall)作為評價模型性能的標準。此兩個指標在計算時需提前設(shè)置統(tǒng)計截斷位置,例如,設(shè)置截斷于前 10位(用 @10表示),則表示將驗證時所排好名次的所有物品取前10個參與評估。為了更好地驗證改良效果,本文在實驗時將截斷位置設(shè)置為@50,以驗證模型是否能在前50位這個較大的排序范圍內(nèi)獲得性能提升。
3.4.1 矩陣分解算法的改良效果
表2展示了矩陣分解算法的改良效果,表中數(shù)字均為均方誤差值,值越低者代表誤差越小,也即性能越優(yōu)良。
表2 矩陣分解算法的改良效果
可見,經(jīng)過改良后的矩陣分解算法,其均方誤差值在三個測試數(shù)據(jù)集上均顯著降低,也即獲得了明顯的性能提升。
3.4.2 神經(jīng)協(xié)同過濾算法的改良效果
表3展示了神經(jīng)協(xié)同過濾算法的改良效果。如前文所述,本文設(shè)置了截斷位為@50以評估其作為一個排序推薦算法性能是否獲得提升。表格中數(shù)據(jù)內(nèi)容如其對應(yīng)列名所示(NDCG、Recall),此兩個評價指標均為百分比(以三位小數(shù)表示),值越大則表示占比越多的正例得到了推薦,也即性能越優(yōu)良。
表3 神經(jīng)協(xié)同過濾算法的改良效果
可見,經(jīng)改良后的神經(jīng)協(xié)同過濾算法在三個測試數(shù)據(jù)集上都獲得了較為明顯的性能提升。
3.4.3 貝葉斯個性化排序算法的改良效果
為了驗證本文所述改良方案的泛化性,本文在貝葉斯個性化排序算法上進行了拓展實驗。由于其與神經(jīng)協(xié)同過濾算法均屬于排序預(yù)測算法,故其評價指標設(shè)計與神經(jīng)協(xié)同過濾相同,在此不再贅述。對于BPR算法,同樣設(shè)置截斷于@50來驗證其性能是否獲得了提升,結(jié)果如表4所示。
由表4結(jié)果可見,改良后的BPR算法同樣獲得了較為明顯的性能提升,這表明了該改良方案可被應(yīng)用于MF、NCF以外的其他推薦算法當(dāng)中,具有不錯的泛化能力。
表4 貝葉斯個性化排序算法的改良效果
本文提出了一種基于深度網(wǎng)絡(luò)的推薦系統(tǒng)改良方案,該方案從用戶為項目做出的評分挖掘用戶對該物品的態(tài)度,并將原本用戶與項目之間彼此獨立的偏置項改良為一個聯(lián)合偏置,在評分預(yù)測問題和排序推薦問題上都有效地提升了推薦性能。