徐紅艷,黨依銘,馮 勇,王嶸冰
(遼寧大學 信息學院,遼寧 沈陽 110036)
隨著互聯網的快速發展和廣泛應用,信息的爆炸性增長使人們為做出合理的選擇需要投入更多的時間和精力。個性化推薦系統作為處理信息過載的有效工具,一直倍受學界和業界的關注。大型電商平臺的推薦系統既能準確預測用戶的偏好,又能快速響應用戶當前的需求,而傳統的協同過濾推薦和基于內容的推薦等模型[1]主要根據用戶的訪問記錄計算用戶間的相似度,為用戶尋找近鄰用戶,利用近鄰用戶的偏好預測目標用戶的偏好進行推薦。這些推薦模型主要對靜態用戶交互進行建模,而未考慮到用戶對項目的交互順序,因此不能很好地發掘用戶歷史行為序列中的動態興趣變化。基于序列的推薦模型對用戶歷史行為序列進行建模,能夠同時捕捉到用戶即時的短期興趣與穩定的長期興趣,反映出用戶在一段時間內的興趣變化,相較于傳統推薦模型可以提高推薦結果的多樣性,更加符合用戶的需求。
為了更好地利用歷史行為序列中的時間信息,建模用戶動態興趣變化,有學者使用不同的時序預測和時間感知預測方法對用戶興趣進行建模。循環神經網絡(Recurrent Neural Network,RNN)能夠很好地處理序列化數據,在提取信息時保留足夠的歷史信息[2-4],因此在對用戶興趣偏好的挖掘上起到了比較良好的輔助效果。Li等人[5]提出了BINN模型,分別使用基于用戶交互的神經項目嵌入方法和基于LSTM的判別行為模型學習目標用戶穩定的長期興趣與當前的短期興趣。YouTube[6]使用深度神經網絡(DNN)對用戶和項目的特征分別學習其嵌入向量,然后對項目向量基于用戶搜索最近鄰項獲得推薦結果。這些對歷史行為序列的分析和建模在一定程度上緩解了推薦結果同質性的問題,但用戶的興趣在短時間內可能會發生較大變化,如何及時、準確地捕捉用戶行為序列中的動態興趣變化以提升電商平臺的用戶體驗,是當前亟待解決的難點問題。
基于上述分析,該文考慮到用戶歷史行為序列中不同時間間隔下的動態興趣變化,在短期興趣建模中加入時間信息,提出了融合時間信息的序列商品推薦模型(Sequential Product Recommendation Model Integrating Time Information,SPRTI)。首先,為了明確用戶的興趣變化節點,將歷史行為序列以會話為單位,區分用戶的短期行為序列與長期行為序列;然后,在傳統的門控循環單元結構(Gated Recurrent Unit,GRU)[7]中加入時間信息,建模不同時間間隔對用戶興趣變化的影響,并利用多頭自注意力機制(Multi-Head Self-attention)[8]捕捉用戶不同的興趣傾向,獲得用戶的短期興趣表示。對于用戶的長期行為采用DeepFM網絡[9]獲得長期興趣表示;最后,通過自適應門控結構融合用戶的長短期興趣,應用sigmoid函數進行評分預測,選擇top-N方法推薦評分靠前的商品。為了驗證模型的有效性,在淘寶數據集上進行了對比實驗。相較于基準模型,提出的模型在命中率、平均倒數排名兩個指標上都明顯優于基準模型。
基于序列的推薦的目的是對用戶的偏好進行建模,并根據觀察到的用戶的歷史行為,以基于序列的方式預測用戶未來的行為,如下次點擊或購買。在早期的工作中,使用基于馬爾可夫鏈(MC)的模型進行序列推薦。基于馬爾可夫鏈的模型是基于之前的行為學習轉移矩陣進行推薦。Rendle等[10]提出的分解個性化馬爾可夫鏈(FPMC)將轉移矩陣分解為兩個潛在的和低秩的子矩陣,以此提高推薦的準確率。Mcauley等[11]提出了基于物品相似模型的分解序列預測方法,對已有物品的潛在表示進行加權和聚合,將基于馬爾可夫鏈的方法推廣到高階。最近,神經網絡在序列建模中也取得了不錯的效果,王娜等[12]利用深度神經網絡詞向量模型分析用戶播放視頻行為序列,提取視頻的特征向量,對歷史視頻進行聚類計算相似度,得到視頻推薦結果。葛堯等[13]使用圖卷積網絡(Graph Convolution Network,GCN),同時利用用戶與項目之間的異質頂點交互信息和同質頂點交互信息,挖掘交互圖譜中的連接信息。但這些研究沒有很好地考慮到歷史行為序列中隱藏的用戶動態偏好,因此,該文分別建模用戶的長短期興趣,在項目匹配階段獲得更準確的結果。
用戶的興趣會隨著時間的改變動態變化。通常來說,用戶興趣可以分為易變的短期興趣和穩定的長期興趣。在某個時間段內,短期興趣與用戶的當前選擇有著密切的聯系,用戶興趣中穩定的長期興趣也反映了用戶在過去較長時間的總體偏好。實際上,用戶的長短期興趣僅代表了不同上下文環境下用戶關注點的偏移,分別建模長短期興趣能夠利用不同類型的用戶輸入,獲取更全面的用戶興趣。因此,如何提取用戶的長短期興趣并將其有效地融合是研究的重點。蔣武軒等[14]采用時間窗口的方法挖掘用戶短期興趣,利用遺忘曲線跟蹤用戶長期興趣變化,在此基礎上對用戶進行聚類,根據聚類結果為用戶推薦興趣相似用戶。為了在建模時取得更好的效果,許多研究者在開發推薦模型時引入了具有強大表征能力的深度神經網絡。Hu L等人[15]提出了一個異質圖神經網絡編碼用戶、新聞和主題之間的高階關系,同時設計了一個融合注意力的LSTM模型基于最近的閱讀歷史來建模用戶的短期興趣。馮永等[16]利用攜帶歷史元素的循環神經網絡(RNN)和基于前饋神經網絡(FNN)的協調過濾模型分別建模用戶的長短期興趣進行動態推薦。Ma C等[17]提出了一種內存增強圖神經網絡MA-GNN,利用圖神經網絡對短期項目進行建模,然后使用共享內存網絡捕捉項目之間的長期依賴關系,同時采用雙線性函數來捕獲相關項目的共現模式。Qi等[18]設計了一個新的模型,在用戶行為序列長度增加的情況下建模用戶的長期興趣,首先利用候選商品查詢相關行為序列,然后建模相關序列和候選商品的準確關系。
上述研究考慮到了最新的項目比以往的項目對用戶當前行為具有更大的影響,但無法很好地建模用戶在短期內劇烈變化的偏好特征,并忽略了用戶在購買商品時會綜合考慮許多不同的因素。因此,該文提出了SPRTI模型,通過改進的GRU模型融合注意力機制捕捉更符合用戶偏好的會話意圖,使預測結果更符合用戶當前的購買需求。
用戶在使用在線購物服務時,對項目進行的各種點擊、購買、收藏等交互行為構成了用戶歷史行為序列,歷史行為序列中包含了用戶在購買時的上下文信息,隱含了用戶在某一時間點的興趣及其變化過程。SPRTI模型根據用戶的歷史行為序列,分別提取用戶的長短期興趣特征,預測用戶對項目的評分生成推薦結果。模型框架如圖1所示,具體分為三部分:第一部分為短期興趣建模,首先通過一定的規則將歷史行為序列劃分為不同的會話,并使用會話內項目的Embedding特征向量來表示會話,其中將最新會話視為用戶的短期行為,提取短期興趣,在GRU結構中加入時間門單獨處理用戶不同行為之間的時間間隔,同時加入多頭自注意力機制獲取用戶意圖背后多個不同的關注點;第二部分為長期興趣建模,將用戶的歷史會話序列視為長期行為,使用DeepFM模型進行處理;第三部分為評分預測,通過自適應門控單元結合用戶的長短期興趣,根據融合后的用戶長短期興趣向量與目標項目向量預測候選項目的評分,選擇topN項進行推薦。下面對模型中核心環節分別進行詳細描述。

