劉 勐,王洪波,2,3,王富豪,李亞峰
1(復旦大學 工程與應用技術研究院,上海200433)
2(復旦大學 上海智能機器人工程技術研究中心,上海 200433)
3(復旦大學 智能機器人教育部研究中心,上海 200433)
信息爆炸與大數據技術的普及,促進了個性化推薦技術的快速發展[1].作為廣告推薦系統一項重要任務,點擊率預測(CTR)對于許多互聯網公司來說都是必不可少的.例如,YouTube 每天的視頻播放時間已超過10 億小時.其推薦系統需要根據用戶需求、興趣等,通過推薦算法通過從海量數據中高效準確的預測用戶感興趣項目,并將結果以個性化列表的形式推薦給用戶[2].
用戶與項目數據的特征通常是離散和稀疏的,因此CTR 預測任務的關鍵挑戰是如何有效學習特征之間的交互來建模這種數據.過去,已有許多學者提出相關算法來解決此問題,如邏輯回歸(LR)[3]、基于樹的模型[4]、貝葉斯模型[5]、基于張量的模型[6]和基于因子分解的模型[7,8]等.這些模型通過學習成對特征之間的低階交互提高特征表示能力,但同時會帶來了與任務無關的特征交互組合.近年來,依靠強大特征表示能力,深度學習在計算機視覺[9,10]和自然語言處理[11,12]等許多領域開始大放光彩.最近幾年深度學習模型也開始逐步在推薦領域得到應用,例如基于神經網絡的因子分解模型(FNN)[13],基于注意力機制的因式化機模型(AFM)[14],Wide &Deep[15],DeepFM[16]等.當前絕大多數解決點擊率預測問題的深度學習算法大致分為3 個步驟.首先,利用嵌入表示模型將用戶和項目高維稀疏特征映射為低維稠密向量.然后,對得到的嵌入向量使用內積、外積或者哈達瑪積等運算獲得特征交叉表示.最后,基于隱向量使用多層感知器(MLP)預測用戶對于項目的評分或者偏好.
在實際應用中,由于相當大比例的用戶和項目屬性通常是離散和稀疏的,CTR 模型會使用嵌入操作來處理輸入數據.但是,常見的嵌入表示模型在處理數據集出現頻率較低的樣本時,很難學習到合適的特征表征,在系統冷啟動時性能表現較差.MLP 在深度學習模型中起到了基于bit-wise 層級的特征交互和非線性變換的作用,但在vector-wise 層次的特征交互上表現較差.同時,隨著MLP 的深度和寬度的增加,在增加學習能力的同時也增加了參數量和過擬合的風險.
基于上述問題,本文提出了一種基于改進降噪自動編碼器(DAE)[17]的點擊率預測模型ADVAE (ADditional Variational AutoEncoder).該方法通過添加噪聲來生成嵌入信息來學習稀疏和高維輸入特征的稠密低維表示,提高了模型在bit-wise和vector-wise 層次的特征交互能力,改善由于數據稀疏性引起的特征不平衡問題.同時,ADVAE 模塊使得模型即使在數據樣本特征稀疏甚至缺失情況下,也可以產生有效的嵌入表示,有效緩解了推薦系統中常見的冷啟動問題.同時,該模型的ADVAE模塊可以針對不同任務動態地應用于到其他模型,具有很強的靈活性.
點擊率預測利用用戶與項目之間的二元關系,基于用戶歷史行為記錄或者相似性關系幫助發現用戶可能感興趣的項目,對用戶的點擊行為進行預測.
點擊率預測模型主要包含傳統模型和深度學習模型兩種,其中傳統的推薦方法主要分為以下3 種[18]:基于內容的推薦(content-based recommendtion)[19]、協同過濾推薦(collabortive filtering recommendation)[20]和混合推薦(hybrid recommendation)[21],深度學習通過組合低階特征形成稠密的高階語義信息,從而自動發現數據的分布式特征表示,解決了傳統機器學習手工設計特征的問題.常見的深度學習模型除了包含上述3 種傳統方法外還有基于社交網絡[22]、場景感知[23]等方法的推薦模型.
卷積神經網絡在推薦系統中有著較為廣泛的應用,主要用于從圖像、文本、音頻等信息中提取數據的隱藏特征.相比較多層感知機,卷積神經網絡使用權重共享結構降低模型復雜度,有著更好的泛化能力.
在目前的CTR 模型中,ConvNCF[24]模型應用CNN 來改進NCF,NCF 使用外積而不是點積來建模用戶-項目交互模式.此外,CCPM[25]使用對齊方式對相鄰字段執行卷積,學習多個卷積層的相鄰特征間的依存關系.FGCNN[26]使用卷積層來代替傳統的交互方式,使用多層卷積生成新的嵌入向量.上述卷積神經網絡均在點擊率預測任務上取得了不錯表現,但是忽略了特征嵌入和交互的關系.
自編碼器(Auto Encoder,AE)[27]通過一個編碼器和一個解碼器來重構輸入數據,學習數據的隱層表示.但是如果僅僅通過最小化輸入輸出的誤差來對模型訓練,自編碼器常會學到一個恒等函數.為解決這個問題,降噪自編碼器[17]通過在自動編碼器的輸入數據中加入噪聲得到,這樣降噪自編碼器在重構輸入數據時,就被迫去除這種噪聲來學習到更加魯棒的輸入數據的表達,降噪自編碼器通過這種方式提升了泛化能力以及在稀疏數據下的表現.
考慮到數據的稀疏性和不平衡性,本文提出了一種改進的降噪自動編碼器ADVAE.如圖1所示,該模型通過特征嵌入和特征交互合并為統一操作動態獲取嵌入向量的方式提高在點擊率預測任務上的表現,主要包括普通Embedding模塊、ADVAE Embedding 模塊、低階特征交叉模塊以及高階特征交叉模塊.其中,ADVAE 模塊解決了特征稀疏嵌入的問題,生成的特征可以與原始特征嵌入向量融合,為其他分類模型靈活地提供更為豐富的特征輸入,是該模型的關鍵部分.

