劉星宇, 謝穎華
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 上海 201620)
近年來, 許多研究人員將深度學(xué)習(xí)模型應(yīng)用于推薦系統(tǒng)領(lǐng)域, 緩解了傳統(tǒng)推薦系統(tǒng)的一些局限性, 提升了推薦性能[1]. 深度學(xué)習(xí)源于對人工神經(jīng)網(wǎng)絡(luò)的研究,通過構(gòu)造一個多層、非線性、層間互聯(lián)的網(wǎng)絡(luò)結(jié)構(gòu),利用網(wǎng)絡(luò)結(jié)構(gòu)逼近一個復(fù)雜的多元函數(shù)作為訓(xùn)練目標(biāo),并從許多未標(biāo)記的訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)數(shù)據(jù)集的原始特征[2]. 實際上, 微軟、谷歌、阿里等公司已經(jīng)提出了許多種不同的基于深度學(xué)習(xí)的推薦算法, 并且都在真實數(shù)據(jù)集上取得了很好的效果. 推薦系統(tǒng)也因此成為了人工智能和機器學(xué)習(xí)研究的一個分支, 被廣泛應(yīng)用到音樂、電影、社交網(wǎng)絡(luò)等一系列推薦場景中.
推薦系統(tǒng)的一大基本問題是對用戶興趣的精準(zhǔn)捕捉, 然而多數(shù)推薦模型不能有效地對用戶動態(tài)變化的偏好進行建模, 只是單純地對用戶長期形成的興趣偏好進行了建模, 或是僅僅捕捉了用戶在短期內(nèi)的興趣偏好. 但實際上, 用戶的興趣會隨時間推移而發(fā)生興趣漂移等情況, 因此分別捕捉用戶的長期與短期偏好才能夠更好地刻畫用戶興趣, 為用戶提供更加精準(zhǔn)的推薦.
在長短期偏好推薦方面, Rendle 等人[3]提出一種結(jié)合矩陣分解和馬爾可夫鏈的算法, 分別通過兩種方法了解用戶的總體喜好, 以及建模用戶順序行為; Song 等人[4]使用深度語義結(jié)構(gòu)化模型提取用戶和項目的靜態(tài)特征外, 同時利用循環(huán)神經(jīng)網(wǎng)絡(luò)建立了用戶偏好隨時序變化的動態(tài)模型; Lv 等人[5]的序列深度匹配(sequential deep matching, SDM)模型通過多頭自我注意模塊對短期會話行為進行建模, 通過門控融合模塊有效結(jié)合長期偏好和當(dāng)前購物需求.
本文針對用戶興趣隨時間發(fā)生興趣漂移等問題,提出一種融合隱語義模型與門控循環(huán)單元的推薦模型(RA_LST), 通過分別捕捉用戶的長期與短期偏好, 以更好地刻畫用戶興趣, 為用戶提供更加精準(zhǔn)的推薦. 其中, 用戶的長期偏好是指隨時間推移不會發(fā)生較大改變的用戶喜好, 需要根據(jù)較長的時間序列來學(xué)習(xí)捕捉;用戶的短期偏好則是指會在短期內(nèi)發(fā)生較大變化的用戶喜好, 需要更加靈活的學(xué)習(xí)捕捉.
針對用戶長期興趣與短期興趣的捕捉, 存在許多比較經(jīng)典的推薦模型. 其中, 用戶長期形成的興趣可以用矩陣分解等方法來建模[6], 而用戶短期內(nèi)的偏好則多用循環(huán)神經(jīng)網(wǎng)絡(luò)這一序列推薦模型來進行預(yù)測[7]. 本文提出的算法則采用隱語義模型和門控循環(huán)單元來分別捕捉用戶的長短期偏好.
門控循環(huán)單元(gated recurrent unit, GRU)是針對標(biāo)準(zhǔn)的循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)在長期依賴性問題上存在的梯度消失和梯度爆炸問題而提出的改進的循環(huán)神經(jīng)網(wǎng)絡(luò)[10], 同長短期記憶(longshort time memory, LSTM)一并成為了實際應(yīng)用中有效的序列模型.
GRU 不僅繼承了RNN 的優(yōu)勢, 通過將神經(jīng)元某時刻的輸出作為輸入再次輸入到神經(jīng)元, 從而保持?jǐn)?shù)據(jù)信息間的依賴關(guān)系, 能夠很好地處理序列信息; 而且作為LSTM 的簡化模型, GRU 構(gòu)造更加精簡, 在不影響訓(xùn)練效果的前提下加快了訓(xùn)練速度, 在訓(xùn)練數(shù)據(jù)大的情況下能節(jié)省很多時間.
如圖1 所示, GRU 的輸入輸出結(jié)構(gòu)與標(biāo)準(zhǔn)的RNN相同, 有一個當(dāng)前輸入Xt和上一節(jié)點傳遞下來的隱狀態(tài)ht-1, 經(jīng)過GRU 得到當(dāng)前輸出Yt和傳遞給下一節(jié)點的隱狀態(tài)ht.
圖1 GRU 輸入輸出結(jié)構(gòu)原理圖&內(nèi)部結(jié)構(gòu)原理圖
GRU 的內(nèi)部首先由上一節(jié)點傳遞下來的隱狀態(tài)ht-1和當(dāng)前輸入Xt獲得兩個門控狀態(tài): 重置門控r和更新門控z, 其中,σ為Sigmoid 函數(shù).
接著使用重置門控來“重置”數(shù)據(jù), 得到包含當(dāng)前節(jié)點信息的h′.
由于GRU 的每個隱藏單元都擁有獨立的重置門和更新門, 因此能夠在不同的時間尺度上捕獲依賴關(guān)系, 可以通過使用頻繁激活的重置門來捕捉短期依賴關(guān)系, 通過使用活躍的更新門來捕捉長期依賴關(guān)系[11].
本文提出一種融合隱語義模型LFM 與門控循環(huán)單元GRU 的神經(jīng)協(xié)同過濾算法(RA_LST), 通過結(jié)合長期與短期行為來捕捉用戶的動態(tài)偏好. 其中, 長期偏好屬于用戶的本質(zhì)屬性, 或者說是群體屬性, 是指隨時間推移不會發(fā)生較大改變的用戶喜好. 例如男性與女性、不同年齡階層對電影類型的喜好度區(qū)分: 低齡用戶大多喜愛動畫類型的電影, 而科幻類型的電影會更受男性用戶的偏愛. 這一類用戶屬性需要根據(jù)較長的時間序列來學(xué)習(xí)捕捉. 而短期偏好則屬于用戶的階段性屬性, 是指會在短期內(nèi)發(fā)生較大變化的用戶喜好, 例如在某個時間段內(nèi)或是某個時間節(jié)點處, 用戶對特定演員或是特定屬性電影的階段性喜愛. 這一類屬性會在短時間內(nèi)出現(xiàn)與消失, 因此需要更加靈活的學(xué)習(xí)捕捉.
本文分別通過兩個相應(yīng)的模型組件來對用戶行為進行建模: 使用LFM 模塊獲取長期偏好, 使用GRU模塊獲取短期偏好, 再通過隨機梯度下降(stochastic gradient descent, SGD)優(yōu)化算法融合LFM 與GRU. 模型的整體結(jié)構(gòu)如圖2 所示.
圖2 融合隱語義模型與門控循環(huán)單元的推薦模型
本文采用基于隱語義模型LFM 的推薦算法來對用戶與電影之間的長期狀態(tài)進行建模預(yù)測. 該模型通過將用戶歷史交互/未交互矩陣分解為兩個低維度矩陣: 用戶潛在因子矩陣和項目潛在因子矩陣, 使其分別作為用戶/項目特征, 結(jié)果基于用戶行為統(tǒng)計自動聚類,無需關(guān)心分類的角度, 分類粒度也可以通過設(shè)置最終分類數(shù)來控制, 分類數(shù)越大, 粒度越細.
圖3 所示為基于隱語義模型的推薦算法整體結(jié)構(gòu).模型首先采用均值為0, 方差為1 的高斯分布隨機值來初始化用戶與項目潛在因子矩陣P和Q. 接著, 在LFM層采用隨機梯度優(yōu)化算法迭代計算更新參數(shù), 并且在每次迭代中都重新選擇用戶的負(fù)樣本. 最終, 將訓(xùn)練好的用戶隱因子向量與項目隱因子向量相乘, 獲得用戶對負(fù)例項目的預(yù)測喜愛度, 并對其降序排列取前N項進行推薦.
圖3 基于隱語義模型的推薦算法整體結(jié)構(gòu)
本文采用基于門控循環(huán)單元GRU 的推薦算法來對用戶與電影之間的短期狀態(tài)進行建模預(yù)測. 該模型的核心是GRU 層, 輸出是對項目的預(yù)測偏好, 即每個項目在用戶下一次交互中的可能性. 當(dāng)使用多個GRU層時, 前一層的隱藏狀態(tài)是下一層的輸入.
基于門控循環(huán)單元的推薦算法的整體結(jié)構(gòu)如圖4所示. 首先, 對實際項目進行one-hot 編碼, 令輸入向量的長度等于所有項目的個數(shù), 對于用戶交互過的項目置為1, 未交互過的項目置為0. 接著, 在嵌入層使用tanh激活函數(shù)對輸入向量進行嵌入處理, 令其編碼程度更小, 更便于在低維空間優(yōu)化模型. 之后通過GRU 層獲得預(yù)測結(jié)果, 在輸出層輸出預(yù)測評分.
在GRU 層對數(shù)據(jù)集進行批量訓(xùn)練時, 每個用戶交互過的項目數(shù)量不同, 甚至差距很大: 有些用戶只有個位數(shù)的交互項目, 而其它用戶可能有上千個交互項目. 而且在做序列推薦時, 我們的目標(biāo)是捕捉交互項隨時間的發(fā)展特征, 因此不能將其分解成片段, 這樣就失去了序列預(yù)測的意義. 綜合以上, 本算法使用基于會話序列推薦的循環(huán)神經(jīng)網(wǎng)絡(luò)建模方法GRU4Rec (gated recurrent unit for recurrent), 并行小批量來進行訓(xùn)練[12]: 該方法首先將N個用戶的交互項組合成一個并行序列, 第一次將用戶s在ts時刻的交互項輸入到GRU 中, GRU 預(yù)測用戶s在ts+1 時刻的交互項. 第2 次將用戶s在ts+1時刻的交互項輸入到GRU 中, GRU 預(yù)測用戶s在ts+2時刻的交互項, 以此類推. 由于每個用戶的交互項序列長短不一, 當(dāng)一個序列訓(xùn)練結(jié)束后, 補充新的序列到并行序列當(dāng)中, 同時重置為該新序列的隱藏狀態(tài), 這樣最大限度地提高了訓(xùn)練效率. 圖5 給出了GRU4Rec批量訓(xùn)練的示意圖. 其中,is,t表示用戶s按時間排序的第t個交互項目.
圖5 GRU4Rec 批量訓(xùn)練的示意圖
在分別通過GRU4Rec 模型與LFM 模型獲得用戶的長短期偏好預(yù)測之后, 本算法(RA_LST)采用隨機梯度下降優(yōu)化算法SGD 來對兩部分結(jié)果進行融合, 以提高推薦效果. SGD 的目標(biāo)是要找到一組合適的附加參數(shù), 使得預(yù)測值與真實值之間的差距最小.
具體來說, 分別假設(shè)GRU4Rec 模型與LFM 模型獲得的用戶預(yù)測評分為x1與x2, 然后為它們分配和為1 的不同權(quán)重, 即定義最終預(yù)測評分為:
將更新后的θ繼續(xù)帶入下一用戶數(shù)據(jù)進行迭代,直至所有用戶數(shù)據(jù)迭代結(jié)束, 最終所得θ對應(yīng)的預(yù)測評分hθ(x)即為最終預(yù)測評分.
實驗基于公開數(shù)據(jù)集MovieLens 與Netflix 進行.其中, MovieLens 是一個被廣泛應(yīng)用于評估推薦算法的電影評分?jǐn)?shù)據(jù)集, 本實驗使用的1M 版本中包含6 000多名用戶對4 000 多部電影的100 萬條評分?jǐn)?shù)據(jù), 其中每個用戶至少對20 部電影做出了評級. 而Netflix同樣作為電影評價數(shù)據(jù)集, 其中包含48 萬用戶對1.7 萬部電影超過100 萬條評價數(shù)據(jù). 兩數(shù)據(jù)集均采用1-5分的評分制, 且評分信息均帶有時間戳, 因此適用于本例等基于時間序列, 考慮用戶對項目的交互順序的推薦算法評估.
另外, 本實驗擬采用一種廣泛應(yīng)用的留一法(leaveone-out)來劃分訓(xùn)練集與測試集[13]. 具體做法是先按照時間順序?qū)λ薪换ミM行排序, 然后將最后10%的項,即用戶最新交互的項作為測試集, 并將剩余的90%交互數(shù)據(jù)用于訓(xùn)練模型.
實驗采用歸一化折損累積增益(normalized discounted cumulative gain,NDCG)和均方根誤差 (root mean square error,RMSE)作為評價指標(biāo),RMSE衡量的是預(yù)測值與真實值之間的偏差,NDCG則評價推薦列表與用戶真實交互列表的差距. 簡單來說,RMSE評估推薦值的誤差,NDCG評估排名列表的質(zhì)量.
接著對K個項目的相關(guān)性分?jǐn)?shù)進行累加, 得到累積增益CG.
為了評估融合后模型(RA_LST)的性能, 將其與LFM、GRU4Rec 分別在MovieLens、Netflix 數(shù)據(jù)集上進行對比實驗. 實驗在Python 3.8 環(huán)境下進行, LFM與GRU4Rec 模型的學(xué)習(xí)率分別設(shè)置為0.02、0.001.最終的實驗結(jié)果如表1 所示.
表1 各模型在各數(shù)據(jù)集上的評估指標(biāo)
從表1 可以看出, 在不同的數(shù)據(jù)集中, 本文提出模型RA_LST 的NDCG比融合前的獨立模型都要高, 表示該模型通過兼顧用戶長短期偏好, 有效地提高了預(yù)測的準(zhǔn)確性. 另外, 在不同的數(shù)據(jù)集中, 本文提出模型RA_LST 的RMSE比融合前的獨立模型都要低, 也表示該模型通過兼顧用戶長短期偏好, 有效地降低了預(yù)測誤差.
圖6、圖7 所示的是隱語義模型(LFM)、門控循環(huán)單元(GRU) 以及本文提出的融合模型(RA_LST)在MoviesLens 數(shù)據(jù)集上的性能隨迭代次數(shù)(epoch)變化對比圖. 其中, RA_LST 的學(xué)習(xí)率設(shè)置為0.01. 從圖中可以看出, 本文提出的融合模型的NDCG值和RMSE值, 在不同的訓(xùn)練批次下都較原有算法有了明顯的提升. 其中,NDCG值較GRU 平均提升了0.015,RMSE值較LFM 平均降低了0.116.
圖6 不同模型的NDCG 值對比圖
圖7 不同模型的RMSE 值對比圖
本文針對傳統(tǒng)推薦系統(tǒng)缺乏對時間因素的考慮的問題, 提出了一種兼顧用戶長短期偏好的推薦算法, 該算法分別使用門控循環(huán)單元與隱因子模型來捕捉用戶的短期與長期興趣, 并通過SGD 優(yōu)化算法融合兩部分結(jié)果, 以構(gòu)建更完善的用戶畫像, 進而提高推薦性能.在MovieLens 與Netflix 數(shù)據(jù)集上的評估指標(biāo)RMSE與NDCG都表明, 該算法能夠有效提高預(yù)測的準(zhǔn)確性.