圖1 SPRTI模型整體架構
在實際的購物場景中,用戶的行為序列中隱含著用戶興趣,對行為序列的建模也能反映出用戶興趣的動態變化。用戶的各種決策行為不僅與當前的興趣有關,也與用戶的歷史興趣有關,并且通常認為用戶在短期會話內的興趣會對當前決策產生更大的貢獻。傳統的基于序列的推薦通常采用基于統計學的方法建模依賴關系,缺乏復雜環境下的建模能力。
考慮到循環神經網絡(RNN)在處理序列時能夠保留前項的歷史信息,在處理序列數據時能起到更好的效果,該文采用門控循環單元(GRU)建模短期行為。GRU網絡包括更新門和重置門,具體計算過程如公式(1)~公式(4)所示[7]。
zt=σ(xtUz+ht-1Wz)
(1)
rt=σ(xtUr+ht-1Wr)
(2)
ht=tanh(xtUh+(st-1⊙rt)Wh)
(3)
st=(1-zt)⊙st-1+zt⊙ht
(4)
其中,σ表示sigmoid激活函數,zt為更新門,rt為重置門,⊙表示向量的點積,xt表示GRU網絡的輸入,表示用戶在t時刻歷史行為序列的嵌入向量,ht為當前時刻的候選隱藏狀態,最后輸出st代表用戶t時刻的偏好狀態。
但在建模序列的過程中,傳統的RNN模型及其變體通常將用戶行為序列中的項目視為均勻分布的順序序列,忽略了在實際購物場景中,用戶的不同交互行為之間存在著不同的時間間隔,短時間內用戶的交互可能代表了相同的購買意向,經過比較大的時間間隔后用戶的興趣可能已經發生了轉移,這些時間信息對于建模用戶的動態興趣也是十分重要的。為了解決這一問題,該文在GRU模型中加入時間門單獨存儲時間間隔信息,對于模型的影響,使用改進后的GRU模型建模短期行為來捕獲短期序列中的全局時間關聯性。融合時間信息的門控單元網絡如圖2所示,時間門控單元以及改進后的隱藏狀態計算過程如公式(5)~公式(7)所示。

