孫淑娟,過 弋,2,3,錢夢薇
1(華東理工大學 信息科學與工程學院,上海 200237)2(大數據流通與交易技術國家工程實驗室 商業智能與可視化研究中心,上海 200237)3(上海大數據與互聯網受眾工程技術研究中心,上海 200072)
E-mail:guoyi@ecust.edu.cn
在電商行業中,為特定用戶推薦其偏好的物品以及解決用戶決策困難的問題一直是一個熱門而且重要的話題.在許多現實世界的購物場景中,用戶未來的購買意愿很大程度上受歷史行為序列的影響.例如,購買了手機之后,可能會購買相關配件,諸如手機殼或者手機貼膜等物品.如果體驗較好,可能還會購買該商品的周邊衍生產品,例如同款服裝或者紀念品.目前,該領域傳統的算法模型主要是根據用戶提供的反饋信息進行用戶偏好預測[1].隨著深度學習技術在自然語言處理、數據挖掘、目標檢測、閱讀理解等多個人工智能領域取得的顯著進展,科研人員也開始在推薦算法領域利用深度學習(DL,Deep Learning)技術進行不斷的深入研究和探索[2].基于深度學習的推薦模型,其核心思想是將用戶、項目交互特征映射至多維空間中,然后通過多層感知機網絡去學習特征之間的相關性,最后通過該模型為用戶提供最佳決策.深度學習推薦模型的發展大致可以分為3個時期,如表1所示.

