潘春雨 趙朋朋
(蘇州大學計算機科學與技術學院人工智能研究院 江蘇 蘇州 215006)
隨著電子商務的迅猛發展,越來越多的公司建立網上購物平臺方便用戶購物,比如亞馬遜、淘寶和京東商城等。這些購物平臺有著品類繁多的商品供用戶選擇,然而種類多樣的商品會使用戶面臨選擇困難,從而影響用戶購物體驗。所以電子商務推薦的一項重要任務就是根據用戶的歷史購物信息,挖掘用戶的購物行為模式進而推薦下一個購物籃,給用戶更好的體驗。將用戶的購物歷史記錄表示為一系列購物籃,可以將下一個購物籃推薦形式化為序列預測問題。傳統基于序列的推薦[1-2]是以單個物品為序列給出預測。不同于傳統序列預測任務,下一個購物籃推薦是給定一系列的購物籃(物品集合),預測用戶接下來將要購買的購物籃[3-5]。
用戶歷史購買的物品存在著某些聯系,其中一種就是時序信息[1]。隨著時間的推移,用戶購買的物品會包含很多信息,反映著用戶潛在的偏好,這些偏好也為將來的購買提供依據。比如,那些喜歡聽鄉村音樂的人往往對這種音樂風格的新歌也感興趣;喜歡吃甜食的客人,也可能會偏愛糕點、甜品。在下一個購物籃推薦問題上,還存在著另一個顯著的特點。用戶每個購買的籃子內,有著一個或多個物品,它們在某些屬性方面體現著共有的內在聯系,同時也反映著用戶的偏好。圖1可以說明用戶籃子中的物品存在一些聯系。如圖1所示,用戶1的籃子內有手機、保護殼、平板電腦和牙刷,它們同在一個購物籃內,兩兩之間存在著聯系,但是從物品的屬性上看,如手機、保護殼、平板電腦這些都屬于電子產品,它們之間聯系較強,相較而言,牙刷與它們的聯系就比較弱。同時牙刷在另外兩個用戶的購物籃內出現,并且同屬生活用品,洗面奶、衣架、杯子以及牙膏通過牙刷這個物品維持強相關性。因此,充分利用購物籃內物品的相關性信息就顯得更加重要。

