張天蔚
(山東省計算中心(國家超級計算濟南中心),山東 濟南 250014)
隨著互聯網的迅猛發展,用戶想要從海量的信息中獲取自己真正感興趣的內容已經變成了一件頗有挑戰性的工作。解決這種“信息過載”問題的常用技術之一就是推薦系統[1-2]。推薦系統往往利用用戶對于項目的歷史交互數據信息(如評分、評論、歷史購買記錄等)[3]建立模型來挖掘用戶與項目之間的隱性關聯[4-5],從而得以為用戶推薦與其喜好的歷史交互項目高度相似的新項目,幫助用戶篩選出其需要的信息[6-7]。
協 同 過 濾(Collaborative Filtering,CF)算 法[8]是 推薦系統中最為主流和使用最為廣泛的算法之一[9]。而對于推薦系統而言,按照其最終進行推薦的方式又可以將推薦算法分為兩類:評分預測推薦算法[10]與排序推薦算法[11]。作為基于歷史交互項的協同過濾評分預測推薦算法的代表,矩陣分解(Matrix Factorization,MF)算法[12]將用戶和項目分別抽象為向量映射到更高維度的隱空間中[13],并在最終評分預測計算環節引入偏置項來表征用戶的打分習慣和項目給大眾的整體印象,將偏置項合并入最終的評分預測計算中,從而提高預測的性能[14]。然而,這種針對用戶和項目分別獨立設置的偏置項忽視了用戶與項目之間的相關性,不能準確地表征用戶對于某一類項目的個人偏好,而這種偏好很可能是優先于用戶日常的打分習慣的,因而影響了推薦的精確度和泛用性。
神經協同過濾(Neural Collaborative Filtering,NCF)算法[15]是協同過濾排序推薦算法的代表作之一。與評分預測推薦算法不同的是,排序推薦中,用戶對于項目打分的高低不再具有實際意義,而是將用戶所有產生過交互(如打分、點評等)的項目都視為該用戶的“正例項目”,反之,將該用戶從未產生過交互的項目都視為該用戶的“負例項目”。相應地,推薦任務也改變為基于用戶與其所有“正例項目”的歷史交互,從用戶的“負例項目”中挖掘出用戶最為感興趣的那些,并將該用戶所有“負例項目”進行排序,排名靠前的項目則被認作是最值得推薦給用戶的。然而在這個過程中,由于算法將無論高分評價或是低分評價的項目都同等地視為產生過交互的正例,這在一定程度上導致了推薦的不合理性。
基于對上述兩個方面的觀察,本文進行了基于深度網絡的推薦系統偏置項改良研究。改良思路為:聯合用戶與其交互項目各自的特征,利用深度網絡學習用戶-項目關聯偏置項,該偏置項可以有效表示用戶對于項目的偏好;同時在學習過程中,為用戶打出高分的交互項賦予權重上的增益,反之,對于那些用戶打出低分的交互項則賦予權重減益。在3個真實數據集上進行了對比實驗,實驗結果表明,與原始的MF及NCF算法相比,該改良方案有效地提升了推薦效果。另外,為了驗證該改良方案的泛用性,將對比實驗的范圍擴展到了另一個經典的排序推薦算法:貝葉斯個性化排序(Bayesian Personalized Ranking,BPR)[16]中,實驗結果表明,與原始BPR算法相比,改良后的算法同樣獲得了明顯的推薦性能提升。
矩陣分解算法的核心思想在于,將可以唯一代表某一用戶的特征(例如其在數據集中的ID編號)和可以唯一代表某一項目的特征分別抽象成兩個高維度的特征向量 pu,qi∈Rd,其中 d在訓練中作為一個超參數,代表向量的維度。將此兩向量進行點乘后所得的標量值作為預測評分的基數值,與此同時,在評分預測過程中引入了3個偏置項來提升預測的準確性。矩陣分解算法的評分預測過程可表示為如下公式:

但是這種將用戶偏置項和物品偏置項獨立開來分別計算的方式僅能表示用戶或項目自身的特征,而忽略了二者之間的關聯性,而這在實際場景中不足以全面涵蓋各種情況。例如,某男性用戶在給電影打分時往往非??量蹋雌鋫€人用戶偏置應在評分預測過程中被設置為減益項),但是卻可能因為特別偏愛某部電影的主演而給該電影打出高分。在這個過程中,該電影主演構成了影響用戶對項目(電影)打分的隱性關聯因素,而這個關聯因素是無法被用戶/項目各自獨立設置的偏置項所學習到的。因此,本文將矩陣分解算法中偏置項的學習方式改良為:聯合用戶與項目,深入挖掘二者之間的隱性關聯因素,為每一個用戶-項目對學習出一個關聯偏置項,用于表征特定用戶在面對特定項目時的個人偏好。
與矩陣分解算法不同的是,神經協同過濾算法實現的是推薦系統中的排序推薦。正如前文所述,神經協同過濾算法在數據設置過程中不再關注用戶為項目具體打出了多少分,而是將用戶所有打分過的項目(無論給出了高分或低分)都視為該用戶的正例項目,并由此學習用戶的偏好特征。本文認為這樣的處理思路在實際應用中有不合理之處,理由在于,用戶給某項目打出低分(即差評),意味著用戶不喜歡該項目,且大多數情況下不愿在今后再次購買該項目。然而按照神經協同過濾的數據設置方式,那些被用戶打出低分的項目也會被同等地視為該用戶的正例,并以之為基礎挖掘用戶的偏好,這將導致訓練完成后的系統繼續為用戶推薦與這些低分項目高度相近的其他項目,而這種情況對于該用戶而言毫無疑問是不合理的。
針對上述問題,一個簡單有效的解決思路是,為用戶給出的評分賦予實際意義,并據此設置預測過程中的偏好增益或減益。
基于對前文所述兩個相關工作及其相關可改進之處的思考,本文提出了基于深度網絡的推薦系統偏置項改良方案,該方案致力于同時解決上述兩個問題,提高推薦性能,并且對于評分預測推薦系統和排序預測推薦系統都適用。該改良方案如下:
依據數據集中評分(1~5分),將所有評分分為三個代表用戶對項目喜好程度的類:(1)4~5分:好評類,表示用戶喜愛該項目,用標簽“1”代表;(2)3分:中評類,表示用戶對于該項目持中立態度,沒有特別明顯的喜愛或厭惡情緒,用標簽“0”代表;(3)1~2分:差評類,表示用戶厭惡該項目,用標簽“-1”代表。由此,將數據集中的評分作為了額外信息輸入到推薦系統中參與學習。這里本文將此步驟設計為一個機器學習中的多分類問題,分類數為3。設置一個多層感知機(Multi-Layer Perception,MLP)來擬合這個三分類學習,并選用交叉熵(Cross-entropy cost function)作為該多分類問題學習過程中的損失函數:

本方案將用戶和項目各自的向量特征(也即公式(1)中的pu,qi)融合為一個聯合特征向量,將該聯合特征作為輸入,輸入到上述MLP中進行三分類學習。同時,該聯合特征向量將在接下來的評分預測或排序推薦任務的最終輸出環節充當該用戶-項目對的聯合偏置。對于矩陣分解算法,用聯合偏置代替其評分預測過程中的用戶偏置與項目偏置兩項(保留“平均偏差”項)。對于神經協同過濾算法而言,由于其算法本身沒有考慮加入偏置項,則可以直接將該聯合偏置加入到算法最終的排序評分計算環節中。
本文以基于矩陣分解算法的偏置項改良推薦系統模型為例,完整地闡述進行偏置項改良后的推薦系統運行流程。圖1展示了基于矩陣分解算法的偏置項改良推薦系統模型圖。

圖1 基于矩陣分解算法的偏置項改良推薦系統模型圖
其中分類損失(Loss of Classification)即為公式(2)所確定的 Lc,而回歸損失(Loss of Regression)選用評分預測問題中最為常用的均方誤差(Mean Square Error,MSE)函數:

本方案將整個模型設計為端到端(End-to-End)結構,這意味著可以在輸出及誤差反向傳播環節統一地學習分類損失和回歸損失。這里將整個模型最終的整體損失函數設計為:

其中,γ為系數,可以作為端到端模型的一個超參數,在訓練過程中動態地調節分類損失在學習中所占的比重。以上即為本文設計的基于深度網絡的推薦系統偏置項改良方案,上文中提到的神經協同過濾算法(NCF)可以同理地施加此改良方案。為了驗證該方案的泛用性,本文在另一個推薦領域經典排序推薦算法——貝葉斯個性化排序(BPR)上也同樣施加了此方案,并進行了對比實驗。三組原始算法與其改良模型的實驗結果對比與分析見下節。
由于所設計改良方案應用了深度學習,為了更高效地運行包含深度神經網絡的模型,本文選擇使用GPU+CUDA的環境來進行實驗。本實驗運行環境如下:
操作系統:Windows 10 ver1909;
CPU:Intel? CoreTMi5-7300HQ CPU;
GPU:NVIDIA GeForce GTX 1050 Ti;
GPU顯存:4 GB;
CUDA 版本:10.1。
在3個推薦領域公開數據集上進行了對比實驗,其中兩個來自于 MovieLens,分別為 ml-latest-small和ml-1m;另外一個數據集來自于亞馬遜電商網站,為Amazon Home and Kitchen。此三個數據集的體量大?。ò此慕换バ袛涤嬎悖┖w了 10萬、50萬和100萬三個數量級,具體地,各數據集屬性如表1所示。

表1 所選數據集屬性展示
對于矩陣分解算法(MF),由于其是一個評分預測推薦算法,屬于回歸問題,故本文在設計評價指標時選用了均方誤差(MSE)值直接作為其評價指標,經過改良后的模型運行所得結果同樣由均方誤差值來進行衡量。對于神經協同過濾算法(NCF)及貝葉斯個性化排序算法(BPR),由于它們均為排序推薦算法,故本文選用了排序推薦常用的評價指標:歸一化折損累計增益(Normalized Discounted Cumulative Gain,NDCG)和召回率(Recall)作為評價模型性能的標準。此兩個指標在計算時需提前設置統計截斷位置,例如,設置截斷于前 10位(用 @10表示),則表示將驗證時所排好名次的所有物品取前10個參與評估。為了更好地驗證改良效果,本文在實驗時將截斷位置設置為@50,以驗證模型是否能在前50位這個較大的排序范圍內獲得性能提升。
3.4.1 矩陣分解算法的改良效果
表2展示了矩陣分解算法的改良效果,表中數字均為均方誤差值,值越低者代表誤差越小,也即性能越優良。

表2 矩陣分解算法的改良效果
可見,經過改良后的矩陣分解算法,其均方誤差值在三個測試數據集上均顯著降低,也即獲得了明顯的性能提升。
3.4.2 神經協同過濾算法的改良效果
表3展示了神經協同過濾算法的改良效果。如前文所述,本文設置了截斷位為@50以評估其作為一個排序推薦算法性能是否獲得提升。表格中數據內容如其對應列名所示(NDCG、Recall),此兩個評價指標均為百分比(以三位小數表示),值越大則表示占比越多的正例得到了推薦,也即性能越優良。

表3 神經協同過濾算法的改良效果
可見,經改良后的神經協同過濾算法在三個測試數據集上都獲得了較為明顯的性能提升。
3.4.3 貝葉斯個性化排序算法的改良效果
為了驗證本文所述改良方案的泛化性,本文在貝葉斯個性化排序算法上進行了拓展實驗。由于其與神經協同過濾算法均屬于排序預測算法,故其評價指標設計與神經協同過濾相同,在此不再贅述。對于BPR算法,同樣設置截斷于@50來驗證其性能是否獲得了提升,結果如表4所示。
由表4結果可見,改良后的BPR算法同樣獲得了較為明顯的性能提升,這表明了該改良方案可被應用于MF、NCF以外的其他推薦算法當中,具有不錯的泛化能力。

表4 貝葉斯個性化排序算法的改良效果
本文提出了一種基于深度網絡的推薦系統改良方案,該方案從用戶為項目做出的評分挖掘用戶對該物品的態度,并將原本用戶與項目之間彼此獨立的偏置項改良為一個聯合偏置,在評分預測問題和排序推薦問題上都有效地提升了推薦性能。