表1 深度學習推薦模型的3個發展時期Table 1 Development based on deep learning recommendation model
1)發展初期.其主要特點是依賴于人工特征工程,模型簡單、參數空間較小、性能高.主要算法以多層感知機(MLP)為和深度協同過濾為基礎,利用深度學習技術在復雜用戶交互空間中訓練出有效的用戶特征向量表示.但由于在實際購物場景中用戶和商品量級較大經過獨熱編碼之后,存在一定程度的數據稀疏等問題.
2)加速發展時期.該階段主要算法有FM(Factorization Machine)、FFM(Field-aware Factorization Machines)、GBDT+LR等.FM是一種基于矩陣分解的推薦算法,通過考慮用戶和項目之間的相互關系[3],解決了one-hot編碼帶來的特征空間較大和大規模稀疏矩陣中特征組合的問題,而且該模型可以在稀疏的數據中進行合理的參數估計,時間復雜度低,優化效果好.FFM是Yu-Chin Juan等在FM的基礎上提出的引入類別(field)概念后的升級版本[4],同樣解決了one-hot編碼帶來的數據稀疏問題,該模型與FM的不足之處都在于不能進行高階的特征組合.GBDT+LR(Gradient Boost Decision Tree + Logistic Regression)是由GBDT來對訓練集提取特征作為新的訓練輸入數據[5],LR作為新輸入數據的分類器,該模型優勢在于方便處理離散化特征,并且模型簡單,容易實現分布式計算.缺點也很明顯,特征之間進行特征交互(例:衣服款式和性別或者年齡交叉),需要大量人工特征工程.
3)深入研究時期.在加速發展時期模型的基礎之上進行模型組合同時與深度學習技術相結合,對項目的特征表示從獨熱編碼處理向嵌入低維稠密向量空間發展[6],通過融合多維度特征進行模型訓練,進而挖掘上下文信息與目標之間的聯系.其中一類是基于FM或DNN(Deep Neural Networks)進行組合的模型[7],NFM[8](Neural Factorization Machine)、AFM[9](Attention Factorization Machine)、Deep Crossing[10]等;此外,隨著深度學習推薦算法研究的不斷深入,科研人員開始探索將自然語言處理中的句子序列的處理方法應用到推薦算法研究中,如word2vec、GRU[11](Gate Recurrent Unit)、BERT[12](Bidirectional Encoder Representation from Transformers)、Transformer等.基于Word2Vec模型Barkan等人提出Item2vec[13],將用戶購買序列中的商品類比NLP中語言處理方式嵌入到低維稠密向量,把物品視為單詞,行為序列視為集合,很好的表示了序列中物品之間的關系,提高了模型的泛化能力,但忽略了用戶商品交互之間的上下文信息.目前,有關序列推薦的模型有較為成熟的MC(Markov Chains),經典的TransFM[14](Translation-based Factorization Machines for Sequential Recommendation)和基于BERT的BERT4Rec[15]等,都是通過對序列中物品之間的關系進行建模.大量文獻表明,基于行為序列的推薦模型能夠很好的捕捉到序列中行為之間的依賴關系,抽取用戶興趣變化特點的強特征向量表示.
盡管以上深度學習推薦算法的研究已經取得了顯著的進展,但在實際電商購物中仍存在一定程度的問題.例如,用戶可能在某一段時間內收藏化妝品,而在另一段時間開始對衣服感興趣,而現有模型較少考慮這種用戶興趣隨時間變化呈現多樣性的特點;大多數模型只關注了行為序列對結果的影響,忽略了序列中不同行為之間的興趣強度[16].而在實際購物場景中,用戶的興趣是動態變化的,并且近期和長期的行為對用戶最終的購物目的影響程度也是不同的.綜上所述,可以看出,建立融合上下文信息的序列模型來模擬用戶的興趣變化路徑的多樣性特點,幫助用戶在面對海量商品時快速決策.
本文貢獻:
1)提出用戶興趣衰減因子decay_factor,有效反映用戶行為之間的依賴關系,模擬用戶興趣路徑隨時間動態變化的特點;
2)將用戶行為序列按照行為習慣劃分為長期和短期會話序列形式,利用文本卷積分類(TextCNN)模型自動獲取行為序列特征深層次表示,更細粒度的挖掘用戶潛在興趣特征向量表示;
3)提出融合上下信息的序列模型,基于多頭注意力機制抽取長短期行為序列特征向量的潛在表示,位置向量和并行化計算有效增強序列之間的依賴性和提升模型的性能.
文本卷積分類(TextCNN)是Yoon Kim等提出的將卷積神經網絡CNN應用到文本處理的算法[17].與傳統的圖像識別領域的CNN網絡相比,TextCNN模型結構簡單,參數量小,在網絡結構上只通過一層卷積和一層池化層輸出向量拼接,通過softmax函數激活,從而能夠更好地捕捉局部相關性.在本文中,使用用戶行為序列預訓練好的嵌入向量輸入到TextCNN模型中捕捉序列的局部特征,自動進行特征篩選獲得不同抽象層次的序列行為潛在向量表征[18].
2.1.1 卷積層
卷積層是TextCNN模型的核心組成,具有局部感知和參數共享的特點,是由一組可學習的卷積單元(kernels)組成.自然語言處理中,嵌入向量矩陣的每一行表示句子中每個單詞的信息.由于句子中相鄰詞之間的相關性普遍很高,使用TextCNN進行卷積操作時,不僅關注了句子本身的詞義信息,還考慮了詞序之間關系及其上下文信息.
在本文中,將用戶歷史行為序列行為類比為自然語言中每個句子中詞與詞之間的關系,使用TextCNN對序列嵌入之后的特征向量進行卷積操作,不僅能夠關注行為序列本身的信息,還可以考慮到序列之間的依賴關系和行為的上下文信息.卷積操作的輸入是序列經過嵌入層后得到矩陣A∈m×n,A[i:j]表示A的第i到第j行,卷積操作過程如公式(1)~公式(3)所示.
xi:i+h-1=w·A[i:i+h-1]
(1)
ci=f(w·xi:i+h-1+b)
(2)
c=[c1,c2,…,cn-h+1]
(3)
其中c∈n-h+1表示特征圖(feature-map),b∈為偏置項,f為激活函數,常用的有softmax、sigmoid、tanh和relu等.
2.1.2 池化層

