魏 東,孫靜宇,海 洋
(太原理工大學(xué) 軟件學(xué)院,太原 030024)
傳統(tǒng)的推薦算法大致可分為3類:基于內(nèi)容推薦、協(xié)同過濾推薦和混合推薦[1]。其中協(xié)同過濾算法因其在處理非結(jié)構(gòu)化數(shù)據(jù)的優(yōu)越性,在時下的推薦系統(tǒng)中得到廣泛應(yīng)用和關(guān)注。經(jīng)過學(xué)術(shù)界和工業(yè)界多年的探索和研究,推薦算法經(jīng)歷了從傳統(tǒng)的矩陣分解等方法到現(xiàn)今的與深度學(xué)習(xí)技術(shù)結(jié)合的發(fā)展歷程。
深度學(xué)習(xí)旨在模擬、建立人腦進(jìn)行分析學(xué)習(xí)活動的神經(jīng)網(wǎng)絡(luò),其模型是一種深層非線性網(wǎng)絡(luò),可以獲取比傳統(tǒng)算法更深層次的數(shù)據(jù)本質(zhì)特征。近些年,深度學(xué)習(xí)在圖像處理[2]、語音識別[3]以及自然語言處理[4]等領(lǐng)域都取得了很多成果[5],成為了人工智能領(lǐng)域的一個研究熱點,同時也為推薦系統(tǒng)的研究帶來了新的機遇?;谏疃葘W(xué)習(xí)的推薦系統(tǒng)通常將各類用戶和項目相關(guān)的數(shù)據(jù)作為輸入,利用深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)和訓(xùn)練,最終自動為用戶輸出個性化的推薦結(jié)果[6]。
本文提出了一種結(jié)合難分樣本挖掘(HEM,hard example mining)和對抗自編碼器[7](AAE,adversarial autoencoder)的深度推薦模型(HEM-AAE)。難分樣本挖掘采用三元損失算法對項目進(jìn)行分類,以此來解決評分?jǐn)?shù)據(jù)分布不平衡和稀疏性問題。將不同類別的項目輸入對抗自編碼器的訓(xùn)練過程,可以從兩方面優(yōu)化推薦模型。在此基礎(chǔ)上通過訓(xùn)練好的模型預(yù)測目標(biāo)用戶的項目評分,使用TOP-N算法選擇預(yù)測評分最高的項目推薦給用戶。
推薦系統(tǒng)研究中常用數(shù)據(jù)集數(shù)據(jù)分布不平衡,稀疏問題較嚴(yán)重,影響了推薦系統(tǒng)性能穩(wěn)定性。雖然評分范圍固定,但是用戶評分基于個人主觀認(rèn)知,用戶評分標(biāo)準(zhǔn)、偏好不同加劇了數(shù)據(jù)樣本復(fù)雜性。所以用戶偏好挖掘尤為重要,故本文引入均模型(Mean Model)對數(shù)據(jù)集做難分樣本挖掘(Hard Negative Mining)預(yù)處理[10]。
由于推薦系統(tǒng)中的常用數(shù)據(jù)集稀疏性較高,對計算機資源消耗較大,故引入均模型[16]。均模型生成過程類似于排序二叉樹,可以在保留數(shù)據(jù)統(tǒng)計學(xué)特征的情況下極大緩解數(shù)據(jù)稀疏性,如圖1所示。
圖1 均模型結(jié)構(gòu)示意圖
假設(shè)項目評分向量I={r1,r2,,rm},經(jīng)過變換,得到此向量的均模型表示為:
IMM={t0,(t10,t11), (t20,t21,t22,t23), (t30,t31,),}
(1)
其中:t0為均模型的根節(jié)點,(t10,t11)為均模型第二層的第一和第二個元素,tlk表示第l層的第k-1個結(jié)點。結(jié)點生成過程如公式(2):
tlk=Tl(Il)
(2)
其中:Tl(*)為第l層的轉(zhuǎn)換公式(3):
(3)
當(dāng)k為奇數(shù)時,Il={ri∈I|ri>t(l-1)g};k為偶數(shù)時,Il={ri∈I|ri≤t(l-1)g},g的值為:g=|k/2|。在實際應(yīng)用中,可以根據(jù)需求靈活調(diào)整均模型規(guī)模,一般只需三層即可。
(4)
其中:α是一個常量,表示正負(fù)樣本對訓(xùn)練的邊界值。難分樣本挖掘代價函數(shù)如公式(5)所示:
(5)
代價函數(shù)采用歐氏距離度量評分向量間距離,故公式(5)恒大于零,當(dāng)[*]大于0時,規(guī)定其為損失函數(shù)的損失之;[*]小于0時,規(guī)定損失值為0。
HEM-AAE系統(tǒng)框架如圖2所示。
圖2 基于HEM-AAE的推薦系統(tǒng)框架
其中AAE由自編碼器[8](AE,autoencoder)和生成式對抗網(wǎng)絡(luò)[9](GAN,generative adversarial networks)兩部分組成。自編碼器主要由編碼模型encoder和解碼模型decoder構(gòu)成;對抗網(wǎng)絡(luò)由生成模型G和判別模型D構(gòu)成。首先,采用三元組損失算法對數(shù)據(jù)集進(jìn)行難分樣本挖掘,經(jīng)過分類的正、負(fù)樣本放入樣本候選池;再將正樣本和負(fù)樣本分別作為自編碼器encoder和對抗網(wǎng)絡(luò)生成模型G的輸入,分別產(chǎn)生正樣本隱表示和偽造正樣本隱表示;自編碼器的decoder根據(jù)encoder生成的正樣本隱表示重構(gòu)用戶評分;判別模型D辨別正樣本隱表示和偽造正樣本隱表示。
自編碼器是一種使用誤差反向傳播算法(BP,back propagation)進(jìn)行訓(xùn)練的前饋神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)可簡化為如圖3所示[11]。
圖3 自編碼器結(jié)構(gòu)圖
自編碼器神經(jīng)網(wǎng)絡(luò)由輸入層encoder,隱藏層和輸出層decoder構(gòu)成。通常隱藏層的維度遠(yuǎn)小于輸入層,輸出層的作用是重構(gòu)輸入層,使用重構(gòu)誤差(x,x′)來表示重構(gòu)的接近程度。其流程如圖4所示。
圖4 自編碼器神經(jīng)網(wǎng)絡(luò)流程圖
其中encoder將輸入INPUT進(jìn)行壓縮表示,decoder再將壓縮表示進(jìn)行還原。其數(shù)學(xué)表達(dá)式如式(5),φ和ε分別表示encoder和decoder。
φ,ε=argminφ,εL(X,ε(φ(X)))
(5)
數(shù)據(jù)降維和特征提取被認(rèn)為是自編碼器的兩個主要實際應(yīng)用。使用適當(dāng)?shù)木S度和稀疏性約束,自編碼器可以得到比主成分分析或其他類似技術(shù)更好的數(shù)據(jù)投影。
如果只通過最小化重構(gòu)誤差來訓(xùn)練模型,自編碼器極有可能學(xué)習(xí)到一個恒等函數(shù)[1],因此本文引入對抗自編碼器進(jìn)行“對抗”訓(xùn)練。如圖1所示,對抗自編碼器模型由自編碼器和對抗網(wǎng)絡(luò)兩部分組成。訓(xùn)練過程分為也可劃分為兩階段:重構(gòu)階段和正則化階段。本文中,對抗網(wǎng)絡(luò)的生成器G與自編碼器的編碼模型encoder使用同一個網(wǎng)絡(luò)。在重構(gòu)階段,自編碼器更新編碼模型encoder和解碼模型decoder以最小化重構(gòu)誤差。在正則化階段,判別器D辨別正樣本隱表示z+和生成器G生成的的負(fù)樣本隱表示z-,根據(jù)判別結(jié)果,交替更新生成器G和判別器D。對抗自編碼器的訓(xùn)練有兩個目標(biāo):最小化重構(gòu)誤差和達(dá)到對抗網(wǎng)絡(luò)的相對平衡,其損失函數(shù)如式(6):
LAAE=ReonstructionLoss+AdversarialTraining
(6)
自編碼器的重構(gòu)輸出[12]如式(7)所示:
h(r;θ)=f(W·g(Vr+μ)+b)
(7)
其中:g(*)使隱藏層的激活函數(shù),f(*)是輸出層的激活函,θ={W,V,μ,b},權(quán)重W∈Rm×k,V∈Rk×m,偏置μ∈Rk,b∈Rm。輸出層對應(yīng)位置元素被認(rèn)為是預(yù)測值,即:
(8)
損失函數(shù)如公式(9):
(9)
生成模型G使用負(fù)樣本作為輸入產(chǎn)生偽造正樣本,對判別器D進(jìn)行反向激勵,使得判別器可以更好地識別正樣本;經(jīng)過優(yōu)化的判別器同時有利于優(yōu)化生成器,生成更好的偽造正樣本。對抗網(wǎng)絡(luò)的訓(xùn)練采用交替優(yōu)化方法,即固定G的參數(shù)以更新D的參數(shù),然后固定D的參數(shù)去更新G的參數(shù)。Goodfellow等[9]指出,將生成器G固定,可求得唯一的最優(yōu)判別器:
固定判別器D,在pg=pdata時,D*=0.5,此時生成器G達(dá)到最優(yōu),即判別器無法區(qū)分真實樣本和偽造樣本[17]。損失函數(shù)如公式(10):
Ed~pφ(m|un)[ln(1-D(m|un))])
(10)
其中:m為訓(xùn)練集樣本,U表示用戶集合,un表示第n個用戶,φ和δ分別表示生成器G和判別器D的參數(shù)。首先更新判別器,使其最大化正確判別正樣本隱向量和偽造正樣本隱向量,如式(11)所示:
Em+~ptrue,mg~Gφ(mg|un)[ln(1-Dδ(mg,m-|un))])
(11)
其中:m+,m-分別代表正樣本和負(fù)樣本,mg代表由G生成的偽造正樣本。與判別器D相反,生成器G最小化判別器D的正確判別概率。故生成模型G的優(yōu)化函數(shù)如式(12),M表示樣本集合。
(12)
在HEM-AAE中,對抗網(wǎng)絡(luò)和自編碼器均使用Adam優(yōu)化算法[13],即自適應(yīng)時刻估計方法進(jìn)行優(yōu)化訓(xùn)練。Adam優(yōu)化算法是一種一階優(yōu)化算法。與隨機梯度下降法等優(yōu)化方法最大的區(qū)別在于:通過計算梯度的一階和二階矩估計,Adam算法為每個參數(shù)設(shè)計了獨立的學(xué)習(xí)率。更新過程如式(13)~(17):
mt=β1*mt-1+(1-μ)*gt
(13)
(14)
(15)
(16)
(17)
表1 Adam算法參數(shù)的選取
HEM-AAE的encoder、decoder、生成器G和判別器D均采用單層神經(jīng)網(wǎng)絡(luò),隱藏層神經(jīng)元個數(shù)視不同數(shù)據(jù)集而不同(詳見3.2節(jié)),所有神經(jīng)網(wǎng)絡(luò)都使用Sigmoid激活函數(shù)。運用Python編程語言,通過深度學(xué)習(xí)框架Tensorflow進(jìn)行神經(jīng)網(wǎng)絡(luò)的搭建;實驗中的操作系統(tǒng)為Ubuntu 18.04 Lts,在NVIDIA GTX 1060 6G顯卡上運行。
本文采用GroupLens公開數(shù)據(jù)集MovieLens-100K、MovieLens-1M[18]來評估HEM-AAE的性能。只使用用戶ID,電影ID和評分信息,其中的每個用戶都有20個以上的評分記錄。兩個數(shù)據(jù)集的統(tǒng)計信息如表2所示。實驗共進(jìn)行5次,每次隨機選取數(shù)據(jù)集中的80%作為訓(xùn)練集,20%作為測試集,綜合5次實驗結(jié)果的平均值得出結(jié)論。
表2 MovieLens數(shù)據(jù)集統(tǒng)計信息
本節(jié)通過設(shè)置不同個數(shù)的隱藏層神經(jīng)單元來研究推薦準(zhǔn)確度受隱藏層規(guī)模對于HEM-AAE模型性能的影響,神經(jīng)元個數(shù)分別為[10, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600],測試結(jié)果如圖5所示。
圖5 隱藏層規(guī)模對HEM-AAE性能的影響
基于測試結(jié)果可以發(fā)現(xiàn):數(shù)據(jù)、神經(jīng)網(wǎng)絡(luò)規(guī)模越大,最佳神經(jīng)元值也越大。隨著神經(jīng)元個數(shù)的增加,平均絕對誤差迅速減小,但當(dāng)其超過某個值后,誤差又開始增大。對于不同的數(shù)據(jù)集,神經(jīng)元個數(shù)需要經(jīng)過調(diào)試找到最佳值。規(guī)模越大的網(wǎng)絡(luò)過擬合的風(fēng)險也越大,所以并不是越大越好。基于測試結(jié)果,分別為數(shù)據(jù)集MovieLens-100K、MovieLens-1M選定的隱層神經(jīng)元個數(shù)為100和400。
本文預(yù)測的是目標(biāo)用戶對待定預(yù)測產(chǎn)品的明確的評分,選用平均絕對誤差(MAE,mean absolute error)、準(zhǔn)確率(precision)和NDCG(normalized discounted cumulative gain)。
檢測預(yù)測準(zhǔn)確度,MAE越小,說明算法的預(yù)測準(zhǔn)確度越高。定義如下:
(18)
準(zhǔn)確率表示推薦算法的準(zhǔn)確性,值越高說明推薦的準(zhǔn)確性越高,對于用戶u在生成的推薦的準(zhǔn)確率公式為:
(19)
其中:R(u)是訓(xùn)練完畢后為用戶u做出的推薦結(jié)果,T(u)是用戶u在測試集上的真實結(jié)果。
NDCG是一種衡量推薦算法產(chǎn)生的推薦結(jié)果的排序質(zhì)量的評價指標(biāo),該指標(biāo)考慮到元素之間的相關(guān)性,值越高說明推薦結(jié)果的排序質(zhì)量越好。對于推薦結(jié)果中的第i個結(jié)果qi,其NDCG值為:
(20)
本文選擇對比的算法有包括:
1)PMF[14]:概率矩陣分解是將用戶物品評價矩陣分解為用戶因子和物品因子,其中假設(shè)用戶和物品的隱向量服從高斯分布。正則化參數(shù)λu,λv設(shè)置為0.01和0.002時,PMF推薦性能最好。
2)PCMM[15],使用據(jù)模型將整體用戶集聚類成多個用戶子集,然后在整體上和局部上計算相似度,利用整合后的相似度預(yù)測評分。
3)IRGAN[16],信息檢索生成對抗網(wǎng)絡(luò)是首個基于生成對抗學(xué)習(xí)模型的推薦系統(tǒng)。
4)DeepFM[11],由深度神經(jīng)網(wǎng)絡(luò)和因子分解機組成,可以同時提取到低階組合特征與高階組合特征。
具體實驗結(jié)果如表3、表4和表5所示,由表中實驗數(shù)據(jù)可知,HEM-AAE在各項數(shù)據(jù)上都相較于PMF、PCMM和IRGAN都有明顯提升。
表3 各算法/模型在不同數(shù)據(jù)集上的MAE
如表3所示,在評分預(yù)測平均絕對誤差方面,在兩個數(shù)據(jù)集中的測試中HEM-AAE的推薦質(zhì)量都有很大提高。表4實驗結(jié)果和表5實驗結(jié)果類似,分別是各算法/模型在MovieLens-100K和MovieLens-1M數(shù)據(jù)集上的準(zhǔn)確率和NDCG指標(biāo),可以看出HEM-AAE各項推薦性能指標(biāo)顯著提升,各算法/模型推薦性能降序序列:HEM-AAE> IRGAN> PCMM> PMF。
表4 各算法/模型推薦性能比較(MovieLens-100K)
表5 各算法/模型推薦性能比較(MovieLens-100K)
從實驗結(jié)果來看,本文提出的HEM-AAE推薦模型有效提高了推薦精度。但是對于新用戶在沒有任何行為記錄時,無法進(jìn)行推薦,冷啟動問題依然存在。其次由于神經(jīng)網(wǎng)絡(luò)是一個黑盒子過程,無法合理解釋在反向傳播的過程中的具體細(xì)節(jié),所以此算法缺乏一定的可解釋性。本文使用的為單層神經(jīng)網(wǎng)絡(luò),對計算性能要求相對較小,而在工業(yè)界實際操作中,數(shù)據(jù)體量遠(yuǎn)遠(yuǎn)大于本文實驗數(shù)據(jù),所以后期要在分布式集群上進(jìn)行數(shù)據(jù)運算,這樣也可以獲得更準(zhǔn)確的結(jié)果。