圖2 融合時間間隔的門控循環單元結構
Tm=σ(xtUt+σ(ΔtWt)+b)
(5)
ht=tanh(xtUh+(st-1⊙rt⊙Tm)Wh)
(6)
st=(1-zt)⊙st-1+zt⊙ht
(7)
其中,Δt為歷史行為與當前時刻的時間間隔,Wt,Wh∈Rnh且Wt≤0,Tm表示時間門,用于存儲時間間隔對模型造成的影響。顯然,公式(5)為單調遞減函數,隨著時間間隔的增大,函數值會減小,這就保證時間間隔較小時Tm輸出比較大的值,時間間隔較大時Tm輸出比較小的值,為更近的歷史行為賦予了更大的權重。
一般來說,用戶在單個會話內的興趣較為穩定,不同會話之間的興趣漂移比較明顯。但是即使是在同一個會話內,也可能會產生用戶興趣漂移,比如用戶在一段時間內對衣服感興趣,另一段時間可能又對日用品感興趣,而這兩種項目類型所代表的用戶興趣是完全不同的,且不同的歷史興趣對于當前意圖的影響也是完全不同的。因此,要想從用戶的行為中更精準地捕捉相對隨機且無序的用戶興趣,除了考慮用戶行為隨時間演化的變化規律,捕捉項目之間存在的意圖距離也能有效地從復雜的綜合序列中提取與用戶當前需求相關的用戶興趣。除此之外,在實際購物場景中,用戶通常會隨機點擊一些與當前會話內興趣無關的商品,這些隨機點擊的商品在一定程度上也會影響對短期興趣的建模。
該文采用自注意力機制調整每個分量的權重,決定哪些歷史即時興趣應該被重點關注,同時降低隨機點擊造成的影響。考慮到用戶的點擊行為背后可能會包含不同的興趣點,如商品的價格、品牌、店鋪等,單一的注意力機制無法對多個方面進行表征,因此,該文引入多頭自注意力機制[8],更好地建模短期序列,并盡可能保留與用戶興趣相關的點擊。
多頭自注意力網絡對原始的Q、K、V矩陣進行線性變換,分成不同的注意頭,每個head單獨進行點積操作,得到的結果拼接后進行線性變換,獲得最終輸出。計算過程如公式(8)~公式(9)所示[19]。

(8)
(9)

(10)
則注意頭的計算可以通過公式(11)實現:
(11)
針對不同的用戶,每個會話中的即時興趣序列對用戶短期興趣的貢獻也不盡相同,因此在自注意力網絡的基礎上,使用用戶的嵌入向量作為查詢向量來進一步挖掘用戶的短期興趣表示。計算過程如公式(12)~公式(13)所示。
(12)
(13)
其中,eu為用戶的嵌入表示,αk為權重分數,pshort為用戶的短期興趣表示。
在較短的用戶行為周期序列中,用戶的興趣會發生劇烈的變化,所以基于短期偏好的推薦效果比較明顯。但從長遠來看,用戶長久以來的穩定偏好也會影響當前的決策。例如,如果一個用戶是游戲愛好者,他可能會點擊或者購買大量主機游戲相關條目。當他選擇購買電腦時,高性能的游戲本會比普通的輕薄筆記本更吸引他。因此,該文將歷史會話序列視為用戶的長期行為,采用DeepFM模型提取用戶穩定的長期興趣。
如圖3所示,DeepFM模型分為FM和Deep兩部分,FM層可以抽取低維特征,Deep層抽取學習高維特征,而這兩部分的分量共享相同的原始特征向量。因此DeepFM模型能夠結合廣度和深度模型的優點,同時學習到各階特征之間的組合關系。