2.1.3 全連接層
全連接層(fully connected layers,FC)是在整個卷積神經網絡傳播過程中起到對樣本分類的作用.對于經過卷積層、池化層和激活函數層的特征向量隱層表示空間映射到樣本標記空間(分類空間).其本質就是特征從一個向量表示空間線性映射到另一個向量表示空間.
Transformer是由是由Ashish Vaswan等人在2017年提出的一個基于多頭注意力機制(Multi-Head Attention)的模型結構來處理序列模型相關問題.其結構由編碼和解碼兩部分組成:編碼器有6個相同的層堆疊而成,每一層有兩個子層,一層是多頭注意力機制,另一層是簡單的全連接層前饋神經網絡,然后又接入殘差連接網絡并進行層標準化操作;解碼器和編碼器結構類似,只不過在兩個子層結構之上又添加了編碼-解碼注意力層.總的來說,其優勢可以歸結為:1)位置向量和并行化計算有效增強序列之間的依賴性和提升模型的性能;2)計算兩個位置之間的依賴關系所需計算次數不隨距離變長而增長.
2.2.1 多頭注意力(Multi-Head Attention)
Multi-Head Attention是Transformer中編碼器和解碼器的重要組成部分.其結構如圖1所示,從圖中結構可以看出,對于初始的Q,K和V向量矩陣,首先分別經過線性變換Linear映射到另一個特征表示空間,然后做h次縮放點積操作.與注意力機制不同的是Multi-Head Attention采用自注意力機制(Scaled Dot-Product Attention),在注意力機制的基礎之上添加了縮放點積操作,從兩方面提高了注意力層的性能:一方面增強了模型專注于不同位置編碼的能力;另一方面自注意力可以提取序列之間自身的依賴關系,幫助編碼器在對每個行為進行編碼時關注與之相鄰的行為信息.

圖1 多頭注意力機制Fig.1 Multi-head attention structure
2.2.2 位置向量
由于模型中沒有任何循環或者卷積操作,不能學習序列中的位置順序信息.也就是說,如果將序列中每個行為之間的關系打亂不影響Attention的計算結果.為了保持序列中的順序信息,需要將序列中每一項進行位置編號,然后每個編號位置對應一個向量,通過對位置向量和序列嵌入向量進行拼接或者相同維度向量加和的方式得到新的含有位置信息的行為序列特征表達,這樣Transformer層就可以分辨出序列中不同位置的行為信息.可以看出,這種方式的優勢在于不管句子中當前的詞和其它詞的空間距離有多遠,對于結果相關性的影響都是相同的.另外,Transformer在計算過程中不僅用到前面的詞向量信息還考慮到后面的詞信息,并且位置向量和并行化計算有效增強序列之間的依賴性和提升模型的性能.
綜上所述,鑒于TextCNN模型參數量小,訓練速度快并且可以學習深層次特征表示的特點和Transformer可以并行化計算的優良性能,本文嘗試將TextCNN應用于用戶序列的特征提取和使用Transformer學習序列之間的位置關系,得到序列特征的潛在向量表示用于之后的推薦任務.
融合上下文信息序列的深度學習推薦模型DeepSeq結構如圖2所示.該模型包括4部分:1)輸入層;用戶歷史行為長、短期序列元組嵌入到低維稠密向量空間,行為序列是由用戶歷史長期和短期的會話組成序列元組并且設計興趣衰減因子decay_factor表示用戶興趣強度隨時間變化情況,長期會話基于用戶在最近一個月內的購物情況分析,短期的會話聚合用戶在過去的30min內的操作情況和行為類型;2)TextCNN層;自動獲取得到用戶長期和短期行為序列特征深層次表示;3)Transfomer層;基于多頭注意力機制和位置編碼抽取用戶長、短期行為序列的軌跡向量,位置編碼和多頭注意力機制不僅降低序列位置對結果相關性的影響,還可以提高模型的計算性能;4)全連接層;是由用戶項目輔助信息交叉特征向量和行為序列特征向量拼接輸入到深層神經網絡.用戶項目輔助交叉信息包括用戶的年齡和性別的交叉(如年輕女性用戶喜歡化妝品款式新穎的衣服)、年齡和職業交叉、用戶類型和物品的使用周期交叉等;最終通過MLP預測用戶偏好的商品.

圖2 模型結構圖Fig.2 DeepSeq model structure
會話(session-based)是服務端用來記錄識別用戶的一種機制,可以創建session來跟蹤用戶的點擊、瀏覽等情況,構造出一組具有時序關系的購物記錄長、短期行為序列.融合上下文信息的用戶長、短期行為序列構造過程圖3所示.

