王 凱,沈 艷
(成都信息工程大學 計算機學院,四川 成都 610025)
推薦系統可在信息過載的情況下為用戶快速高效地推薦想要的信息。點擊率(Click Through Rate,CTR)預估是推薦系統的重要組成部分,其是基于用戶信息、物品信息和其他信息預測用戶對指定目標物品產生點擊或不點擊的行為。通常情況下,CTR 預估模型基于傳統機器學習算法構建,以邏輯回歸[1]和因子分解機(Factorization Machine,FM)[2]為代表,在數據稀疏和用戶冷啟動的情況下,模型很難學習到有用的信息并作出預測,極大地影響了預測準確性,而且在面對非結構化數據,如圖像、視頻等時也不能從中提取特征信息。近年來,深度學習技術廣泛應用于各個行業,作為廣告、搜索、推薦業務核心的 CTR 預估模型也借助深度學習技術獲得了質的提升。
CTR 預估模型要處理的特征信息包括用戶特征、待預測物品特征、上下文特征和用戶的歷史行為4 類特征數據,這4 類特征的提取會極大地影響預測準確性。與傳統機器學習模型相比,基于深度學習的CTR 預估模型可在數據稀疏的情況下挖掘出復雜的特征信息,并根據實際業務進行結構調整,從而更加符合現實推薦場景[3]。例如,文獻[4]提出的Deep Crossing 模型采用Embedding+MLP(Multilayer Perceptron)結構,使用多層神經網絡對特征進行深度交叉,加強了特征提取能力;文獻[5]提出Wide & Deep Learning 模型,其結合線性模型的記憶能力和 深度神經網絡模型的泛化能力,提升了模型整體性能,并成功應用至 Google Play 的APP 推薦業務;文獻[6]分別提出Deep-FM 模型,結合了推薦系統的FM 和深度神經網絡中的特征學習能力,相比于Wide&Deep Learning 模型,DeepFM 模型只需要原始特征,不需要特征工程;文獻[7]在DeepFM 的基礎上利用分層注意力機制處理來自不同層次的特征,在使用神經網絡提取高階特征的同時提取低階特征模塊,然而并沒有引入用戶的歷史行為特征;文獻[8]使用注意力機制捕獲待預測的目標物品與用戶歷史行為之間的聯系,文獻[9]則考慮到歷史行為背后的時序信息,使用門循環神經網絡(Gated Recurrent Units,GRU)對用戶歷史行為進行特征提取,但忽視了歷史行為內部之間的聯系,從而造成歷史行為特征提取能力不足,同時也沒有考慮低階特征的構建;文獻[10]首先使用自注意力機制處理歷史行為特征,在此基礎上采用卷積神經網絡進一步提取特征,雖然加強了高階特征提取能力,但沒有構建低階特征;文獻[11]在DeepFM 的基礎上增加了一個高階顯示特征交叉模塊,以彌補FM 只能進行二階特征組合的不足,但其沒有考慮不同特征對預測結果的影響,也忽略了用戶的歷史行為;文獻[12]提出AFM 模型,即在FM 模型的預測層與特征交叉層之間加入注意力網絡,通過該網絡計算出每個特征的權重并利用Softmax 函數進行加權求和得到最終特征向量;文獻[13]首次將Transformer[14]引入到推薦模型中,基于用戶歷史進行推薦,但沒有提取其他特征;文獻[15]利用Transformer 提取用戶歷史行為特征,同時將其他特征與歷史行為特征進行組合后預測;文獻[16]在提取用戶歷史行為信息的基礎上將用戶特征、上下文特征等特征納入進來,并且使用注意力計算不同特征對預測結果的影響程度;文獻[17]將用戶序列分為長期和短期行為,使用Transformer 提取長短期行為特征,在最后一層融合兩種特征進行預測;文獻[18]認為Transformer 的復雜結構在推薦領域中會帶來過擬合的風險,因此對Transformer 進行改進,使用濾波算法代替Transformer 中的多頭注意力層,提升了序列推薦性能,但忽視了低階特征對預測的貢獻。
為克服現有模型對用戶歷史行為特征能力提取不足、忽視低階特征構建、不同特征缺乏有效融合的問題,本文提出一種CTR 預估模型TDFA(TransDeepFM-Attention-Based)。該模型使用Transformer 網絡對歷史行為序列進行特征提取,考慮到歷史行為中每個項目與預測目標的關聯程度,使用注意力機制計算歷史中每個行為與預測目標的相關性,并通過加權求和得到用戶的歷史行為特征;然后將用戶歷史行為特征與其他特征輸入多層神經網絡獲取高階特征,同時采用FM 模塊獲取低階特征;最終在以上基礎上通過添加全局注意力層計算得到高、低階特征權重值,獲取CTR 預估值。TDFA 模型綜合考慮了用戶歷史行為和高低階特征信息,并且使用注意力機制有效融合高低階特征,提升了預測準確性。
CTR 預估模型的輸入數據可分為4 類,即用戶信息User_profile、待預測物品信息Item_info、上下文信息Context和用戶歷史行為序列User_history。用戶信息指人口屬性描述,如年齡、性別、職業等;物品信息包括id、類別等;上下文信息指環境特征,如時間、天氣、節日等;用戶歷史行為則是一個由物品信息構成的序列。CTR 預估問題可定義為:
通過輸入4 類特征輸出預測值,并將物品的預測值排序后取top-k 個物品作為該用戶的推薦列表。
本文提出的TDFA 模型結構如圖1 所示,分為5 層結構。第一層為輸入層,第二層為嵌入層;第三層為特征提取層,該層分為高階特征部分和低階特征部分,其中高階特征部分包含Transformer 網絡、局部注意力層、拼接層和全連接層,低階特征為FM 模塊;兩部分得到的輸出在第4層全局注意力層結合后輸入到第5層的輸出層中進行CTR預測。
2.2.1 輸入層
模型的輸入數據由用戶社會屬性、上下文信息、目標物品信息和用戶歷史行為數據組成,這4 部分數據又分為數值型數據和類別型數據兩類。采用one-hot 或multi-hot編碼將數據轉換為向量[18]。以用戶屬性數據為例,用戶屬性數據包含年齡、性別、職業等特征域,每個特征域用一個向量v*表示,則用戶特征可表示為:

Fig.1 Overall structure of the TDFA model圖1 TDFA模型整體結構
例如性別特征中男女為類別型數據,采用one-hot 編碼將男編碼為[1,0]、女編碼為[0,1]。如果特征v*為數值型數據,如年齡,則將其離散化處理成類別型數據,然后轉換為one-hot 向量,在輸入層分別可以得到用戶特征向量Vuser,目標物品向量Vtarget_item,上下文特征Vcontext和用戶歷史行為序列Vhistory_item=[vh1,vh2,vh3,…,vhn],其中vhn表示該用戶點擊(觀看、購買等交互行為)過的物品向量。
2.2.2 嵌入層
One-hot 編碼的特點是向量長度為該特征域下所有特征的數目。以特征域職業為例,如果職業分為老師、醫生、程序員、公務員和其他人員5 類,那么one-hot 向量即為五維,對應特征位標1,其余位置標為0。因此,通過輸入層進行one-hot 編碼處理得到的特征向量的主要問題是向量維度過大,特征數據高度稀疏,這將造成模型欠擬合。嵌入層的作用就是將高維稀疏的特征向量轉換為低維稠密的嵌入向量,其轉換規則為:
式中,v*為one-hot 或multi-one 向量,M*為嵌入層為該特征學習到的一個權重矩陣M*∈Rn×d。通過嵌入矩陣M*的轉換,n維向量v*轉換為d維的嵌入向量e*,d<<n。例如特征域下有老師、醫生、程序員3 類,嵌入向量維度為2維,假設特征為老師,one-hot 處理后得到[1,0,0],經過嵌入層轉換為[0.3,0.7],如圖2所示。
因此,由輸入層得到的4 類特征Vuser、Vtarget_item、Vcontext、Vhistory_item經過嵌入層后可表示為:

Fig.2 Example of embedding vector圖2 嵌入向量舉例
2.2.3 特征提取層
(1)Transformer 網絡。在CTR 預估領域中,用戶的興趣隱藏在該用戶的歷史行為中且用戶的歷史行為是一個時間序列,序列中的每個物品代表了該用戶的購買或觀看行為。例如在電商網站的購買行為中,某用戶購買鍵盤后,那么該用戶接下來購買鼠標、內存條的概率明顯大于購買其他類型商品的概率,對這樣的序列信息進行挖掘可以使模型學習到用戶從購買某物品到購買另一物品背后隱藏的動機,使系統推薦更加準確。Transformer 網絡起源于機器翻譯領域,可以學習到單詞與單詞之間互相包含的聯系。將Transformer 引入推薦系統,可以加強對用戶歷史行為特征的提取能力。本文中Transformer 網絡由位置編碼、多頭自注意力、殘差&層歸一化和一維卷積網絡(Conv1D)組成,結構由圖3所示。
不同于循環神經網絡的順序輸入,Transformer 是并行處理輸入信息的,這就導致Transformer 丟棄了序列中的順序信息,因此本文采用時間表示序列前后順序,將時間差分桶化后作為特征同樣轉換為Embedding 向量,拼接到用戶的歷史序列中,表示為:

Fig.3 Transformer structure圖3 Transformer結構
式中,eh表示物品向量,et表示時間向量,將eh與et拼接后得到帶有時間信息的向量eht。
注意力的計算公式為:
式中,Q表示查詢向量,K表示關鍵字向量,V表示值向量。Q、K、V的計算過程如下:將用戶歷史行為Eh通過線性投影得到對應的權重矩陣WQ、WK、WV,則查詢向量Q=EhWQ,K=EhWK,V=EhWV。縮放因子d表示輸入向量的維度。
多頭注意力機制是將權重矩陣WQ、WK、WV按照頭數(head)分為x套,這樣對于Eh就有x套Q、K、V向量,每套參數各自進行式(6)的注意力計算,共計算x次,最后將x次的計算結果進行拼接。多頭注意力的計算公式為:
式中,(1≤i≤x)表示第套參數,WO為可學習的參數矩陣。多頭注意層的輸出采用s表示。
層歸一化操作有利于穩定和加速神經網絡;殘差網絡的核心思想是通過加入一個殘差連接將原始低階的特征輸入到高階,能保留原始序列特征。殘差和層歸一化表示為:
式中,正則化(Dropout)用于緩解神經網絡過擬合問題。
多頭注意力網絡是對輸入特征數據進行線性變換。為增強模型的非線性變換能力,將多頭注意力層的輸出送入兩層一維卷積網絡(Conv1D),同時添加殘差和層歸一化,公式為:
式中,W1、b1和W2、b2分別為兩層卷積網絡的權重系數和偏置項。
至此,用戶歷史行為序列Eh經過Transformer 網絡后轉換為Fh=[t1,t2,t3,…,tn]。
(2)局部注意力層。在推薦場景中,并不是用戶歷史序列中的每個項目都與待推薦的項目有關,注意力機制可以基于待推薦的目標物品為歷史序列中的每個物品分配一個權重。通過一個全連接層計算出Fh每個歷史項目的初始權重,使用Softmax 函數進行處理得到最終權重值,計算過程如圖4所示。

