魏 東,孫靜宇,海 洋
(太原理工大學 軟件學院,太原 030024)
傳統的推薦算法大致可分為3類:基于內容推薦、協同過濾推薦和混合推薦[1]。其中協同過濾算法因其在處理非結構化數據的優越性,在時下的推薦系統中得到廣泛應用和關注。經過學術界和工業界多年的探索和研究,推薦算法經歷了從傳統的矩陣分解等方法到現今的與深度學習技術結合的發展歷程。
深度學習旨在模擬、建立人腦進行分析學習活動的神經網絡,其模型是一種深層非線性網絡,可以獲取比傳統算法更深層次的數據本質特征。近些年,深度學習在圖像處理[2]、語音識別[3]以及自然語言處理[4]等領域都取得了很多成果[5],成為了人工智能領域的一個研究熱點,同時也為推薦系統的研究帶來了新的機遇。基于深度學習的推薦系統通常將各類用戶和項目相關的數據作為輸入,利用深度學習網絡進行學習和訓練,最終自動為用戶輸出個性化的推薦結果[6]。
本文提出了一種結合難分樣本挖掘(HEM,hard example mining)和對抗自編碼器[7](AAE,adversarial autoencoder)的深度推薦模型(HEM-AAE)。難分樣本挖掘采用三元損失算法對項目進行分類,以此來解決評分數據分布不平衡和稀疏性問題。將不同類別的項目輸入對抗自編碼器的訓練過程,可以從兩方面優化推薦模型。在此基礎上通過訓練好的模型預測目標用戶的項目評分,使用TOP-N算法選擇預測評分最高的項目推薦給用戶。
推薦系統研究中常用數據集數據分布不平衡,稀疏問題較嚴重,影響了推薦系統性能穩定性。雖然評分范圍固定,但是用戶評分基于個人主觀認知,用戶評分標準、偏好不同加劇了數據樣本復雜性。所以用戶偏好挖掘尤為重要,故本文引入均模型(Mean Model)對數據集做難分樣本挖掘(Hard Negative Mining)預處理[10]。
由于推薦系統中的常用數據集稀疏性較高,對計算機資源消耗較大,故引入均模型[16]。均模型生成過程類似于排序二叉樹,可以在保留數據統計學特征的情況下極大緩解數據稀疏性,如圖1所示。

圖1 均模型結構示意圖
假設項目評分向量I={r1,r2,,rm},經過變換,得到此向量的均模型表示為:
IMM={t0,(t10,t11), (t20,t21,t22,t23), (t30,t31,),}
(1)
其中:t0為均模型的根節點,(t10,t11)為均模型第二層的第一和第二個元素,tlk表示第l層的第k-1個結點。結點生成過程如公式(2):
tlk=Tl(Il)
(2)
其中:Tl(*)為第l層的轉換公式(3):
(3)
當k為奇數時,Il={ri∈I|ri>t(l-1)g};k為偶數時,Il={ri∈I|ri≤t(l-1)g},g的值為:g=|k/2|。在實際應用中,可以根據需求靈活調整均模型規模,一般只需三層即可。

(4)
其中:α是一個常量,表示正負樣本對訓練的邊界值。難分樣本挖掘代價函數如公式(5)所示:
(5)
代價函數采用歐氏距離度量評分向量間距離,故公式(5)恒大于零,當[*]大于0時,規定其為損失函數的損失之;[*]小于0時,規定損失值為0。
HEM-AAE系統框架如圖2所示。

圖2 基于HEM-AAE的推薦系統框架
其中AAE由自編碼器[8](AE,autoencoder)和生成式對抗網絡[9](GAN,generative adversarial networks)兩部分組成。自編碼器主要由編碼模型encoder和解碼模型decoder構成;對抗網絡由生成模型G和判別模型D構成。首先,采用三元組損失算法對數據集進行難分樣本挖掘,經過分類的正、負樣本放入樣本候選池;再將正樣本和負樣本分別作為自編碼器encoder和對抗網絡生成模型G的輸入,分別產生正樣本隱表示和偽造正樣本隱表示;自編碼器的decoder根據encoder生成的正樣本隱表示重構用戶評分;判別模型D辨別正樣本隱表示和偽造正樣本隱表示。
自編碼器是一種使用誤差反向傳播算法(BP,back propagation)進行訓練的前饋神經網絡,結構可簡化為如圖3所示[11]。

