溫 雯,梁方宇
(廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510006)
挖掘用戶(hù)的偏好和興趣,并幫助用戶(hù)從海量數(shù)據(jù)中發(fā)現(xiàn)所需要的信息是推薦系統(tǒng)的主要目標(biāo)。傳統(tǒng)的推薦算法主要從用戶(hù)歷史數(shù)據(jù)中捕捉個(gè)體偏好[1],進(jìn)而實(shí)現(xiàn)個(gè)性化推薦。然而,線(xiàn)上用戶(hù)行為往往隨時(shí)間而變化,同時(shí)各階段偏好的依賴(lài)關(guān)系也頗為復(fù)雜。例如,某個(gè)用戶(hù)在過(guò)去一個(gè)星期的每天上午都喜歡看財(cái)經(jīng)新聞,而晚上的時(shí)候會(huì)選擇觀看音樂(lè)節(jié)目,體現(xiàn)出用戶(hù)在不同時(shí)間段的偏好不同;又或者是某個(gè)用戶(hù)下午去了花店,接下來(lái)晚上用戶(hù)選擇了西餐廳,體現(xiàn)出用戶(hù)在不同時(shí)間段的偏好存在某種依賴(lài)關(guān)系。
對(duì)用戶(hù)的時(shí)序行為進(jìn)行建模并有效捕捉用戶(hù)各個(gè)階段偏好的變化模式[2-4],對(duì)于提高個(gè)性化推薦的靈活性和有效性具有重要的現(xiàn)實(shí)意義。推薦領(lǐng)域中基于協(xié)同過(guò)濾的主流算法有因子模型(Factor Model)[5-6]、Item2Vec 模型[7]。它們通過(guò)矩陣分解或者表征學(xué)習(xí)的方法獲得用戶(hù)及物品的低維表示,進(jìn)而使用這些低維向量來(lái)表示用戶(hù)的興趣偏好和物品的代表特征,以實(shí)現(xiàn)個(gè)性化推薦;同樣是基于協(xié)同過(guò)濾的算法 Mult-VAE(Variational AutoEncoder with Multinomial likelihood)[8]則是利 用變分 自動(dòng)編 碼(Variational AutoEncoder,VAE)學(xué)習(xí)用戶(hù)隱式反饋數(shù)據(jù)。然而此類(lèi)算法無(wú)法直接刻畫(huà)動(dòng)態(tài)變化的用戶(hù)偏好,也不能捕捉時(shí)序行為之間的依賴(lài)關(guān)系,因而需要針對(duì)時(shí)序推薦任務(wù)設(shè)計(jì)特定的算法,現(xiàn)有的相關(guān)研究工作主要從兩個(gè)角度展開(kāi)。一類(lèi)是將時(shí)間作為一項(xiàng)特征對(duì)已有的推薦算法進(jìn)行改進(jìn),如文獻(xiàn)[9]中的timeSVD++(time-aware Singular Value Decomposition)算法,在用戶(hù)(項(xiàng)目)特征中直接加入時(shí)間特征,在事件(項(xiàng)目)空間很大的情況下,此類(lèi)算法首先面臨單一時(shí)間片中行為高度稀疏的問(wèn)題,其次該算法依然未對(duì)時(shí)序行為之間的依賴(lài)關(guān)系進(jìn)行有效建模。另一類(lèi)算法則是直接建模和學(xué)習(xí)時(shí)序行為的轉(zhuǎn)移概率,如文獻(xiàn)[10-11]通過(guò)將行為序列建模為一階馬爾可夫鏈來(lái)學(xué)習(xí)用戶(hù)行為的動(dòng)態(tài)性;但此類(lèi)方法主要對(duì)行為序列中項(xiàng)與項(xiàng)的轉(zhuǎn)移進(jìn)行建模,沒(méi)有考慮時(shí)間信號(hào),也沒(méi)有考慮到用戶(hù)行為在時(shí)間維度上更加復(fù)雜的依賴(lài)關(guān)系。
為了解決前述時(shí)序推薦中單一時(shí)間片行為稀疏以及行為依賴(lài)關(guān)系復(fù)雜的關(guān)鍵難題,本文從動(dòng)態(tài)系統(tǒng)的角度,假設(shè)用戶(hù)的時(shí)序行為由不同階段的不同狀態(tài)產(chǎn)生,從而將用戶(hù)時(shí)序偏好的發(fā)現(xiàn)轉(zhuǎn)化為時(shí)序狀態(tài)的動(dòng)態(tài)變化及依賴(lài)關(guān)系學(xué)習(xí)問(wèn)題。通過(guò)對(duì)時(shí)序狀態(tài)的低維表示,解決行為稀疏的問(wèn)題;并通過(guò)建模狀態(tài)之間的圖網(wǎng)絡(luò),實(shí)現(xiàn)復(fù)雜依賴(lài)關(guān)系的捕捉。具體而言,首先利用最大池化層級(jí)結(jié)構(gòu)對(duì)每一時(shí)間段的用戶(hù)-物品交互行為進(jìn)行特征提取,獲得每一時(shí)間段的潛在狀態(tài)的低維表征;進(jìn)而將各時(shí)間段的潛在狀態(tài)輸入到特定的圖神經(jīng)網(wǎng)絡(luò)以學(xué)習(xí)用戶(hù)的潛在狀態(tài)在時(shí)序上的依賴(lài)關(guān)系,從而捕捉用戶(hù)偏好的動(dòng)態(tài)變化。
本文的主要工作如下:
1)提出了一種基于潛在狀態(tài)表征的時(shí)序推薦算法。根據(jù)時(shí)間段劃分用戶(hù)對(duì)物品的時(shí)序行為,然后學(xué)習(xí)用戶(hù)在每個(gè)時(shí)間段的潛在狀態(tài)。
2)提出了能夠?qū)W習(xí)用戶(hù)不同時(shí)間段潛在狀態(tài)的依賴(lài)關(guān)系的圖神經(jīng)網(wǎng)絡(luò)模型,捕捉用戶(hù)潛在狀態(tài)的變化規(guī)律,從而實(shí)現(xiàn)用戶(hù)不同時(shí)間段的個(gè)性化推薦。
3)將所提算法在多個(gè)的真實(shí)數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn),結(jié)果表明算法能有效提高時(shí)序推薦的性能,在各項(xiàng)評(píng)估指標(biāo)上都能表現(xiàn)得更好。
近年來(lái),研究學(xué)者們提出了許多針對(duì)時(shí)序數(shù)據(jù)的狀態(tài)表示學(xué)習(xí)的算法以及基于時(shí)序行為的推薦算法,因此本章將回顧這兩類(lèi)算法的最新工作。
針對(duì)時(shí)序數(shù)據(jù)時(shí)間動(dòng)態(tài)性建模的一類(lèi)重要算法是基于學(xué)習(xí)序列數(shù)據(jù)的低維狀態(tài)表示。例如,基于因子分解的個(gè)性化馬爾可夫鏈(Factorizing Personalized Markov Chain,F(xiàn)PMC)[10-11]通過(guò)將行為序列建模為一階馬爾可夫鏈來(lái)學(xué)習(xí)用戶(hù)行為的動(dòng)態(tài)性,并通過(guò)分解轉(zhuǎn)移矩陣來(lái)學(xué)習(xí)序列狀態(tài)表示。基于深度學(xué)習(xí)的狀態(tài)表示算法,例如文獻(xiàn)[12]中提出了門(mén)控循環(huán)單元(Gate Recurrent Unit,GRU)學(xué)習(xí)序列數(shù)據(jù)的表示;文獻(xiàn)[13-14]中提出了深度狀態(tài)空間模型(Deep State space model,DeepState)從時(shí)間序列的連續(xù)實(shí)值中學(xué)習(xí)序列模式,但不能直接適用于用戶(hù)行為,因?yàn)橛脩?hù)序列行為是由高維離散事件組合而成的。文獻(xiàn)[15]中提出了結(jié)構(gòu)化世界模型的對(duì)比學(xué)習(xí)(Contrastively-trained Structured World Models,C-SWMs)算法,從復(fù)雜關(guān)系的順序數(shù)據(jù)中學(xué)習(xí)模式,模擬和捕捉多個(gè)對(duì)象之間的相互作用,同樣與用戶(hù)行為的設(shè)定不同。C-SWMs 的靈活性啟示本文,圖神經(jīng)網(wǎng)絡(luò)是建模每一個(gè)時(shí)間段的潛在狀態(tài)依賴(lài)結(jié)構(gòu)的可行的方案。
近年來(lái),基于時(shí)序行為的推薦算法開(kāi)始受到研究人員的關(guān)注。研究學(xué)者們提出了許多有效的算法捕捉用戶(hù)行為的動(dòng)態(tài)性,主要可以分為以下兩類(lèi)。
第一類(lèi)算法通??紤]的是用戶(hù)行為序列,但只包括了行為的時(shí)間先后順序信息。這類(lèi)算法一般會(huì)假設(shè)下一個(gè)點(diǎn)擊行為依賴(lài)于歷史的點(diǎn)擊行為。例如文獻(xiàn)[12]中提出使用門(mén)控循環(huán)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)行為序列的表示,使用序列的表示來(lái)預(yù)測(cè)下一個(gè)交互的項(xiàng)目;文獻(xiàn)[16]中提出利用卷積核來(lái)捕捉時(shí)序模式;文獻(xiàn)[17]中提出的分層門(mén)控網(wǎng)絡(luò)(Hierarchical Gating Network,HGN)則是通過(guò)多層門(mén)控模塊捕捉用戶(hù)過(guò)去訪(fǎng)問(wèn)的項(xiàng)目與用戶(hù)將來(lái)訪(fǎng)問(wèn)的項(xiàng)目之間的關(guān)系;文獻(xiàn)[18]中提出了一種基于個(gè)性化物品頻率的K最近鄰(K-Nearest Neighbors,KNN)算法來(lái)學(xué)習(xí)下一個(gè)籃子推薦的時(shí)序模式。這類(lèi)算法從稀疏的時(shí)序行為能夠同時(shí)捕捉用戶(hù)的長(zhǎng)期偏好和短期興趣,然而卻忽略了時(shí)間相關(guān)的信號(hào)。另一種算法利用時(shí)序行為來(lái)輔助學(xué)習(xí)特征向量,例如文獻(xiàn)[19]中提出基于詞向量模型對(duì)用戶(hù)視頻播放序列建模,再對(duì)用戶(hù)的播放歷史進(jìn)行視頻聚類(lèi)獲取用戶(hù)的偏好;文獻(xiàn)[20]中利用時(shí)間先后信息構(gòu)建了用戶(hù)(產(chǎn)品)消費(fèi)網(wǎng)絡(luò),結(jié)合最近鄰和矩陣分解模型學(xué)習(xí)用戶(hù)和產(chǎn)品的特征向量。
第二類(lèi)算法則會(huì)假設(shè)用戶(hù)(物品)的動(dòng)態(tài)性與時(shí)間信息有關(guān)。一種代表性算法是直接將時(shí)間信息作為特征學(xué)習(xí),例如文獻(xiàn)[9]中提出的timeSVD++算法;文獻(xiàn)[21]中提出動(dòng)態(tài)興趣模型來(lái)捕捉用戶(hù)偏好的時(shí)間動(dòng)態(tài)性;文獻(xiàn)[22]中通過(guò)映射時(shí)間特征到不同細(xì)粒度的區(qū)間得到類(lèi)別特征。另一種算法將時(shí)間看成一個(gè)不同的維度,例如文獻(xiàn)[23]中把每段時(shí)間的用戶(hù)-物品交互矩陣分解得到的特征矩陣作為輸入,然后基于時(shí)序模型預(yù)測(cè)出未來(lái)時(shí)間段的特征矩陣;文獻(xiàn)[24]中發(fā)現(xiàn)兩種用戶(hù)行為的時(shí)間模式,包括用戶(hù)可能在特定時(shí)間對(duì)特定商品發(fā)生交互以及兩個(gè)相關(guān)行為的時(shí)間間隔模式,通過(guò)捕捉這兩種行為模式來(lái)建模用戶(hù)的動(dòng)態(tài)偏好。
本文受文獻(xiàn)[24]中絕對(duì)時(shí)間模式(Absolute Time Pattern)啟發(fā),假設(shè)用戶(hù)在特定的時(shí)間段會(huì)有特定的潛在狀態(tài),且用戶(hù)在特定時(shí)間段的行為依賴(lài)于該潛在狀態(tài);同時(shí)利用文獻(xiàn)[25]中提到的最大池化操作作為潛在狀態(tài)學(xué)習(xí)算法,考慮到這兩類(lèi)算法都沒(méi)有顯式地建模時(shí)序行為之間的依賴(lài)關(guān)系,本文提出使用圖神經(jīng)網(wǎng)絡(luò)來(lái)建模潛在狀態(tài)之間的依賴(lài)關(guān)系并學(xué)習(xí)用戶(hù)潛在狀態(tài)的變化。
本文將給定用戶(hù)的歷史數(shù)據(jù)構(gòu)建成帶時(shí)間戳的高維事件序列,可以表示成時(shí)間線(xiàn),其中:ti表示時(shí)間戳,ei可以表示事件或者物品,ε為事件集合或者物品集合。進(jìn)一步將一個(gè)“時(shí)期”劃分為固定間隔的“時(shí)段”,本文設(shè)定每個(gè)“時(shí)期”有τ個(gè)“時(shí)段”。本文中一個(gè)“時(shí)段”可以是一個(gè)小時(shí)、一天或一個(gè)月;相對(duì)應(yīng)的一個(gè)“時(shí)期”可以是一天、一個(gè)星期或一年。為方便起見(jiàn),在下文中本文使用用戶(hù)-物品交互矩陣Xt∈Ζτ× ||ε來(lái)表示第t個(gè)時(shí)期的物品交互集合,其中Xt(j,:)=是第t個(gè)時(shí)期中第j個(gè)時(shí)段的用戶(hù)-物品交互向量。
表1 符號(hào)描述Tab.1 Description of symbols
本文算法的關(guān)鍵思想是學(xué)習(xí)用戶(hù)時(shí)序行為的潛在狀態(tài)依賴(lài)關(guān)系。因此,首先根據(jù)時(shí)間段劃分用戶(hù)對(duì)物品的時(shí)序行為;然后利用兩層的最大池化操作學(xué)習(xí)用戶(hù)在每個(gè)時(shí)間段的潛在狀態(tài);接著輸入用戶(hù)在不同時(shí)間段的潛在狀態(tài)到圖神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)依賴(lài)關(guān)系;最后預(yù)測(cè)出用戶(hù)在下一時(shí)期的潛在狀態(tài),并生成推薦列表。這是一個(gè)端到端的算法,完整流程見(jiàn)3.5 節(jié)。
本文將用戶(hù)的特征向量表示成vu,將物品或者事件的特征向量表示成ve,其中vu,ve∈Rd,d表示向量的長(zhǎng)度。這些向量是模型需要學(xué)習(xí)的參數(shù)。因此,本文定義模型的用戶(hù)(物品)參數(shù)矩陣,稱(chēng)之為向量查找表:
其中:用戶(hù)數(shù)量N=|U|,物品數(shù)量M=|ε|。模型使用高斯分布來(lái)隨機(jī)初始化向量查找表。
基于潛在狀態(tài)學(xué)習(xí)的推薦算法首先需要找到一個(gè)映射f:X→Z,其中∈X,∈Z,將高維的事件域映射到低維的潛在狀態(tài)域,也就是學(xué)習(xí)用戶(hù)的潛在狀態(tài)特征。在文獻(xiàn)[2,16]的啟發(fā)下,算法設(shè)計(jì)該映射函數(shù)是一個(gè)層級(jí)結(jié)構(gòu)(式(3)),用來(lái)表示用戶(hù)在每個(gè)時(shí)段的潛在狀態(tài)。
結(jié)合輸入的用戶(hù)-物品交互矩陣X,通過(guò)查向量查找表(Ee)的方式構(gòu)建用戶(hù)u在第t-1 時(shí)期的每個(gè)時(shí)段的物品特征矩陣,其中=1;j=1,2,…,τ。得到用戶(hù)在每個(gè)時(shí)段到潛在狀態(tài)的映射函數(shù):第1 層從構(gòu)建好的物品特征矩陣提取特征(f1);第2 層構(gòu)建用戶(hù)在當(dāng)前時(shí)段的狀態(tài)特征向量(f2)。具體的公式定義如下:
其中:v[d] ∈R 表示特征向量第d維度的值,V∈Rd×k,|V|=k。最大池化函數(shù)可以選取每個(gè)維度權(quán)重更大的特征作為下一層的輸入。
關(guān)于潛在狀態(tài)表示學(xué)習(xí)的層級(jí)結(jié)構(gòu)(式(3))的理解為:第一層最大池化函數(shù)聚合了用戶(hù)在每個(gè)時(shí)期的物品特征;第二層的最大池化函數(shù)聚合了用戶(hù)長(zhǎng)期的特征向量和當(dāng)前時(shí)段的物品特征。
本文使用一個(gè)圖來(lái)表示用戶(hù)的潛在狀態(tài)在時(shí)序上的依賴(lài)關(guān)系,圖的τ個(gè)節(jié)點(diǎn)表示τ個(gè)時(shí)段的潛在狀態(tài),圖G上相連的兩個(gè)節(jié)點(diǎn)相互依賴(lài)。因此,本文設(shè)計(jì)了一個(gè)圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network,GNN)來(lái)學(xué)習(xí)τ個(gè)時(shí)段的潛在狀態(tài)的依賴(lài)關(guān)系以及潛在狀態(tài)的變化規(guī)律。圖神經(jīng)網(wǎng)絡(luò)的輸入為上個(gè)時(shí)期t-1 的τ個(gè)時(shí)段的潛在狀態(tài)(式(3)):
影響聚合(Influence aggregation)為了匯總每個(gè)時(shí)段的鄰居的依賴(lài)信息,實(shí)現(xiàn)了一個(gè)全連接層finf來(lái)學(xué)習(xí)不同鄰居的“依賴(lài)影響”,匯總得到的依賴(lài)權(quán)重用表示,如下:
其中:N(j)表示與節(jié)點(diǎn)j有一階邊的節(jié)點(diǎn)集合,[,]表示向量拼接操作。
狀態(tài)更新計(jì)算(State-update calculation)本文假設(shè)時(shí)段的潛在狀態(tài)的更新依賴(lài)于其他鄰居狀態(tài)依賴(lài)信息的傳播,因此結(jié)合上一個(gè)時(shí)期t-1 的潛在狀態(tài)信息和式(6)得到的依賴(lài)權(quán)重,預(yù)測(cè)下一時(shí)期潛在狀態(tài)
finf(式(6))和fupdate(式(7))以非線(xiàn)性全連接網(wǎng)絡(luò)的形式實(shí)現(xiàn),使用的激活函數(shù)是ReLU 函數(shù);因此算法需要學(xué)習(xí)這兩個(gè)全連接網(wǎng)絡(luò)的參數(shù),同時(shí)激活函數(shù)的引入可以增加模型非線(xiàn)性的表達(dá)能力。結(jié)合式(7),具體的潛在狀態(tài)更新形式化如下:
對(duì)于給定用戶(hù)u和上一個(gè)時(shí)期的觀察數(shù)據(jù),通過(guò)式(8)預(yù)測(cè)出。因此,基于softmax 函數(shù)本文定義了興趣概率分布如下:
假設(shè)用戶(hù)點(diǎn)擊概率服從多項(xiàng)式分布,因此對(duì)于給定訓(xùn)練樣本,可以得到關(guān)于用戶(hù)u的第t個(gè)時(shí)期的對(duì)數(shù)似然估計(jì)定義如下:
基于潛在狀態(tài)學(xué)習(xí)的時(shí)序行為推薦根據(jù)上一時(shí)期的歷史交互,預(yù)測(cè)出下一個(gè)時(shí)期用戶(hù)的潛在狀態(tài);然后利用式(10)計(jì)算用戶(hù)對(duì)物品的興趣偏好,按照用戶(hù)對(duì)物品的興趣度降序排列,取top-R生成推薦列表。
本節(jié)給出完整的模型學(xué)習(xí)算法流程以及算法的時(shí)間復(fù)雜度分析。算法流程如算法1 所示。
算法1 模型學(xué)習(xí)算法流程。
分析算法1 得出,算法學(xué)習(xí)是迭代訓(xùn)練的過(guò)程,訓(xùn)練一次的時(shí)間消耗在算法1 的步驟3)~10),步驟5)只涉及兩層的最大池化操作屬于Ο(n)的時(shí)間復(fù)雜度,步驟6)的神經(jīng)網(wǎng)絡(luò)前向傳播時(shí)間復(fù)雜度為Ο(n),步驟9)的時(shí)間復(fù)雜度與算法的參數(shù)空間有關(guān)。分析得出算法的參數(shù)空間包括向量查找 表(|U|+|ε|) ×d,圖神經(jīng) 網(wǎng)絡(luò)參 數(shù)n1× 2d2+n2×d2+n3×d,假設(shè)了算法具有n1層d×d網(wǎng)絡(luò)結(jié)構(gòu),依此類(lèi)推。
4.1.1 實(shí)驗(yàn)數(shù)據(jù)
實(shí)驗(yàn)使用了Foursquare 數(shù)據(jù)集[3](也可以描述成興趣點(diǎn)(Point Of Interest,POI)數(shù)據(jù)集)和節(jié)目點(diǎn)播(Internet Protocol Television,IPTV)數(shù)據(jù)集。Foursquare 數(shù)據(jù)集包括了兩個(gè)分別在紐約(New York City,NYC)和東京(ToKYo,TKY)收集的10 個(gè)月簽到數(shù)據(jù),每條簽到數(shù)據(jù)包含時(shí)間戳、簽到地點(diǎn)id和用戶(hù)id。節(jié)目點(diǎn)播數(shù)據(jù)集是一個(gè)真實(shí)數(shù)據(jù)集,包括了一個(gè)月的用戶(hù)觀看電視節(jié)目記錄,每條記錄包含了用戶(hù)id、時(shí)間戳和電視節(jié)目id。對(duì)于NYC 和TKY,“時(shí)段”是一天,“時(shí)期”是一周;對(duì)于IPTV,“時(shí)段”是一個(gè)小時(shí),“時(shí)期”是一天。對(duì)于不同的數(shù)據(jù)集,算法的訓(xùn)練輸入只使用了時(shí)間戳前面的歷史數(shù)據(jù),并且使用每個(gè)用戶(hù)劃分時(shí)間戳后面的互動(dòng)記錄進(jìn)行評(píng)估指標(biāo)的計(jì)算。關(guān)于數(shù)據(jù)集詳細(xì)的統(tǒng)計(jì)數(shù)據(jù)見(jiàn)表2。
表2 實(shí)驗(yàn)中使用的數(shù)據(jù)集的統(tǒng)計(jì)數(shù)據(jù)Tab.2 Statistics of datasets used in experiments
4.1.2 基線(xiàn)算法
為了驗(yàn)證本文算法的有效性,將本文算法和目前主流的推薦算法在3 個(gè)數(shù)據(jù)集上進(jìn)行對(duì)比。所選擇的基線(xiàn)有傳統(tǒng)的協(xié)同過(guò)濾推薦算法,如:基于協(xié)同過(guò)濾的Mult-VAE 算法沒(méi)有考慮到用戶(hù)偏好的動(dòng)態(tài)性,為了適應(yīng)本文的任務(wù),應(yīng)用Mult-VAE 學(xué)習(xí)每個(gè)時(shí)間段用戶(hù)偏好表示;分層表示模型(Hierarchical Representation Model,HRM)的層級(jí)結(jié)構(gòu)與本文的潛在狀態(tài)表示學(xué)習(xí)模塊高度相關(guān),但沒(méi)有捕捉潛在狀態(tài)在時(shí)間線(xiàn)上的依賴(lài)性;Caser、HGN 和TIFU-KNN(Temporal Item Frequency based User-KNN)是近期主流的時(shí)序推薦算法,它們從不同角度捕捉用戶(hù)行為的順序模式。對(duì)于上述的基線(xiàn)算法,下面進(jìn)行簡(jiǎn)單的描述:
1)Mult-VAE[8]。基于協(xié)同過(guò)濾的算法,結(jié)合了多項(xiàng)式似然對(duì)變分自動(dòng)編碼器進(jìn)行拓展。
2)HRM[25]。該算法結(jié)構(gòu)包含兩個(gè)最大池化層,同時(shí)捕捉用戶(hù)的順序模式和一般偏好。
3)Caser[16]。該算法將連續(xù)事件構(gòu)造成類(lèi)似文本的連續(xù)句子,并將其輸入到卷積層,以便捕捉連續(xù)的模式。
4)HGN[17]。該算法利用分層門(mén)控網(wǎng)絡(luò)來(lái)學(xué)習(xí)項(xiàng)目的潛在特征,然后計(jì)算項(xiàng)目與項(xiàng)目的相似度來(lái)衡量項(xiàng)目之間的關(guān)系。
5)TIFU-KNN[18]。一種基于KNN 的算法,考慮了個(gè)性化物品頻率信息中的重復(fù)消費(fèi)模式和協(xié)同過(guò)濾信號(hào)。
4.1.3 實(shí)現(xiàn)細(xì)節(jié)
如本文3.1 節(jié)所述,本文算法使用了用戶(hù)(物品)參數(shù)矩陣以及潛在狀態(tài),其中IPTV 的用戶(hù)(物品)的特征向量和潛在狀態(tài)的維度設(shè)置為100,NYC 和TKY 數(shù)據(jù)集設(shè)置為50。學(xué)習(xí)批量大小設(shè)置為8,Dropout 率和Adam 優(yōu)化器的學(xué)習(xí)率分別設(shè)置為0.1 和0.001。超參數(shù)α和β設(shè)置見(jiàn)4.2.3 節(jié)。算法基于PyTorch1.3.1 版本深度框架實(shí)現(xiàn),并在GeForce RTX 2080 Ti GPUs 的機(jī)器上訓(xùn)練。
4.1.4 評(píng)估指標(biāo)
實(shí)驗(yàn)使用3 個(gè)基于排序的評(píng)估指標(biāo):平均精度均值(Mean Average Precision,MAP@R)、召回率(Recall,Recall@R)和歸一化折損累計(jì)增益(Normalized Discounted Cumulative Gain,NDCG@R)。評(píng)估指標(biāo)在本文的具體定義如下。
平均精度(Average Precision,AP)是指用戶(hù)實(shí)際交互過(guò)的物品數(shù)出現(xiàn)在推薦列表中的比例,平均精度均值則是對(duì)每個(gè)用戶(hù)計(jì)算出來(lái)的平均精度求平均,計(jì)算公式如下:
其中:ω(r)是指推薦列表第r個(gè)物品的序列號(hào)是指用戶(hù)-物品交互觀測(cè)向量,[·]是指向量取值操作。
召回率(Recall@R)是指推薦列表中用戶(hù)實(shí)際交互過(guò)的物品數(shù)與用戶(hù)實(shí)際交互物品總數(shù)的比例,其計(jì)算公式如下:
歸一化折損累計(jì)增益是衡量推薦列表的排名質(zhì)量,用戶(hù)實(shí)際交互的物品在推薦列表排名越靠前,增益越大,其計(jì)算公式如下:
對(duì)本文算法進(jìn)行性能分析實(shí)驗(yàn),主要從3 個(gè)方面開(kāi)展:基線(xiàn)算法對(duì)比、狀態(tài)依賴(lài)消除和參數(shù)敏感性分析。
4.2.1 基線(xiàn)算法對(duì)比實(shí)驗(yàn)
為了驗(yàn)證本文算法的有效性,將提出的算法和目前主流的幾類(lèi)推薦算法在IPTV、NYC 和TKY 這3 個(gè)數(shù)據(jù)集上進(jìn)行了對(duì)比。詳細(xì)的實(shí)驗(yàn)結(jié)果見(jiàn)表3,最后一行表示本文算法相比表現(xiàn)最好的基線(xiàn)算法(橫線(xiàn))提高的比率。
表3 與基線(xiàn)算法的性能比較Tab.3 Performance comparison with baseline algorithms
本文算法在3 個(gè)數(shù)據(jù)集的評(píng)估指標(biāo)Recall@5、NDCG@5、MAP@5 上,與較好的HGN 算法、TIFU-KNN 算法相比均有所提高。此外,根據(jù)表3 實(shí)驗(yàn)結(jié)果,可以獲得以下結(jié)論:
1)Mult-VAE 沒(méi)有考慮到用戶(hù)的偏好是動(dòng)態(tài)變化的,所以與捕捉用戶(hù)行為的動(dòng)態(tài)性的算法(HRM、Caser、HGN、TIFU-KNN)相比,效果表現(xiàn)不理想。
2)本文算法與下一個(gè)項(xiàng)目推薦算法(Caser、HGN)和下一個(gè)籃子推薦算法(HRM、TIFU-KNN)相比,效果都要表現(xiàn)得更優(yōu),特別是在表3 的MAP@5(0.274 9)上,相較于性能最好的基線(xiàn)算法HGN(0.195 0)提高了40.97%,說(shuō)明通過(guò)圖神經(jīng)網(wǎng)絡(luò)捕捉時(shí)間線(xiàn)上潛在狀態(tài)之間的依賴(lài)關(guān)系和學(xué)習(xí)用戶(hù)的動(dòng)態(tài)潛在狀態(tài)的算法在本文任務(wù)的優(yōu)越性。
3)相較于IPTV 數(shù)據(jù)集,本文算法在另外兩個(gè)數(shù)據(jù)集上的性能與性能最好的基線(xiàn)算法TIFU-KNN 相比提升幅度不明顯,可能是因?yàn)樗崴惴ㄊ艿搅藬?shù)據(jù)集的噪聲影響,潛在狀態(tài)依賴(lài)模式?jīng)]有那么明顯,或者潛在狀態(tài)的依賴(lài)關(guān)系更加復(fù)雜。
4.2.2 狀態(tài)依賴(lài)消融實(shí)驗(yàn)
本文所提的潛在狀態(tài)依賴(lài)學(xué)習(xí)在本文算法中起到最重要的作用。為了探究3.1 節(jié)描述的潛在狀態(tài)依賴(lài)學(xué)習(xí)對(duì)下一個(gè)時(shí)期推薦的貢獻(xiàn),本節(jié)在NYC、TKY、IPTV 數(shù)據(jù)集上設(shè)計(jì)了狀態(tài)依賴(lài)消融實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果分別如圖1 所示。
圖1 消融實(shí)驗(yàn)結(jié)果Fig.1 Results of ablation experiments
在本節(jié)實(shí)驗(yàn),去掉潛在狀態(tài)依賴(lài)的模型等價(jià)于去掉算法1 的步驟6),保留了式(2)~(4)計(jì)算用戶(hù)潛在狀態(tài)。從圖1 可以看出,本文算法引入了潛在狀態(tài)依賴(lài)學(xué)習(xí)在3 個(gè)數(shù)據(jù)集上都能提升其性能,其中IPTV 和TKY 數(shù)據(jù)集上的性能提升較為明顯,3 個(gè)數(shù)據(jù)集表現(xiàn)的差異性也在4.2.1 節(jié)作了簡(jiǎn)單的分析。實(shí)驗(yàn)結(jié)果表明,潛在狀態(tài)依賴(lài)學(xué)習(xí)的引入可以有效提高對(duì)下一個(gè)時(shí)期推薦的性能。
4.2.3 參數(shù)敏感性分析
為了驗(yàn)證超參數(shù)對(duì)算法性能的影響,本文對(duì)算法的高斯分布假設(shè)的權(quán)重α和參數(shù)正則化的權(quán)重β進(jìn)行了敏感性分析。
圖2(a)說(shuō)明了算法在不同的權(quán)重α下的性能比較穩(wěn)定。由圖2(a)可知:當(dāng)α≤0.4 時(shí),算法性能會(huì)有所下降;當(dāng)0.5 ≤α≤1 時(shí),算法性能會(huì)比較穩(wěn)定。圖2(b)表明了參數(shù)正則化不同的權(quán)重對(duì)算法評(píng)估指標(biāo)的影響,可以發(fā)現(xiàn):當(dāng)β>0.6 時(shí),算法性能會(huì)明顯下降;當(dāng)0 ≤β≤0.6 時(shí),算法的性能比較穩(wěn)定。以上說(shuō)明α和β可以在一定程度上調(diào)節(jié)算法的性能,但算法對(duì)這兩個(gè)超參數(shù)在合適的范圍內(nèi)不會(huì)太過(guò)敏感。因此本文將參數(shù)設(shè)定范圍在0 ≤α≤1,0 ≤β≤2,然后通過(guò)網(wǎng)格搜索方式確定α和β在不同數(shù)據(jù)集的最優(yōu)參數(shù)組合。
圖2 超參數(shù)的敏感性分析Fig.2 Sensitivity analysis of hyperparameters
本文提出了一種基于潛在狀態(tài)的時(shí)序推薦算法,利用潛在狀態(tài)依賴(lài)關(guān)系提高系統(tǒng)個(gè)性化推薦能力。該算法通過(guò)最大池化函數(shù)學(xué)習(xí)時(shí)序行為在不同時(shí)段的潛在狀態(tài),并使用圖神經(jīng)網(wǎng)絡(luò)對(duì)潛在狀態(tài)進(jìn)行更新和有監(jiān)督訓(xùn)練。實(shí)驗(yàn)結(jié)果表明,該算法在時(shí)序推薦預(yù)測(cè)任務(wù)中比目前主流的時(shí)序推薦算法的表現(xiàn)更好;而且本文對(duì)于基于潛在狀態(tài)的時(shí)序推薦工作提供了一個(gè)新的思路,即可以探索隱藏在時(shí)序行為的潛在狀態(tài),并利用圖神經(jīng)網(wǎng)絡(luò)工具學(xué)習(xí)用戶(hù)偏好的變化規(guī)律。本文接下來(lái)的工作將考慮引入動(dòng)態(tài)的網(wǎng)絡(luò)結(jié)構(gòu)和更好的潛在狀態(tài)學(xué)習(xí)算法,使算法能更有效地捕捉復(fù)雜的潛在狀態(tài)依賴(lài)關(guān)系。