李鎮(zhèn)宇 朱小龍 周從華 劉志鋒
(1.江蘇大學(xué)計算機科學(xué)與通信工程學(xué)院 鎮(zhèn)江 212013)(2.江蘇大學(xué)京口區(qū)新一代信息技術(shù)產(chǎn)業(yè)研究院 鎮(zhèn)江 212013)
隨著大數(shù)據(jù)時代的到來,我們每個人都會成為海量數(shù)據(jù)的締造者和接收者。當網(wǎng)絡(luò)上海量數(shù)據(jù)呈獻給我們的時候,我們很難在短時間內(nèi)處理這么多的信息量。所以如何解決信息過載問題成為十分熱門的研究話題。在電商領(lǐng)域,信息過載問題顯得尤為嚴重。個性化推薦算法[1]就是為了解決這一問題而提出。目前主流的推薦算法有基于用戶或物品的協(xié)同過濾推薦算法、基于內(nèi)容的推薦算法、基于知識的推薦算法、基于社交網(wǎng)絡(luò)的推薦等。
目前應(yīng)用最普遍的推薦算法是協(xié)同過濾推薦算法[2],協(xié)同過濾推薦算法又分為兩種:基于用戶的協(xié)同過濾[3]和基于物品的協(xié)同過濾。基于用戶協(xié)同過濾的主要思想是為相似度高的用戶推薦可能喜歡的商品。基于物品的協(xié)同過濾算法[4]的主要思想是如果用戶喜歡A 商品,物品B 與A 相似度高,則將物品B推薦給改用戶。
如何解決推薦系統(tǒng)冷啟動[5]問題成為學(xué)術(shù)界和工業(yè)界研究的一個焦點。文獻[6]針對數(shù)據(jù)稀疏問題,使用基于內(nèi)容的推薦算法[6],通過對商品屬性的分析尋找擁有這些屬性的其它商品并將其推薦給用戶。但這種方法由于僅僅依賴商品本身屬性導(dǎo)致給出的推薦結(jié)果并沒有做到個性化。文獻[7]采用矩陣分解技術(shù),通過構(gòu)建用戶-物品矩陣可以簡單高效地提供準確率不錯的推薦結(jié)果。盡管矩陣分解技術(shù)比較有吸引力,但該技術(shù)并未考慮數(shù)據(jù)的時間變異性。最近,基于遞歸神經(jīng)網(wǎng)絡(luò)[8]的推薦算法通過考慮用戶和物品的時間特性,取得了不錯的推薦準確度而受到關(guān)注。遞歸神經(jīng)網(wǎng)絡(luò)有很多種,LSTM 網(wǎng)絡(luò)[9]就是其中的一種。Huijuan 等[10]采用LSTM 神經(jīng)網(wǎng)絡(luò)獲取用戶的短期偏好,然后將用戶長期偏好與短期偏好進行結(jié)合,得出最終的推薦結(jié)果。這種方法比只考慮長期因素的推薦算法準確度有所提高,但是由于對用戶短期偏好獲取過程中對用戶瀏覽過的物品采取同樣的權(quán)重,導(dǎo)致很難獲取到用戶的真實意圖。比如用戶在瀏覽衣服類商品的時候,被幾個無關(guān)的商品短暫的吸引然后點擊后很快就離開。這種情況下不應(yīng)該對無關(guān)商品做過多的關(guān)注。
針對以上傳統(tǒng)推薦算法存在的問題,本文提出一種基于門限循環(huán)單元(GRU)[11]的會話型推薦算法。首先,獲取用戶和商品信息構(gòu)建用戶-項目矩陣。然后,按照時間順序劃分數(shù)據(jù)集得到用戶序列和商品序列。然后通過將用戶、商品序列化數(shù)據(jù)輸入到GRU 網(wǎng)絡(luò)中得到數(shù)據(jù)在短期內(nèi)隨時間變化狀態(tài)特征。同時將矩陣分解算法得到的用戶、商品特征作為全局因素來計算GRU 網(wǎng)絡(luò)中每個隱藏狀態(tài)的權(quán)重,由此判斷用戶的主要意圖。得到用戶和商品的特征表示后,通過使用一種雙線性差值匹配機制來計算用戶和個物品間的相似度,這種方法不僅減少了模型參數(shù)而且提升了準確率。
在實際生產(chǎn)環(huán)境中,雖然LSTM 網(wǎng)絡(luò)已經(jīng)取得了不錯的成績。但由于其訓(xùn)練過程比較復(fù)雜,所以在它的基礎(chǔ)上演變出很多變體。門限循環(huán)單元網(wǎng)絡(luò)(Gated Recurrent Unit,GRU)便是其常見變體的一種。GRU 網(wǎng)絡(luò)解決循環(huán)神經(jīng)網(wǎng)絡(luò)中梯度消失和梯度爆炸的問題。其單元結(jié)構(gòu)圖如圖1所示。