圖3 序列構造過程Fig.3 Sequence construction process
首先,對原始的用戶行為記錄進行數據預處理,清洗惰性用戶和爬蟲用戶;然后,一方面根據采樣區間提取出用戶行為序列,基于會話劃分規則將原始序列分為長期行為和短期行為;另一方面,在預處理后的數據中提取用戶、物品的上下文信息,融合到用戶長、短期行為序列當中.本文中,把用戶行為e按時間戳timestamp順序構成用戶歷史行為交互序列S,如式(4)~式(6)所示.
Sshort={e1,e2,e3,…,ei}
(4)
Slong={ei+1,ei+2,ei+3,…,ej}
(5)
S={Sshort,Slong}
(6)
其中,Sshort表示短期興趣Slong表示長期興趣,行為信息e由公式(7)所示.
{e=(item,action,timestamp,context)}
(7)
其中item表示物品信息,如項目 ID 及其相關屬性,action表示用戶行為類型信息,timestamp表示行為發生的時間,decay_factor為興趣衰減因子,context為行為發生時所處的情境信息,包括時間、地點、心情,以及商品生命周期,物品相對于用戶生命周期,評分信息,興趣衰減因子等.反映用戶興趣隨時間動態變化特點的興趣衰減因子decay_factor可由公式(8)所示.
(8)
其中,ti指當前交互時間,tj之前交互時間,時間差值越大表明該用戶對該商品的興趣持續長度越久,那么興趣程度也就越高.score表示評分信息,評分規則為:瀏覽(指瀏覽商品詳情頁):1分,點擊:2分,購買:3分,收藏:4分,關注:5分,加購:6分,購物車刪除:-1分.其中收藏、關注和加購權重分數比購買分數高是因為用戶對某種商品購買之后一段時間內則對該物品保持較低的關注度;而收藏、關注、加購表示用戶對該物品關注度是遞增的;刪除表明在該時刻用戶對該物品關注度降低;frequency表示交互的頻率.
本文特征提取部分以TextCNN為基礎,將通過Embedding之后得到向量序列作為卷積模型的輸入.具體的向量操作過程如圖4所示.

圖4 TextCNN分類模型Fig.4 TextCNN classification model
從圖4可以看出,用戶行為序列長度被設置為n,每個行為嵌入之后的向量維度為k,則序列中第i個行為的嵌入向量可以表示為xi∈k.那么,每個用戶歷史行為序列的向量表示如公式(9)所示.
x1:n=x1⊕x2⊕…⊕xn
(9)
其中,⊕為拼接運算符, 拼接之后的向量作為卷積層的輸入,xi∈Rd表示序列中第i個行為對應的特征向量.文本卷積操作選取3個不同尺寸的卷積核kernel_sizes=(2,3,4),每個尺寸的卷積核分別有兩個輸出 channel,然后經過激活函數,得到每個特征步的向量ci如公式(10)所示.
ci=f(w·xi:i+h-1+b)
(10)
經過卷積操作之后,該行為序列可以得到當前濾波器所有的輸出feature map表示hi,如公式(11)所示.
hi=[c1,c2,…,cn-h+1]
(11)
其中,向量hi為n-h+1維的向量,h表示卷積核的大小.最后經過級聯池化操作,選取每個feature map的最大值表示,來捕獲序列中重要的特征信息.最終的得序列特征向量表達,如公式(12)所示.
(12)


(13)
(14)
(15)

(16)
(17)
(18)

上述Multi-head Self-Attention的過程不能學習行為序列的順序信息,即如果將用戶序列中的K,V值打亂,不影響最終的Attention計算結果.因此需要在序列中引入位置向量Position Embedding,如公式(19)和公式(20)所示.
PE2i(p)=sin(p/100002i/dpos)
(19)
PE2i+1(p)=cos(p/100002i/dpos)
(20)


X=[Xauxiliary,XP]
(21)
然后,將X輸入到深層神經網絡MLP中進行訓練,經過多個隱藏層和激活函數得到最終的預測向量.定義隱藏層計算如公式(22)所示.
H=f(XWh+bh)
(22)
其中,f表示激活函數,X是多層感知機的輸入,Wh是隱藏層的權重,H是隱藏層的輸出,最終評分預測值y由公式(23)計算得到.設定合適的閾值,為用戶推薦其偏好的物品.
y=HW+b
(23)
其中,W是輸出層的權重,b輸出層的偏置值.
為了驗證本文提出的DeepSeq模型的推薦質量,選擇了3個具有代表性的數據集,阿里巴巴Alibaba和京東JD兩個真實購物場景中的數據集和一個Kaggle競賽Avazu數據集.互聯網行業,阿里巴巴和京東作為代表的大型電商購物網站,在保持高速發展和沉淀用戶的同時,積累了海量的真實數據用于工業界和學術界的科研工作.對于以上的每個實驗數據集都由用戶的基本信息表、SKU基本信息表和用戶行為表,用戶訂單表以及評論分數數據表以及日志等信息構成.本文實驗為了減少模型的訓練時間,分別從京東、淘寶和Avazu數據集中選取了9.8萬、5.3萬和2.6萬個用戶交互記錄.數據集的統計情況如表2所示.