圖3 DeepFM架構
首先,將用戶的長期行為序列經過嵌入層得到低維稠密向量,將稠密向量進行橫向拼接,作為FM層和Deep層的輸入。
FM層即因子分解機,不僅可以建模1階特征,還可以通過隱向量點積的方法高效地獲得2階特征交互。Deep層為前饋神經網絡,通過幾層全連接計算學習高階交互表述,DeepFM的計算過程如公式(14)~公式(16)所示[9]:
(14)
al+1=σ(Wlal+bl)
(15)
LDNN=σ(W|H|+1·aH+bH+1)
(16)
其中,Vi為特征i的潛在向量,FM層的輸出分為一階計算和二階計算兩部分,一階計算為原始特征的線性交互,二階計算部分對經過embedding的結果做二階交叉計算。al為前饋神經網絡的第l層輸出結果,經過H個隱藏層,得到Deep部分的預測結果LDNN。
將FM部分的結果和Deep部分的結果累加,之后再經過sigmoid非線性轉換,得到用戶的長期興趣表示,如公式(17)所示[9]。
plong=sigmoid(LFM+LDNN)
(17)
基于上述兩種神經網絡得到了用戶的短期興趣表征和長期興趣表征,在實際推薦中,長期興趣和短期興趣對用戶當前需求的影響會隨著不同的環境因素發生變化。一些推薦方法通過時間衰減函數控制這兩種表征對用戶興趣的貢獻程度,但這種方法會導致短期興趣的影響遠遠大于長期興趣,從而造成推薦結果的同質性。為了更好地表征用戶的興趣向量,該文通過一個自適應的門控網絡將這兩種表征進行結合,門控單元Gt用于控制在當前時間t下長短期興趣的貢獻度。如公式(18)~公式(19)所示[20]:
Gt=sigmoid(W1eu+W2pshort+W3plong+b)
(18)
pu=(1-Gt)⊙plong+Gt⊙pshort
(19)
其中,eu為用戶的嵌入表示,plong和pshort分別為用戶的長期興趣和短期興趣,W為權重矩陣,⊙為元素的點積操作,pu為最終的用戶長短期興趣向量表示。
根據融合后的用戶長短期興趣向量與目標項目向量預測候選項目的評分,選擇topN項進行推薦,如公式(20)所示。
(20)
其中,ei為目標項目的嵌入向量表征。
該文將評分數據采用交叉熵損失函數作為目標函數進行訓練,通過隨機梯度下降算法(SGD)優化目標函數直至收斂,如公式(21)所示。
(21)
其中,N為訓練集的樣本數量,K為抽樣實例集,包括正負樣本,σ為sigmoid函數,將預測評分轉換為相應概率,λ為正則項參數。
為了驗證模型的準確性,選取采集自淘寶App的用戶點擊購買行為數據集進行了對比實驗。數據集中包含了一個月時間內來自50萬個用戶與商品的交互記錄,用戶-商品交互記錄為用戶ID、項目ID、交互類型和時間戳組成的四元組,其中交互類型包括點擊、收藏、加購物車和購買。參照前人的工作經驗[21],在數據集中根據歷史行為數量與交互頻率選取了連續8天內與超過40個項目進行交互的活躍用戶。對于每個用戶,將其前7天的交互數據作為訓練用例,第8天的交互數據作為測試用例,以最大不超過20的會話長度將歷史行為序列劃分為多個不同的會話,其中用戶的每一次最新會話視為短期行為,在此之前的所有行為視為長期行為。訓練集與測試集的統計信息如表1所示。