圖1 GRU單元結(jié)構(gòu)示意圖
其中Zt代表更新門,更新門的作用類似于LSTM 中的遺忘門,他能決定要丟棄哪些信息和要增加哪些新信息,更新門的值越大說明前一時刻的狀態(tài)信息帶入的越多。Rt代表重置門,重置門決定丟棄之前信息的程度,重置門的值越小說明忽略的越多。
更新門的計算公式如下所示:

其中,Wz表示更新門的權(quán)重;σ表示Sigmoid 激活函數(shù),ht-1表示在t-1 時刻的隱藏狀態(tài),Xt表示在t時刻的輸入向量。更新門的作用是將t-1時刻的隱藏狀態(tài)和t時刻的輸入信息相加的結(jié)果壓縮到一個大于0 小于1 的值,以此來表示有多少隱藏狀態(tài)和當前狀態(tài)信息可以被傳遞到下一時刻。
重置門的計算公式如下所示:

其中,Wr表示重置門的權(quán)重,σ表示Sigmoid 激活函數(shù),ht-1表示在t-1 時刻的隱藏狀態(tài),xt表示在t時刻的輸入向量,重置門的作用是通過將對ht-1和xt的線性變換結(jié)果壓縮至0~1 的范圍內(nèi),這個值決定了前一時刻有多少信息會被遺忘。
當前記憶的計算公式如下所示:

通過更新門決定前一時刻信息和當前時刻的記憶內(nèi)容需要保留多少信息到當前時刻,將兩部分信息相加即得到當前時刻的最終記憶內(nèi)容。ht的計算公式如下所示:

傳統(tǒng)的矩陣分解算法通過對用戶長期偏好的獲取雖然能在一定程度上為用戶提供商品推薦,但由于其沒有考慮到用戶的興趣可能會隨著時間發(fā)生改變導(dǎo)致其在用戶短期偏好的預(yù)測上存在明顯缺點。一些基于神經(jīng)網(wǎng)絡(luò)的推薦算法解決了用戶短期偏好的獲取問題,卻在神經(jīng)網(wǎng)絡(luò)的長期偏好的預(yù)測上存在短板。當然也有文章將這兩種算法進行結(jié)合提出一種混合推薦模型[12],但其使用的網(wǎng)絡(luò)模型計算復(fù)雜、模型訓(xùn)練過程中需要學(xué)習(xí)眾多參數(shù),因此需要使用很大的空間和時間來保存和訓(xùn)練這些參數(shù)。基于對以上算法存在的缺點的思考,我們提出了基于門限循環(huán)單元的會話型混合推薦算法。具體來說,我們通過門限循環(huán)單元網(wǎng)絡(luò)訓(xùn)練用戶和商品按時間劃分的序列化數(shù)據(jù),得到用戶和商品的隱藏表示。在此過程中通過矩陣分解得到的用戶和商品的全局因素,通過注意力機制得到t 時刻的上下文向量并將上下文向量作為額外的輸入用來計算下一時刻的隱藏層狀態(tài)。通過使用注意力機制[13]計算上下文向量的好處是賦予用戶真正關(guān)注的商品更大的權(quán)重、發(fā)掘用戶的真實意圖。
在本文中,我們使用門限循環(huán)單元作為循環(huán)神經(jīng)網(wǎng)絡(luò)的基本單元,將用戶和商品數(shù)據(jù)按照時間順序進行劃分并將這個時間序列作為循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入,輸入數(shù)據(jù)通過轉(zhuǎn)換從高維稀疏變?yōu)槌砻艿碾[藏層向量表示。得到用戶和商品在t時刻的特征向量表示之后,通過計算這兩個向量之間的相似程度可以判斷出用戶購買這件商品的可能性。例如,輸入的用戶i 時間序列為,…,,GRU網(wǎng)絡(luò)將輸入的時序數(shù)據(jù)轉(zhuǎn)換為高維的隱藏層表示。其中表示用戶i 在t 時刻的隱含特征向量表示。的計算公式為

用同樣的方法可以求得商品j 在t 時刻的隱含特征向量表示。其中,表示商品j 在t 時刻的隱含向量表示。的計算公式如下:


矩陣分解算法在目前的推薦系統(tǒng)中應(yīng)用非常廣泛并取得了非常好的效果。矩陣分解的基本原理是通過建模用戶-項目評分矩陣,將用戶-項目矩陣分解為兩個矩陣的乘積[14]。例如,有m 個用戶、n件商品、用戶對商品的評分矩陣Sm×n,可以將Sm×n分解為矩陣P 和矩陣Q 的乘積,計算公式如下所示:

其中矩陣P 為m*z 維,矩陣Q 為z*n 維,z 代表主題的個數(shù)。則P 矩陣代表了用戶和z 個主題的關(guān)系,Q 矩陣代表了z 個主題和商品之間的關(guān)系。z 個主題具體是什么需要根據(jù)實際情況設(shè)置,一般為一個10~100 以內(nèi)的整數(shù)。矩陣P 的第i 行代表第i 位用戶的全局隱含因子,記為。矩陣Q 的第j行代表第j件商品的全局隱含因子,記為。
通過矩陣P 和矩陣Q 的乘積可以計算出用戶-項目矩陣中的缺失值,這些缺失值即為某一用戶對某一商品的評分值,將評分高的商品推薦給用戶即可。
本文提出的基于門限循環(huán)單元的會話型推薦算法[15]的基本思想是構(gòu)建一個當前會話的隱藏表示,然后基于這個隱藏表示生成當前會話的下一次預(yù)測結(jié)果。混合模型中將對用戶-物品矩陣進行矩陣分解得到的用戶、商品全局因子作為GRU 網(wǎng)絡(luò)的上下文向量并用于隱藏層狀態(tài)的初始化。模型的整體結(jié)構(gòu)如圖2所示。

圖2 推薦模型整體結(jié)構(gòu)示意圖


其中,σ為一種前饋神經(jīng)網(wǎng)絡(luò)。

對于隱藏層狀態(tài)的解碼我們沒有使用傳統(tǒng)的全連接層,因為使用全連接層需要訓(xùn)練的參數(shù)眾多,需要耗費很大的時間和空間。所以在這里我們使用一種雙線性差值法來計算用戶隱藏狀態(tài)和商品隱藏狀態(tài)之間相關(guān)性數(shù)值,然后用softmax 函數(shù)對相關(guān)性數(shù)值進行歸一化得到最終評分。計算相關(guān)性的公式如下所示:

其中W 是一個雙線性插值法的參數(shù)矩陣,W 矩陣的維度遠遠小于使用全連接層作為隱藏層狀態(tài)解碼器的矩陣維度。
最終的相關(guān)性評分Score(i,j)計算公式為

將用戶i 對各個商品的相關(guān)性評分進行排序,將得分高的相關(guān)商品推薦給用戶。
實驗環(huán)境:編譯工具Python 3.6.2,操作系統(tǒng)Windows7,處理器Intel(R)Core(TM)i5-3337U,主頻1.8GHz,運行內(nèi)存16G,硬盤容量1T。
實驗數(shù)據(jù)集:RecSys 2015 YOOCHOOSE 數(shù)據(jù)集和CIKM Cup 2016的DIGINETICA 數(shù)據(jù)集。選取兩個數(shù)據(jù)集中的點擊流歷史數(shù)據(jù),過濾掉其中被點擊次數(shù)小于6 的商品和點擊流長度小于3 的會話。過濾后,YOOCHOOSE 數(shù)據(jù)集保留了6174930 條會話和30817 件商品,DIGINETICA 數(shù)據(jù)集保留了188317條會話和38523件商品。
1)Recall(召回率)
該指標用來表示用戶真實點擊的商品數(shù)占推薦物品個數(shù)的比例[16]。該指標不考慮推薦列表中商品的順序,即只要出現(xiàn)在推薦列表中即可。Recall的計算公式如下所示:

其中TP和FN的具體含義如表1所示。

表1 預(yù)測結(jié)果與真實情況的誤差矩陣
2)MRR(平均倒數(shù)排名)
平均倒數(shù)排名是推薦領(lǐng)域常見的評價機制,如果第一個結(jié)果匹配則分數(shù)為1,如果n 個結(jié)果匹配則分數(shù)為1/n,如果點擊的商品沒有出現(xiàn)在推薦列表中則值為0。最后將所有匹配的結(jié)果分數(shù)值加起來求均值即可。MRR 的值越大說明更多排名靠前推薦結(jié)果被用戶點擊、推薦結(jié)果越符合用戶的需求。平均倒數(shù)排名的計算公式如下所示:

其中,Q為樣本集合,ranki為i在集合中的排名。
我們將本文提出的基于GRU 網(wǎng)絡(luò)的會話型混合推薦模型(HGRU)與幾種流行的推薦性算法進行對比。分別為POP、Session-POP、GRU-Rec、Improved GRU-Rec。
POP 算法的原理是將整個訓(xùn)練集中出現(xiàn)頻率最高的商品推薦給用戶,這種基于流行度的算法原理比較簡單,但很多時候也能取得不錯的推薦效果。
Session-POP 算法的原理是將當前會話情境下最受歡迎的商品推薦給用戶。
GRU-Rec算法[17]是一種利用GRU網(wǎng)絡(luò)訓(xùn)練序列化數(shù)據(jù)的推薦算法模型,該模型使用了并行計算和優(yōu)化隨機負采樣方式的策略。
Improved GRU-Rec 算 法[18]是Y.K.Tan 等 提 出的一種在GRU-Rec 基礎(chǔ)上改進的會話型推薦算法,該算法使用了數(shù)據(jù)增強等方式使得模型的表現(xiàn)有顯著提高。
HGRU 和四個對比算法在YOOCHOOSE 數(shù)據(jù)集和DIGINETICA 數(shù)據(jù)集上的實驗結(jié)果如表2 所示,推薦列表中商品的個數(shù)設(shè)置為20。
從表2的實驗結(jié)果對比圖中可以看出:

表2 HGRU與其他算法的實驗結(jié)果對比
1)總體來說基于GRU 網(wǎng)絡(luò)的推薦算法效果要明顯好于兩種基于流行度推薦算法。基于時間序列的會話型推薦算法效果明顯更好。
2)S-POP 算法由于考慮了當前會話的上下文情況,選擇當前會話有關(guān)的熱門商品進行推薦,推薦效果與POP算法比有明顯改善。
3)Improved GRU-Rec 算法在Recall 和MRR 兩個指標上都要優(yōu)于GRU-Rec算法。
4)由實驗結(jié)果可以看出HGRU 算法比Improved GRU-Rec 在兩個評價指標上都有所提高,特別是通過MRR 指標可以看出HGRU 算法推薦的結(jié)果中,用戶真實點擊的物品是在列表中比較靠前的。這也從側(cè)面印證了該算法確實正確捕捉了用戶當前的主要意圖。
將HGRU 算法與目前相關(guān)領(lǐng)域比較受歡迎的Improved GRU-Rec 算法在推薦列表個數(shù)變化的情況下,對比兩種算法在Recall 和MRR 兩個指標在DIGINETICA 數(shù)據(jù)集上的表現(xiàn)情況,Recall 指標的對比結(jié)果如圖3所示。

圖3 DIGINETICA數(shù)據(jù)集上兩種算法Recall對比圖
兩種算法在DIGINETICA 數(shù)據(jù)集上的MRR 指標的對比結(jié)果如圖4所示。

圖4 DIGINETICA數(shù)據(jù)集上兩種算法MRR對比圖
通過圖3 的實驗結(jié)果可以看出:在DIGINETICA數(shù)據(jù)集上,HGRU算法的Recall指標效果總體上都要好于Improved GRU-Rec 算法。通過圖4 的折線圖可以看出HGRU算法不僅提高了召回率,在平均倒數(shù)排名這個指標上比起Improved GRU-Rec 算法也有明顯的提升。
由于HGRU 中使用了注意力機制來獲取用戶的主要意圖,所以接下來我們將沒有使用注意力機制的情況(記為HGRU-WA)與HGRU 算法進行對比。
HGRU-WA 算法仍然保留了矩陣分解得到的全局因素作為GRU 網(wǎng)絡(luò)中計算隱藏層節(jié)點的額外輸入,只不過使用的是全部的全局因素。
在YOOCHOOSE 數(shù)據(jù)集和DIGINETICA 數(shù)據(jù)集上對HGRU 算法與HGRU-WA 算法進行對比實驗,實驗結(jié)果如表3所示。

表3 HGRU與HGRU-WA算法的實驗結(jié)果對比
通過表3的結(jié)果可以得到如下結(jié)論:
1)HGRU 算法和HGRU-WA 算法在兩個數(shù)據(jù)集上的運行效果差距是非常明顯的,使用了注意力機制的運行效果要明顯好于沒有使用注意力機制的情況。
2)HGRU-WA 算法的效果雖然相對差了一些,但由于該算法也同時考慮了用戶全局因素和當前的短期偏好,效果比起傳統(tǒng)的流行度算法比如POP、S-POP等還是有一個明顯的提升。
本文針對電商個性化推薦算法領(lǐng)域中傳統(tǒng)會話型推薦算法缺乏對用戶長期信息的考察、未能識別用戶當前主要購買意圖、模型訓(xùn)練參數(shù)眾多且需要占用大量的空間和時間等問題,提出了一種結(jié)合了循環(huán)神經(jīng)網(wǎng)絡(luò)和矩陣分解的HGRU 算法模型。該算法中循環(huán)神經(jīng)網(wǎng)絡(luò)部分系采用了GRU 網(wǎng)絡(luò)。GRU 網(wǎng)絡(luò)可以通過用戶的序列化操作判斷出用戶的短期興趣。矩陣分解算法在模型中起到提供全局因素的作用,通過注意力機制可以將全局因素賦予不同的權(quán)重用于GRU 網(wǎng)絡(luò)中隱藏層的計算。注意力機制用于判斷用戶的主要購買意圖、忽略無關(guān)的操作以提高推薦效果。