張衛(wèi)國 袁煒軒 周熙然
(西安科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院 陜西 西安 710000)
21世紀以來,隨著科技的蓬勃發(fā)展,信息量與日俱增,人們很難找到自己真正需要的信息,這就是數(shù)據(jù)過載[1]問題。為了解決這個難題,研究人員建立推薦系統(tǒng)來幫助用戶挖掘自己感興趣的東西,近年來學(xué)術(shù)界對其展開了較為深入的研究,并廣泛應(yīng)用于工業(yè)界。20世紀90年代,Goldberg等[2]第一次提出協(xié)同過濾(CF)的方法,旨在為用戶提供有用的數(shù)據(jù)參考從而解決數(shù)據(jù)冗余問題,協(xié)同過濾推薦由于其具有良好的可解釋性和高效的實時個性化推薦而受到國內(nèi)外專家學(xué)者的廣泛關(guān)注。例如,Sarwar等[3]提出了奇異值分解(SVD)的方法,該方法通過構(gòu)造用戶和項目的交互矩陣來表示用戶與項目的交互歷史,具體是將復(fù)雜的用戶項目評分矩陣分解成若干個簡單的用戶和項目矩陣;Deshpand等[4]提出了基于項目的k近鄰算法(ItemKNN),該算法先計算目標用戶已交互項目與未交互項目的余弦距離以得到項目間的相似度,再根據(jù)相似度將未交互的項目推薦給用戶;Ning等[5]提出了稀疏線性算法(SLIM),該算法不用直接計算項目間的相似度而是通過模型訓(xùn)練的方式得到項目相似度矩陣,通過更新項目相似度矩陣得到最終項目間的相似度;Kabbur等[6]提出了基于項目相似度的推薦算法(FISM),該算法利用用戶的歷史交互信息來間接表示用戶的潛在興趣,將矩陣分解技術(shù)與基于項目相似度的算法相結(jié)合。由于自編碼器神經(jīng)網(wǎng)絡(luò)不僅可以對高維數(shù)據(jù)進行降維和壓縮操作,還可以學(xué)習(xí)到目標的深層特征,因此常被用來提取目標的隱含特征。近些年基于自編碼器神經(jīng)網(wǎng)絡(luò)的推薦算法也層出不窮,Sedhain等[7]提出了一種基于自編碼器的推薦算法(AutoRec),首次將自編碼器與推薦算法結(jié)合,利用機器學(xué)習(xí)中的梯度下降法更新參數(shù)使得誤差逼近最小值,實驗驗證了該算法更具高效性。
然而,基于自編碼器的推薦算法僅僅使用單一的自編碼器網(wǎng)絡(luò)來進行推薦,沒有與現(xiàn)有的推薦算法相結(jié)合[8],于是國外專家學(xué)者們開始嘗試將自編碼器融入到已有的算法中[9-11]。國內(nèi)方面,霍歡等[12]提出了融合標簽內(nèi)容和棧式去噪自編碼器的協(xié)同過濾推薦算法(DLCF),將棧式去噪自編碼器融入到基于標簽內(nèi)容的協(xié)同過濾推薦算法中,解決了原始評分矩陣稀疏的問題;張杰等[13]提出了一種混合神經(jīng)網(wǎng)絡(luò)模型,通過棧式去噪自編碼器與深度神經(jīng)網(wǎng)絡(luò)相結(jié)合的方式計算用戶與項目的隱含特征向量,提高了傳統(tǒng)推薦算法的精度;王東等[14]提出了一種融合自編碼器和物品固有信息的推薦算法(AutoFISM),先用自編碼器提取物品的低維非線性特征再融入到矩陣分解算法中,緩解了傳統(tǒng)FISM的冷啟動問題;方義秋等[15]提出了一種結(jié)合商品評分信息的多重去噪自編碼器(MDAE),原始的評分矩陣經(jīng)過多重去噪處理可以有效提高原算法的魯棒性,解決了傳統(tǒng)DAE算法精度不高的問題;楊豐瑞等[16]提出了一種融合去噪自編碼器和社交網(wǎng)絡(luò)信任關(guān)系的混合推薦算法,先利用去噪自編碼器提取用戶項目的隱含特征向量,再通過建立信任模型學(xué)習(xí)目標用戶與其信任用戶的興趣偏好,最后根據(jù)用戶興趣聚類并分配不同的推薦權(quán)重進行推薦,該推薦方法更具解釋性,用戶滿意度會更高。
本文則改進傳統(tǒng)自編碼器結(jié)構(gòu)并融入基于項目相似度的協(xié)同過濾算法,主要貢獻為以下三個方面:
(1) 構(gòu)建改進的深度去噪自編碼器網(wǎng)絡(luò)。改進了傳統(tǒng)自編碼器的網(wǎng)絡(luò)結(jié)構(gòu),將原三層自編碼器網(wǎng)絡(luò)增加為六層深度自編碼器網(wǎng)絡(luò),并加入符合高斯分布的噪聲并做去噪處理,進一步提升原傳統(tǒng)自編碼器網(wǎng)絡(luò)的泛化能力和魯棒性從而進一步提高推薦準確性。
(2) 挖掘并學(xué)習(xí)原始評分數(shù)據(jù)的非線性與線性特征。將原始的用戶項目評分矩陣輸入到改進的深度去噪自編碼器網(wǎng)絡(luò)中,學(xué)習(xí)用戶與項目的非線性隱含特征;再將降維后的低維非線性隱含特征融入到基于項目相似度的協(xié)同過濾推薦算法中去,挖掘用戶與項目的線性隱含特征,同時為了體現(xiàn)不同歷史交互間的區(qū)別加入了注意力機制,懲罰活躍用戶帶來的影響。
(3) 實驗對比多種推薦算法并在MovieLens和Pinterest數(shù)據(jù)集上進行實驗分析。實驗結(jié)果表明,相比傳統(tǒng)推薦算法和近些年較新算法,該算法能夠顯著提升傳統(tǒng)推薦算法的準確性,進一步提高推薦精度和用戶滿意度。
奇異值分解技術(shù)是一種典型的基于模型的推薦算法,該算法是將一個復(fù)雜矩陣分解成兩個及兩個以上簡單矩陣乘積的過程,如式(1)所示。
(1)
將奇異值分解技術(shù)應(yīng)用于實際電影推薦時,可能會出現(xiàn)某些用戶評分標準過于嚴格的情況,該類用戶不愿意給出高分,或者某部電影拍得很差,評分普遍都很低,這些情況會干擾預(yù)測缺失的評分值,從而導(dǎo)致推薦結(jié)果不準確。為了解決這個問題,考慮在原矩陣分解模型的基礎(chǔ)上增加偏置項,如式(2)所示。
(2)
(3)
基于最近鄰的推薦算法可以根據(jù)用戶和項目兩個屬性進行劃分。其中,基于項目的推薦算法先計算項目間的相似度,再按照相似度的高低給目標用戶推薦;同理,基于用戶的協(xié)同過濾算法先計算用戶間的相似度,再將與目標用戶相似的用戶所感興趣的項目根據(jù)項目評分的高低推薦給目標用戶。
由于不同人的興趣存在各種差異,眾口難調(diào),即使給有相似行為的用戶們推薦同一個物品,也很難滿足不同人的需求,而且在實際推薦過程中很多用戶的信息可能缺失或無法獲取。因此,基于用戶的協(xié)同過濾算法無論在可解釋性上還是實際應(yīng)用的效果遠不如基于項目的協(xié)同過濾算法。
稀疏線性算法(SLIM)是一種典型的基于項目的推薦算法,項目間的相似度計算如式(4)所示。
(4)
式中:Sij為項目i和j的相似度;ri和rj分別為項目i和項目j的評分。SLIM的評分預(yù)測模型和損失函數(shù)分別如式(5)和式(6)所示。
(5)
(6)
魯梅爾哈特等首次提出自編碼器網(wǎng)絡(luò)結(jié)構(gòu),用于對高維數(shù)據(jù)降維操作,以學(xué)習(xí)高維稀疏數(shù)據(jù)的深層特征。自編碼器是一種特殊的神經(jīng)網(wǎng)絡(luò),在數(shù)據(jù)輸入到模型前建立編碼器進行壓縮處理,利用反向傳播算法通過解碼器將壓縮處理好的數(shù)據(jù)重構(gòu)原始輸入,最后通過對模型增加約束,可以學(xué)習(xí)到輸入數(shù)據(jù)的深層隱含特征。
基于自編碼器的推薦是將高維稀疏的原始用戶項目評分矩陣映射到低維空間壓縮處理后再映射到正常空間,根據(jù)自編碼器輸入值和輸出值無限接近的原理,重建出用戶對未交互項目的評分值。
圖1為傳統(tǒng)自編碼器的網(wǎng)絡(luò)結(jié)構(gòu),編碼部分如式(7)所示,從輸入層x到隱藏層,該部分將高維稀疏的用戶項目評分矩陣映射到低維空間進行降維壓縮操作,并計算出用戶的隱含特征向量y;解碼部分如式(8)所示,從隱藏層到輸出層r,該部分通過隱含特征向量y重構(gòu)輸入,以補全缺失的評分矩陣,從而完成對缺失評分的預(yù)測。
圖1 傳統(tǒng)自編碼器網(wǎng)絡(luò)結(jié)構(gòu)
y=f(w1·x+b1)
(7)
r=g(w2·y+b2)
(8)
式中:y為輸入數(shù)據(jù)的隱含特征向量;w1和w2分別為編碼和解碼的權(quán)重;b1和b2分別為編碼和解碼的偏移量;f(·)和g(·)為編碼和解碼的激活函數(shù);r為經(jīng)自編碼器重構(gòu)后的預(yù)測評分。
傳統(tǒng)協(xié)同過濾算法中用戶與項目的隱含向量是隨機初始化的,然而現(xiàn)實中的項目存在很多模型學(xué)習(xí)不到的非線性特征,因此考慮使用自編碼器網(wǎng)絡(luò)來提取項目的非線性特征,并融入到基于項目相似度的協(xié)同過濾算法當中,以提高該模型的準確度。
為了進一步提高傳統(tǒng)自編碼器模型的泛化能力和魯棒性,本文將原傳統(tǒng)三層自編碼器的網(wǎng)絡(luò)結(jié)構(gòu)擴展為六層如圖2所示,這樣可以使得反向傳播算法可以適應(yīng)復(fù)雜特征模式的表示和學(xué)習(xí),有效緩解過擬合等問題。
圖2 改進的六層深度去噪自編碼器網(wǎng)絡(luò)結(jié)構(gòu)
(1) 編碼階段:x1為原始用戶項目評分矩陣,在x1中加入符合高斯分布的噪聲,且加噪率ρ∈[0,1],圖中黑色數(shù)據(jù)為加入的高斯噪聲。加入高斯噪聲后為了保證原始評分矩陣的期望值無變化,需要對原始用戶項目評分矩陣做歸零操作,具體是將評分矩陣中包含ρ噪聲數(shù)據(jù)的概率置為零,即將除噪聲外的數(shù)據(jù)放大1/(1-ρ)倍,x2為最終加噪處理后的用戶項目評分矩陣,如式(9)所示。
x2={x2|x2=x1/(1-ρ)}
(9)
(2) 解碼階段:加噪后的高維用戶項目評分矩陣經(jīng)隱藏層y壓縮降維后得到低維評分矩陣x5,x5經(jīng)三層解碼器重構(gòu)出與原始評分矩陣相同規(guī)模的最終輸出矩陣x7。
根據(jù)輸入的原始評分矩陣x1與輸出的重構(gòu)矩陣x7重構(gòu)兩者間的誤差,實驗采用隨機梯度法來最小化損失函數(shù),改進后的深度去噪自編碼器的目標函數(shù)如式(10)所示。
arg minl(x1,x7)+R(w1,w2,b1,b2)
(10)
(11)
式中:l(x1,x7)為損失函數(shù),R(w1,w2,b1,b2)為正則項,控制模型的復(fù)雜度。本實驗編碼與解碼采用全連接層,改進后的深度去噪自編碼器相對于傳統(tǒng)的自編碼增加了深度,可以有效提高該模型訓(xùn)練的魯棒性。
傳統(tǒng)推薦算法對目標項目i的隱含特征向量是隨機初始化的,本文首先通過改進的深度去噪自編碼器網(wǎng)絡(luò)來學(xué)習(xí)用戶項目評分矩陣的非線性特征。我們將原始用戶項目評分矩陣輸入到改進的深度去噪自編碼器網(wǎng)絡(luò)中,即將高維稀疏的評分數(shù)據(jù)降維操作,如式(12)所示。
(12)
(13)
其次,通過基于項目的協(xié)同過濾算法來挖掘用戶項目評分矩陣的線性特征。這里的協(xié)同過濾算法模型我們以FISM為優(yōu)化目標,FISM是一種基于項目的協(xié)同過濾算法,屬于LISM的增強版,它根據(jù)用戶已交互項目的隱含特征向量來重構(gòu)矩陣分解中用戶的隱含特征,項目間的相似度是通過項目間的隱含特征向量的內(nèi)積來計算的,該模型如式(14)所示。
(14)
融合深度去噪自編碼器的協(xié)同過濾模型既可以利用去噪自編碼器提取項目的非線性特征又可以利用基于項目相似度的協(xié)同過濾算法提取線性特征,深度去噪自編碼器可以充分挖掘用戶和項目的非線性特征,在FISM模型中融入深度去噪自編碼器如式(15)所示,通過用戶已交互的項目來表示用戶的隱含特征,在一定程度上可以緩解冷啟動問題。
(15)
雖然融合深度去噪自編碼器的FISM可以有效挖掘用戶的隱含特征,但是沒有體現(xiàn)出不同歷史交互項目間的區(qū)別,例如預(yù)測某用戶對某災(zāi)難片的偏好時,歷史交互中災(zāi)難片的權(quán)重理應(yīng)更高,而預(yù)測該用戶對古裝片的偏好時,歷史交互中災(zāi)難片的權(quán)重理應(yīng)變低,用戶的歷史已交互項目對目標項目的影響也有所不同。
因此,為了突顯不同歷史已交互項目對目標項目的影響不同,在融合深度去噪自編碼器的FISM中加入注意力權(quán)重Wij,通過神經(jīng)網(wǎng)絡(luò)的注意力機制來解決FISM的這種局限性,并結(jié)合深度去噪自編碼器來學(xué)習(xí)原始項目的非線性特征,得到融合深度去噪自編碼器和注意力機制的項目相似度推薦算法如式(16)所示。
(16)
(17)
式中:{i}為已交互項目中去除掉目標項目i;Wij是一個可訓(xùn)練的參數(shù),表示預(yù)測用戶u對目標項目i的偏好時項目j的attention權(quán)重;ξ為平滑指數(shù),ξ∈(0,1],當ξ=1時,該公式為softmax函數(shù),可對權(quán)重進行歸一化,當ξ<1時,活躍用戶不會被過度懲罰。
本文注意力機制主要用于計算項目相似度,將目標項目i與已交互項目j特征向量的點積輸入到注意力模型訓(xùn)練得到權(quán)重Wij,模型采用SeLU(縮放指數(shù)線性單元)激活函數(shù)和交叉熵損失函數(shù),并通過MLP網(wǎng)絡(luò)和隨機梯度法更新參數(shù),該注意力函數(shù)和損失函數(shù)如式(18)-式(19)所示。
(18)
(19)
式中:w為輸入投影到隱藏層的權(quán)值矩陣;b為偏移量;N為訓(xùn)練集個數(shù);δ為用戶u將和目標項目i可能產(chǎn)生交互的概率;λ為正則項系數(shù)。
圖3 融合深度去噪自編碼器和注意力機制的推薦算法模型
實驗選取推薦領(lǐng)域常用公開數(shù)據(jù)集MovieLens數(shù)據(jù)集和Pinterest數(shù)據(jù)集,MovieLens是一家專門統(tǒng)計用戶對電影的影評并提供電影推薦的網(wǎng)站;Pinterest是一家基于圖片推薦的網(wǎng)站,用戶可以將感興趣的圖片發(fā)布到該網(wǎng)站上。其中MovieLens-1M數(shù)據(jù)集是由6 040個用戶和3 706個電影組成,影評數(shù)高達到一百萬條,評分值為1-5分。為了體現(xiàn)用戶與電影相互的情況,需要對MovieLens數(shù)據(jù)集進行預(yù)處理操作,具體是將用戶電影交互矩陣中的顯式評分轉(zhuǎn)換為隱式評分,如果用戶與電影之間有過交互行為的設(shè)為1,反之設(shè)為0。實驗環(huán)境參數(shù)和數(shù)據(jù)集的信息統(tǒng)計情況分別如表1和表2所示。
表1 實驗環(huán)境參數(shù)
表2 實驗數(shù)據(jù)集
為了評價推薦模型的性能,本實驗用到推薦系統(tǒng)常用評價指標歸一化折損累計增益(NDCG)和命中率(HR)。在生成推薦列表時,列表中項目的排名順序能充分反映用戶可能感興趣的程度。推薦列表的排名情況用累積增益CGn表示如式(19)所示,由于實際推薦需要將推薦相關(guān)性高的結(jié)果排在前面,因此需要在CGn的基礎(chǔ)上引入位置影響因素,用折損累積增益DCGn表示如式(20)所示,推薦列表中用戶返回的最佳推薦結(jié)果即DCGn的最大值用IDCG表示,需要對其做歸一化處理,則最終的歸一化折損累積增益(NDCG)如式(21)所示。
(20)
(21)
(22)
命中率HR為最終推薦列表中的項目占總測試集的比例,如式(22)所示。命中率越高說明推薦結(jié)果越準確,越能符合用戶的興趣和需求。
(23)
實驗采用留一交叉驗證的方法,將每個用戶最近的一條交互數(shù)據(jù)作為測試集,剩下的所有交互數(shù)據(jù)作為訓(xùn)練集。具體是將每個測試集與99個隨機采樣的訓(xùn)練集組合,每個算法都將輸出對100個電影的預(yù)測分數(shù),最后每個測試集由HR和NDCG來判別。實驗參數(shù)設(shè)置為隱含向量的維度k=16,平滑指數(shù)ξ=0.5,λ=0,為了評價本文算法的性能,實驗對比了以下方法:
(1) ItemPOP:基于項目流行度的推薦算法。該算法以項目的流行度作為判斷標準,越流行的項目越容易受到關(guān)注和推薦。
(2) SVD[3]:奇異值分解又叫矩陣分解。該算法將復(fù)雜的用戶項目評分矩陣分解成若干個簡單的用戶和項目矩陣。
(3) ItemKNN[4]:基于項目的k近鄰算法。該算法計算用戶已交互項目與未交互項目的余弦距離得到項目的相似度,根據(jù)項目相似度推薦項目。
(4) SLIM[5]:稀疏線性推薦算法。該算法不用直接計算出項目的相似度而是通過模型訓(xùn)練的方式得到項目相似度矩陣,最終間接得到項目間的相似度。
(5) FISM[6]:基于項目相似度的推薦算法。該算法利用用戶的歷史交互信息來表示用戶的興趣特征,將矩陣分解應(yīng)用到了基于項目的協(xié)同過濾算法中。
(6) eALS[11]:基于元素的交替最小二乘推薦算法。該算法同時考慮了用戶和項目兩個屬性,既可以基于用戶推薦又可以基于物品推薦。
(7) BPR[17]:基于貝葉斯的推薦算法。該算法利用了貝葉斯后驗的知識對用戶自身感興趣的項目進行排序并推薦。
(8) NAIS[18]:基于神經(jīng)網(wǎng)絡(luò)的項目相似度推薦算法。該算法是目前最先進的基于項目相似度算法,屬于FISM的增強版,比FISM更具表現(xiàn)力。
為了便于直觀比較各算法的性能,實驗將上述所有算法隱含向量的維度都設(shè)為16,本文從多個方面進行實驗分析。
3.4.1模型訓(xùn)練分析
為了充分說明本文注意力機制的有效性,實驗選取FISM算法為基線算法,對比了本文算法(Ours)與本文無注意力機制的算法(DAE+FISM)在兩個不同數(shù)據(jù)集上前50次迭代訓(xùn)練的結(jié)果。
圖4展示了兩個不同數(shù)據(jù)集下算法的迭代性能,由于注意力模型的參數(shù)需要學(xué)習(xí),因此在前5次迭代過程中,DAE+FISM要優(yōu)于本文算法,但在隨后的迭代過程中,本文算法均優(yōu)于DAE+FISM,兩種算法的迭代曲線均位于FISM算法之上,性能明顯優(yōu)于傳統(tǒng)FISM。以MovieLens數(shù)據(jù)集為例,在最優(yōu)情況下本文算法比DAE+FISM在HR@10上提升1.51%,NDCG@10上提高2.12%,前10次訓(xùn)練快速迭代收斂,之后緩慢上升直至趨于平穩(wěn),隨著訓(xùn)練迭代的逐步進行,本文模型性能更優(yōu)更穩(wěn)定,證明引進該注意力機制可以有效提高推薦性能。
(a) MovieLens前50次迭代的結(jié)果
3.4.2各算法性能分析
實驗將上述所有算法隱含向量的維度都設(shè)為16,分別計算出推薦個數(shù)為5和10條件下的NDCG和HR,上述算法在MovieLens和Pinterest數(shù)據(jù)集下NDCG和HR評價指標的條形對比情況如圖5和圖6所示。
圖5 MovieLens數(shù)據(jù)集下各算法的HR和NDCG
圖6 Pinterest數(shù)據(jù)集下各算法的HR和NDCG
以MovieLens數(shù)據(jù)集且在推薦個數(shù)為5和10的條件下為例,本文算法的推薦命中率(HR)上要比SVD算法分別提升14.16%和13.45%,比FISM算法分別提升4.2%和4.25%,比NAIS算法提升1.4%和1.27%。本文算法的歸一化折損累計增益(NDCG)上要比SVD算法分別提升15.23%和12.67%,比FISM算法分別提升4.28%和2.76%,比NAIS算法提升1.55%和0.44%。
為了充分反映本文算法的先進性,本實驗選取了多個推薦算法進行對比,以SVD、FISM、NAIS和DAE+FISM為代表,無論是在MovieLens數(shù)據(jù)集還是Pinterest數(shù)據(jù)集下本文算法在NDCG@5、NDCG@10與HR@5、HR@10推薦性能指標上能明顯優(yōu)于經(jīng)典的SVD算法和著名的FISM算法,且優(yōu)于目前最新算法NAIS和DAE+FISM,可以充分說明注意力機制的有效性和本文算法的先進性。
本文首先改進了原傳統(tǒng)三層自編碼器的網(wǎng)絡(luò)結(jié)構(gòu),改進后的六層深度去噪自編碼器可以有效地提高傳統(tǒng)自編碼器網(wǎng)絡(luò)的泛化能力和魯棒性。通過深度去噪自編碼器學(xué)習(xí)原始項目的隱含特征,將原始用戶評分矩陣作為該深度去噪自編碼器的輸入,減少了原始評分矩陣稀疏的影響,解決了數(shù)據(jù)稀疏等問題。再將降維壓縮后的低維項目隱含特征融入到基于項目相似度的推薦算法中,通過分析用戶已交互項目來構(gòu)建用戶的隱含特征向量,這樣既可以獲取項目的線性特征還可以挖掘到項目的非線性特征,緩解了推薦系統(tǒng)的冷啟動問題。同時為了突顯不同歷史已交互項目對目標項目的不同影響加入了注意力機制,以懲罰活躍用戶對實驗結(jié)果的影響,極大地提高了推薦算法的魯棒性同時提升了推薦的效率。然而本文算法只涉及到用戶項目的交互信息并未利用到年齡、性別等用戶的固有屬性。因此,未來的研究工作可以從用戶項目多樣性出發(fā),考慮加入興趣遷移模型和語義分析等模型進一步提高算法的推薦準確性。