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