表2 3個不同數據集的統計情況Table 2 Statistics of datasets
為了構建本文融合上下文信息的行為序列,對于數據每個用戶點擊過的商品,按時間戳順序構成含有T個行為信息的序列結構,用來預測第T+1次的用戶行為類型.由于抽取的原始數據中存在臟數據,清洗掉該部分數據.最終構建的京東、淘寶和Avazu數據集分別保留了9.5萬、5.1萬和2.42萬條用戶行為序列數據信息.對于構建完成的每個數據集,分別選取數據集中前70%的數據用于模型的訓練,后30%用于模型的測試與評估.
評價指標采用推薦系統常用的均方根誤差(RMSE)和在AUC基礎上改進的針對個性化推薦的評價指標GAUC.其中RMSE 是在均方誤差基礎上進行開方操作,值越小表明模型的損失函數值越小,即模型效果越好;GAUC表示模型同時對正例和負例的分類能力,則值越大代表模型分類準確率越高.均方誤差RMSE計算如公式(24)所示.
(24)
其中,n是測試集總記錄數,y(i)是真實的用戶點擊情況,f(X(i))是預測的結果.GAUC計算過程如公式(25)所示.
(25)
即先計算每個用戶的AUC,然后加權平均,實際運算中權重可以設置為每個用戶瀏覽量或者點擊的次數.
為了驗證本文融合上下文信息序列推薦模型的有效性,分別設置了CCPM、AFM、PNN、DCN、AutoInt和WDL對比模型:
1)CCPM:Qiang[19]等提出的將卷積神經網絡用于預測用戶下一次點擊行為.
2)AFM:Xiao[20]等提出的使用注意力機制來學習不同特征之間交互的重要性.
3)PNN:Qu[21]等提出基于乘法的運算來體現特征交叉的網絡結構.
4)DCN:在2017年谷歌提出的自動進行特征交互的推薦預測模型,并且不需要的額外的特征工程[22].
5)AutoInt:Song[23]等人提出的以多頭注意力機制為基礎在將高維稀疏特征(包括連續特征和類別特征)映射到低維空間的同時建模高級特征交叉.
6)WDL:在2016年Cheng[24]等提出的將線性特征交叉工程與深度模型進行聯合的推薦模型.
4.5.1 參數分析
本實驗目的主要探究激活函數對深度神經網絡部分的非線性影響能力,常用的激活函數有sigmoid,relu,tanh和leaky_relu.其中sigmoid和tanh函數屬于飽和激活函數,relu是修正線性單元,相比relu函數,sigmoid激活函數計算量大,反向傳播時容易出現梯度消失情況,而 leaky_relu的特點在于解決了relu函數進入負區間后神經元之間不學習的問題.以下參數實驗均在京東數據集上進行.設置模型的學習率為0.001,丟失率為50%.激活函數分別選取sigmoid,relu,tanh和leaky_relu,測試結果如圖5所示.從圖5結果可以看出,激活函數leaky_relu相對于其它3個激活函數損失函數值最小,并且在較少的迭代次數下便達到收斂狀態.當選取激活函數relu和tanh時,模型的損失函數值趨近一致,但都未達到leaky_relu的性能表現.因此,本文選取leaky_relu作為模型的激活函數.

圖5 不同激活函數對模型結果的影響Fig.5 Effect of different activation function on model results
在確定失活率對模型結果的影響時,設置學習率為0.001,激活函數為leaky_relu.分別測試dropout值為0.5,0.6,0.7,0.8和0.9時對模型準確率的影響.測試如圖6所示.由圖中測試集結果可以看出,當丟失率小于0.7時,模型出現過擬合現象;當隨機丟失率大于0.7時,模型出現欠擬合現象.因此在本文實驗中選取隨機丟失率為0.7,使模型達到最優.

