孫 紅,鹿梅珂
(上海理工大學 光電信息與計算機工程學院,上海 200093)E-mail:823372873@qq.com
推薦系統(tǒng)自從上世紀90年代作為一項獨立存在的概念出現(xiàn),逐漸成為現(xiàn)代互聯(lián)網(wǎng)時代的一種信息檢索工具,現(xiàn)如今在社交網(wǎng)站、電子商務以及影音娛樂等方面都有著很大的涉及.在深度學習提出之后,結合深度學習的推薦系統(tǒng)取得了顯著成效,深度學習在推薦圈中越來越受到重視.
早期的推薦系統(tǒng)是按照商品的流行程度進行排序,然后將排名靠前的商品推薦給用戶[1];后來John Riedl和Paul Resnick提出了分析用戶和文章的關聯(lián),產(chǎn)生了最早的協(xié)同過濾推薦[2];Elkahky等人提出多視角深度神經(jīng)網(wǎng)絡模型并將其用于推薦[3];后來可以自動學習特征深度學習興起,尤其在多源異構數(shù)據(jù)中自動特征學習將學習到的歸總為統(tǒng)一表征[4],在實際使用中成為了成熟的推薦系統(tǒng).
后續(xù)出現(xiàn)了許多基于深度學習的推薦系統(tǒng),Wide & Deep模型將用戶數(shù)據(jù)編碼成離散特征并通過深度學習得到隱性特征向量[5];DeepFM模型在此基礎上借助FFM思想[6]解決了網(wǎng)絡參數(shù)過多的問題;List-wise推薦模型[7]可以根據(jù)用戶多樣性的問題給多樣的用戶選擇推薦;阿里的深度興趣網(wǎng)絡(Deep Interest Network,DIN)[8]可以在商品的推薦中表示出用戶對不同種類的商品的興趣.
自動編碼器(Auto Encoder,簡稱AE)[9]起初用于數(shù)據(jù)降維,后來證明在推薦系統(tǒng)中也取得了不錯的效果.自動編碼器可以通過加入約束條件以實現(xiàn)想要的功能,例如加入干擾噪聲可以形成降噪自動編碼器(DAE),解決訓練過程中的過擬合現(xiàn)象;通過堆疊的方法可以將多個簡單神經(jīng)網(wǎng)絡堆疊成深度神經(jīng)網(wǎng)絡,形成堆疊降噪自動編碼器(SDA)[10];在DAE的基礎上進一步處理[11]通過加入干擾型數(shù)據(jù)噪聲達成邊緣化處理,可實現(xiàn)邊緣降噪自動編碼器(mDAE)[12],避免SDA訓練計算成本過高問題;有學者結合了SDA和mDAE兩者間的優(yōu)點,創(chuàng)造性的提出了堆疊邊緣降噪自動編碼器模型,并將這個深度模型與協(xié)調(diào)過濾算法相結合,最終形成了基于堆疊邊緣降噪自動編碼器的深度協(xié)同推薦方法,即DCR-SmDAE模型[13].AutoSVD++模型[14]通過融入了自動編碼器到傳統(tǒng)的矩陣分解模型中,該模型能保留收縮性的特性并通過這種方式學習項目得到特征,在推薦系統(tǒng)的改進上有了一定的成效.融合物品熱門因子的協(xié)同過濾改進算法[15]在皮爾遜相似度原理上添加物品熱門因子,優(yōu)化皮爾遜相似度計算,提高推薦效果.
僅基于矩陣分解的協(xié)同過濾方法中存在的數(shù)據(jù)稀疏與冷啟動的問題,而深度學習在特征提取上可以優(yōu)化傳統(tǒng)的協(xié)同過濾方法[16].但在一般的基于深度學習的推薦系統(tǒng)的算法中,模型訓練時間長且不能同時兼顧質量.針對上述問題,本文深度學習中的自動編碼器模型中融入稀疏和邊緣降噪的約束[17],再在此基礎上通過堆疊的方法形成深度模型[18],然后通過矩陣分解的方法與推薦系統(tǒng)進行有機結合,最終形成本文所述的基于堆疊稀疏邊緣降噪自動編碼器的協(xié)同深度推薦方法(S-SmDAERS).
自動編碼器由于學習特征表示能力的優(yōu)勢在稀疏數(shù)據(jù)上也能夠實現(xiàn)數(shù)據(jù)的特征提取.在傳統(tǒng)自動編碼器的基礎上,通過向輸入中注入噪聲,然后利用含噪聲的“腐壞”的樣本去重構不含噪聲的“干凈”輸入,就形成了降噪自動編碼器(DAE).
DAE的執(zhí)行過程通過編碼函數(shù)fencoding將噪聲映射到隱藏層中,從而獲取隱藏層中的特征hhide,在解碼輸出的過程中通過解碼函數(shù)gdecoding將hhide映射到輸出層,得到輸入數(shù)據(jù)的重構[19].
mDAE是在DAE的基礎上在繼續(xù)進行進一步的處理,通過加入干擾型數(shù)據(jù)噪聲達成邊緣化處理實現(xiàn),將原DAE中的損失函數(shù)求對應的期望損失函數(shù).邊緣化隨機特征可以避免SDA存在的訓練計算成本過高的代價,這樣就可以一定程度上大大減少其因為數(shù)據(jù)集增大而導致的計算強度增強,從而縮短處理的時間.
矩陣分解(MF)是目前推薦系統(tǒng)中最為廣泛使用的一項技術,可以將用戶與項目之間存在的交互矩陣分解為兩個低階陣.對于m個用戶對于n個物品的評價打分矩陣R將其分解為兩個秩相等都為d的低階矩陣用戶矩陣U和物品矩陣V.
概率矩陣分解[20]是在正則化矩陣分解的基礎上,引入概率模型進一步優(yōu)化.它的概率基礎是假設一個具有高斯觀測噪聲和高斯先驗的概率線性模型為隱式特征因子,將其對數(shù)后驗函數(shù)進行最大化處理,再將所得目標函數(shù)利用梯度下降法可求得最優(yōu)的U和V值.
在推薦問題中,由于用戶和物品數(shù)量過于龐大,數(shù)據(jù)稀疏問題嚴重制約著推薦質量.機器學習中使用降維方法來解決數(shù)據(jù)的稀疏性,常見的方法有矩陣分解降低維數(shù)和聚類,即將隸屬于同一類別的特征用相同的標簽來標注.對于有缺失值的數(shù)據(jù)可以采用矩陣填充技術對缺失元素進行估計.此外,本文中使用的自動編碼器以及衍生形式對數(shù)據(jù)進行了重構,也能夠處理數(shù)據(jù)的稀疏性問題.
對于自動編碼器而言,在其隱藏層的神經(jīng)元進行某種調(diào)整,如在隱藏層中加入稀疏邊緣約束條件,最終得到了稀疏邊緣自編碼器(SmDAE).稀疏邊緣降噪自動編碼器可以將輸入的數(shù)據(jù)從高維度的向量空間向低維度的向量空間進行轉化,但是因其單個的編碼能力有所不足,故本文借助于堆疊思想,將三個SmDAE以順序連接方式連接在一起,就得到了堆疊稀疏邊緣降噪自動編碼器.
向DAE的隱藏層中加入稀疏編碼器和mDAE的約束條件后形成了SmDAE,將三個SmDAE進行順序連接,利用自動編碼器能很好地重構其輸入端的優(yōu)點,將前者的輸出層用后者的輸入層代替,得到本文使用的S-SmDAE模型.
通過S-SmDAE模型訓練學習出的編碼解碼操作后的映射矩陣可以得到隱藏層中項目的潛在特征的特征向量值,將其作為矩陣分解輸入源的特征向量可將概率矩陣分解與SmDAE自動編碼器融合,并利用矩陣分解的方法對參數(shù)進行優(yōu)化.
S-SmDAE模型的方法流程大致如下:首先需要將每個單隱層的自編碼器作為一個簡單網(wǎng)絡對訓練樣本數(shù)據(jù)進行預訓練,然后再進行堆疊.這個過程是無監(jiān)督的,但是需要在所有層都完成之后需要使用前面分層訓練時對于各層之間出現(xiàn)的參數(shù)進行相應的優(yōu)化,尋找最佳數(shù)值來調(diào)整整個多層網(wǎng)絡的參數(shù),在整個參數(shù)調(diào)整完畢之后通過帶標簽的樣本對系統(tǒng)進行微調(diào),最終得到的網(wǎng)絡模型與協(xié)同過濾傳統(tǒng)的概率分解模型[21]進行融合,最終完成推薦任務.
其步驟為:
1)對物品的潛在特征進行學習,得到物品潛在特征.
2)利用本文的S-SmDAE模型進行訓練,得到隱藏層特征向量.
3)將2)中得到的物品和用戶隱藏層特征向量作為概率分解矩陣的基本值,得到新的物品和用戶特征向量.
4)將前面得到的模型進行微調(diào),得到最終的網(wǎng)絡模型
5)將模型用于預測評分
6)將模型用于推薦
為了驗證本文的系統(tǒng),本文選擇了MovieLens數(shù)據(jù)集、Book-Crossings圖書評分數(shù)據(jù)集和Netflix數(shù)據(jù)集進行驗證,上述三種數(shù)據(jù)集的具體信息統(tǒng)計如表1所示.
表1 數(shù)據(jù)集信息匯總對比表
本文中對實驗中獲得的評分預測分值跟驗證數(shù)據(jù)集中相對應的實際上看到的分值做比較,比較兩者之間的相似程度,采用準確率的評估是通過均方根誤差(RMSE)實現(xiàn).
(1)
本文考慮實驗過程中的數(shù)據(jù)或許會有隱式反饋的存在,這種隱式反饋主要表現(xiàn)在假設用戶給一個項目打的分數(shù)為零,這或許是由于該用戶可能不是因為不喜歡而是因為并未接觸過這個項目所導致.基于此,本文還采用了如式(2)的召回率進行對系統(tǒng)的評價,其值一般越高說明結果越準.
(2)
本文算法中由于有S-SmDAE和矩陣分解的存在使得其中有很多相關的超參數(shù),如.λu,λv,λn,λW,K這些參數(shù)調(diào)整出現(xiàn)的變化會對最后的整個模型有一定的影響,借助在對信息加噪聲干擾后再對特征的提取上面所做的最終結論,本文在對輸入的數(shù)據(jù)集中在噪聲干擾處理上面擬打算使用無偏掩碼噪聲且其等級為0.3,而其中的學習率被設置成0.003.
實驗1.不同的K值對RMSE的影響
在本實驗中,在λu,λv,λn,λW值不變的情況下分析最內(nèi)層特征維度參數(shù)K,通過RMSE指標進行評估,其結果如圖1所示.在這三個數(shù)據(jù)集中,隨著K的增大,RMSE的值逐漸減小,在K=50處達到最小值,此時推薦質量最高.當K繼續(xù)增大,RMSE又開始回升.
圖1 K值對RMSE的影響
實驗2.不同K值對召回率的影響
K值變化對召回率也會產(chǎn)生影響,在MovieLens數(shù)據(jù)集ml-1m上的分析結果如圖2所示.
圖2 ml-1m中不同K值對recall@M的影響
在MovieLens數(shù)據(jù)集ml-1m上,不同的K值對召回率recall@M值有著很大的影響,且與此同時recall@M中M值越高其召回率越高,普遍情況下隨著K值的增加recall@M都有所增大,直至K=50后又都有所減小,故而在K=50處取得了模型作為推薦的質量最高點.
綜合以上RMSE和recall@M兩種指標分析,參數(shù)K取值為50時本文的S-SmDAERS模型可以有著很好表現(xiàn)效果.
實驗3.λu,λv,λn,λW對RMSE的影響
將S-SmDAE模型中的最內(nèi)層特征參數(shù)K固定為50,再研究λu,λv,λn,λW對指標的影響.可將λu,λv,作為一組,另將λn,λW作為一組,分別研究這兩組參數(shù)的影響.
取λn=0.001和λW=0.001,再對λu,λv進行調(diào)整,其不同取值下RMSE的值如圖3所示.
圖3 參數(shù)λu和λv不同取值下RMSE值
分析發(fā)現(xiàn)在λu=0.1和λv=10處時RMSE能達到最小值,即局部最優(yōu)解,這個時候的準確率最高.
固定λu=0.1,λv=10,研究λn,λW對RMSE的影響如圖4所示.
圖4 參數(shù)λn和λW不同取值下RMSE值
分析發(fā)現(xiàn)在λn=0.001和λW=0.001處RMSE能達到最小值,即局部最優(yōu)解,這個時候的準確率最高.
綜上所述,本文S-SmDAERS模型的一些超參數(shù)可以確定調(diào)整為:K=50,λu=0.1,λv=10,λn=0.001,λW=0.001.
除上述參數(shù)的影響外,數(shù)據(jù)集的稀疏度對模型的評價指標也有所影響.數(shù)據(jù)集越稀疏,所需的迭代次數(shù)越多.在M值相同的情況下,數(shù)據(jù)集稀疏度越低,recall@M的值越低,即模型的表現(xiàn)效果越好,而在稀疏度較高的Book-Crossing數(shù)據(jù)集上表現(xiàn)效果略有欠缺.
實驗4.與不同算法的比較
本文選取了DCR-SmDAE、AutoSVD++和CTR算法進行對比.在同等迭代次數(shù)下,ml-1m數(shù)據(jù)集在四種算法下的RMES如圖5所示.
圖5 不同算法在同等迭代次數(shù)下的RMES
可以看出,本文所提的模型在每次訓練的迭代上較其他算法在RMSE上都更低,說明其準確率更高,較其他算法模型分別提升了0.022,0.031和0.011.在達到模型最優(yōu)的迭代中,本文所提的算法模型較其他算法能更快地達到最優(yōu)推薦質量.
選取數(shù)據(jù)的稀疏程度最低的MovieLens-1M數(shù)據(jù)集,在此數(shù)據(jù)集上對CTR模型、AutoSVD++模型和DCR_SmDAE模型和本文模型S-SmDAERS做出如圖6所示的對比實驗.
圖6 不同算法在同等M值下的recall@M
由圖6可知,推薦數(shù)量M的值相同的情況下本文所提出的模型S-SmDAERS在評測指標recall@M中皆比其他算法模型高,這就說明S-SmDAERS模型在推薦的質量上較其他模型都有所提升,平均提升了1.752%.
本文提出的S-SmDAERS深度推薦系統(tǒng)模型在模型的訓練耗時以及推薦的性能與質量上雖然都有著一定的提升,取得了不錯的效果,但是在實驗過程中依舊發(fā)現(xiàn)其中存在某些小的問題還需進一步優(yōu)化.
1)自動編碼器堆疊可以使模型逐層學習到數(shù)據(jù)的多種表達,但直接訓練一個多層的自編碼器會因梯度擴散等問題使誤差變得極小,訓練變得無效,而分層預訓練的方法則使深度網(wǎng)絡的訓練成為可能,這個過程中生成的初始化權值矩陣可以作為網(wǎng)絡的初始化矩陣,加速深度網(wǎng)絡的收斂速度.在實踐中,深度自編碼器像其他深度神經(jīng)網(wǎng)絡一樣能夠減小訓練數(shù)據(jù)和計算資源需求,后續(xù)的多層堆疊可以使訓練效果提升[20];
2)由于設備限制本文所用的數(shù)據(jù)集不夠大,未來希望能用更充分的數(shù)據(jù)對本文的模型進行驗證;
3)神經(jīng)網(wǎng)絡的參數(shù)只能根據(jù)前輩的經(jīng)驗進行調(diào)整,導致參數(shù)調(diào)整只能取局部最優(yōu),不能真正達到最優(yōu)值,后續(xù)希望能夠帶入一種動態(tài)調(diào)整參數(shù)方法,使得該神經(jīng)網(wǎng)絡在訓練上能夠更為準確;
4)訓練數(shù)據(jù)增加導致模型訓練所花的時間代價呈不可控的形式變大,后續(xù)希望通過結合分布式處理的方式在不影響模型訓練性能的前提下節(jié)省大量的訓練時間,緩解時間代價.