圖1 用戶籃子物品關系
近年來,圖神經網絡(Graph Neural Network,GNN)[6-8]因其廣泛的適用性和優秀的性能受到各個領域歡迎。圖神經網絡自然地集成節點信息和拓撲結構,在學習圖數據方面具有強大的功能。其中圖注意力網絡(Graph ATtention Network,GAT)[9]是圖神經網絡的一種,該算法有效地引入注意力機制,在網絡迭代更新節點特征時分配不同權重到鄰居節點進而有選擇地聚合鄰居信息。后來圖門控注意力網絡(Gated Attention Networks,GaAN)[10]創新性引入門控單元和多頭注意力網絡提升算法精度。異構圖神經網絡[11](Heterogeneous Graph Neural Network,HAN)進一步引入語義級別的注意,以獲得不同元路徑的重要性。
目前在下一個購物籃推薦任務上已經有一些有效工作。一種方法是只根據用戶最近的一個籃子信息來預測下一個購物籃[3-4]。它們側重的是用戶的短期偏好,沒有從長遠角度考慮用戶的興趣。因此,研究者們著眼于這一研究思路,用基于循環神經網絡(Recurrent Neural Network,RNN)的方法[12]捕捉序列長期依賴。然而,這些方法僅基于它們與過去購物籃的對應關系而獨立地給出下一個購物籃推薦,卻忽略了推薦的物品之間的集合關聯。基于這個問題,Le等[5]采集所有購物籃內物品成對出現的頻率建立一個物品相關性矩陣。他們認為籃子是一個包含相關物品的集合,而不是關乎獨立的物品集合。但是他們忽視了不同籃子內物品的聯系,不能就某一物品捕獲與其相關聯的路徑上鄰居物品的依賴關系。如圖1所示,用戶2籃子內的洗面奶與牙刷有聯系,用戶3的籃子內牙刷和牙膏有聯系,直覺上洗面奶同牙膏就有了聯系。Le等[5]的方法因為只考慮了籃子內的物品聯系,所以該方法就不能捕捉洗面奶和牙膏之間的關系。Hu等[13]通過調整編碼器RNN-解碼器RNN以對短期偏好和用戶的重復行為進行建模。后來,Peng等[14]提出一種結合混合用戶偏好捕獲購物籃轉換模式和籃子內部物品轉換模式的方法。本文提出的基于圖神經網絡的下一個購物籃推薦能夠通過多層GAT建模復雜的物品-物品的關系,并且在GAT層聚合鄰居節點時設置一個聚合節點的閾值,減少圖中其他節點對模型的噪聲。為了捕獲用戶的短期行為模式,本文設計一個大小固定的滑動窗口,使窗口滑動到特定時刻融合用戶數個先前的購物籃信息。
本文的貢獻主要有以下幾點:
(1) 發現現有購物籃推薦算法還未充分考慮物品關系的建模問題,提出在構建購物籃物品圖的基礎上使用圖注意力網絡對圖物品節點的非結構化的信息推理,捕獲網絡中物品節點存在的依賴關系,獲得信息更加豐富的物品嵌入表示。
(2) 在對用戶序列進行信息編碼時,采用一個大小固定的滑動窗口,沿著時間軸動態融合用戶最近幾個交互(購物籃)的興趣特征,捕獲用戶短期的購物偏好,提高了推薦效果。
(3) 在兩個公開數據集上進行了充分的實驗,驗證了所提出的推薦方法的有效性。
下一個購物籃推薦是一個典型的序列推薦任務。這部分將簡要地從如下兩個方面回顧與之相關的工作:序列推薦和圖神經網絡。
序列推薦可以分為兩類:基于馬爾可夫鏈(Markov Chain,MC)和基于循環神經網絡(RNNs)。
1.1.1基于馬爾可夫鏈的方法
Rendle等[3]提出經典的下一個購物籃推薦方法(Factorizing Personalized Markov Chains,FPMC),該方法基于因子機和馬爾可夫鏈,在任意一對連續的籃子之間建立個性化的物品-物品過渡矩陣模型,并利用計算得到的條件概率生成最終的推薦列表。Wang等[4]提出了一個相似的馬爾可夫鏈模型。不同于使用張量分解,他們建議使用池化來聚合最近一個籃子中的物品作為最近一個籃子的表示,并根據聚合表示來預測下一個購物籃。Ying等[15]增強了引用[4]中的結構,并且用注意力機制代替池化操作。注意機制可以專注于最相關的物品,從而提高性能。同樣,他們將歷史物品分為兩組,最近一個籃子中的商品代表短期組合,而它之前一個籃子中的商品代表長期組合。在這兩個集合上都應用了注意力分散機制,以生成混合用戶表示。該預測基于混合用戶表示和物品嵌入。
1.1.2基于循環神經網絡的方法
基于MC方法的假設是下一個購物籃主要由最近(或者最近幾個)籃子決定。由于這個假設,基于MC的方法不能捕獲來自長時間的高階依賴關系。為了捕獲整個歷史籃子信息,學者們轉向使用RNNs建模用戶的這個歷史序列。Yu等[12]編碼每一個籃子,使用RNN單元學習序列表示,不僅學習了用戶的動態表示,而且還從商品購買歷史中建模全局序列特征。Le等[5]觀察到籃子內部的物品之間有個一定的聯系,于是將所有籃子內物品成對出現的頻率用相關性矩陣表示,再將該矩陣與用戶購物籃的二元向量表示放入相關性敏感的購物籃編碼器中得到籃子表示。Hu等[13]提出一個集合到集合(Sets2Sets)的模型,使用注意力機制來聚焦最相關的籃子。Peng等[14]引入用戶全局偏好、存在物品中和籃子的轉換模式提高模型的性能。
隨著圖神經網絡的快速發展,許多學者將GNN[7,16]引入推薦算法捕捉用戶-物品、物品-物品的復雜交互關系。此外,注意力機制在很多領域都顯示出了它的有效性,比如圖像分類[17]、視頻標題[18]和機器翻譯[19]等。注意力機制使模型將重點放在具有不同權重目標的最重要的部分上,同樣也被應用到圖神經網絡。圖注意力網絡[9](GAT)尋求一種聚合函數來融合圖中的鄰居節點、隨機游走和候選模型以學習新的表示形式。關鍵區別在于圖注意力網絡采用注意力機制,該機制將更大的權重分配給更重要的節點、行走或模型。為了學習不同子空間中的注意力權重,GAT使用多頭注意力。圖門控注意力網絡[10](GaAN)還利用多頭注意力來更新節點的隱藏狀態。但是,GaAN并沒有為每個頭部分配相等的權重,而是引入了一種自我注意機制,該機制會為每個頭部計算不同的權重。后來,異構圖神經網絡[11](HAN)進一步引入了語義級別的注意,以獲得不同元路徑的重要性。在本文工作中,考慮到添加其他信息的復雜性,將專注于物品節點級別的注意力。
本節將問題形式化,并介紹物品關系圖的建立。表1中為主要符號定義。

