溫 雯,梁方宇
(廣東工業大學 計算機學院,廣州 510006)
挖掘用戶的偏好和興趣,并幫助用戶從海量數據中發現所需要的信息是推薦系統的主要目標。傳統的推薦算法主要從用戶歷史數據中捕捉個體偏好[1],進而實現個性化推薦。然而,線上用戶行為往往隨時間而變化,同時各階段偏好的依賴關系也頗為復雜。例如,某個用戶在過去一個星期的每天上午都喜歡看財經新聞,而晚上的時候會選擇觀看音樂節目,體現出用戶在不同時間段的偏好不同;又或者是某個用戶下午去了花店,接下來晚上用戶選擇了西餐廳,體現出用戶在不同時間段的偏好存在某種依賴關系。
對用戶的時序行為進行建模并有效捕捉用戶各個階段偏好的變化模式[2-4],對于提高個性化推薦的靈活性和有效性具有重要的現實意義。推薦領域中基于協同過濾的主流算法有因子模型(Factor Model)[5-6]、Item2Vec 模型[7]。它們通過矩陣分解或者表征學習的方法獲得用戶及物品的低維表示,進而使用這些低維向量來表示用戶的興趣偏好和物品的代表特征,以實現個性化推薦;同樣是基于協同過濾的算法 Mult-VAE(Variational AutoEncoder with Multinomial likelihood)[8]則是利 用變分 自動編 碼(Variational AutoEncoder,VAE)學習用戶隱式反饋數據。然而此類算法無法直接刻畫動態變化的用戶偏好,也不能捕捉時序行為之間的依賴關系,因而需要針對時序推薦任務設計特定的算法,現有的相關研究工作主要從兩個角度展開。一類是將時間作為一項特征對已有的推薦算法進行改進,如文獻[9]中的timeSVD++(time-aware Singular Value Decomposition)算法,在用戶(項目)特征中直接加入時間特征,在事件(項目)空間很大的情況下,此類算法首先面臨單一時間片中行為高度稀疏的問題,其次該算法依然未對時序行為之間的依賴關系進行有效建模。另一類算法則是直接建模和學習時序行為的轉移概率,如文獻[10-11]通過將行為序列建模為一階馬爾可夫鏈來學習用戶行為的動態性;但此類方法主要對行為序列中項與項的轉移進行建模,沒有考慮時間信號,也沒有考慮到用戶行為在時間維度上更加復雜的依賴關系。
為了解決前述時序推薦中單一時間片行為稀疏以及行為依賴關系復雜的關鍵難題,本文從動態系統的角度,假設用戶的時序行為由不同階段的不同狀態產生,從而將用戶時序偏好的發現轉化為時序狀態的動態變化及依賴關系學習問題。通過對時序狀態的低維表示,解決行為稀疏的問題;并通過建模狀態之間的圖網絡,實現復雜依賴關系的捕捉。具體而言,首先利用最大池化層級結構對每一時間段的用戶-物品交互行為進行特征提取,獲得每一時間段的潛在狀態的低維表征;進而將各時間段的潛在狀態輸入到特定的圖神經網絡以學習用戶的潛在狀態在時序上的依賴關系,從而捕捉用戶偏好的動態變化。
本文的主要工作如下:
1)提出了一種基于潛在狀態表征的時序推薦算法。根據時間段劃分用戶對物品的時序行為,然后學習用戶在每個時間段的潛在狀態。
2)提出了能夠學習用戶不同時間段潛在狀態的依賴關系的圖神經網絡模型,捕捉用戶潛在狀態的變化規律,從而實現用戶不同時間段的個性化推薦。
3)將所提算法在多個的真實數據集進行了實驗,結果表明算法能有效提高時序推薦的性能,在各項評估指標上都能表現得更好。
近年來,研究學者們提出了許多針對時序數據的狀態表示學習的算法以及基于時序行為的推薦算法,因此本章將回顧這兩類算法的最新工作。
針對時序數據時間動態性建模的一類重要算法是基于學習序列數據的低維狀態表示。例如,基于因子分解的個性化馬爾可夫鏈(Factorizing Personalized Markov Chain,FPMC)[10-11]通過將行為序列建模為一階馬爾可夫鏈來學習用戶行為的動態性,并通過分解轉移矩陣來學習序列狀態表示。基于深度學習的狀態表示算法,例如文獻[12]中提出了門控循環單元(Gate Recurrent Unit,GRU)學習序列數據的表示;文獻[13-14]中提出了深度狀態空間模型(Deep State space model,DeepState)從時間序列的連續實值中學習序列模式,但不能直接適用于用戶行為,因為用戶序列行為是由高維離散事件組合而成的。文獻[15]中提出了結構化世界模型的對比學習(Contrastively-trained Structured World Models,C-SWMs)算法,從復雜關系的順序數據中學習模式,模擬和捕捉多個對象之間的相互作用,同樣與用戶行為的設定不同。C-SWMs 的靈活性啟示本文,圖神經網絡是建模每一個時間段的潛在狀態依賴結構的可行的方案。
近年來,基于時序行為的推薦算法開始受到研究人員的關注。研究學者們提出了許多有效的算法捕捉用戶行為的動態性,主要可以分為以下兩類。
第一類算法通常考慮的是用戶行為序列,但只包括了行為的時間先后順序信息。這類算法一般會假設下一個點擊行為依賴于歷史的點擊行為。例如文獻[12]中提出使用門控循環神經網絡學習行為序列的表示,使用序列的表示來預測下一個交互的項目;文獻[16]中提出利用卷積核來捕捉時序模式;文獻[17]中提出的分層門控網絡(Hierarchical Gating Network,HGN)則是通過多層門控模塊捕捉用戶過去訪問的項目與用戶將來訪問的項目之間的關系;文獻[18]中提出了一種基于個性化物品頻率的K最近鄰(K-Nearest Neighbors,KNN)算法來學習下一個籃子推薦的時序模式。這類算法從稀疏的時序行為能夠同時捕捉用戶的長期偏好和短期興趣,然而卻忽略了時間相關的信號。另一種算法利用時序行為來輔助學習特征向量,例如文獻[19]中提出基于詞向量模型對用戶視頻播放序列建模,再對用戶的播放歷史進行視頻聚類獲取用戶的偏好;文獻[20]中利用時間先后信息構建了用戶(產品)消費網絡,結合最近鄰和矩陣分解模型學習用戶和產品的特征向量。
第二類算法則會假設用戶(物品)的動態性與時間信息有關。一種代表性算法是直接將時間信息作為特征學習,例如文獻[9]中提出的timeSVD++算法;文獻[21]中提出動態興趣模型來捕捉用戶偏好的時間動態性;文獻[22]中通過映射時間特征到不同細粒度的區間得到類別特征。另一種算法將時間看成一個不同的維度,例如文獻[23]中把每段時間的用戶-物品交互矩陣分解得到的特征矩陣作為輸入,然后基于時序模型預測出未來時間段的特征矩陣;文獻[24]中發現兩種用戶行為的時間模式,包括用戶可能在特定時間對特定商品發生交互以及兩個相關行為的時間間隔模式,通過捕捉這兩種行為模式來建模用戶的動態偏好。
本文受文獻[24]中絕對時間模式(Absolute Time Pattern)啟發,假設用戶在特定的時間段會有特定的潛在狀態,且用戶在特定時間段的行為依賴于該潛在狀態;同時利用文獻[25]中提到的最大池化操作作為潛在狀態學習算法,考慮到這兩類算法都沒有顯式地建模時序行為之間的依賴關系,本文提出使用圖神經網絡來建模潛在狀態之間的依賴關系并學習用戶潛在狀態的變化。
本文將給定用戶的歷史數據構建成帶時間戳的高維事件序列,可以表示成時間線,其中:ti表示時間戳,ei可以表示事件或者物品,ε為事件集合或者物品集合。進一步將一個“時期”劃分為固定間隔的“時段”,本文設定每個“時期”有τ個“時段”。本文中一個“時段”可以是一個小時、一天或一個月;相對應的一個“時期”可以是一天、一個星期或一年。為方便起見,在下文中本文使用用戶-物品交互矩陣Xt∈Ζτ× ||ε來表示第t個時期的物品交互集合,其中Xt(j,:)=是第t個時期中第j個時段的用戶-物品交互向量。