Fig.4 Final weight calculation process圖4 最終權重計算過程
首先將目標項目與歷史序列Fh中的每個項目通過式(11)進行拼接:
將式(11)的結果送入全連接層,使用PReLU 激活函數進行處理,表示為:
式中,Wt和bt分別為權重系數和偏置項。然后使用Softmax 函數對式(12)結果進行處理,表示為:
最后對用戶歷史序列進行加權求和,得到最終用戶歷史特征向量H,表示為:
(3)拼接層。在該層中將用戶特征euser、目標物品特征etarget_item、上下文特征econtext與經過Transformer 和局部注意力層得到的用戶歷史特征H進行拼接,表示為:
(4)全連接層。通過全連接層對特征向量中的各個維度進行充分交叉組合,挖掘出更多非線性特征和復雜的交叉特征信息,使模型具有更強的表達能力。堆疊多個全連接層的計算公式為:
式中,yl為第l層的輸出,yl-1為第l-1 層的輸出,Wl為該層的全連接層權重系數矩陣,bl為該層的偏置向量。全連接層共k層,每層均使用PreLU 激活函數,最終經過全連接層的輸出表示為ydnn。
(5)FM。FM 用于解決二階特征交叉問題,本文模型包含一階線性特征部分和二階特征交叉部分,表示為:
具體來說,FM 為每個特征都學習到了一個隱向量v,在進行特征交叉時使用兩個特征對應的隱向量內積作為交叉特征的權重。DeepFM 模型中的FM 部分與deep 部分共享特征的嵌入層,即將式(17)中的vi·vj替換為對應特征的嵌入向量點積ei·ej,表示為:
2.2.4 全局注意力層
目前已經得到通過多個全連接層輸出的高階特征向量ydnn,以及通過FM 模塊得到的一階線性特征和二階交叉特征的組合特征向量yfm。Wide&Deep 和DeepFM 模型已經證明了融合高低階特征可以提高模型的預測準確度,但是DeepFM 模型同等看待兩個子模塊,而高階特征和低階特征對預測的影響程度是不同的。為此,本文添加注意力層為兩種特征賦予權重,以衡量在預測不同目標物品時高低階特征影響的重要程度。將ydnn和yfm送入全連接層,使用tanh 激活函數計算出每個分量的注意力得分α1、α2,然后使用Softmax 函數進行處理,最后將兩個輸入分量進行加權融合得到全局特征Y,計算公式如下:
2.2.5 輸出層
Sigmoid 函數的值域在0~1 之間,與CTR 的物理意義相符合。全局特征Y仍然是特征向量,只使用一個神經元。沒有激活函數的全連接層(Dense)將Y轉換為一個標量Y'(見式(22)),然后輸入到Sigmoid 函數中,得到模型對于目標物品預測的CTR(見式(23))。
損失函數表示真實值與預測值的差距,模型訓練的目標是最小化損失函數值。本文模型訓練采用推薦系統和CTR 預估模型常用的對數似然函數,表示為:
式中,y∈{0,1},表示真實標簽值,在本次實驗的訓練樣本中,標簽1 表示點擊,0 表示未點擊;y'∈(0,1),表示模型預測的CTR 值。
本次實驗編程語言使用Python3.8 和Tensorflow2.2 框架,在操作系統為Windows10、內存16G、顯卡型號為GTX 1050Ti的計算機上進行實驗。
亞馬遜產品數據集包含亞馬遜各類商品數據,有19萬個用戶、6 萬個商品、800 多個類別。選取該數據集下的電子數據子集,分為reviews_Electronics 和meta_Electronics兩個文件,其中reviews_Electronics 記錄了用戶的評價信息,包括評論者id、商品id、產品評級等信息,meta_Electronics 記錄了商品信息,包括商品id、類別等信息。用戶的所有行為都是有順序的,可以通過前k-1 個商品的點擊情況預測用戶是否會點擊第k個商品。在本次實驗中,為了得到更多特征,對用戶的點擊時間進行處理后得到月份、季節等上下文特征。Electronics 數據集只有用戶的點擊數據,為引入負樣本,將某用戶點擊過的物品從全部物品集中剔除后,隨機選取與用戶點擊過的物品數量相等的物品作為負樣本,使數據集正負樣本比例達到1∶1。經過處理之后得到239.48 萬條訓練集、41.91 萬條驗證集和17.96 萬條測試集。
Movielens-1M 是一個廣泛應用于推薦模型訓練的數據集,包含6 040 個用戶對3 883 部電影共100 萬條評分記錄,評分范圍為1~5。為適應CTR 預估問題,將4 分及以上劃分為正樣本,4 分以下劃為負樣本。與Electronics 數據集一樣,將前k-1 個觀影記錄作為歷史序列,用于預測第k個電影的CTR。處理之后得到69.59 萬條訓練數、20.88 萬條驗證數據和8.95萬條測試數據。
淘寶用戶行為數據集是阿里巴巴提供的一個淘寶用戶行為數據集,包含2017 年11 月25 日-12 月3 日有行為的約100萬隨機用戶的所有行為,包括點擊、購買、加購、喜歡,本實驗僅使用點擊行為。受計算資源限制,本文僅選取id前10萬用戶的點擊記錄。經過處理后得到1 227.74萬條訓練數據、368.3萬條驗證數據和157.85萬條測試數據。
數據集總體統計信息如表1所示。