圖3 自編碼器結構圖
自編碼器神經網絡由輸入層encoder,隱藏層和輸出層decoder構成。通常隱藏層的維度遠小于輸入層,輸出層的作用是重構輸入層,使用重構誤差(x,x′)來表示重構的接近程度。其流程如圖4所示。

圖4 自編碼器神經網絡流程圖
其中encoder將輸入INPUT進行壓縮表示,decoder再將壓縮表示進行還原。其數學表達式如式(5),φ和ε分別表示encoder和decoder。
φ,ε=argminφ,εL(X,ε(φ(X)))
(5)
數據降維和特征提取被認為是自編碼器的兩個主要實際應用。使用適當的維度和稀疏性約束,自編碼器可以得到比主成分分析或其他類似技術更好的數據投影。
如果只通過最小化重構誤差來訓練模型,自編碼器極有可能學習到一個恒等函數[1],因此本文引入對抗自編碼器進行“對抗”訓練。如圖1所示,對抗自編碼器模型由自編碼器和對抗網絡兩部分組成。訓練過程分為也可劃分為兩階段:重構階段和正則化階段。本文中,對抗網絡的生成器G與自編碼器的編碼模型encoder使用同一個網絡。在重構階段,自編碼器更新編碼模型encoder和解碼模型decoder以最小化重構誤差。在正則化階段,判別器D辨別正樣本隱表示z+和生成器G生成的的負樣本隱表示z-,根據判別結果,交替更新生成器G和判別器D。對抗自編碼器的訓練有兩個目標:最小化重構誤差和達到對抗網絡的相對平衡,其損失函數如式(6):
LAAE=ReonstructionLoss+AdversarialTraining
(6)
自編碼器的重構輸出[12]如式(7)所示:
h(r;θ)=f(W·g(Vr+μ)+b)
(7)
其中:g(*)使隱藏層的激活函數,f(*)是輸出層的激活函,θ={W,V,μ,b},權重W∈Rm×k,V∈Rk×m,偏置μ∈Rk,b∈Rm。輸出層對應位置元素被認為是預測值,即:
(8)
損失函數如公式(9):
(9)
生成模型G使用負樣本作為輸入產生偽造正樣本,對判別器D進行反向激勵,使得判別器可以更好地識別正樣本;經過優化的判別器同時有利于優化生成器,生成更好的偽造正樣本。對抗網絡的訓練采用交替優化方法,即固定G的參數以更新D的參數,然后固定D的參數去更新G的參數。Goodfellow等[9]指出,將生成器G固定,可求得唯一的最優判別器:
固定判別器D,在pg=pdata時,D*=0.5,此時生成器G達到最優,即判別器無法區分真實樣本和偽造樣本[17]。損失函數如公式(10):
Ed~pφ(m|un)[ln(1-D(m|un))])
(10)
其中:m為訓練集樣本,U表示用戶集合,un表示第n個用戶,φ和δ分別表示生成器G和判別器D的參數。首先更新判別器,使其最大化正確判別正樣本隱向量和偽造正樣本隱向量,如式(11)所示:
Em+~ptrue,mg~Gφ(mg|un)[ln(1-Dδ(mg,m-|un))])
(11)
其中:m+,m-分別代表正樣本和負樣本,mg代表由G生成的偽造正樣本。與判別器D相反,生成器G最小化判別器D的正確判別概率。故生成模型G的優化函數如式(12),M表示樣本集合。
(12)
在HEM-AAE中,對抗網絡和自編碼器均使用Adam優化算法[13],即自適應時刻估計方法進行優化訓練。Adam優化算法是一種一階優化算法。與隨機梯度下降法等優化方法最大的區別在于:通過計算梯度的一階和二階矩估計,Adam算法為每個參數設計了獨立的學習率。更新過程如式(13)~(17):
mt=β1*mt-1+(1-μ)*gt
(13)
(14)
(15)
(16)
(17)