表1 符號描述Tab.1 Description of symbols
本文算法的關鍵思想是學習用戶時序行為的潛在狀態依賴關系。因此,首先根據時間段劃分用戶對物品的時序行為;然后利用兩層的最大池化操作學習用戶在每個時間段的潛在狀態;接著輸入用戶在不同時間段的潛在狀態到圖神經網絡學習依賴關系;最后預測出用戶在下一時期的潛在狀態,并生成推薦列表。這是一個端到端的算法,完整流程見3.5 節。
本文將用戶的特征向量表示成vu,將物品或者事件的特征向量表示成ve,其中vu,ve∈Rd,d表示向量的長度。這些向量是模型需要學習的參數。因此,本文定義模型的用戶(物品)參數矩陣,稱之為向量查找表:

其中:用戶數量N=|U|,物品數量M=|ε|。模型使用高斯分布來隨機初始化向量查找表。
基于潛在狀態學習的推薦算法首先需要找到一個映射f:X→Z,其中∈X,∈Z,將高維的事件域映射到低維的潛在狀態域,也就是學習用戶的潛在狀態特征。在文獻[2,16]的啟發下,算法設計該映射函數是一個層級結構(式(3)),用來表示用戶在每個時段的潛在狀態。
結合輸入的用戶-物品交互矩陣X,通過查向量查找表(Ee)的方式構建用戶u在第t-1 時期的每個時段的物品特征矩陣,其中=1;j=1,2,…,τ。得到用戶在每個時段到潛在狀態的映射函數:第1 層從構建好的物品特征矩陣提取特征(f1);第2 層構建用戶在當前時段的狀態特征向量(f2)。具體的公式定義如下:

其中:v[d] ∈R 表示特征向量第d維度的值,V∈Rd×k,|V|=k。最大池化函數可以選取每個維度權重更大的特征作為下一層的輸入。
關于潛在狀態表示學習的層級結構(式(3))的理解為:第一層最大池化函數聚合了用戶在每個時期的物品特征;第二層的最大池化函數聚合了用戶長期的特征向量和當前時段的物品特征。
本文使用一個圖來表示用戶的潛在狀態在時序上的依賴關系,圖的τ個節點表示τ個時段的潛在狀態,圖G上相連的兩個節點相互依賴。因此,本文設計了一個圖神經網絡(Graph Neural Network,GNN)來學習τ個時段的潛在狀態的依賴關系以及潛在狀態的變化規律。圖神經網絡的輸入為上個時期t-1 的τ個時段的潛在狀態(式(3)):

影響聚合(Influence aggregation)為了匯總每個時段的鄰居的依賴信息,實現了一個全連接層finf來學習不同鄰居的“依賴影響”,匯總得到的依賴權重用表示,如下:

其中:N(j)表示與節點j有一階邊的節點集合,[,]表示向量拼接操作。
狀態更新計算(State-update calculation)本文假設時段的潛在狀態的更新依賴于其他鄰居狀態依賴信息的傳播,因此結合上一個時期t-1 的潛在狀態信息和式(6)得到的依賴權重,預測下一時期潛在狀態

finf(式(6))和fupdate(式(7))以非線性全連接網絡的形式實現,使用的激活函數是ReLU 函數;因此算法需要學習這兩個全連接網絡的參數,同時激活函數的引入可以增加模型非線性的表達能力。結合式(7),具體的潛在狀態更新形式化如下:

對于給定用戶u和上一個時期的觀察數據,通過式(8)預測出。因此,基于softmax 函數本文定義了興趣概率分布如下:

假設用戶點擊概率服從多項式分布,因此對于給定訓練樣本,可以得到關于用戶u的第t個時期的對數似然估計定義如下:


基于潛在狀態學習的時序行為推薦根據上一時期的歷史交互,預測出下一個時期用戶的潛在狀態;然后利用式(10)計算用戶對物品的興趣偏好,按照用戶對物品的興趣度降序排列,取top-R生成推薦列表。
本節給出完整的模型學習算法流程以及算法的時間復雜度分析。算法流程如算法1 所示。
算法1 模型學習算法流程。