Table 1 Dataset overall statistics information表 1 數據集總體統計信息
使用AUC(Area Under Roc Curve)[19]和LogLoss(交叉熵損失)[20]兩個指標評估模型性能,其中AUC 為CTR 預估模型的常用評價指標,其值為處于ROC 曲線(Receiver Operating Characteristic Curve)下方面積的大小,AUC 值越大表示模型性能越佳;LogLoss 表示真實值與預測值之間的差距,其值越小表示模型預測性能越佳。
TDFA 模型參數如表2 所示,其中dim 表示Embedding向量維度大小,在{16,32,64,128}中選擇;seq_len 表示用戶歷史序列長度,超過此長度截取,不足時添加0 來補充,在{20,50,100}中選擇;lr 為學習率,dropout 為丟棄率,mlp_shape 為全連接層的層數和每層包含的神經元個數;Transformer 中的head_num 和blocks 分別表示多頭注意力的頭數和Transformer 堆疊的次數。為防止過擬合,采用L2正則化。在3 種數據集上進行實驗時采用統一參數設置。

Table 2 Experimental parameter settings of TDFA model表 2 TDFA模型實驗參數設置
為了評估TDFA 模型的性能,采用DNN[4]、DeepFM[6]、DIN[8]、DIEN[9]、MIAN[16]模型與之進行比較。同時,為了驗證Transformer 在序列建模中的優越性,設計與傳統序列網絡循環神經網絡RNN、長短期記憶人工神經網絡LSTM、GRU 的比較實驗,即采用RNN 替換Transformer 部分并將模型命名為RDFA,采用LSTM 替換Transformer 命名為LDFA,采用GRU 替換Transformer 命名為GDFA。實驗結果見表3—表5 所示。可以看出,TDFA 模型在3 個數據集上的AUC 和Logloss 指標均優于其他模型。在Electronics 數據集上,與DeepFM、DIN、DIEN、MIAN 模型相比,TDFA 模型的AUC 平均提升了1.16%,Logloss 平均降低了5.4%;在Movielens-1M 數據集上,TDFA 模型的AUC 平均提升了1.51%,Logloss 平均降低了3.51%;在淘寶數據集上,TDFA模型的AUC 平均提升了1.10%,Logloss 平均降低了3.73%。此外,使用RNN、GRU 和LSTM 代替Transformer 時,模型性能下降明顯,證明了Transformer 在序列行為上強大的表征能力,優于傳統循環網絡。

Table 3 Performance of each model on the Electronics dataset表3 各模型在Electronics數據集上的表現

Table 4 Performance of each model on the Movielens-1m dataset表4 各模型在Movielens-1m數據集上的表現

Table 5 Performance of each model on Taobao dataset表5 各模型在淘寶數據集上的表現
為了證明TDFA 模型關鍵部分設計的有效性,分別采用去除全局注意力層、去除FM 模塊、去除Transformer 模塊等方式在3 個數據集上進行消融實驗,結果如表6 所示??梢钥闯?,在去掉全局注意力層時,AUC 指標分別下降0.52%、1.08%、0.11%,這是由于高低階特征對預測結果的影響程度是不一樣的,使用注意力機制為兩種特征分配權重可有效融合兩種特征,提升模型的預測精度;在去掉FM模塊時,AUC 分別下降1.26%、1.58%、1.48%,這是由于經過多層神經網絡處理的特征消解了原始特征中的有效信息,弱化了模型的記憶能力,使用FM 模塊獲取低階特征信息可以作為深度模型的有效補充,提升預測準確度;在去掉Transfomer 模塊時,AUC 指標下降比較明顯,分別下降了3.21%、2.71%、4.43%,這是由于如果去除了Transformer,即摒棄了用戶歷史行為這一重要特征信息,會明顯降低模型性能。以上實驗證明了模型各個關鍵部件對預測的有效性。

Table 6 Ablation experiment results表6 消融實驗結果
針對以往推薦模型中對用戶歷史行為特征提取能力不足、忽略低階特征交叉的問題,本文提出TDFA 模型。該模型首先使用自注意力方法獲取用戶歷史行為之間的關系;然后將歷史行為與預測目標進行關聯得到用戶歷史行為特征,將用戶歷史行為特征與其他特征一起送入多層神經網絡得到高階特征,同時增加FM 模塊提取低階特征,添加全局注意力為高低階特征分配權重;最后在3 個公開數據集上證明了TDFA 模型的優越性。后續計劃將用戶歷史行為區分為長期和短期行為分別進行研究,同時加強用戶歷史行為的特征提取能力或增加子模塊提取更多特征交叉信息,以獲得更加精準的推薦模型。