袁 濤,牛樹梓,李會元
(1.中國科學院大學,北京 100049;2.中國科學院 軟件研究所,北京 100190)
為了解決互聯(lián)網時代信息過載[1]的問題,推薦技術應運而生。目前主流的推薦算法均將用戶與物品的交互歷史看作序列數(shù)據(jù),預測用戶下次會與哪些物品交互,即序列化推薦(Sequential Recommendation)。序列化推薦的核心問題在于預測物品對歷史序列的依賴建模?,F(xiàn)存大量相關研究工作表明這種依賴是多層次的。典型的研究方法有長期依賴推薦算法[2]、短期依賴推薦算法[3-4]、長短期混合依賴推薦算法[5]以及多尺度依賴推薦算法[6]。
多尺度依賴算法大都關注于啟發(fā)式地設計多尺度的隱式空間的表示。常見的啟發(fā)式設計方法是從時域或頻域的角度對隱式空間表示進行多尺度的硬劃分。基于興趣的變化頻率與神經元的更新頻率對應假設,對隱層神經元進行劃分,為不同分塊內的神經元設置不同的更新頻率[6-7]。更新頻率較高的神經元假設對應短期興趣表示,因為短期興趣多變。更新頻率較低的神經元學到的是長期興趣表示,因為長期興趣穩(wěn)定。更新頻率處于兩者之間的神經元學到的是中期興趣表示。然而,這種啟發(fā)式的劃分方法并沒有明確的物理意義,也無法生成顯式的多尺度層次結構。
另外一些多尺度依賴算法關注于從原始序列中得到多尺度的訓練樣本[8]。例如,為不同的尺度設置不同的窗口大小,采用滑動窗口得到不同尺度的訓練樣本。雖然針對數(shù)據(jù)的層次化采樣可以有效避免物理意義不明確的問題,但這種做法依舊需要啟發(fā)式地設置窗口大小,從而可能會導致把具有語義關系的片段被切分開。
無論從隱式表示空間還是數(shù)據(jù)層面的啟發(fā)式劃分,現(xiàn)有多尺度依賴算法都不足以靈活應對不同的數(shù)據(jù)。因此,如何從序列中自動學習出多尺度依賴的層次結構以及隱式表示仍舊是具有挑戰(zhàn)性的問題。為此本文提出從歷史序列的自注意力矩陣中學習序列的層次結構,并依據(jù)該結構預測即將交互物品,即動態(tài)層次Transformer序列推薦算法(Dynamic Hierarchical Transformer for Sequential Recommendation,DHT4Rec)。
首先,本文提出了動態(tài)層次Transformer模塊,利用多個動態(tài)層次Transformer層自底向上,推斷出一個原始序列的層次結構。每層先利用近鄰塊間注意力機制,計算與左右近鄰的合并概率,并判斷是否做合并,并由此生成塊掩碼來更新隱式表示。根據(jù)每層的塊掩碼可以推斷出多尺度層次結構,連接每層的隱式表示即得到多尺度的隱式表示。然后,Transformer層利用自注意力機制建模用戶下一時刻的瞬間興趣表示對不同時間尺度下用戶興趣表示的依賴。最后,全連接輸出層的目標在于預測用戶下次可能感興趣的物品概率分布。
實驗在MovieLens-100k和Amazon Movies and TV兩個公共數(shù)據(jù)集上進行。定量分析的結果表明,本文提出的DHT4Rec算法在預測準確率上分別比當前最先進的基準方法提升了2.09%和5.43%。定性分析的結果表明,模型學習到的多尺度結構符合直覺。
綜上所述,序列化推薦算法核心在于建模預測目標對于用戶歷史行為序列的依賴。已有的算法研究表明不同的數(shù)據(jù)集上對預測起關鍵作用的是序列的不同部分[7]: ①長期依賴推薦算法認為整個序列的全局信息比較重要; ②短期依賴推薦算法認為最新最近的局部信息對于預測比較重要; ③長短期混合依賴推薦算法認為全局與局部信息對于預測都是不可或缺的; ④多尺度依賴推薦算法認為除了全局與局部信息以外,中間某些層次的信息對預測也有用。
長期依賴推薦算法利用用戶對物品完整的交互歷史序列來建模全局信息,從而捕獲用戶的長期偏好。傳統(tǒng)的推薦算法將歷史序列視為集合的做法也是一種建模長期依賴的方式,如CDAE[9]與NeuCF[10]。目前主流的做法是基于循環(huán)神經網絡RNN、記憶網絡(Memory Network)、自注意力機制(Self-Attention Network)以及Transformer等的序列推薦算法,如DREAM[11],CMN[12],SASRec[13],BST[2]等。
短期依賴推薦算法利用用戶近期的行為序列建模局部信息,以捕捉用戶短期偏好,如上一個物品或上一個會話中交互的物品序列。傳統(tǒng)的基于馬爾可夫鏈的做法如FPMC[14]等都屬于此類算法?;跁挼耐扑]算法通常采用序列模型和注意力機制來捕捉一個會話內部的時序依賴關系,如GRU4REC[4]和STAMP[3]。GRU4REC采用GRU捕捉會話中用戶點擊行為之間的依賴關系。STAMP采用注意力機制建模會話內不同時間瀏覽過商品的重要程度。HRNN[15]采用層次循環(huán)神經網絡建模會話內的順序依賴。
長短期混合依賴推薦算法強調全局序列與近期局部序列對于預測物品的重要性,利用深度神經網絡來分別捕捉用戶的長、短期興趣。HRM[5]假設用戶與物品都為隱式空間的向量,將用戶隱式空間的表示作為用戶長期興趣表示,最近一次購物車的物品表示作為短期興趣表示,兩者結合用來預測下次購買的物品。LISC[16]分別采用矩陣分解模型與循環(huán)神經網絡來建模用戶的長、短期興趣,并以生成對抗網絡的方法對二者進行融合。與之類似,AttRec[17]分別采用協(xié)同度量學習與自注意力機制的方法來建模用戶的長短期興趣,并采用線性加權的方式進行融合。
預測物品對歷史序列的長期依賴反映的是用戶長期興趣偏好,預測物品對歷史序列的短期依賴反映的是用戶短期興趣偏好。長期偏好穩(wěn)定,不易變;短期興趣動態(tài)多變。真實場景的實驗結果表明,預測目標對于歷史序列的依賴是多層次的。除了長期與短期依賴之外,存在處于兩者之間的依賴,物理意義并不像長、短期依賴那么明確,本文暫且稱之為中期興趣。
多尺度依賴推薦算法能夠捕獲多層次的順序依賴模式。HPMN[6]在記憶網絡(Memory Network)中引入分層和周期性更新機制。不同層間神經元數(shù)量一致,但是更新頻率不同,自底向上更新頻率變慢,相應建模用戶的短期、中期以及長期興趣。MARank[18]提出目標物品的預測不但依賴于單個物品間的順序關系,還依賴于不同大小的物品集合與物品間的順序關系的假設,并用多層殘差網絡和注意力機制來學習不同階集合的表示。S3Rec[19]對BERT[20]中常用的掩碼機制進行擴展,建模被掩蓋的子序列對上下文的依賴,這種子序列掩碼機制可視為一種簡單的多尺度的建模方法。
為了避免啟發(fā)式設計多尺度結構,本文提出基于用戶多尺度興趣樹的序列推薦算法 DHT4Rec來從用戶交互歷史序列中自動推斷出多尺度層次結構以及隱式表示。
DHT4Rec模型的體系結構主要由Embedding嵌入層、動態(tài)層次Transformer模塊、Transformer層以及全連接輸出層四個部分組成,如圖1所示。通過Embedding嵌入層,得到用戶和物品初始的分布式表示。動態(tài)層次Transformer模塊通過相鄰塊的注意力機制,自底向上逐層進行相鄰塊合并,形成多尺度用戶興趣樹,獲得多尺度的用戶興趣表示。Transformer層采用自注意力機制建模下一時刻用戶興趣對歷史序列中體現(xiàn)出來的多尺度結構的依賴關系。通過全連接輸出層獲得用戶下一個時刻可能感興趣的物品的概率分布。
圖1 DHT4Rec體系結構
動態(tài)層次Transformer(Dynamic Hierarchical Transformer)模塊由D層構成,D為尺度數(shù)上限。每層由近鄰注意力與具備動態(tài)掩碼機制的Transformer層構成,簡稱為動態(tài)掩碼Transformer層,結構如圖2所示。根據(jù)近鄰注意力機制,生成該層Transformer的掩碼矩陣,故稱之為動態(tài)掩碼。Transformer根據(jù)該掩碼更新物品表示。更新后的表示與動態(tài)掩碼一起作為下層的輸入。如此通過D層,在近鄰注意力機制與動態(tài)掩碼機制不斷交互地作用下,生成多尺度層次結構。
圖2 動態(tài)掩碼Transformer層結構
(1)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
Transformer通常涉及兩類掩碼: 一類是在計算自注意力權重時,如式(7)所示,通常用掩碼來去掉冗余信息,提高計算效率,如DHT4Rec;另一類是在掩碼語言模型(Masked Language Model)作為訓練目標函數(shù)時,隨機采樣序列中不同位置,用掩碼替換原來位置的符號,如BERT4Rec以及S3Rec等。與DHT4Rec不同,S3Rec的多尺度建模是通過計算掩碼語言模型時,對不同長度子序列采樣來實現(xiàn)的。
傳統(tǒng)的不帶掩碼的Transformer每層的注意力權重計算時間與空間復雜度約為O(n2·r),其中,n為序列長度,r為隱式表示的維度。Longformer采用靜態(tài)掩碼來實現(xiàn)窗口注意力機制,從而解決長程依賴問題,其每層的注意力權重計算時間與空間復雜度約為O(n·w·r),其中,w為窗口大小。DHT4Rec的第k層的注意力權重計算時間與空間復雜度為O[(bk)2·r],其中,bk表示當前層掩碼矩陣的塊數(shù),1≤bk≤n/2,k≥1。對于D層Transformer網絡結構、不帶掩碼的Transformer,Longformer以及DHT4Rec的計算時間與空間復雜度分別為O(D·n2·r),O(D·n·w·r),O(2·n2·r)。
本文采用四種排序性能的評價指標來度量DHT4Rec在兩個公共標準數(shù)據(jù)集上的推薦性能,對比了五類基準方法,并分析了不同網絡結構參數(shù)對模型性能的影響。
本文在MovieLens-100k和Amazon Movies and TV兩個常用的公共標準數(shù)據(jù)集上進行實驗。
MovieLens-100k數(shù)據(jù)集包含943個用戶對1 682部電影的100 000條評分數(shù)據(jù),數(shù)據(jù)信息包括用戶ID、電影ID、評分和時間戳。
Amazon Movies and TV數(shù)據(jù)集,我們從中選取了評分數(shù)量均大于50的用戶和電影,共有2 074個用戶、7 352部電影和268 586個評分。對于每個用戶序列,先按時間排序,然后按比例4:1將其分別劃分到訓練集與測試集。為了增加訓練集中序列的數(shù)量,且便于多尺度研究,限定訓練序列的最小長度為M,將一個長度為L的原始序列,拆分成N=L-M個訓練序列。假設原始序列為{(i1,i2,i3},M=1,則訓練序列為{(i1),i2}與{(i1,i2),i3}。最小長度M在MovieLens-100k和Amazon Movies and TV分別為8和32。以MovieLens-100k為例,數(shù)據(jù)增強后訓練序列個數(shù)由原來的983增加到72 823。
本文選取了五類基準算法進行性能對比實驗。①傳統(tǒng)推薦算法: ItemKNN[23]和BPRMF[24]。②長期依賴推薦算法: SASRec[13]、BERT4Rec[25]與BST[2]。③短期依賴推薦算法: GRU4REC[4]與STAMP[3]。④長短期混合依賴推薦算法: AttRec[17]以及HRM[5]。⑤多尺度依賴推薦算法: MARank[18]、S3Rec[19]、MC-RNN[7]與HPMN[6]。本文對比S3Rec時去除了物品信息相關預訓練,只采用了物品掩碼和片段掩碼預訓練過程。
本文采用排序的評價指標[26]來度量推薦算法的性能,如Precision、Recall、NDCG(Normalized Discounted Cumulative Gain)[27]以及MRR(Mean Reciprocal Rank),截斷值為10。
將各模型在測試集上表現(xiàn)性能最優(yōu)的參數(shù)作為各模型的參數(shù)配置。各模型批處理大小均為256,正則化系數(shù)為0.001,其他超參數(shù)分別選取如下配置: ItemKNN中近鄰數(shù)為20;BPRMF采用128維的隱式表示,學習率為0.002;SASRec 、BERT4Rec和BST的物品隱式表示維度均為16,blocks個數(shù)為1,heads個數(shù)為4,dropout為0.1,學習率為0.001。此外BERT4Rec隨機掩碼概率為0.2, BST的負采樣個數(shù)為4;STAMP和GRU4Rec的物品隱式表示維度均為16,學習率分別為0.002和0.001,此外GRU4Rec的GRU單元大小為32;AttRec和HRM的物品隱式表示維度均為16,學習率分別為0.001和0.006,負采樣個數(shù)均為10。此外,HRM的雙層聚合操作均為最大值,AttRec的長短期興趣權重取值為0.5,margin取值為1.0;MARank殘差層數(shù)為2,S3Rec的負采樣個數(shù)為1,其他參數(shù)同SASRec、HPMN的記憶層數(shù)為4,更新周期為[1,2,4,8],MCRNN在MovieLens-100k和Amazon Movies and TV數(shù)據(jù)集上的尺度分為2和3,采樣方式為指數(shù);DHT4Rec在MovieLens-100k和Amazon Movies and TV數(shù)據(jù)集上的尺度分別為4和7,其他參數(shù)同BST和SASRec。
本文對比了DHT4Rec與其他五類基準算法在MovieLens 100k(以下簡稱MovieLens)與Amazon Movies and TV(以下簡稱Amazon)兩個標準數(shù)據(jù)集上的性能,結果如表1和表2所示。m與M列分別對應四個評價指標下DHT4Rec相對于每個基準算法性能最小與最大提升的百分比。
和傳統(tǒng)的推薦算法ItemKNN及BPRMF相比,在兩個標準數(shù)據(jù)集上,DHT4Rec的相對性能提升顯著。這種現(xiàn)象的主要原因在于序列推薦算法比傳統(tǒng)推薦算法考慮了更多的信息,如交互歷史中物品之間的時序關系。在數(shù)據(jù)稀疏性比較嚴重的Amazon數(shù)據(jù)集上,每部電影的評價較少,能利用電影間相似性的ItemKNN性能優(yōu)勢明顯大于BPRMF。
表1 MovieLens數(shù)據(jù)集實驗結果
表2 Amazon數(shù)據(jù)集實驗結果
與長期依賴算法SASRec和BST相比,DHT4Rec的性能在MovieLens上提升了2%~15%,在Amazon上提升了12%~41%。與單粒度隨機掩碼的BERT4Rec相比,DHT4Rec的性能提升了2%~12%。長期依賴模型只建模全局影響因素來捕捉穩(wěn)定的長期興趣,但無法適應預測物品對序列不同部分的依賴。
與短期依賴序列推薦算法STAMP和GRU4Rec相比,DHT4Rec算法的性能在MovieLens與Amazon上分別提升了約14%~23%和15%~21%。短期依賴算法采用如會話等特定的啟發(fā)式方法來定義局部影響因素,試圖捕捉動態(tài)的短期興趣。這種固定的局部因素的定義無法靈活應對依賴的多樣性。
與長短期混合依賴算法HRM和AttRec相比,DHT4Rec的性能在MovieLens與Amazon上分別提升了約8%~20%和10%~36%?;旌弦蕾囁惴ㄔ噲D通過融合全局與局部的影響因素解決這個問題,但仍無法避免固定的局部因素定義的短板。作為多尺度依賴算法,DHT4Rec算法在解決這個問題上具有天然的優(yōu)勢,因此在基于排序的評價體系下要顯著優(yōu)于沒有采用多尺度的基準算法。
與其他的多尺度依賴算法相比,DHT4Rec的性能在MovieLens與Amazon上分別提升了約1%~14%與2%~32%。MCRNN與HPMN均利用不同神經元的更新頻率不同這樣的啟發(fā)式設計得到多尺度隱式表示。這種性能增益體現(xiàn)了自適應生成的多尺度層次結構對于預測下一步交互物品的優(yōu)勢。
兩個數(shù)據(jù)集上相對于其他多尺度方法,DHT4Rec的MRR性能提升最小,Recall性能提升最大。DHT4Rec采用動態(tài)掩碼Transformer層產生的數(shù)據(jù)自適應的層次結構,結構靈活多變,不同歷史序列的表示分布更加分散,有助于放松分類邊界。因此,DHT4Rec中動態(tài)層次Transformer對于提升Recall更有益。
DHT4Rec的動態(tài)層次Transformer結構中涉及以下三個關鍵參數(shù): 動態(tài)掩碼Transformer層數(shù)(尺度數(shù))D,不同層間是否添加殘差連接,如式(6)所示;同層節(jié)點的表示是否采用聚合操作,如式(9)所示。
3.3.1 尺度數(shù)
為了研究尺度數(shù)選取對模型性能的影響,實驗中選取不同D∈{1,…,10},DHT4Rec在MovieLens與Amazon上的性能如圖4(a)與4(b)所示。
圖4 尺度數(shù)D對性能的影響
圖4展示了DHT4Rec性能在兩個數(shù)據(jù)集上隨著D的增加而增加,當D達到某個值之后,性能不再增加,而保持平穩(wěn)。MovieLens數(shù)據(jù)集上,無論采用哪種評價指標,該臨界值為4;Amazon數(shù)據(jù)集上,不論采用哪種評價指標,該臨界值為7。當D=1時,模型結構中不存在動態(tài)層次Transformer,退化為單尺度,與SASRec、BST模型結構類似,性能相近。
3.3.2 不同層間的殘差連接
DHT4Rec中的動態(tài)層次Transformer若采用殘差連接更新物品表示,如式(6)所示,簡記為DHT4Rec+Res;若不采用殘差連接,簡記為DHT4Rec,表1與表2中展示的是沒有殘差連接時的結果。是否引入殘差連接的對比實驗結果如表3所示。
表3 是否引入殘差網絡對比實驗結果
實驗結果表明,引入殘差連接性能變差。殘差連接會將低尺度下物品表示疊加到高尺度下物品表示中,從而使得不同尺度下物品表示之間的區(qū)分度不大。尺度表示間的差異不大,導致分類效果變差。
3.3.3 同層節(jié)點內的聚合操作
DHT4Rec中動態(tài)層次Transformer采用均值聚合(AGG)操作得到節(jié)點的表示,如式(9)所示,記為DHT4Rec。若不采用AGG操作,記為DHT4Rec-AGG。是否進行均值聚合操作的對比實驗結果如表4所示。
表4 是否引入節(jié)點聚合對比實驗結果
實驗結果表明,對多尺度層次結構中的節(jié)點進行均值聚合操作,能改善模型性能。沒有均值操作相當于保留節(jié)點內部不同物品表示的細微差異,均值操作相當于對節(jié)點表示進行平滑。這種平滑技術忽略節(jié)點內物品表示的差異,使得節(jié)點表示間的差異凸現(xiàn),從而帶來分類性能的提升。
根據(jù)從動態(tài)層次Transformer模塊得到的D個塊掩碼矩陣可以推斷出歷史序列的多尺度層次結構。從Transformer層的注意力權重矩陣可以看到多尺度用戶興趣表示對下一時刻預測物品的重要程度。例如,MovieLens中用戶編號為604,歷史序列長度為13,對應的多尺度層次結構如圖5所示,其中顏色從深到淺表示對于預測物品的重要程度由高到低。
圖5 用戶多尺度興趣樹結構及依賴關系圖
從圖5可以看到,每個尺度下都有對預測較為重要的節(jié)點。這一現(xiàn)象表明多尺度存在的必要性。目標電影“Heavenly Creatures (1994)”的類別為“劇情、科幻和驚悚”。對于該目標電影來說,權重較大的節(jié)點分別是來自最低尺度的“The Blob(1958)”屬于“恐怖、科幻”類型,中間尺度的{“Psycho (1960)”,“Cape Fear (1991)”}屬于“恐怖、浪漫、驚悚、驚恐”類型,最低尺度的“Fargo (1996)”屬于“犯罪、劇情、驚悚”類型。從電影類別的角度來看,這一多尺度結構是符合直覺的。
在MovieLens數(shù)據(jù)集上,序列長度分別為8、16至512,尺度個數(shù)為4,隱式維度為16,批大小為64,每個epoch所花費的時間和內存占用情況如表5所示。從表5中可以看出,DHT4Rec模型的時間和空間復雜度均為平方階。
表5 模型的效率分析
為了解決多尺度表示與層次結構不能自適應的問題,本文提出的動態(tài)層次Transformer序列推薦算法,可以同時學習用戶興趣的多尺度隱式表示與顯式層次樹。每層的動態(tài)掩碼Transformer層采用近鄰塊注意力機制判斷鄰近塊合并與否,得到動態(tài)塊掩碼矩陣,根據(jù)該矩陣得到該層次下的隱式表示。通過多層動態(tài)掩碼Transformer層,得到多尺度的隱式表示,并由動態(tài)塊掩碼矩陣得到多尺度的層次結構。最后,通過Transformer層輸出下一時刻預測物品的概率分布。實驗結果表明,DHT4Rec在兩個公共標準數(shù)據(jù)集上均優(yōu)于當前最先進的序列推薦算法。下一步的工作考慮將物品的內容信息作為知識圖譜來進一步改進推薦性能。