圖6 dropout對模型結果的影響Fig.6 Effect of different dropout on model results
在訓練模型時其它超參數不同也會對實驗結果產生相應的影響,但這些參數選取不是本文研究的重點,通過實驗測試可知其它參數設置如表3所示.

表3 模型參數Table 3 Model parameter
4.5.2 增加項目輔助信息消融實驗分析
為了驗證項目輔助信息對DeepSeq模型的影響,設計增加了輔助項目信息的消融實驗.輔助項目信息,包括用戶年齡、性別、職業、用戶等級、項目使用周期、項目類型和評論等信息,交叉信息包括年齡和性別、年齡和職業、用戶類型和項目的使用周期交叉等.該實驗對比了本文模型增加輔助信息后分別在京東、淘寶和avazu 3個不同數據集上的性能表現.實驗結果如圖7所示,其中original表示未添加輔助項目信息,auxiliary表示增加了項目輔助信息,從圖7結果可以看出,增加項目輔助信息auxiliary使得DeepSeq模型在京東、淘寶和avazu 3個數據集上的GAUC值均有明顯提升.
4.5.3 不同序列長度和衰減因子decay_factor對比分析
為了探究用戶行為序列長度對模型結果的影響,本文在以上參數實驗和項目輔助信息消融實驗基礎之上進一步實驗.分別設計了20,30,40,50,60,5種不同長度的序列,實驗結果如圖8所示.圖8結果顯示,當序列長度為50時,模型的損失函數值最低,模型的預測效果達到最優.另外,可以看出當序列越長時,模型性能反而降低,推測可能隨著序列長度的增加,序列中噪聲增多,從而導致模型準確率降低.

圖7 增加項目輔助信息模型結果的影響Fig.7 Effect of increase auxiliary information on model results

圖8 序列長度對結果的影響Fig.8 Effect of different sequence lengths on model results
為了進一步驗證衰減因子decay_factor對模型結果的影響.在以上參數實驗基礎之上,設計未添加興趣衰減因子的Base模型和在序列中融合興趣衰減因子之后的模型對比分析,通過評價指標值GAUC值反饋模型性能變化情況.實驗結果如表4所示,可以看出,融合興趣衰減因子之后,模型在3個不同數據集上分別得到了0.28%、0.46%和0.12%的提升.

表4 增加decay_factor模型性能變化Table 4 Comparison of model performance
4.5.4 模型分析
通過表3設置的預訓練參數和以上優化后的參數值搭建本文的DeepSeq序列推薦深度學習模型,采用訓練集對模型進行訓練得到分類器,然后使用測試集對訓練好的模型進行性能評估.為了進一步驗證本文序列深度推薦模型相對于現有模型的有效性,分別選取了CCPM、AFM、PNN、DCN、AutoInt和WDL模型與本文提出的DeepSeq模型在3個數據集上進行對比分析,測試結果如表5所示.從表中結果可以看出,本文序列推薦模型在評價指標RMSE和GAUC在3個數據集上均得到了優化.并且,在RMSE評價指標上至少降低了0.21%,在GAUC評價指標上提升值均超過了0.59%.

表5 不同模型對比結果Table 5 Model test results
隨著用戶購物習慣呈現的興趣多樣性和動態性,現有的推薦模型已經不能滿足用戶的購物需求,為了解決該問題.本文建立一種融合上下文信息的個性化序列推薦深度學習模型,可以在序列中融合用戶和項目的輔助信息,將位置向量和序列向量結合并行化計算有效增強序列之間的依賴性和提升模型的性能,并且能夠模擬用戶興趣隨時間動態變化的特點,解決傳統推薦模型中存在的數據稀疏和冷啟動問題,深入挖掘用戶興趣.
近年來,隨著知識圖譜和圖神經網絡嵌入技術的發展,基于知識圖譜和社交網絡的智能推薦算法也逐漸成為該領域研究的熱點.以知識圖譜和社交網絡作為邊信息生成推薦的價值在于一方面可以引入更多的語義關系,發現用戶的深層次興趣;另一方面通過知識圖譜中不同對象之間的鏈接關系,有利于推薦結果的發散.利用知識圖譜和社交網絡豐富的信息表示與推薦系統結合將是未來該領域研究的熱門方向.