表1 符號定義

在模型輸出方面,對于測試序列B={B1,B2,…,Bt},本文的目標是預測出下一個購物籃Bt+1,把它作為推薦。因為Bt+1的真實大小是未知的,所以近似為給定常數K作為籃子推薦的大小。
為了更好地表示Bi,本文構建了籃子內物品的同源關系圖,用它在對Bi內物品使用圖注意力網絡進行聚合表示的時候,能夠自動對物品鄰居節點信息進行有選擇的融合。通過這樣的操作,籃子的表示能夠更加體現物品的相關性。具體地說,在訓練集中所有籃子進行物品關系處理時,當籃子內出現大于或等于2種不同的物品,就對它們兩兩配對,如物品a、b(a≠b)都在Bi中,那么就在G中添加a、b節點,并且在a、b之間加邊連接。
本節介紹基于圖注意力網絡的下一個購物籃推薦方法,使用GAT的方法獲取籃子表示,并在循環神經網絡中應用滑動窗口捕捉特定時刻的短期興趣,圖2是本文模型的框架。

圖2 框架圖
本文利用一個大小固定的滑動窗口捕獲用戶的短期購物籃偏好,并且使用GAT獲得含有豐富物品關系的購物籃表示,經過RNN單元處理后再結合用戶短期以及全局購物籃偏好得到預測。
3.1.1籃子編碼和用戶籃子偏好
已有文獻[13,20]表明用戶的交互很大程度會受他們的總體偏好影響。因此,為用戶建模全局偏好,使用每個用戶與之交互的物品的頻率來代表用戶的全局偏好。給定用戶的歷史籃子,用戶全局偏好表示為向量g=[g1,g2,…,gn]∈Rn,其中gi表示該用戶與物品在其所有的交互記錄中總的交互次數(購買次數),其計算式為:
(1)
基本假設是,如果用戶與某個物品有很多交互,則該用戶對該物品具有很高的偏好。另外,基于這一假設,對用戶的籃子序列進行同樣的操作,得到對應的籃子頻率序列P=[p,p2,…,pt]。
3.1.2窗口化偏好
本文,考慮到用戶的短期偏好一定程度上會受相近的一個或多個籃子影響,設計了一個大小為l的滑動窗口(如對應圖2中的大小為3),對長度為t的P上滑動,每個移動一個時間單位,聚合一次物品頻率窗口,再喂入一個全連接層得到該用戶的短期偏好qi∈Rd,在i時刻表示為:
(2)
式中:Φ∈Rn×d可學習的權重矩陣,λ是一個預先設置的超參,表示對過往信息的衰減。如果式(2)中l>i,則l=i。
3.1.3圖神經網絡聚合物品和建模籃子序列
嵌入表示能夠將物品嵌入兩個連續的低維空間,增強表示能力。為此,學習一個物品嵌入矩陣E∈Rn×d,其中每一行都是一個物品的嵌入表示。GAT層的輸入是物品節點特征的集合,就需要籃子物品的嵌入表示,E′={e1,e2,…,en},Φ∈Rn×d,en∈Rd,N是節點的數量。采用GAT[9]的聚合方式,節點更新如下:
(3)
式中:‖表示對向量進行橫向拼接;X是GAT的多頭數目;σ是sigmoid函數;s表示網絡GAT網絡層數;Ni是節點i的鄰居節點;βx(·)是在GAT第x頭中節點的注意力函數,Wx∈Rd×d,H∈R(X×d)×d是網絡可學習的參數β(·)具體表示為:
(4)
式中:A∈R2d是權重參數,T表示轉置。最后得到新的物品節點特征:
(5)
Es是經過GAT層得到的物品節點特征。為了實驗的效率以及防止顯卡內存溢出,使用批次化的輸入方式,把每個批次所有用戶籃子內的物品在GAT多層網絡中要聚合的所有相關物品都放入E′中。因為與物品節點相關聯的節點很多,實驗中本文有選擇地為每層GAT網絡設置物品節點在聚合相鄰節點的個數。
為了獲得Bi更具物品相關性的表示,模型從Es選出與Bi對應節點特征,然后放入平均池化層:
(6)