分析算法1 得出,算法學習是迭代訓練的過程,訓練一次的時間消耗在算法1 的步驟3)~10),步驟5)只涉及兩層的最大池化操作屬于Ο(n)的時間復雜度,步驟6)的神經網絡前向傳播時間復雜度為Ο(n),步驟9)的時間復雜度與算法的參數空間有關。分析得出算法的參數空間包括向量查找 表(|U|+|ε|) ×d,圖神經 網絡參 數n1× 2d2+n2×d2+n3×d,假設了算法具有n1層d×d網絡結構,依此類推。
4.1.1 實驗數據
實驗使用了Foursquare 數據集[3](也可以描述成興趣點(Point Of Interest,POI)數據集)和節目點播(Internet Protocol Television,IPTV)數據集。Foursquare 數據集包括了兩個分別在紐約(New York City,NYC)和東京(ToKYo,TKY)收集的10 個月簽到數據,每條簽到數據包含時間戳、簽到地點id和用戶id。節目點播數據集是一個真實數據集,包括了一個月的用戶觀看電視節目記錄,每條記錄包含了用戶id、時間戳和電視節目id。對于NYC 和TKY,“時段”是一天,“時期”是一周;對于IPTV,“時段”是一個小時,“時期”是一天。對于不同的數據集,算法的訓練輸入只使用了時間戳前面的歷史數據,并且使用每個用戶劃分時間戳后面的互動記錄進行評估指標的計算。關于數據集詳細的統計數據見表2。

表2 實驗中使用的數據集的統計數據Tab.2 Statistics of datasets used in experiments
4.1.2 基線算法
為了驗證本文算法的有效性,將本文算法和目前主流的推薦算法在3 個數據集上進行對比。所選擇的基線有傳統的協同過濾推薦算法,如:基于協同過濾的Mult-VAE 算法沒有考慮到用戶偏好的動態性,為了適應本文的任務,應用Mult-VAE 學習每個時間段用戶偏好表示;分層表示模型(Hierarchical Representation Model,HRM)的層級結構與本文的潛在狀態表示學習模塊高度相關,但沒有捕捉潛在狀態在時間線上的依賴性;Caser、HGN 和TIFU-KNN(Temporal Item Frequency based User-KNN)是近期主流的時序推薦算法,它們從不同角度捕捉用戶行為的順序模式。對于上述的基線算法,下面進行簡單的描述:
1)Mult-VAE[8]。基于協同過濾的算法,結合了多項式似然對變分自動編碼器進行拓展。
2)HRM[25]。該算法結構包含兩個最大池化層,同時捕捉用戶的順序模式和一般偏好。
3)Caser[16]。該算法將連續事件構造成類似文本的連續句子,并將其輸入到卷積層,以便捕捉連續的模式。
4)HGN[17]。該算法利用分層門控網絡來學習項目的潛在特征,然后計算項目與項目的相似度來衡量項目之間的關系。
5)TIFU-KNN[18]。一種基于KNN 的算法,考慮了個性化物品頻率信息中的重復消費模式和協同過濾信號。
4.1.3 實現細節
如本文3.1 節所述,本文算法使用了用戶(物品)參數矩陣以及潛在狀態,其中IPTV 的用戶(物品)的特征向量和潛在狀態的維度設置為100,NYC 和TKY 數據集設置為50。學習批量大小設置為8,Dropout 率和Adam 優化器的學習率分別設置為0.1 和0.001。超參數α和β設置見4.2.3 節。算法基于PyTorch1.3.1 版本深度框架實現,并在GeForce RTX 2080 Ti GPUs 的機器上訓練。
4.1.4 評估指標
實驗使用3 個基于排序的評估指標:平均精度均值(Mean Average Precision,MAP@R)、召回率(Recall,Recall@R)和歸一化折損累計增益(Normalized Discounted Cumulative Gain,NDCG@R)。評估指標在本文的具體定義如下。
平均精度(Average Precision,AP)是指用戶實際交互過的物品數出現在推薦列表中的比例,平均精度均值則是對每個用戶計算出來的平均精度求平均,計算公式如下:

其中:ω(r)是指推薦列表第r個物品的序列號是指用戶-物品交互觀測向量,[·]是指向量取值操作。
召回率(Recall@R)是指推薦列表中用戶實際交互過的物品數與用戶實際交互物品總數的比例,其計算公式如下:

歸一化折損累計增益是衡量推薦列表的排名質量,用戶實際交互的物品在推薦列表排名越靠前,增益越大,其計算公式如下:

對本文算法進行性能分析實驗,主要從3 個方面開展:基線算法對比、狀態依賴消除和參數敏感性分析。
4.2.1 基線算法對比實驗
為了驗證本文算法的有效性,將提出的算法和目前主流的幾類推薦算法在IPTV、NYC 和TKY 這3 個數據集上進行了對比。詳細的實驗結果見表3,最后一行表示本文算法相比表現最好的基線算法(橫線)提高的比率。

表3 與基線算法的性能比較Tab.3 Performance comparison with baseline algorithms
本文算法在3 個數據集的評估指標Recall@5、NDCG@5、MAP@5 上,與較好的HGN 算法、TIFU-KNN 算法相比均有所提高。此外,根據表3 實驗結果,可以獲得以下結論:
1)Mult-VAE 沒有考慮到用戶的偏好是動態變化的,所以與捕捉用戶行為的動態性的算法(HRM、Caser、HGN、TIFU-KNN)相比,效果表現不理想。
2)本文算法與下一個項目推薦算法(Caser、HGN)和下一個籃子推薦算法(HRM、TIFU-KNN)相比,效果都要表現得更優,特別是在表3 的MAP@5(0.274 9)上,相較于性能最好的基線算法HGN(0.195 0)提高了40.97%,說明通過圖神經網絡捕捉時間線上潛在狀態之間的依賴關系和學習用戶的動態潛在狀態的算法在本文任務的優越性。
3)相較于IPTV 數據集,本文算法在另外兩個數據集上的性能與性能最好的基線算法TIFU-KNN 相比提升幅度不明顯,可能是因為所提算法受到了數據集的噪聲影響,潛在狀態依賴模式沒有那么明顯,或者潛在狀態的依賴關系更加復雜。
4.2.2 狀態依賴消融實驗
本文所提的潛在狀態依賴學習在本文算法中起到最重要的作用。為了探究3.1 節描述的潛在狀態依賴學習對下一個時期推薦的貢獻,本節在NYC、TKY、IPTV 數據集上設計了狀態依賴消融實驗。實驗結果分別如圖1 所示。

圖1 消融實驗結果Fig.1 Results of ablation experiments
在本節實驗,去掉潛在狀態依賴的模型等價于去掉算法1 的步驟6),保留了式(2)~(4)計算用戶潛在狀態。從圖1 可以看出,本文算法引入了潛在狀態依賴學習在3 個數據集上都能提升其性能,其中IPTV 和TKY 數據集上的性能提升較為明顯,3 個數據集表現的差異性也在4.2.1 節作了簡單的分析。實驗結果表明,潛在狀態依賴學習的引入可以有效提高對下一個時期推薦的性能。
4.2.3 參數敏感性分析
為了驗證超參數對算法性能的影響,本文對算法的高斯分布假設的權重α和參數正則化的權重β進行了敏感性分析。
圖2(a)說明了算法在不同的權重α下的性能比較穩定。由圖2(a)可知:當α≤0.4 時,算法性能會有所下降;當0.5 ≤α≤1 時,算法性能會比較穩定。圖2(b)表明了參數正則化不同的權重對算法評估指標的影響,可以發現:當β>0.6 時,算法性能會明顯下降;當0 ≤β≤0.6 時,算法的性能比較穩定。以上說明α和β可以在一定程度上調節算法的性能,但算法對這兩個超參數在合適的范圍內不會太過敏感。因此本文將參數設定范圍在0 ≤α≤1,0 ≤β≤2,然后通過網格搜索方式確定α和β在不同數據集的最優參數組合。

圖2 超參數的敏感性分析Fig.2 Sensitivity analysis of hyperparameters
本文提出了一種基于潛在狀態的時序推薦算法,利用潛在狀態依賴關系提高系統個性化推薦能力。該算法通過最大池化函數學習時序行為在不同時段的潛在狀態,并使用圖神經網絡對潛在狀態進行更新和有監督訓練。實驗結果表明,該算法在時序推薦預測任務中比目前主流的時序推薦算法的表現更好;而且本文對于基于潛在狀態的時序推薦工作提供了一個新的思路,即可以探索隱藏在時序行為的潛在狀態,并利用圖神經網絡工具學習用戶偏好的變化規律。本文接下來的工作將考慮引入動態的網絡結構和更好的潛在狀態學習算法,使算法能更有效地捕捉復雜的潛在狀態依賴關系。