劉浩翰 呂 鑫 李建伏
(中國民航大學計算機科學與技術學院 天津 300300)
在Web應用中,會話是指一個終端用戶與服務器端進行通信的過程。會話中記錄了用戶的瀏覽點擊行為,該行為包含了用戶的興趣偏好?;跁挼耐扑]系統的目的是根據會話中所包含的用戶的點擊序列記錄挖掘用戶的興趣偏好,為用戶推薦其下一步可能感興趣的物品。現有的基于會話的推薦系統主要分為以下兩大類:
第一類是基于傳統方法的會話推薦系統,其基本思路是基于馬爾可夫鏈建模用戶的序列行為。如Shani等[1]提出了一種基于馬爾可夫決策過程的會話推薦系統。Zimdars等[2]在馬爾可夫鏈的基礎上,提出利用概率決策樹模型提取序列模式。Chen等[3]將播放列表作為馬爾可夫鏈,提出利用潛在馬爾可夫嵌入來學習歌曲的表示,用來解決音樂播放列表推薦問題。雖然理論上基于馬爾可夫鏈的方法可以很好地建模用戶的序列行為,但是當組成序列的物品集和產生序列的用戶集足夠大時,馬爾可夫鏈所需的狀態(tài)空間會非常大,且狀態(tài)空間將迅速變得難以控制。此外,由于馬爾可夫鏈建模時默認下一狀態(tài)的概率分布只與當前狀態(tài)有關,使其無法很好地解決用戶行為間的長期依賴關系。
第二類是基于深度學習的會話型推薦系統。伴隨著RNN在自然語言處理、語音識別和圖像理解等領域中的成功應用,RNN因其處理序列數據的能力而得到了人們的關注。Hidasi等[4]首次將RNN成功應用在了基于會話的推薦系統中。Tan等[5]通過數據增強技術和特權信息方法改進了Hidasi等的工作。Zhang等[6]也提出利用RNN建模用戶的序列點擊行為。雖然以上研究都表明RNN能很好地對用戶的序列行為進行建模,但是會話記錄不同于一般的行為序列,除了包括用戶的序列行為之外,其還有兩個重要的特征:第一個特征是用戶行為之間有時間間隔,并且行為之間的時間間隔對用戶行為之間的聯系有非常重要的影響[7];第二個特征是用戶行為序列中往往包含很多無目的點擊行為[8],這些無關的點擊行為產生的噪聲數據模糊了用戶的主要意圖,從而影響到推薦結果的質量。
針對會話數據的以上兩個特征,人們分別開展了相關研究。
(1) 針對行為間的時間間隔問題,Sheil等[8]提出了Time-LSTM模型,其在標準的LSTM[9]中加入了類似于LSTM中門結構的兩個時間門T1和T2,用來單獨處理用戶點擊序列的時間間隔信息。Liu等[10]將用戶的行為分為多種類型,利用RNN和log雙線性模型分別建模用戶多種行為之間的長期依賴關系和短期情景信息。通過將log雙線性中的特定位置轉移矩陣替換為時間特定的轉移矩陣,用來捕獲時差信息在用戶行為歷史中的影響,從而得到了一個時間感知的循環(huán)log雙線性模型。Zhou等[11]提出了用戶微動作及其持續(xù)時間對用戶行為的影響。
(2) 在用戶意圖方面,主要是利用注意力機制來消除用戶無目的點擊行為對捕獲用戶當前主要意圖的影響。深度學習的注意力機制借鑒了人類視覺的注意力機制,其任務就是從眾多信息中找到對目標貢獻最高的關鍵信息。Li等[12]通過一個混合的編碼器同時建模用戶的序列行為特征和用戶意圖。Liu等[13]提出利用用戶1至t時刻的隱狀態(tài)的均值、目標項目的向量表示、t時刻的隱狀態(tài)來計算注意力機制的權重系數。最后根據權重計算用戶最終的隱狀態(tài)。
針對會話序列的兩個特征,人們已經分別開展了相關研究,但是還沒有出現能同時考慮兩個特征的相關研究。本文同時考慮了時間間隔和用戶主要意圖的影響,提出一個新的基于會話的推薦系統(Time-Aware Attentive Session-based Recommendation,TASR)。TASR為編碼器-解碼器結構。其中,編碼器融合了現有的Time-LSTM和注意力機制,利用Time-LSTM建模時間間隔對用戶行為的影響,采用注意力機制捕獲用戶的主要意圖。最后兩者的輸出被拼接起來作為一個統一的會話表示,解碼器根據該表示進行推薦。
Time-LSTM一共有三個變種,依次為:只有一個時間門的Time-LSTM1以及有兩個時間門的Time-LSTM2和Time-LSTM3。與Time-LSTM1相比后兩種提高了算法的效果。Time-LSTM2和Time-LSTM3的時間門結構相同,但是Time-LSTM3在不影響算法效果的前提下,采取耦合輸入和遺忘門的方式減少了模型的參數。所以本文采用第三個變種。除非特別說明,下文中的Time-LSTM均指其第三個變種。Time-LSTM模型是在標準LSTM的基礎上提出的。在LSTM中,每個細胞Cm包含了輸入門im、遺忘門fm、輸出門om。這些門機制采用了一定的策略來控制舊信息的丟棄與新信息的更新。即在當前細胞中,遺忘門控制舊信息的遺忘程度;輸入門控制新信息的接受程度;輸出門控制了當前時刻下,細胞狀態(tài)的值有多少是可輸出的。
Time-LSTM借鑒LSTM的門機制,在LSTM的基礎上增加兩個時間門T1和T2,以實現時間間隔對用戶當前行為和長期行為的影響的建模。其中T1根據當前行為與上一次行為之間的時間間隔的大小動態(tài)地計算當前用戶行為對接下來推薦的影響,如式(1)所示。時間門T2用來計算時間間隔對用戶行為的長期影響,如式(2)所示。
σc(xmWxc+hm-1Whc+bc)
(1)
cm=(1-im)⊙cm-1+im⊙T2m⊙
σc(xmWxc+hm-1Whc+bc)
(2)
im=σi(xmWxi+hm-1Whi+wci⊙cm-1+bi)
(3)
(4)
(5)
T1m=σ1(xmWx1+σΔt(ΔtmWt1)+b1)
(6)
s.t.Wt1≤0
T2m=σ2(xmWx2+σΔt(ΔtmWt2)+b2)
(7)
式中:Δtm是時間間隔;σΔt、σ1和σ2是Sigmoid激活函數。可以看出,當Δtm變小時,時間門T1m的值變大,放大了xm對當前預測的影響,即更能體現時間間隔對當前行為的影響;當Δtm變大,則T1m變小,xm的影響變小進而Cm-1的影響變大,即在不確定短期影響的時候,就增加長期的影響。由式(2)可以看出,T2m首先存儲Δtm的影響,然后將其傳遞到Cm,Cm+1,…的更新當中,以便計算時間間隔對用戶以后行為的長期影響。
編碼器-解碼器結構最初在機器翻譯領域使用,由Cho等[14]提出。隨著編碼器-解碼器結構在各領域的應用,它已發(fā)展為深度學習中用來解決序列到序列問題的通用模型,例如Ren等[15]以及Shang等[16]的應用。序列到序列問題為給定序列X,通過已知模型來獲得目標序列Y的問題。在基于會話的推薦問題中,序列X指輸入的用戶點擊序列;序列Y為用戶接下來可能點擊的物品排序列表。
編碼器將給定變長序列X編碼為一個固定長度的中間向量。然后解碼器利用該中間向量和已知的目標序列Y,使產生目標序列的概率最大化即損失函數最小化,來學習到從序列X到目標序列Y的映射關系。
但是,編碼器-解碼器結構存在一定的問題。Bahdanau等[17]指出該結構的中間向量不能很好地表示出較長序列的全部特征。其次,當前輸入的序列項會在一定程度上覆蓋以往輸入序列項的信息,繼而造成一定程度的信息丟失。隨著輸入序列長度的增加,該現象將會越來越嚴重。而注意力機制可以有效地解決該問題。
注意力機制可以解決在用戶當前會話中動態(tài)計算用戶當前主要意圖的問題,以及編碼器-解碼器結構中的信息丟失問題。RNN中應用注意力機制[12]的流程如下:給定RNN各時刻的隱狀態(tài)h1,h2,…,ht,在計算t+1時刻的輸出時,注意力機制不僅考慮了ht對t+1時刻輸出的影響,而且考慮了前面1~t之間各時刻的影響。每個時刻對t+1時刻輸出的影響程度由注意力權重系數決定:
(8)
(9)
式中:hi(1≤i≤t)為各時刻的隱狀態(tài);αi為注意力權重系數;f(ht,hi)為計算各時刻隱狀態(tài)相似度的函數,一般為計算兩部分向量的點積或兩部分Cosine相似性;c為各隱狀態(tài)的加權和向量。
TASR的基本思路是利用Time-LSTM建模時間間隔對用戶行為的影響和注意力機制捕獲用戶的主要意圖。TASR采用編碼器和解碼器結構。其中編碼器由兩部分組成,一部分是用戶序列行為編碼器層,用Time-LSTM來編碼用戶的序列行為;另一部分為用戶意圖編碼器層,利用LSTM和注意力機制來編碼用戶意圖。最后,解碼器將兩部分結合起來,從而實現預測。模型的整體框架結構如圖1所示。
圖1 TASR模型整體結構
(1) 序列行為編碼器層:序列行為編碼器層采用Time-LSTM編碼用戶的序列行為。該編碼層的輸出為Time-LSTM最后一個隱狀態(tài)表示hs。
(2) 用戶意圖編碼器層:用戶意圖編碼器層由LSTM和注意力層組成。模型通過LSTM來獲得物品級別的用戶序列行為表示,借用Li等[12]的思想,通過注意力層來學習用戶的主要意圖。計算式為:
ej=vTtanh(A1ht+A2hj)
(10)
(11)
(12)
式中:v、A1和A2為參數矩陣;ht表示由LSTM生成的用戶最后一次點擊的隱狀態(tài)表示;hj表示由LSTM生成的用戶以往點擊的隱狀態(tài)表示。式(10)計算出每個隱狀態(tài)對[ht,hj]之間的相似度ej,式(11)根據這些相似度計算出注意力機制的權重系數αj。最終,根據該系數用式(12)計算出用戶意圖作為編碼器層的輸出。
(3) 特征的拼接:通過將用戶序列行為編碼器的輸出hs與用戶主要意圖編碼器的輸出hatt拼接起來,得到當前會話的一種混合的動態(tài)表示l=[hs,hatt]。解碼器將根據該表示進行解碼。拼接后的向量l既包含了用戶的序列行為特征,也可以體現出用戶意圖。
解碼器層由全連接層和Softmax層組成,該層利用[hs,hatt]得到一個物品推薦列表。列表中的物品根據其接下來可能被用戶點擊的概率大小,按照從大到小的順序排列。
TASR模型在訓練時采用的損失函數是交叉熵損失函數,計算式為:
(13)
式中:q表示模型預測結果的概率分布;p表示真實的分布。模型的參數采用AdaGrads算法[18]進行優(yōu)化,該方法是隨機梯度下降算法的一個變種。
(1) Movielens:針對Movielens數據集,本文提取元組(user_id,movie_id,rate,timestamp)。每個元組表示某個用戶user_id在時刻timestamp給電影movie_id打出了評分rate。由于timestamp精確到天,即某個用戶可能在同一天里對多個電影打出了評分。為了方便計算時間間隔,本文只保留了第一個。Movielens將用戶對每部電影的評分(0.5~5.0)離散化為從0到9共10個等級。
(2) LastFM:針對LastFM數據集,本文提取元組(user_id,song_id,timestamp)。每個元組表示某個用戶user_id在時刻timestamp點擊了音樂song_id。由于LastFM數據集本身不包括用戶的評分,因此在實驗中認為該數據集上每個用戶對每首音樂的評分都相同。
以上兩個數據集所包括的用戶數、物品數、用戶物品交互數的統計數據如表1所示。針對每個數據集,本文隨機選取其中的80%作為訓練集,余下的20%作為測試集。
表1 數據集統計表
針對TASR模型,物品的表示采取獨熱編碼,限制個數為5 000,將超出范圍的物品從用戶點擊序列中去除;初始學習率為0.01;將長度超過50的序列截斷為50;隱藏層編碼長度設定為128;mini-batch的大小固定為10;模型迭代次數為30。
實驗環(huán)境:操作系統是Ubuntu 16.4;模型框架由基于Theano的Lasagne實現;編程語言是Python2.7。
為了評價模型的效果,實驗采用了兩個評價指標召回率和平均倒數排名:
(1) 召回率(Recall):把每一個需要預測的目標物品(真實值)都與其他隨機的100個物品混合在一起。然后將這101個物品按照本文提出的模型進行排序,選取排名前十的物品生成推薦列表。計算式為:
(14)
式中:nhit為推薦列表中出現目標物品的次數;ntestcase為總的測試次數。
(2) 平均倒數排名(MRR)是推薦列表中目標物品的排名倒數的均值。它可以體現目標物品在推薦列表中的排名。當目標物品在推薦列表中的排名超過10時,其值將設置為0。計算式為:
(15)
式中:|Q|是推薦的次數;ranki是對于第i次推薦時,推薦列表中第一個在真實值結果中的物品的排名。
實驗從兩個角度展開:其一將TASR與現有的其他推薦方法進行了詳細對比;其二在不同編碼特征、不同會話長度的條件下,討論了TASR在同時考慮時間間隔和用戶意圖時的優(yōu)勢。具體對比方法如下:
(1) LSTM。一種基于LSTM的推薦方法。該方法在利用LSTM進行推薦時僅考慮了用戶的點擊序列,沒有時間間隔信息。
(2) Time-LSTM。指Sheil等[8]提出的Time-LSTM模型。此時考慮用戶點擊序列的同時,也考慮了時間間隔信息。
(3) Att-LSTM_T。指利用LSTM和注意力機制進行推薦的方法。在推薦時考慮用戶點擊序列、時間間隔和用戶意圖。但是,時間間隔信息拼接在用戶點擊序列后由LSTM來計算,且同時采用注意力機制計算用戶意圖。
(4) Att-LSTM。指利用LSTM和注意力機制進行推薦的方法。在推薦時僅考慮用戶點擊序列和用戶主要意圖,沒有時間間隔信息。
(5) NARM。指Li等[12]提出的通過一個混合的編碼器同時建模用戶的序列行為特征和主要意圖的推薦方法。但是,該方法沒有考慮用戶時間間隔。
3.4.1TASR與其他算法對比
TASR與當前四種不同方法在兩個數據集上的實驗結果如表2所示。因為實驗環(huán)境的硬件條件限制,表2中NARM的實驗結果來自Ren等[19]的實驗。
表2 五種不同方法在兩個數據集上的實驗結果對比
續(xù)表2
在與其他算法對比時,TASR、Time-LSTM和Att-LSTM_T的隱狀態(tài)編碼長度設為128。LSTM的隱狀態(tài)編碼長度設為512。所有算法訓練時都將序列最大長度限制為50,mini-batch固定為10,迭代次數設置為30。
由表2可以得到如下結論:
(1) 在LastFM和Movielens兩個數據集上,TASR在Recall@10和MRR@10這兩個指標上的實驗結果都是最好的。其中在LastFM數據集上,TASR比沒有考慮用戶時間間隔的NARM的Recall@10高出了0.18左右、比MRR@10高出了0.12左右;并且TASR比沒有考慮用戶意圖的Time-LSTM在兩個數據集的兩個評價指標上都有提高,基本提高0.03以上。這說明本文提出的同時考慮時間間隔和用戶意圖的必要性。
(2) 在Movielens數據集中,采用Time-LSTM作為用戶序列行為編碼器即TASR,比采用LSTM作為用戶序列行為編碼器的Att-LSTM_T在MRR@10上提高了0.11左右。這說明序列行為編碼器中,不同的時間間隔計算方式產生的效果也不同。
3.4.2編碼長度以及會話長度對TASR的影響
(1) 不同隱狀態(tài)編碼長度的實驗效果對比。不同的隱狀態(tài)編碼長度在LastFM數據集上的實驗結果見表3??梢钥闯?,TASR在隱狀態(tài)編碼長度為64及128時都取得了最好的實驗結果。
表3 LastFM數據集上不同隱狀態(tài)編碼長度的實驗結果對比
Time-LSTM以及Att-LSTM方法在編碼為64時比編碼128時實驗結果相差0.03~0.06。而TASR在這兩種編碼條件下的實驗結果相差僅在0.004左右。這說明相對于Time-LSTM和Att-LSTM,TASR受編碼長度的影響較小。
(2) 不同會話長度下模型的效果對比。本節(jié)對比了在LastFM和Movielens數據集上、不同序列長度下TASR、Time-LSTM、LSTM三種算法,實驗結果如圖2和圖3所示。
圖2 LastFM數據集上不同序列長度的對比實驗
圖3 Movielens數據集上不同序列長度的對比實驗
通過圖2和圖3可以得到以下結論:
(1) TASR在較短(長度為10以內)以及較長(長度為25以上)的用戶行為序列條件下都取得了最好的實驗結果。說明TASR在較短及較長的用戶行為序列中都可以捕捉到用戶意圖。由于LSTM沒有考慮時間間隔和用戶意圖,所以其在兩個數據集下的實驗結果都不太好。
(2) 以圖3為例,當用戶序列行為長度在10~20時,考慮了用戶意圖的TASR的預測效果比沒有考慮用戶意圖的Time-LSTM的預測效果提高了13%左右。而當用戶序列行為的長度超過25時,TASR比Time-LSTM的預測效果僅提高了5%左右,模型的優(yōu)勢減弱。本文分析認為:隨著用戶序列行為長度的增加,用戶無意圖行為可能越來越多。用戶意圖更發(fā)散,則用戶的意圖不能被很好地捕捉。所以當用戶的序列行為長度超過一定限度時,模型的優(yōu)勢開始不明顯。
(3) 對比圖2和圖3可知,TASR在Movielens數據集上的實驗結果比其在LastFM上的結果要好一些。本文認為其原因在于,一方面LastFM數據集中用戶的點擊序列整體比Movielens中長;另一方面在模型的計算中,Movielens考慮了用戶評價而LastFM沒有考慮。
本文提出一個基于深度學習的網絡模型。該模型在建模用戶序列行為時,能同時考慮到用戶動作間的時間間隔和用戶意圖對用戶行為的影響。TASR利用Time-LSTM建模時間間隔對用戶行為的影響和注意力機制捕獲用戶的主要意圖,在提高用戶行為預測的效果中起到了重要的作用。