周 倩, 王 遜*, 王云沼, 黃樹成
(1.江蘇科技大學(xué) 計算機(jī)學(xué)院,鎮(zhèn)江 212100)
(2.32185部隊,北京 102400)
隨著互聯(lián)網(wǎng)快速發(fā)展,用戶在面對電子娛樂、社交媒體等平臺帶來的海量信息時,很難從中快速找到感興趣的內(nèi)容.因此,推薦系統(tǒng)(recommender system,RS)應(yīng)時而生,它能夠緩解信息過載并且指引用戶選擇感興趣的信息.但傳統(tǒng)的推薦算法[1]在處理數(shù)據(jù)稀疏性以及冷啟動問題上有一定的局限性[2],只能以靜態(tài)的交互方式捕獲用戶興趣偏好,學(xué)習(xí)到的用戶興趣是變化緩慢或者靜態(tài)的.對于學(xué)習(xí)用戶歷史行為序列的潛在特征是完全忽略的,則會缺少用戶短期興趣的獲取,不能很好的模擬用戶興趣變化趨勢.
近年來,深度學(xué)習(xí)(deep learning, DL)已被廣泛應(yīng)用到圖像處理、語音識別、在線廣告以及自然語言處理等領(lǐng)域[3].但基于深度學(xué)習(xí)的推薦算法大多是將用戶看作一個靜態(tài)實體,則時間行為序列中蘊(yùn)含潛在的動態(tài)興趣偏好并不能得到有效挖掘和利用.在深度學(xué)習(xí)中,循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)是一種深度前饋神經(jīng)網(wǎng)絡(luò),能夠為行為序列信息在不同時刻間的依賴關(guān)系進(jìn)行建模,對歷史交互行為信息進(jìn)行記憶.而且長短期記憶模型(long-short term memory, LSTM)[4]、門控循環(huán)單元(gated recurrent unit, GRU)[5]作為RNN成功的變種,它們的網(wǎng)絡(luò)結(jié)構(gòu)不僅在層與層之間有連接,在各個隱藏層的神經(jīng)元上也有連接.因此,LSTM和GRU能夠高效處理序列信息,并擅于捕捉用戶的歷史交互序列中蘊(yùn)含的潛在特征.
為了兼顧用戶長短期興趣偏好對推薦效果的影響,提出利用矩陣分解處理用戶和項目的隱向量捕獲長期興趣表示,結(jié)合循環(huán)神經(jīng)網(wǎng)絡(luò)成功的變種——門控循環(huán)單元(GRU)處理用戶歷史行為序列,捕獲用戶短期動態(tài)興趣表示.此外,在GRU中嵌入注意力機(jī)制學(xué)習(xí)更重要的興趣偏好,最后融合用戶短期動態(tài)興趣和長期興趣進(jìn)行用戶推薦.文中算法充分結(jié)合GRU和矩陣分解(matrix factorization,MF)優(yōu)勢的算法,將兩者無縫融合,從而捕獲用戶長短期興趣偏好,能夠有效提高推薦性能和準(zhǔn)確性.
矩陣分解(MF)算法是在協(xié)同過濾推薦算法中應(yīng)用最廣泛的算法.它能夠有效挖掘用戶信息和項目信息的潛在的長期興趣.例如文獻(xiàn)[6]提出在矩陣分解中結(jié)合標(biāo)簽的推薦算法,從而緩解數(shù)據(jù)稀疏性,提高推薦準(zhǔn)確性.矩陣分解的空間復(fù)雜度低且具有一定的泛化能力,能夠使用線性函數(shù)來表示用戶的長期偏好.與深度學(xué)習(xí)相比,矩陣分解具備可解釋性強(qiáng)的優(yōu)勢.矩陣分解靈活性高,有助于與深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行組合或者拼接.基于矩陣分解的優(yōu)點,使用矩陣分解算法學(xué)習(xí)用戶長期興趣最為合適.
將深度學(xué)習(xí)應(yīng)用于推薦算法是目前主流的研究方向之一.例如文獻(xiàn)[7]提出概率神經(jīng)網(wǎng)絡(luò)(probabilistic neural network,PNN)算法,該算法輸入還加入其他特征,通過特征兩兩交互捕獲更多的潛在特征.隨后,有學(xué)者提出以并聯(lián)的方式結(jié)合傳統(tǒng)推薦算法與深度學(xué)習(xí),文獻(xiàn)[8]提出WIDE &DEEP算法,兼顧邏輯回歸和深度學(xué)習(xí)的優(yōu)點,使算法同時具有Wide層的記憶能力和Deep層泛化能力,再并聯(lián)輸出進(jìn)行預(yù)測推薦.文獻(xiàn)[9]在WIDE &DEEP算法的基礎(chǔ)上,用因子分解(factor machine,FM)算法代替Wide部分的邏輯回歸,最后兩者輸出參與最后的預(yù)測,有效提高推薦準(zhǔn)確性.
但是,以上基于深度學(xué)習(xí)的算法大都將特征交叉的行為直接表示用戶興趣,缺少通過用戶歷史行為序列獲取用戶動態(tài)興趣偏好的方法.文獻(xiàn)[10]提出的因式個性化馬爾可夫分解(factorizing personalized Markov chains,FPMC)算法,利用馬爾科夫鏈捕獲歷史序列中的興趣特性,大大提高了推薦準(zhǔn)確性.文獻(xiàn)[11]利用雙向長短期記憶網(wǎng)絡(luò)(Bi-LSTM)模型獲取序列中潛在信息特征,達(dá)到較好的推薦效果.LSTM或者GRU網(wǎng)絡(luò)學(xué)習(xí)歷史交互序列,能夠較好的捕獲用戶興趣變化特征,解決RNN的梯度消失問題.
在建模過程中考慮注意力機(jī)制(attention mechanism,AM)對預(yù)測結(jié)果會有不錯的收益.注意力機(jī)制重點在于計算注意力分?jǐn)?shù),利用分?jǐn)?shù)影響用戶相關(guān)信息的權(quán)重.注意力機(jī)制已經(jīng)成為各種序列模型的組成部分,也可以有效應(yīng)用于推薦系統(tǒng).文獻(xiàn)[12]提出深度興趣網(wǎng)絡(luò)(deep interest network,DIN)算法,利用歷史行為序列,并使用注意力機(jī)制衡量每個歷史行為特征與候選項目之間的關(guān)聯(lián)程度.程度越強(qiáng),對最后興趣推薦影響更大,最后被賦予的權(quán)重更多.但DIN模型并沒有對歷史行為序列進(jìn)行深度處理,只是計算歷史行為和候選項目的相似度進(jìn)行推薦.
基于長短期偏好的自適應(yīng)融合算法(recommender unit concatenate factorization,RUCF)的流程圖,如圖1,主要分為兩大模塊:長期偏好模塊和短期偏好模塊.長期偏好模塊是通過GMF層和全連接層處理用戶和項目特征,提取長期靜態(tài)的興趣狀態(tài)表示;短期偏好模塊是由兩層GRU結(jié)合注意力機(jī)制組成,從輸入的用戶行為序列中提取短期、動態(tài)的興趣狀態(tài)表示.最后將兩者以及輔助信息拼接進(jìn)行自適應(yīng)融合輸出.
圖1 RUCF流程圖
實驗的整體流程步驟如下:
(1) Input Layer:模型輸入特征主要分四個部分:用戶特征(年齡,性別,職業(yè))、物品特征(名稱、類型)、用戶的歷史行為特征(用戶,項目,評級交互)和上下文特征(時間).輸入"UserID", "gender","age","hist_movie_id","Sequences","ItemID"等數(shù)據(jù).
(2) Embedding Layer: Embedding層接收InputLayer層的數(shù)據(jù),進(jìn)行Embedding層處理,并經(jīng)過Flatten層,將輸入壓平.經(jīng)過Embedding層處理后,數(shù)據(jù)分為3部分輸入到下一個模塊:特征信息輸入到長期偏好模型;用戶交互序列數(shù)據(jù)進(jìn)行處理捕獲動態(tài)興趣偏好,輸入到短期偏好模型;用戶和項目的輔助信息,包括用戶性別、年齡以及項目類別等信息,經(jīng)過Flatten層等待最后的拼接.
(3) 輸入經(jīng)過Embedding Layer的"UserID","ItemID",通過長期偏好模型——GMF層和全連接層處理用戶和項目特征,提取長期靜態(tài)的興趣狀態(tài)表示.
(4) 輸入"Sequences"、"ItemID"數(shù)據(jù),經(jīng)過短期偏好模型——兩層GRU結(jié)合注意力機(jī)制組成處理,從用戶行為序列中提取短期、動態(tài)的興趣狀態(tài)表示.
(5) 最后,在興趣融合層,經(jīng)過Concatenate and Flatten層將短期興趣特征、長期興趣表示、輔助信息嵌入向量結(jié)合,經(jīng)過非線性激活函數(shù)輸出最終結(jié)果.
為了捕獲用戶長期靜態(tài)偏好,使用矩陣分解的通用模型,即廣義矩陣分解(generalized matrix factorization,GMF)模型.MF算法將M*N維的共享矩陣R分解成M*K維的用戶矩陣U和K*N維的物品矩陣V相乘的操作.其中M、N和K分別表示用戶數(shù)量、項目數(shù)量和隱向量維度.如圖2,用戶和物品的隱向量通過分解共現(xiàn)矩陣得到.
圖2 矩陣分解過程
廣義矩陣分解模型學(xué)習(xí)用戶的隱空間向量和物品的隱空間向量的點積,然后通過一個全連接線性層加權(quán)輸出.長期偏好提取部分的輸入為用戶id和項目id離散特征,首先經(jīng)過One-Hot編碼,然后輸入Embedding層,將稀疏且高維的數(shù)據(jù)轉(zhuǎn)成低維稠密向量,再進(jìn)行點積,通過GMF模型學(xué)習(xí)最后的輸出表示,結(jié)果為:
(1)
2.2.1 GRU學(xué)習(xí)短期偏好
為有效捕獲用戶短期偏好,使用雙層GRU網(wǎng)絡(luò)來有效學(xué)習(xí)用戶興趣動態(tài)演變過程.GRU網(wǎng)絡(luò)結(jié)構(gòu)能夠有效捕捉用戶潛在的短期興趣變化,與LSTM相比網(wǎng)絡(luò)結(jié)構(gòu)更加簡單,而且效果也很好.圖3為短期偏好模塊流程圖.
圖3 短期偏好模塊流程圖
首先,將每一個用戶U的交互項目以時間順序排序為Sn=[i1,i2,i3,…,ik,…,in],其中ik為第k個交互的項目,n為序列總長度.然后為每個用戶劃分n個樣本序列:S1=[i1],S2=[i1,i2],S3=[i1,i2,i3],…,Sn=[i1,i2,i3,…,ik,…,in].為了使網(wǎng)絡(luò)模型的效果更好,隨機(jī)抽取未交互的項目序列組成負(fù)樣本序列一同參與訓(xùn)練.驗證集由每個用戶的倒數(shù)第二個項目序列Sn-1組成,測試集由最后一個項目序列Sn組成,剩下的項目序列組成訓(xùn)練集.
然后,根據(jù)GRU要求輸入序列長度相同,使用Padding層將序列填充或截取為相同長度,文中設(shè)置序列長度為50.在GRU模型中有兩個門:重置門(reset gate)和更新門(update gate).每層GRU都是由GRU的Cell單元從時間維度連接組成.如圖4為t時刻GRU的一個Cell單元結(jié)構(gòu).
圖4 在t時刻GRU單元結(jié)構(gòu)圖
在t時刻GRU Cell單元的具體形式為:
rt=σ(Wr·[ht-1,xt]+br)
(2)
zt=σ(Wz·[ht-1,xt]+bz)
(3)
(4)
(5)
最后,用戶行為序列經(jīng)過第一層GRU輸出得到各個時間步的隱藏狀態(tài)ht,作為下一層GRU的輸入.
2.2.2 引入注意力機(jī)制
RUCF算法使用注意力機(jī)制,即在兩層GRU網(wǎng)路的基礎(chǔ)上,將注意力分?jǐn)?shù)添加在第二層GRU網(wǎng)路的更新門上,更改GRU的結(jié)構(gòu),從而能捕獲更重要的興趣偏好,反映對預(yù)測結(jié)果的重要程度,如圖5為引入注意力機(jī)制圖.
圖5 引入注意力機(jī)制圖
通過注意力機(jī)制得到上一層GRU層每個時間步的隱藏狀態(tài)ht,結(jié)合候選項目計算注意力分?jǐn)?shù)at.候選項目為當(dāng)前項目i經(jīng)過Embedding后的嵌入向量表示ei.注意力分?jǐn)?shù)計算為:
(6)
式中:ht為時間步t時刻第一層GRU的隱藏狀態(tài);ei表示候選項目的Embedding向量;at為一個數(shù)值分?jǐn)?shù),值越大,當(dāng)前ht對候選項目的貢獻(xiàn)越大.
將得到的注意力分?jǐn)?shù)嵌入到第二層GRU的更新門中,如圖6,用這個GRU層來更有針對性的模擬與目標(biāo)項目相關(guān)的興趣演化過程.
圖6 更改GRU門結(jié)構(gòu)圖
使用注意力分?jǐn)?shù)更新GRU結(jié)構(gòu)的公式為:
zt′=at·zt
(7)
(8)
最后,該部分結(jié)果不使用最后一個隱藏狀態(tài)當(dāng)作用戶短期興趣表示,而是把獲取到的短期興趣狀態(tài)最終表示成所有隱藏狀態(tài)的加權(quán)平均值為:
(9)
(10)
式中:σ為激活函數(shù);W為權(quán)重向量;b為偏置向量.
算法將推薦任務(wù)描述為二進(jìn)制分類問題,使用負(fù)對數(shù)似然函數(shù)(Log-loss)作為損失函數(shù),計算為:
(11)
為了研究捕獲用戶長短期偏好的有效性,文中構(gòu)建RUCF算法,并在MovieLens-1M和Electronics兩個公共數(shù)據(jù)集上評估該算法.表1為數(shù)據(jù)集詳細(xì)數(shù)據(jù)統(tǒng)計表.MovieLens-1M是一個電影數(shù)據(jù)集,包含用戶特征、電影特征、評級信息、時間戳等信息.Electronics是亞馬遜數(shù)據(jù)集的一個子集.文中電影和商品被表述為項目.
表1 數(shù)據(jù)集各項數(shù)據(jù)統(tǒng)計
在這兩個數(shù)據(jù)集中,都記錄了用戶對項目進(jìn)行評級交互的每個時間戳,可以為每個用戶構(gòu)造其交互的項目序列.值得注意的是,不以任何方式使用交互評分的值,只是將交互的項目標(biāo)簽設(shè)為1,未交互的項目標(biāo)簽設(shè)為0.
文中選取以下經(jīng)典的推薦算法與RUCF算法進(jìn)行比較,驗證所提算法的可行性和優(yōu)越性.
DeepFM:在因子分解機(jī)(FM)的基礎(chǔ)上發(fā)展而來,將深度神經(jīng)網(wǎng)絡(luò)與FM結(jié)合,同時捕獲了高階特征和低階特征,學(xué)習(xí)隱式特征交互從而預(yù)測用戶行為.
FPMC:該算法是馬爾科夫鏈與矩陣分解的結(jié)合.它為每個用戶創(chuàng)建轉(zhuǎn)移概率矩陣,一方面學(xué)習(xí)用戶和項目偏好,另一方面為歷史交互行為序列構(gòu)建模型,通過線性方式將組合起來進(jìn)行推薦.
WIDE &DEEP:Wide模塊和Deep模塊分別讓模型具備較強(qiáng)的記憶功能和泛化功能.兼顧深度神經(jīng)網(wǎng)絡(luò)和邏輯回歸的優(yōu)勢,能高效處理和記憶歷史行為特征,同時具備較強(qiáng)的表達(dá)能力.
PNN:將用戶特征、項目特征和輔助信息特征兩兩交互,提取特征間交叉信息,充分挖掘各特征間潛在信息.
DIN:使用注意力機(jī)制學(xué)習(xí)用戶歷史行為中的物品與當(dāng)前商品廣告的一個關(guān)聯(lián)性,改善各個歷史行為中每個項目平等性的限制,從而學(xué)習(xí)更有價值的用戶興趣偏好.
RUCF-NOATT:該算法不引入注意力機(jī)制,僅使用MF和兩層GRU捕獲長短期偏好.
使用平均絕對誤差(mean absolute error,MAE)和AUC(area under the ROC curve)指標(biāo)評估算法的總體表現(xiàn).MAE能夠度量預(yù)測誤差,而AUC能夠度量算法的性能.MAE和AUC為:
(12)
(13)
式中:M為正樣本數(shù);N為負(fù)樣本數(shù);ranki為根據(jù)預(yù)測概率將樣本從小到大排序后第i個正例所在位置.
實驗使用深度學(xué)習(xí)框架:Anaconda Python 3.6.2+Tensorflow 2.0.0+Keras 2.3.1.在MovieLens-1M和Electronics數(shù)據(jù)集上分別設(shè)置BatchSize(一次抓取的數(shù)據(jù)數(shù)量)為64和128.同時設(shè)置Dropout層丟失率為0.5,使用交叉熵?fù)p失函數(shù),Adam優(yōu)化器進(jìn)行訓(xùn)練,學(xué)習(xí)率設(shè)置為0.001.
在模型訓(xùn)練中設(shè)置Early Stopping機(jī)制,即當(dāng)驗證集上Loss不再降低時停止訓(xùn)練,從而達(dá)到充分訓(xùn)練和避免過擬合的作用.實驗取20次訓(xùn)練結(jié)果的最佳結(jié)果.
3.4.1 實驗一
實驗一是RUCF算法與其他經(jīng)典算法在Movielens-1M和Electronics數(shù)據(jù)集上對比的實驗,結(jié)果如表2、3.
表2 各個算法在AUC上實驗結(jié)果比較
根據(jù)表2和表3可以看到RUCF算法在兩個數(shù)據(jù)集上實現(xiàn)了最佳性能.與DeepMF算法相比較,RUCF算法在Movielens-1M數(shù)據(jù)集上AUC比DeepMF提高0.044 4,在MAE指標(biāo)上比DeepMF低0.189 8.因為DeepMF并未使用序列信息進(jìn)行興趣提取,文中算法使用歷史交互序列學(xué)習(xí)用戶的興趣變化表示,更能夠提取更深層次的用戶興趣偏好,推薦效果更好.FPMC算法已經(jīng)使用序列進(jìn)行興趣特征提取,因此,FPMC算法在MAE上比DeepMF算法有所下降.但仍存在局限性,FPMC算法只能根據(jù)已有歷史序列進(jìn)行推薦,缺少泛化能力.
表3 各個算法在MAE上實驗結(jié)果比較
文中算法使用深度學(xué)習(xí)自帶的優(yōu)勢,即泛化能力強(qiáng),表2中,RUCF在AUC上比FPMC算法要高0.040 7.WIDE &DEEP模型結(jié)合傳統(tǒng)推薦算法和深度學(xué)習(xí)算法的優(yōu)勢,推薦效果有一定的提高,但是并未發(fā)掘用戶歷史序列中的潛在信息,如表3中WIDE &DEEP算法和PNN算法在MAE指標(biāo)上能夠達(dá)到0.424 6和0.346 2.PNN算法加強(qiáng)特征間的交叉能力,挖掘特征之間的關(guān)系,也能實現(xiàn)很好的推薦效果,但是也沒有認(rèn)識到序列信息的重要性,未考慮用戶短期興趣偏好對最終推薦的影響.
3.4.2 實驗二
實驗二是引入注意力機(jī)制與不引入注意力機(jī)制的對比實驗.定義RUCF-NOATT為不引入注意力機(jī)制的RUCF算法,訓(xùn)練結(jié)果如圖7、8.
圖7 RUCF-NOATT上AUC變化趨勢
從圖7可以看出RUCF-NOATT在AUC上的變化,最高達(dá)到0.747 0.圖8可以看出RUCF-NOATT在MAE上隨迭代次數(shù)呈遞減趨勢的變化,最低達(dá)到0.253 2.
圖8 RUCF-NOATT上的MAE變化
圖9、10分別為RUCF在MovieLens-1M數(shù)據(jù)集上AUC和MAE隨迭代次數(shù)變化.
圖9 在RUCF模型上AUC變化趨勢
圖9可以看出文中算法ACU最高可以達(dá)到0.765 8,圖10可以看到MAE的變化趨勢整體呈遞減趨勢,最低達(dá)到0.251 7.對比RUCF-NOATT算法與引入注意力機(jī)制的RUCF算法的實驗結(jié)果得出,使用矩陣分解獲取長期偏好與GRU提取短期偏好相結(jié)合,并將注意力機(jī)制嵌入GRU的方法,能夠更敏感的挖掘有價值的興趣偏好,有效增強(qiáng)泛化能力.
圖10 RUCF模型上MAE變化趨勢
文中提出的RUCF算法,不僅能學(xué)習(xí)長期興趣特征,而且能深度挖掘歷史行為序列中的潛在短期興趣,從整體上提升算法性能.表2、3中,DIN算法在Movielens-1M數(shù)據(jù)集上AUC和MAE指標(biāo)達(dá)到0.738 2和0.320 6,充分體現(xiàn)注意力機(jī)制的優(yōu)越性,將其引入到深度學(xué)習(xí)會提高推薦性能.因此,在文中提出的模型中引入注意力機(jī)制,改進(jìn)GRU網(wǎng)路的更新門結(jié)構(gòu),提取帶有價值的權(quán)重信息,從而提高推薦質(zhì)量,使RUCF在對比結(jié)果中達(dá)到了最高性能.
現(xiàn)有的推薦算法無法有效學(xué)習(xí)用戶歷史行為序列中蘊(yùn)含的潛在短期興趣,不能發(fā)揮序列行為特征的重要作用.因此,提出了基于長短期偏好的自適應(yīng)融合推薦算法RUCF來解決這一難題.RUCF算法包括長期和短期興趣偏好提取兩大核心部分.矩陣分解推薦算法以時間固定的方式捕獲長期偏好.門控循環(huán)單元在用戶歷史行為的時間序列上捕捉動態(tài)興趣,并結(jié)合注意力機(jī)制更敏感地表示興趣演化過程.這樣同時結(jié)合了用戶動態(tài)興趣偏好和長期興趣偏好兩部分信息,有效提高推薦準(zhǔn)確性和性能.但是該算法的不足之處在于,將時間間隔看作均等,這似乎會影響推薦性能,如何設(shè)置時間間隔將作為后續(xù)的研究.