表1 數據集的基本統計信息
為了驗證模型的有效性,選取Item-based CF、RNN、DNN和BINN模型進行了對比實驗,模型介紹如下。
(1)Item-based CF[1]:基于項目的協同過濾算法,最主要的推薦算法之一,通過生成商品-商品相似度矩陣進行推薦。
(2)RNN[3]:基于循環神經網絡的推薦算法,利用RNN網絡對順序序列進行建模。
(3)DNN[5]:基于深度神經網絡的YouTube視頻推薦算法,將視頻向量與用戶向量連接后反饋給多層前饋神經網絡生成推薦列表。
(4)BINN[4]:采用基于RNN的方法對當前消費動機和歷史行為進行編碼,同時加入了時間刻度信息。
(5)SPRTI:融合時間信息的序列商品推薦模型,即該文提出的模型。
為了評估提出的模型的有效性,使用命中率HR@K(HitRate)和平均倒數排名MRR(Mean Reciprocal Rank)這兩個評價指標進行測試。在模型返回的推薦列表中,選取評分最高的前K個項目作為最終的推薦結果推薦給用戶。
HR@K代表測試結果中被正確推薦的項目在列表前K位的比例,關心的是是否正確推薦了用戶想要的項目,即推薦的準確性。MRR@K主要關心推薦結果對于用戶是否顯眼,MRR通過對推薦列表內項目排名的倒數取平均值來評價推薦順序的質量,這兩個指標的定義如公式(22)~公式(23)所示:
(22)
(23)
其中,N表示測試項目的數目,nhit為推薦列表中推薦正確的商品數量,ranki表示項目在推薦列表中的排名。HR@K和MRR@K的值越大,代表模型的推薦質量越高。
在訓練的過程中,采用學習率為0.001的Adam優化器進行優化,超參數的設置根據驗證集進行調整,對比模型采用對應論文中的默認參數,根據相關實驗結果設置多頭注意力機制的頭數為4。在K取值為5、10、15、20下進行了對比實驗,不同的模型在數據集下的實驗結果如表2和表3所示,SPRTI模型在不同K值下的命中率和平均倒數排名指標均取得了更好的效果。

表2 各個算法在淘寶數據集上命中率對比

表3 各個算法在淘寶數據集上平均倒數排名對比
其中,傳統的協同過濾算法無法建模用戶行為序列,推薦效果并不理想,其他基于深度學習的方法能夠建模更加深層次的特征,在處理序列時表現明顯優于傳統的推薦算法。相較于傳統的RNN和DNN模型,BINN模型同時考慮了用戶長短期興趣的演化,取得了更好的效果。由此可以看出,細分用戶的長短期興趣能夠對用戶的動態興趣進行更精準地建模,使推薦結果更加符合用戶偏好。但由于BINN模型在提取短期興趣時,使用的還是傳統的RNN結構,未能建模用戶在不同時刻下更精準的興趣轉變,因此最終的推薦性能不如提出的SPRTI模型。
在淘寶數據集中,用戶在會話內的交互行為十分頻繁,會話間的行為聯系緊密。頻繁的交互行為使得基于循環神經網絡的模型結構無法區分短期時間內用戶劇烈的興趣變化,而提出的SPRTI模型能夠根據兩次不同交互行為之間的時間間隔確定用戶的購買意圖是否已經發生了轉變,從而建模更加準確的短期興趣表示,因此取得了更好的推薦效果。相較于其他對比模型,SPRTI模型在不同K值下的命中率和平均倒數排名指標中都取得了最好的效果,可以看到當推薦列表長度為15時,在命中率指標上SPRTI模型較BINN模型提升得最高,達到了8百分點;推薦列表長度為20時在平均倒數排名指標上,SPRTI模型較BINN模型有最高提升,達到了5百分點。
在SPRTI模型中,多頭自注意力機制使得短期內用戶的興趣表示更加準確。為了探明注意力頭數對模型性能的影響,在淘寶數據集上進行了驗證,采用命中率HR和平均到數排名MRR這兩個評價指標,實驗設置中只有SPRTI模型注意力頭的數量不同,其他參數保持一致,實驗結果如圖4所示。從圖4中可以看到,開始時隨著注意力頭數的增加,模型在HR和MRR這兩個指標上的表現也越來越好,而當注意力頭數超過4時,模型的性能并沒有隨著注意力頭數量的增加而提高,可能是由于每個注意力頭內的向量維度過小而導致了性能下降。因此在對比實驗中設置多頭自注意力機制的注意力頭數為4,由此取得最好的效果。

圖4 SPRTI模型在不同注意力頭數下的結果
該文提出了一個融合時間信息的序列商品推薦模型,通過結合長短期興趣來捕捉用戶的動態偏好。首先,將用戶行為序列劃分為不同的會話,并將最新會話視為用戶的短期行為,其余歷史會話視為用戶的長期行為;然后,利用融合時間間隔信息的GRU模型和多頭自注意力機制提取用戶的短期興趣,同時采用DeepFM模型建模用戶的長期興趣;最后,利用自適應門控單元融合用戶的動態偏好。在淘寶數據集上的實驗結果表明,模型在命中率和平均倒數排名上較其他主流推薦模型取得了比較突出的效果,證明了該模型的有效性。