表1 Adam算法參數的選取
HEM-AAE的encoder、decoder、生成器G和判別器D均采用單層神經網絡,隱藏層神經元個數視不同數據集而不同(詳見3.2節),所有神經網絡都使用Sigmoid激活函數。運用Python編程語言,通過深度學習框架Tensorflow進行神經網絡的搭建;實驗中的操作系統為Ubuntu 18.04 Lts,在NVIDIA GTX 1060 6G顯卡上運行。
本文采用GroupLens公開數據集MovieLens-100K、MovieLens-1M[18]來評估HEM-AAE的性能。只使用用戶ID,電影ID和評分信息,其中的每個用戶都有20個以上的評分記錄。兩個數據集的統計信息如表2所示。實驗共進行5次,每次隨機選取數據集中的80%作為訓練集,20%作為測試集,綜合5次實驗結果的平均值得出結論。

表2 MovieLens數據集統計信息
本節通過設置不同個數的隱藏層神經單元來研究推薦準確度受隱藏層規模對于HEM-AAE模型性能的影響,神經元個數分別為[10, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600],測試結果如圖5所示。

圖5 隱藏層規模對HEM-AAE性能的影響
基于測試結果可以發現:數據、神經網絡規模越大,最佳神經元值也越大。隨著神經元個數的增加,平均絕對誤差迅速減小,但當其超過某個值后,誤差又開始增大。對于不同的數據集,神經元個數需要經過調試找到最佳值。規模越大的網絡過擬合的風險也越大,所以并不是越大越好。基于測試結果,分別為數據集MovieLens-100K、MovieLens-1M選定的隱層神經元個數為100和400。
本文預測的是目標用戶對待定預測產品的明確的評分,選用平均絕對誤差(MAE,mean absolute error)、準確率(precision)和NDCG(normalized discounted cumulative gain)。
檢測預測準確度,MAE越小,說明算法的預測準確度越高。定義如下:
(18)

準確率表示推薦算法的準確性,值越高說明推薦的準確性越高,對于用戶u在生成的推薦的準確率公式為:
(19)
其中:R(u)是訓練完畢后為用戶u做出的推薦結果,T(u)是用戶u在測試集上的真實結果。
NDCG是一種衡量推薦算法產生的推薦結果的排序質量的評價指標,該指標考慮到元素之間的相關性,值越高說明推薦結果的排序質量越好。對于推薦結果中的第i個結果qi,其NDCG值為:
(20)

本文選擇對比的算法有包括:
1)PMF[14]:概率矩陣分解是將用戶物品評價矩陣分解為用戶因子和物品因子,其中假設用戶和物品的隱向量服從高斯分布。正則化參數λu,λv設置為0.01和0.002時,PMF推薦性能最好。
2)PCMM[15],使用據模型將整體用戶集聚類成多個用戶子集,然后在整體上和局部上計算相似度,利用整合后的相似度預測評分。
3)IRGAN[16],信息檢索生成對抗網絡是首個基于生成對抗學習模型的推薦系統。
4)DeepFM[11],由深度神經網絡和因子分解機組成,可以同時提取到低階組合特征與高階組合特征。
具體實驗結果如表3、表4和表5所示,由表中實驗數據可知,HEM-AAE在各項數據上都相較于PMF、PCMM和IRGAN都有明顯提升。

表3 各算法/模型在不同數據集上的MAE
如表3所示,在評分預測平均絕對誤差方面,在兩個數據集中的測試中HEM-AAE的推薦質量都有很大提高。表4實驗結果和表5實驗結果類似,分別是各算法/模型在MovieLens-100K和MovieLens-1M數據集上的準確率和NDCG指標,可以看出HEM-AAE各項推薦性能指標顯著提升,各算法/模型推薦性能降序序列:HEM-AAE> IRGAN> PCMM> PMF。

表4 各算法/模型推薦性能比較(MovieLens-100K)

表5 各算法/模型推薦性能比較(MovieLens-100K)
從實驗結果來看,本文提出的HEM-AAE推薦模型有效提高了推薦精度。但是對于新用戶在沒有任何行為記錄時,無法進行推薦,冷啟動問題依然存在。其次由于神經網絡是一個黑盒子過程,無法合理解釋在反向傳播的過程中的具體細節,所以此算法缺乏一定的可解釋性。本文使用的為單層神經網絡,對計算性能要求相對較小,而在工業界實際操作中,數據體量遠遠大于本文實驗數據,所以后期要在分布式集群上進行數據運算,這樣也可以獲得更準確的結果。