最新的一些工作[5,12-13]使用RNNs來隱式建模序列。這些方法中,把籃子的編碼表示以每一個時間步為單位循環地喂入一個RNN單元來生成下一個購物籃的隱式表示。同樣,遵循這個想法,訓練籃子序列的轉換模式。給定ot,下一個購物籃的隱式表示是:
(7)
式中:GRU[21]是門控循環單元,RNNs的一種,能夠學習序列的長短期特性。
3.1.4籃子預測

(8)
式中:Ω∈R2d×d是一個可學習的參數,s∈Rd是一個向量,[a,b]表示把向量a和b水平拼接。

(9)
式中:α表示籃子長短期屬性的重要程度,如下用了門控機制:
(10)
式中:σ是sigmoid函數,Ψ、Γ是可學習的權重矩陣。
在每一個訓練序列Bu中,本文移除它的最后一個籃子Bt得到B′={B1,B2,…,Bt-1}。目標是讓預測得分y與真實的下一個購物籃Bt對齊。學習階段,采用貝葉斯個性化排序[22](BPR)。
(11)

(12)
1) 數據集。為了驗證本文提出模型的性能,本文在TaFeng和JingDong兩個數據集上進行實驗對比。TaFeng數據集包含4個月(2000年11月至2001年2月)的TaFeng超市購物交易。JingDong數據集包含3個月(2016年2月1日至2016年4月15日)的用戶行為數據集。這些數據集包含用戶在每個購物籃中購買的帶有時間戳的商品交易記錄。
2) 預處理。為了滿足相關每個用戶和物品建模的足夠信息,分別對數據集Ta-Feng、JingDong進行預處理,分別確保每個用戶至少交互10個(Ta-Feng)、15個(JingDong)物品,并且每個物品至少被10位(Ta-Feng)、5位(JingDong)用戶交互。此外,還過濾掉那些籃子序列數小于2的用戶。再設置訓練、驗證、測試數據,將序列按時間順序分為三個不重疊的時期(ttrain,tval,ttest),即Ta-Feng為(3,0.5,0.5)個月,(1.5,0.5,0.5)個月的交易時間為JingDong。注意,如果用戶記錄超過30個籃子,超過的前綴部分籃子會被截斷。兩個數據集處理后的分析表見表2。