圖1 ADVAE 網絡結構圖
大多數點擊率模型的數據輸入采用one-hot 的形式,使用嵌入操作將高維稀疏數據映射為低維特征向量.假設user與item 的輸入數據表示為:

其中,si表示在第i個域的輸入數據的one-hot 表示,f表示輸入數據域的總數,在不同的數據集上會有所變化.在域i(1≤i≤f)中,嵌入操作后的向量表示為ei∈?f×D,其中D是嵌入向量的維度.因此,每個輸入可以表示為矩陣E=(e1;e2;e3;···;ef),其中E∈?f×D.
在受模型復雜度、訓練集數據量以及數據噪音等問題的影響下,通過編碼器得到的初始模型往往存在過擬合的風險.在本文中,輸入數據的部分使用噪聲替代,這種加入同源隨機噪聲的方式一定程度上減輕了訓練數據與測試數據的差異性,可以提高模型的有效性和魯棒性,增加模型的泛化能力.其中,對于每個噪聲向量ei∈?1×D使用高斯分布進行隨機初始化,并將普通Embedding 模塊得到的向量與噪聲向量拼接作為ADVAE 模塊卷積操作的輸入.

其中,concat表示矩陣級聯,E∈?f×D是嵌入層的輸出,N∈?(D?f)×D是噪聲矩陣.
如圖2所示,ADAVE 模塊主要包含3 個卷積層和3 個轉置卷積層.卷積操作不僅可以學習到pair-wise層次的特征交互,而且學習到多個域之間的交互.在對隱向量進行上采樣的過程中,轉置卷積的引入,一方面還原原始特征信息,另一方面過濾掉了原始特征中對任務不相關特征,使得模型更關注于與任務相關的特征,上采樣過程中相關特征則會被賦予更大的權重,起到了數據特征在位置維度上的注意力機制作用.同時,ADAVE 模塊進行的全局特征交互是bit-wise 層次的,而不僅是pair-wise 層次的.此外,添加噪聲輸入可以克服嵌入向量稀疏和數據不平衡的缺點,同時,這些額外的噪聲即可以捕獲內部關系,也可以生成有利于交互的新向量.

圖2 ADVAE 模塊
編碼器由三層卷積層構成,每經過一層卷積層,卷積核的寬度減少一倍,編碼器的輸入為嵌入向量與噪聲向量組成的特征矩陣E′∈?1×D×D,卷積輸出為X0=?C×N×N.在卷積層最后使用兩層全連接網絡得到隱向量的均值和方差,計算過程如下所示.

其中,Xo表示輸入,Wm和Wl是兩層全連接網絡的權重矩陣,bm和bl是偏差,φ是激活函數,則隱變量Z~(μ,diag(σ))∈?N×N.

解碼器使用與編碼器同數量的轉置卷積層,通過對隱變量的上采樣還原原始特征矩陣.同時,在編碼器部分加入了一個判別器,幫助提高ADVAE 對點擊率預測任務的特征學習.
該模型的損失函數共由4 部分組成,分別是編碼器重構損失LM,判別器的分類交叉熵損失LB、MLP 分類器的交叉熵損失LC以及編碼器隱變量的KL 損失KL,其中:

降噪自動編碼器一種具有降噪功能的特征提取器,目的是將一個包含噪聲的輸入數據轉化為一個干凈的數據輸出.在損失函數中,重構損失和編碼器隱變量的KL損失保證了ADVAE 模型盡可能在引入噪聲條件下仍能還原出原始數據的輸入分布.其中,重構損失使用均方誤差損失,以誤差的平方和作為損失,其函數易于求導,保證模型對原始數據的生成能力;KL損失函數通過計算KL散度估計兩個分布的相似度,對編碼后隱變量進行優化,保證模型的編碼能力.

模型在對點擊結果預測上使用了兩部分的損失,一是使用解碼器多層級特征作為預測判別器的輸入的分類損失LB,二是模型使用原始數據以及生成數據作為輸入構造的MLP 分類器的損失Lc,兩部分損失均使用交叉熵損失函數,由于具有非常強的概率分布表征能力,交叉熵損失函數常用于分類任務.

本文在公開數據集Ctriteo、Avazu和Movielen-20M 上分別在點擊率預測效果以及系統冷啟動性能兩個方面與現有模型進行了對比實驗,詳細說明如表1.參與對照實驗的CTR 模型包括僅使用初始化特征的線性方法LR、考慮二階特征交互的分解機方法(FM、FFM)以及高階交互的深度學習模型(DCN、Wide &Deep、AFM、Autoint、xDeepFM、FibiNet).

表1 數據集說明
本文的實驗基于PyTorch 框架實現,在3 個數據集上,模型的訓練參數如表2所示,其中超參數 λ1=1、λ2=0.1、λ3=0.5、λ4=1.所有對照模型與ADVAE 方法均使用相同的MLP 訓練參數.

表2 模型訓練參數
本文選取AUC和LogLoss 值作為模型性能評估指標,AUC 值通過計算ROC 曲線下的面積得到,LogLoss通過計算預測結果與標簽的交叉熵得到.
表3反映了各個模型在Ctriteo、Avazu和Movielen-20M 數據集上的性能表現.可以看出,AVDAE 在各個數據集上的表現均優于現有模型.在實驗中,我們發現使用多層感知器(MLP)往往會導致過度擬合,如圖3所示對于Wide &Deep,xDeepFM和DNN 之類的幾種模型,通過使用多層感知器(MLP)訓練約4 個epoch時的準確率開始下降.但是,在使用ADVAE 模塊后時,在Criteo 數據集上訓練10 個epoch 以及Avazu 數據集上訓練8 個epoch 之后,準確率仍有所提高,實驗結果說明,這種動態嵌入方式極大地減輕了MLP 的過度擬合的問題.

圖3 準確率變化曲線

表3 點擊率預測實驗模型性能表現
冷啟動在推薦系統中表示該系統積累數據量較少,無法為新用戶提供個性化推薦的問題,是推薦系統的一個難題.
在冷啟動實驗中,本文通過將輸入特征的值置零來屏蔽一定數量的屬性去模擬冷啟動情況.其中,K值表示特定屬性被屏蔽的概率.如表4所示,K值分別設置為20%、40%和60%.可以得到,在K值等于20%、40%、60%的冷啟動條件下,ADVAE 方法優于所有現有模型.特別是在K值等于20%、40%的情況下,與AutoInt和xDeepFM 相比,ADVAE 性能有較明顯的提升.

表4 冷啟動實驗模型性能表現
在Criteo和Avazu 數據集這兩個數據集中存在缺失值,xDeepFM、AutoInt 等算法更關注于數據嵌入后的特征交互,但沒有注意之前的嵌入操作是否合理.而ADVAE 模型通過引入噪聲生成特征去動態修復原始嵌入,使得模型在處理數據缺失問題時更加魯棒.
結果表明,在系統冷啟動情況下,ADVAE 模型仍可以找出最合適的預測結果.
本文提出了一種基于改進降噪編碼器的點擊率預測模型,通過引入噪聲數據生成新的嵌入特征來學習特征嵌入與特征交互的關系,然后分別進行低階和高階的特征交互來預測用戶點擊行為.本文和常見點擊率預測模型,如線性回歸(LR)、FFM、xDeepFM 等,進行了比較.實驗結果表明,本文提出的點擊率預測算法在AUC、LogLoss 等指標上顯著優于現有模型,同時,在數據稀疏及系統冷啟動條件下,仍有較好的性能表現,有效緩解過擬合現象.
本文提出的模型主要應用于當前互聯網點擊率預測任務,其中ADVAE 模塊可以動態應用到各類點擊率預測模型中,具有很強的靈活性.但是在實際應用中,實際場景對算法的實時性要求較高.所以,如何在保證算法預測性能的同時降低模型復雜度是本文后續研究的重要工作之一.