侯 娜 邵新慧
(東北大學理學院 遼寧 沈陽 110819)
互聯網的出現和迅速發展使得廣告有別于傳統的媒體工具,借助互聯網這個平臺,在線廣告應運而生[1]。目前,很多互聯網公司的收益主要來源于廣告,比如微博、谷歌等。廣告的收入來源于用戶點擊廣告,廣告拍賣的效益取決于點擊率(Click-Through Rate,CTR)預測的準確性。由于其廣泛的價值和巨大的市場回報率,廣告點擊率問題成為學術研究的熱點。
點擊率是指某條廣告點擊次數與展示次數之比,反映了其內容的關注程度。高點擊率意味著廣告得到了精準的推送,有利于廣告主產品的推廣,增加平臺方投放網站的訪問量,給用戶帶來符合自己需求的信息,產生良好的搜索體驗。精準的廣告點擊率可以實現廣告主、平臺方和用戶的三方利益的最大化[2]。
廣告點擊率預測的發展初期,常用的研究方法是概率統計[3],但因數據稀疏,預測效果不理想。Richardson等[4]分別采用邏輯回歸(Logistic Regression)和多元可加回歸樹(Multiple Additive Regression Trees,MART)方法進行預測,并采用擬牛頓法訓練,結果表明Logistic模型的預測效果優于MART模型。Logistic模型簡單但學習能力有限,不能捕獲到非線性信息[5]。為挖掘非線性信息,Trofimov等[6]采用梯度決策樹(Gradient Boosting Regression Tree,GBDT)方法進行廣告點擊率預測,GBDT能實現對特征的自動挖掘和組合,大量節省了人工成本。Facebook公司[7]提出將GBDT與LR模型相結合,將GBDT模型的結果作為LR模型的輸入,重新進行訓練,從而實現對廣告點擊率的預測。谷歌[8]提出FTRL(Follow The Regularized Leader Proximal)模型,針對LR模型設計獨特的梯度下降方法,為防止過擬合加入正則化,同時提高了廣告點擊率預測的準確性。
為提高模型的預測性能,Rendle[9]提出了因子分解機(Factorization Machine,FM)模型,FM模型自動地捕獲二階交叉特征,解決了高維稀疏數據情況特征組合的困難。為解決當不同的域進行組合時,隱向量可能會表現服從不同分布的問題,研究人員基于FM模型提出了FFM[10]、AFM[11]、FwFM[12]等模型。
近年來,隨著深度學習在自然語言處理、圖像處理等領域取得不錯的成果,引起了CTR預測研究領域的關注。Google研究人員提出Wide & Deep模型[13],該模型將淺層模型LR模型和非線性模型DNN(Deep Neural Networks)巧妙地融合,開創了嵌入的方法在CTR研究領域的先河。進一步地,Guo等[14]提出DeepFM模型,將Wide & Deep模型中的淺層模型替換為FM,并且使FM與DNN共享嵌入層的輸出值,節省了人工提取特征的時間。Lian等[15]針對DCN[16]的不足,并結合DeepFM提出XDeepFM,該模型同時以顯式和隱式的方式學習高階的特征交互,并且特征交互發生在向量級。
XDeepFM模型中采用LR模型提取一階特征,并且忽略了不同特征對于目標向量的重要性。本文對XDeepFM模型進行改進,提出基于AP-XDeepFM模型的廣告點擊率預測研究模型。在DNN的基礎上加入Product層,并引入注意力機制,使得模型能夠側重于影響力大的特征且能進行更加細致的特征交互;另外,采用FM模型,提取一階特征和由一階特征兩兩組合而成的二階特征。
在CTR預測中,數據類型主要是分類特征,分類特征通常進行One-hot編碼,會得到一個高維稀疏矩陣,帶來維數災難問題。傳統的機器學習算法(如LR、SVM[17]等)不能很好地處理稀疏數據且忽略了特征之間的交互關系,FM模型是針對以上問題提出的一種高效的解決方案。
FM模型在進行特征組合時,默認每個交互特征發揮著同樣的作用,實際上,每個交互特征的影響是不同的,AFM模型能夠區分不同交互特征的重要性,提高模型的學習能力[11]。
借鑒圖像識別中CNN擴大感受野的做法,在FM的基礎上連接若干個全連接層,從而產生高階的特征組合,加強模型對數據的學習能力,即FNN模型[5]。Qu等[18]認為在FNN模型中,特征經過嵌入層直接輸入到DNN進行特征組合,也就是將特征進行加權求和這種方法不能充分捕獲特征之間的相關性。因此,設計了Product層對特征進行更加細致的交叉運算。
考慮到FM模型不能捕獲高階特征之間的關系,FNN模型和PNN模型忽略低階特征之間的作用,華為研究人員結合兩個模型的優點,將FM模型和DNN結合起來聯合訓練,提出DeepFM模型,該結構比單一的學習模型預測性能表現得好。近年來,微軟公司提出了一種能夠顯式和隱式地學習特征交互的融合模型xDeepFM模型,該模型將線性模型、CIN(Compressed Interaction Network)模型和DNN結合并行訓練,CIN和DNN共享相同的輸入向量,節省運行時間并提升模型的泛化能力。
表1介紹幾種常見的CTR預測模型特性對比,分析發現,在模型結構上包括:單一淺層結構,如FM和AFM;單一深層結構,如FNN和PNN;淺層模型和(一個或多個)深層模型的融合結構,如DeepFM和XDeepFM。只有AFM模型賦予交叉特征不同的重要性。FM、AFM只能學習一階特征和二階組合特征,FNN、PNN只能學習高階的交互特征,對于融合結構的模型,不僅能學習低階特征也能學習高階特征,但未考慮特征的重要性。XDeepFM模型采用LR的方式學習低階特征,不能學習二階交叉特征?;谏鲜龇治?,本文借鑒XDeepFM的主要框架進行改進,提出AP-XDeepFM模型,其特點是保留顯式學習高階特征的優點,并賦予交叉特征不同的重要性,通過引入Product層,對高階特征進行更加細致的交互,通過采用FM模型,充分學習低階特征,提高模型的預測性能。
表1 CTR預估模型特性對比
AP-XDeepFM模型主要受到XDeepFM模型的啟發,采用融合結構,其框架與XDeepFM類似,AP-XDeepFM模型主要分為三層。第一層是嵌入層,原始特征經過獨熱編碼產生的高維稀疏特征經過嵌入層,將特征壓縮映射為D維的稠密向量。第二層是由三個模塊組合:FM模型、CIN模型和APNN模型。FM模型用于學習低階的交互特征,CIN模型可以顯式地學習高階交互特征,APNN模型不僅考慮到特征重要性,而且能更加細致地進行隱式的特征提取。第三層是輸出層,將FM、CIN和APNN的輸出經過Sigmoid函數,采用Adam方法優化模型的參數,并進行分類得到最終的預測值。
FM模型是在線性模型的基礎上加入了二階交叉項,彌補了線性模型忽略特征之間關系的缺憾。其模型為:
(1)
式中:n表示特征數量;xi表示第i個特征的值;vi表示第i個特征的隱向量;<·,·>表示向量內積;w0∈R。
在線性模型的基礎上,加入二階交叉項,不僅可以挖掘特征之間的關系,而且采用矩陣分解的思想來解決高維稀疏的問題,提高了模型的學習效率和預估能力。
目前為止,CTR預估研究問題的重心大多在于自動挖掘特征的交互信息,忽略了不同的交叉特征有著不同的重要性。比如對于用戶關于NBA這則廣告,性別為男且喜歡籃球的人群比性別男且家住上海的人群,更有可能點擊,也就是說對于目標變量,前者比后者發揮的作用大。故將注意力機制引入模型中,使得不同的特征發揮著不同的重要性。
注意力機制[11]實質上是包含一個隱藏層的多層感知機,嵌入向量作為輸入向量,使用ReLU函數對交互特征打分,最后使用Softmax函數對分數進行規范化處理。計算式如下:
(2)
(3)
式中:W∈Rt×D、b∈Rt和h∈Rt是模型參數,t是隱藏層節點數,D是嵌入向量的維度;aij代表交互特征的重要性。
CTR預測研究的重點在于如何挖掘特征之間的相關性,DNN模型通過全連接的方法學習高階特征,未充分捕捉特征之間的關系。本文借鑒PNN模型的思想,在DNN第一個隱藏層前加入Product層。該層是由線性部分lz和非線性部分lp構成,具體計算式為:
(4)
(5)
如圖1所示,APNN模型是一個包含多個隱藏層的神經網絡,不同于DNN,它采用單個隱藏層的神經網絡搭建Attention層,并引入Product層增加模型的可解釋性。每層采用ReLU函數作為激活函數,在第一層采用全連接的方式,如下:
(6)
圖1 APNN模塊的結構
(7)
進一步地,通過sum-pooling操作將輸出矩陣Xk壓縮為向量,作為最終的輸出,如:
(8)
如圖2所示,FM模塊和APNN模塊的結合使用可以提高模型的泛化能力,CIN模塊和APNN模塊的結合能夠充分學習交互特征,并引入注意力機制,加大重要交互特征的重要性,交互特征不僅能在元素級別上,也能在向量級別上進行顯式和隱式的特征交互,提高模型的預測性能。
圖2 AP-XDeepFM模型的結構
針對上述的AP-XDeepFM模型,我們設計了模型的具體訓練步驟。
算法1基于AP-XDeepFM模型的CTR預估研究算法
輸入:原始數據集。
輸出:訓練完的參數確定模型。
初始化參數:嵌入向量的維度D,CIN模型的層數,隱藏層節點,APNN模型的層數,隱藏層節點,迭代次數T。
1.fort=1 toTdo
//遍歷每次迭代
2.獲取特征xi,I={i|xi≠0};
3.通過嵌入層,每個特征映射到D維的嵌入向量;
4.if enter in FM then:
//嵌入向量輸入到FM模型
if enter in APNN then:
//嵌入向量輸入到APNN模型
lk=ReLU(Wklk-1+bk-1);
if enter in CIN then:
//嵌入向量輸入到CIN模型
p+=[p1,p2,…,pk];
//輸出預測結果
//使用Adam優化方法對參數進行優化
本文的數據集是2014年Kaggle競賽中avazu公司提供的公開數據集。該數據集共有四千多萬條,數據有23個特征和1個標簽特征,其中正負樣本比約是1 ∶4。在原始數據中按照分層抽樣和隨機抽樣的方法抽取了100萬條數據進行實驗,并每天按不同的采樣率進行采樣,因此整體的正負樣本比例與原始數據基本一致,不會對實驗結果造成影響。
為了檢驗模型的效果,本文采用了AUC和均方根誤差這兩種評價指標。
AUC(Area Under Curve)是刻畫ROC曲線的分類能力[19]。AUC的取值在0到1之間,AUC的值越大,分類器效果越好,那么輸出概率越合理,排序的結果越合理。所以,AUC直觀地反映了廣告的相對排序。
均方根誤差(Root Mean Square Error,RMSE)用來衡量預測值與真實值之間的偏差,由于正負樣本不平衡,精確度、準確率等評價方式不能準確地反映分類器的性能。由式(9)可以看出,RMSE能夠很好地觀察兩個數據分布的差異性,RMSE越大,數據分布之間的差異越大,分類模型的預測效果越差,反之,RMSE越小代表模型的精確度越高。
(9)
本文算法代碼是由Python 3.6軟件編寫,操作系統為Windows 7,內存4 GB,CPU頻率為2.30 GHz。
本文選取前8天的數據作為訓練數據,第9天的數據作為測試數據。在相同的實驗環境下,將通過6組實驗對AP-XDeepFM模型的性能進行對比,CIN中參數與xDeepFM模型中保持一致,對APNN中的重要超參數進行實驗,討論不同的超參數對結果的影響,獲取最優的超參數組合。在實驗中,使用AUC和RMSE對模型結果進行評估,實驗分為5組。第1組實驗討論學習率對預估結果的影響;第2組實驗討論APNN隱藏層層數對預估結果的影響;第3組實驗討論隱藏層節點數對預估結果的影響;第4組討論激活函數對預估結果的影響;第5組討論隨機失活率對預估結果的影響。第6組與典型模型進行對比。
3.3.1學習率實驗
本節分析不同的學習率對預估結果的影響。學習率是一個重要的超參數,決定權重迭代的步長。在此實驗中,采用搜索法,依次改變學習率為{0.1,0.01,0.001,0.000 1},記錄不同學習率下模型的效果。根據表2中AUC和RMSE的結果可知,當學習率為0.001時,模型的預測性能最佳。
表2 不同學習率對性能的影響
3.3.2隱藏層數目實驗
本節分析APNN網絡隱藏層層數對預估結果的影響。在此實驗中,根據3.3.1節的結果設置模型的學習率為0.001,假設各隱藏層節點數為100,隱藏層從1層逐漸加到4層,實驗結果如表3所示。
表3 隱藏層數目對性能的影響
隨著隱藏層數目的增多,模型的學習性能越高,CTR預估的準確性明顯升高,說明模型對數據進行充分的學習,能夠提取深層次的特征。當隱藏層數目大于3時,模型的性能迅速下降,說明過多地增加隱藏層的數目會導致模型出現過擬合現象。根據表3中AUC和RMSE兩種評價指標的結果,選擇隱藏層的數目為3。
3.3.3隱藏層節點數實驗
本節分析APNN網絡隱藏層節點數對預估結果的影響??紤]到每個隱藏層設置不同的節點數,會使實驗變得很復雜,為簡化實驗,設置每層的節點數相同,依次改變節點數為{50,100,150,200},結果如表4所示。
表4 隱藏層節點數對性能的影響
可以看出,隨著隱藏層節點數從50增至100時,模型的學習性能不斷提升,CTR預估的準確性明顯升高,模型得到很好的訓練。當節點數目大于100時,模型的性能迅速下降,說明模型在訓練集上學習過于充分,出現過擬合現象。根據表4中AUC和RMSE兩種評價指標的結果,選擇隱藏層節點數為100。
3.3.4激活函數實驗
本節分析APNN網絡激活函數對預估結果的影響。根據前幾節實驗的結果,設置學習率為0.001,隱藏層數目為3,節點數為100,采用ReLU和Tanh函數進行對比,根據表5中AUC和RMSE評價指標,ReLU函數比Tanh函數的表現略好。
表5 激活函數對性能的影響
3.3.5隨機失活率的實驗
本節分析不同的隨機失活率對預估結果的影響。為防止模型過擬合,本文采用L2正則化和隨機失活的方法。隨機失活率為0.5表示在遍歷網絡中每一層時,會隨機丟棄50%的節點。隨機失活依次設置為{0.1,0.2,0.3,0.4,0.5},結果見表6。
表6 隨機失活率對性能的影響
觀察表6,使用隨機失活的方法可以提高模型的表現,當p小于0.2時,模型的性能不斷提升,可知若不使用隨機失活,會導致模型過擬合,當p大于0.2時,模型的預估性能逐步下降,可能的原因是本文同時采用L2正則化和隨機失活率的方法,影響模型的學習的能力。結合AUC和RMSE的表現,選擇隨機失活率為0.2。
通過使用網格搜索法,對學習率、隱藏層數目、隱藏層節點數、激活函數和隨機失活率重要的超參數進行實驗,討論不同情況下模型的預估效果。通過分析AUC和RMSE兩種評價指標,確定最優的超參數組合,即設置學習率為0.001,隱藏層數目為3,隱藏層節點數為100,激活函數為ReLU,隨機失活率為0.2。
3.3.6與典型的模型進行對比實驗
在相同的實驗環境下,分別采用FM模型、基準模型(嵌入層+MLR)、PNN、DeepFM、XDeepFM模型和AP-XDeepFM模型進行對比實驗,其中深度學習模型在層數以及每層節點數保持一致,優化方法采用Adam算法,學習率為0.001,嵌入向量的維度為10。結果如表7所示。
表7 不同模型的性能對比
實驗結果分析:基準模型的預測效果優于FM模型,深度學習模型的預測性能優于基準模型。從AUC和RMSE指標分析,本文提出的模型AP-XDeepFM效果優于其他模型。相比于基準模型,其AUC值提高了0.006 6,RMSE值降低了0.001 3。實驗結果表明了AP-XDeepFM模型能通過顯式和隱式的方式,充分挖掘反映目標變量的高階特征,還能自動學習二階交叉項,豐富模型的特征,使用注意力機制,加大重要特征的權重,從而有效地提高了模型的學習能力和泛化能力。綜上,本文改進的模型能夠提高CTR預測性能。
為提高CTR預測效果,本文在XDeepFM模型的基礎上進行改進,提出一種新的融合結構——AP-XDeepFM模型。從兩個角度作為出發點,(1) 加大重要交互特征的權重,引入注意力機制;(2) 挖掘特征之間的關系,引入FM自動捕獲一階以及由一階生成的二階特征,在DNN的基礎上加入一個Product層,以便進行更加細致的學習高階特征。通過實驗討論模型學習率、隱藏層層數、節點數、激活函數和隨機失活率對模型性能的影響,并與幾種典型的CTR預估模型進行對比。實驗表明:該融合模型比現有的模型在AUC和RMSE上略有提升,可在元素級別和向量級別上顯式和隱式地學習特征交互,也能捕捉到低階交互特征,并使得重要交互特征發揮作用,有效地挖掘了高階和低階交互特征,提高了模型的預測性能。