表2 數據集分析
3) 評估方法。為了評估針對下一個購物籃推薦問題的各種方法性能,本文采用廣泛使用的指標F1@K、NDCGl@K、MAP@K來評估不同的方法。F1@K是計算精確率和召回率的調和平均值,而NDCG@K是一種基于排名的度量,它考慮了列表中元素的順序。MAP@K是平均準確率AP:
(13)
式中:Tu是真實的結果,pui表示i物品在推薦排列表中的位置,puj (14) 4) 學習細節。模型使用的是Pytorch 1.4.0。在最小化式(12)的log損失目標函數下,本文的模型在25個批次大小周期為32后得到結果。在兩個數據集上使用學習率為1e-3的Adam優化器。訓練時GRU層使用0.4概率的神經元丟棄。窗口化偏好層的滑動窗口大小設為3。本文實驗發現下面的參數在驗證集上能夠達到最好的性能,然后使用它們在測試集上做實驗:在TaFeng數據集上,衰減參數λ為0.9,GAT層使用兩層節點扇出數分別為15、5,多頭數為2的網絡;JingDong數據集上的衰減值λ是0.6,GAT層使用兩層節點扇出數分別為5、5,多頭數目為2的網絡。 將本文提出的模型標記為SWGAT(Sliding Window+GAT)。實驗選取了目前比較流行的幾種算法進行對比: (1) POP:該方法先從訓練數據的所有籃子中計算出所有用戶最頻繁的物品,然后把這些物品推薦給所有用戶的下一個購物籃。 (2) POEP[13]:它將在給定用戶的過去購物籃中出現最頻繁的物品作為下一個購物籃的預測。 (3) FPMC[3]:該方法通過矩陣分解對用戶偏好進行建模,并通過一階馬爾可夫鏈同時對序列信息進行建模,然后通過線性方式將其組合以進行下一籃子推薦。 (4) DREAM[12]:基于物品嵌入和RNN的深度模型,學習用戶的動態表示以及購物籃物品的全局順序特性,最后推薦下一個購物籃。用戶的動態表示可以顯示出用戶在不同時間的愛好;全局順序特性反映了用戶的所有購物籃隨時間的相互作用。 (5) Beacon[5]:該方法通過捕獲訓練數據所有籃子中物品成對出現的頻率構建一個物品與物品的相關性矩陣,將它融合在籃子編碼階段,通過LSTM的方法捕獲序列信息,最后給出推薦。 (6) M2pht[14]:該方法針對下一個購物籃推薦問題設計了一種具有用戶總體偏好和利用存在物品中和籃子的轉換模式的新混合模型。 此外,為了驗證本文提出的滑動窗口與圖注意力網絡結合(SW+GAT)的有效性,分別做了以下實驗: (1) No-SW:刪除SWGAT的滑動窗口(SW)模塊,其他實驗相關參數與SW-GAT保持一致。 (2) No-GAT:刪除SWGAT的圖神經網絡(GAT)模塊,其他實驗相關參數與SW-GAT保持一致。 表3按順序展示了TaFeng和JingDong數據集的各方法的實驗結果。 表3 在下一籃子推薦任務中不同方法的性能比較(%) 首先,在所有基準算法中,因為POP的推薦沒有提供個性化的推薦,也沒有捕捉購物籃的序列性,給所有用戶的推薦都是一致的,所以它的性能指標表現最差。相比POP,POEP記錄每個用戶獨有的興趣點,為他們分別推薦獨屬的物品,在各項指標都有明顯的提升。經典模型FPMC的推薦效果超過了POP,這是因為它把臨近的籃子信息融合到了模型,捕捉了用戶的短期序列性。對比POEP,FPMC在TaFeng的數據上的表現略低,可能是由于TaFeng是零售數據集,用戶購買商品的序列行為對上一次購買的依賴不強。 其次,基于RNN的籃子推薦方法DREAM能夠捕獲用戶的動態表示以及購物籃物品的全局順序特性。可以觀察到其表現雖強于POP,但是比POEP和FPMC差,Beacon的實驗結果也較差。這類基于RNNs的模型,因其缺乏對用戶的個性化推薦和短期興趣建模,效果不如POEP和FPMC。從實驗數據上看, M2pht的各項性能提升顯著。這與該模型利用用戶總體偏好、挖掘籃子物品之間的轉換模式以及籃子之間的過渡方式有著密切關系。 最后,本文提出的模型在JingDong數據集上的推薦性能是所有基準模型最優的,NDCG@5和NDCG@10分別比基準模型最好的提高0.7%和1.2%,其他4項指標同樣也有不錯的提升;在TaFeng數據集上,MAP方面的效果略低于基準模型,可能是模型捕捉籃子物品關系沒有足夠充分,未獲得充分的籃子編碼信息。為了驗證滑動窗口、圖注意力網絡(SW、GAT)對模型的貢獻,本文設計了No-SW、No-GAT兩部分實驗。從表3中可以觀察到,在沒有SW、GAT時,模型推薦的效果相比SW-GAT有明顯下降,說明本文將這兩部分結合可以幫助模型推薦效果提升。綜合以上實驗數據可以說明本文模型SW-GAT在下一個購物籃推薦方面的有效性。 為了驗證滑動窗口對本文模型性能的影響,分別在兩個數據上針對F1@5、F@10、NDCG@5和NDCG@10指標進行實驗,窗口的大小分別是[1,2,3,4]。 結果如圖3所示。實驗結果表明,在各項指標隨著窗口大小從1增長到3時,模型性能得到提高。這說明,通過滑動窗口融合窗口內用戶的短期物品購買頻率信息,能夠更好地學習出用戶的購買習慣,提高推薦準確性。當窗口大小達到4時,兩個數據集上不同指標的性能都在下降,這說明一味增大窗口的大小,可能給模型帶來更多的噪聲,影響模型準確性。 圖3 滑動窗口大小的影響 為了驗證圖注意力網絡不同層在節點聚合方面對模型的影響,分別在兩個數據集上用單層GAT和雙層GAT對聚合鄰居節點的個數進行實驗。實驗設置第一層的聚合節點的個數分別是[5, 10, 15, 20],在雙層GAT中,為第二層的聚合節點個數都設置為5。結果如圖4所示。在TaFeng數據集上,可以觀察到隨著聚合節點個數從5增加到15,在F1@5、NDCG@5以及MAP@5上,模型的性能有所提高;當聚合節點個數達到20的時候,除了F1@5在雙層GAT上結果略微增強,其他指標都下降明顯。在JingDong數據集上,發現聚合節點的個數是5的時候,模型的綜合表現比較優秀。觀察表2,可以得知JingDong的物品關系圖平均節點度數為29.59,可能是在聚合過多節點時,會引入過多的噪聲信息,削弱模型。而總體上,雙層GAT的性能優于單層的結果,所以最后在TaFeng、JingDong上都采用雙層GAT,每層節點的聚合個數分別是[15, 5]、[5, 5]。 圖4 聚合鄰居節點個數的影響 本文提出用圖注意力網絡建模物品聯系以及滑動窗口捕捉用戶短期偏好方法,并應用于下一個購物籃推薦。特別地,將用戶籃子內物品成對的關系融入圖中,使用GAT網絡學習購物籃物品的相關性。然后,設計一個滑動窗口,用它在用戶的歷史籃子內物品的購買偏好上滑動,捕捉用戶的短期偏好。在兩個公開數據集上的實驗結果表明本文模型的有效性。未來的工作中,將考慮將在構建物品的關系圖時融入更多的關系,如物品的分類、用戶是否交互等,構造一個異構圖,豐富購物籃物品的聯系,讓網絡訓練更加精確。4.2 對比方法

4.3 滑動窗口大小分析

4.4 圖神經網絡層分析

5 結 語