高 巍, 張奧南, 李大舟, 王淮中
(沈陽化工大學 計算機科學與技術(shù)學院, 遼寧 沈陽 110142)
隨著互聯(lián)網(wǎng)技術(shù)與應用的飛速發(fā)展,人類開始步入大數(shù)據(jù)時代,面對越來越繁雜的數(shù)據(jù)量,如何搭建準確率高的點擊概率預估模型從而篩選數(shù)據(jù)成為網(wǎng)絡服務提供商以及互聯(lián)網(wǎng)用戶的共同難題.點擊概率主要從用戶的行為分析包括點擊、瀏覽、收藏等操作來反映用戶的興趣與需求,搭建一個準確率高的點擊概率預估模型,極大地提升在線廣告、營銷、商品推薦等效果.當前工業(yè)上使用的基于點擊概率預估模型需要對用戶-商品的行為數(shù)據(jù)進行處理,在用戶-商品的行為數(shù)據(jù)中提取出大量的特征,這些特征就能夠反映出用戶是否會喜歡某一件商品.目前的點擊概率預估模型不僅要考慮用戶-商品數(shù)據(jù)中的特征對推薦結(jié)果的影響,還要考慮到兩個特征之間的組合,或者多個特征之間的組合對最終結(jié)果產(chǎn)生的影響,因此大量基于特征工程的點擊概率模型相繼誕生.
2010年之前在推薦系統(tǒng)中應用點擊概率預估模型都是線性模型,例如LR模型、FTRL[1]模型,這類線性模型采用梯度下降[2]的方法提取數(shù)據(jù)中的線性關系,由于其簡單、易于并行化實現(xiàn)、可解釋性強等優(yōu)點而被廣泛使用.然而,由于線性模型本身的局限不能處理特征和目標之間的非線性關系,因此模型效果嚴重依賴于算法工程師的特征工程經(jīng)驗.為使模型能夠自動學習到原始特征之間的關系,于2010年因子分解機(FM)系列算法相繼誕生,從剛開始的FM算法[3]提出了將特征進行兩兩組合以達到自動學習特征之間關系的目的,到之后延進化的FFM算法[4]將相同性質(zhì)的特征歸結(jié)于同一個類別,提出隱向量概念,進一步提高了模型對數(shù)據(jù)中特征之間組合的效率.2015年,為了能夠同時學習出高階特征與低階特征之間的組合,點擊概率預估模型進入了深度學習的時代,一大批將線性模型與深度神經(jīng)網(wǎng)絡相結(jié)合的模型誕生.比較著名的有Wide and Deep[5]、DeepFM算法[6],這類模型是將線性模型與DNN模型進行組合的模型.Google發(fā)表的論文Deep Neural Networks for YouTube Recommendations[7]介紹了推薦系統(tǒng)中比較經(jīng)典的兩層結(jié)構(gòu):召回和排序.同樣是利用DNN對數(shù)據(jù)進行訓練達到產(chǎn)生候選集和排序的效果.FNN[8]、PNN[9]、GBDT[10-11]利用神經(jīng)網(wǎng)絡對非線性特征擬合能力較強的優(yōu)點將神經(jīng)網(wǎng)絡應用在點擊概率預估模型中.筆者對當前比較流行的點擊概率預估模型進行研究總結(jié),并提出了因子交互全連接網(wǎng)絡模型,以達到增加推薦結(jié)果準確率的效果.
對當前比較主流的點擊概率預估模型進行分析,提出并搭建一種因子交互全連接網(wǎng)絡模型,整體構(gòu)架如圖1所示.首先加入壓縮交互網(wǎng)絡(CIN)模型[12],并將其與因子分解機(FM)模型和深度神經(jīng)網(wǎng)絡(DNN)模型進行組合.3個部分共享相同的輸入.因子分解機部分負責解決數(shù)據(jù)經(jīng)過獨熱編碼后稀疏的問題并提取數(shù)據(jù)中的低階數(shù)據(jù)進行組合;深度神經(jīng)網(wǎng)絡部分負責提取和組合數(shù)據(jù)中的高階特征;壓縮交互網(wǎng)絡負責顯性地對數(shù)據(jù)中的特征進行組合,在向量級上進行計算,使過程變得可見和可控.
模型中提到的高階特征、低階特征即為數(shù)據(jù)中原始特征的組合.將數(shù)據(jù)中的特征分別組成維度為1×10的特征矩陣,然后將特征矩陣進行兩兩組合計算兩個特征之間的相關性即為低階特征;將多個特征矩陣進行組合計算得到的即為高階特征.
筆者將嵌入層處理后的維度為1×10的特征矩陣記為X矩陣,數(shù)據(jù)集中包含多個特征向量(例如每個用戶對應的ID、每個物品對應的ID等),每個特征向量對應一個索引值.進行特征向量處理分類后會有39個類別的特征矩陣X,分別記為X0,X1,X2,…,XK,將這些特征矩陣分別帶入模型的每個模塊中.
模型首先將數(shù)據(jù)進行獨熱編碼然后分別輸入到FM、CIN、DNN模塊中,其中FM算法可以利用矩陣分解的原理將稀疏的數(shù)據(jù)轉(zhuǎn)化為稠密數(shù)據(jù)進行訓練,訓練后得到FM算法的輸出為一個變量.CIN、DNN模塊則需要將經(jīng)過獨熱編碼后的稀疏數(shù)據(jù)先輸入到嵌入層進行降維變成稠密數(shù)據(jù),然后再將得到的特征向量輸入到模塊中進行訓練.最終將3個模塊得到的結(jié)果進行累加,然后通過Sigmoid函數(shù)得到模型的最終結(jié)果.
圖1 因子交互全連接網(wǎng)絡結(jié)構(gòu)
在點擊概率預估模型領域中要提取的數(shù)據(jù)的特征一般都歸屬于多個類別的離散數(shù)據(jù).對這些離散數(shù)據(jù)進行獨熱編碼,將他們變成特征矩陣.然而用于點擊率預估的每個類別中都會有空缺部分,如某個用戶對體育類的商品不感興趣并且從未點擊過這類廣告,那么在數(shù)據(jù)中關于他的體育類別的數(shù)據(jù)就會是缺失的,這類數(shù)據(jù)經(jīng)過獨熱編碼后就會造成數(shù)據(jù)稀疏問題,如果將稀疏的特征矩陣進行組合就會造成維度爆炸.為了解決這類問題,筆者在模型中加入嵌入層(embedding)使數(shù)據(jù)變得低維且稠密.
嵌入層的主要功能是將輸入的稀疏向量壓縮為低維稠密向量.在點擊率預估模型領域,輸入一般都是基于用戶的行為數(shù)據(jù)集,與圖像或者語音類輸入不同,圖像、語音的輸入一般是連續(xù)而且密集的,而用于點擊概率預估的輸入一般無法達到每個用戶對每一個類別都有過點擊行為,所以數(shù)據(jù)一般都是稀疏的,因此要加入嵌入層.其原理類似于兩個矩陣相乘,類別矩陣的維度為1×n(n為數(shù)據(jù)中的特征數(shù)量),嵌入層中的權(quán)重矩陣為n×k(k為設定的嵌入層尺寸),相乘得到嵌入層輸出的特征矩陣為1×k.盡管不同類別(field)的輸入長度不同,但是經(jīng)過嵌入層之后向量的長度均為k.
筆者采用的神經(jīng)網(wǎng)絡為多層前饋神經(jīng)網(wǎng)絡,是一種最簡單的神經(jīng)網(wǎng)絡,如圖2所示,各神經(jīng)元分層排列.每個神經(jīng)元只與前一層的神經(jīng)元相連,接收前一層的輸出,并輸出給下一層.
圖2 多層前饋神經(jīng)網(wǎng)絡結(jié)構(gòu)
將嵌入層處理后的特征向量X0,X1,X2,…,XK輸入到神經(jīng)網(wǎng)絡中, 由于經(jīng)過網(wǎng)絡多層的組合,最終可以實現(xiàn)對多個特征進行組合的效果,即提取數(shù)據(jù)中的高階特征.但是,特征交互是發(fā)生在特征向量中每個元素上的,而不是對整個特征向量進行計算,這一點違背了因子分解機的初衷.因此,筆者在模型中加入了CIN模塊以解決這個問題.
為了實現(xiàn)自動學習顯式的高階特征交互,并使交互發(fā)生在向量級上,在模型中加入壓縮交互網(wǎng)絡模型.在該模型中,隱向量是一個單元對象,因此將輸入的原始特征和神經(jīng)網(wǎng)絡中的隱層都分別組成一個矩陣,記為X0和XK.壓縮交互網(wǎng)絡中每一層的神經(jīng)元都是根據(jù)前一層的隱層以及原特征向量計算而來,其計算公式為
(1)
在CIN中,第k層隱層含有Hk條神經(jīng)元向量.隱層的計算可以分成兩個步驟:根據(jù)前一層隱層的狀態(tài)XK和原特征矩陣X0,計算出一個中間結(jié)果Zk+1,它是一個三維的張量,如圖3所示.
圖3 壓縮交互網(wǎng)絡結(jié)構(gòu)
在中間結(jié)果Zk+1上,用Hk+1個尺寸為m×Hk的卷積核生成下一層隱層的狀態(tài).這一操作與計算機視覺中最流行的卷積神經(jīng)網(wǎng)絡大體一致,唯一的區(qū)別在于卷積核的設計.壓縮交互網(wǎng)絡中一個神經(jīng)元相關的接受域是兩個矩陣組合之后形成的若干個平面,而CNN中的接受域是當前神經(jīng)元周圍的局部小范圍區(qū)域,因此壓縮交互網(wǎng)絡中經(jīng)過卷積操作得到的特征圖是一個向量,即特征交互之后的特征向量,而不是一個矩陣,達到了顯式學習特征交互的目的.
CIN的特點是最終學習出的特征交互階數(shù)由網(wǎng)絡層數(shù)決定,每一層隱層都通過一個池化操作連接到輸出層,從而保證輸出單元可以見到不同階數(shù)的特征交互模式.最終原數(shù)據(jù)集中的特征輸入到CIN模塊中進行顯性的特征交互,使計算發(fā)生在向量級上,即最終得到的結(jié)果是向量形式,從而解決了點擊概率預估模型中無法顯性組合特征的難題.
FM算法首先將數(shù)據(jù)分為若干個類別(field),每個類別中包含若干個特征,FM算法負責對這些特征進行兩兩組合,最終計算出特征之間的相關性.為了解決輸入的數(shù)據(jù)經(jīng)過獨熱編碼后會變得高維且稀疏的問題,FM算法提出了隱向量的概念,即對模型的參數(shù)矩陣進行矩陣分解,得到低維稠密特征向量.
(2)
式中:xi、xj分別代表第i和第j個特征(本實驗中為1×10的特征矩陣),Vi、Vj即為特征i、j的隱向量.具體計算方式采用矩陣分解的原理進行計算,將經(jīng)過獨熱編碼后稀疏的特征向量進行交互得到一個特征矩陣,再將得到的特征矩陣進行分解,得到稠密的特征向量,其原理與算法中的嵌入層功能一致,在最終的算法中加入FM算法是為了自動、顯式地提取組合數(shù)據(jù)中的低階特征.由公式(2)可以看出:FM算法能夠進行特征之間的兩兩交互,也就是只能提取數(shù)據(jù)中的低階特征,但事實證明數(shù)據(jù)中的高階和低階特征對最終的結(jié)果都會有影響,比如一個用戶可能會點擊的廣告包含多個類別,所以筆者在模型中加入了神經(jīng)網(wǎng)絡模塊用來組合數(shù)據(jù)中的高階特征.
筆者采用淘寶廣告展示數(shù)據(jù)集進行訓練,該數(shù)據(jù)集是在淘寶網(wǎng)站中隨機抽樣114萬用戶8 d內(nèi)的廣告展示/點擊日志(2600萬條記錄)構(gòu)成原始的樣本數(shù)據(jù).數(shù)據(jù)中包含用戶ID、廣告ID、時間、廣告展示的位置、行為類型和品牌ID等特征類別.
樣本數(shù)據(jù)經(jīng)過處理后得到4個文件:廣告點擊的樣本數(shù)據(jù) raw_sample.csv(用戶對不同位置廣告點擊、沒點擊的情況);廣告基本信息數(shù)據(jù)ad_feature.csv[每個廣告的類目(ID)、品牌(ID)、價格特征];用戶基本信息數(shù)據(jù) user_profile.csv(用戶群組、性別、年齡、消費購物檔次、所在城市級別等特征);用戶行為日志數(shù)據(jù) behavior_log.csv[用戶對商品類目(ID)、品牌(ID)的瀏覽、加購物車、收藏、購買等信息].將這些數(shù)據(jù)分別組成訓練集和測試集,分別帶入到模型中進行訓練并分析實驗結(jié)果.
實驗使用Window系統(tǒng),采用NVIDIA GTX 1060 顯卡.筆者提出的模型使用TensorFlow框架搭建,如圖4、圖5所示.
圖4 AUC、Logloss與網(wǎng)絡深度關系
圖5 AUC、Logloss與隱含層節(jié)點數(shù)關系
由圖4、圖5可以看出:當筆者所提模型的網(wǎng)絡深度為3時,得到的AUC值最高、Logloss值最低;當選擇的隱含層節(jié)點數(shù)量為200時,模型得到的AUC值最高、Logloss值最小.因此,模型選擇3層結(jié)構(gòu),分別為輸入層、隱含層和輸出層;隱含層的節(jié)點設置為200個.為了簡化實驗配置,定義所有模型的特征嵌入維度統(tǒng)一固定為10.
實驗采用曲線下面積(AUC)和對數(shù)損失函數(shù)(Logloss)指標作為模型的評估指標.
點擊概率預估模型的本質(zhì)就是二分類問題,即預測某一用戶對某一物品的點擊概率.當預測的結(jié)果表明用戶接下來的行為后,利用AUC來對比預測的行為與測試集中原始特征是否一致.最終得到原始特征之間的相關性即是用戶對物品的點擊概率.
(2) Logloss的公式為
(3)
式中:n是測試樣本個數(shù);yi為輸入實例xi的真實類別;pi為預測輸入實例xi屬于類別1的概率.對所有樣本的對數(shù)損失表示對每個樣本的對數(shù)損失的平均值.Logloss的結(jié)果越低越好.
對提出的因子交互全連接網(wǎng)絡模型(FDC)進行訓練并將其與LR、DNN、PNN等模型進行對比,實驗結(jié)果見表1.
表1 實驗結(jié)果
實驗選取了當前工業(yè)上比較常用的6種模型分別進行訓練,將得到的結(jié)果與筆者提出的因子交互全連接網(wǎng)絡點擊概率預估模型訓練結(jié)果進行對比,結(jié)果如圖6所示.由圖6可以看出:因子交互全連接網(wǎng)絡與其他點擊概率預估模型對比AUC值均有提升,Logloss均有降低;因子交互全連接網(wǎng)絡(FDC)模型的AUC值比原始的線性(LR)模型AUC值提高了近0.05,與采用線性模型與神經(jīng)網(wǎng)絡模型結(jié)合的模型(FM)對比AUC值提高了0.01左右,Logloss值與其對比分別降低了0.04以及0.01左右.由此可以說明筆者設計并實現(xiàn)的點擊概率預估模型(FDC)在工業(yè)與學術(shù)中均有較好的實際意義.
圖6 不同點擊概率預估模型的實驗結(jié)果
筆者提出了一種基于因子分解機(FM)、深度神經(jīng)網(wǎng)絡(DNN)與壓縮交互網(wǎng)絡(CIN)結(jié)合的因子交互全連接網(wǎng)絡(FDC),并將因子交互全連接網(wǎng)絡與工業(yè)上應用較廣的6種模型進行對比.通過對比發(fā)現(xiàn)因子交互全連接網(wǎng)絡的準確率最高、效果最好.因子交互全連接網(wǎng)絡既能同時自動地對數(shù)據(jù)中高階和低階的特征進行提取和組合,又能同時以顯性和隱性兩種方式進行高階特征交互的功能,使交互發(fā)生在向量級上.解決了推薦系統(tǒng)中的多種難題,如人工提取特征費時費力、獨熱編碼后數(shù)據(jù)稀疏、不能同時提取數(shù)據(jù)中的高低階特征、無法顯示的組合特征,等等.該算法的提出可以提高推薦系統(tǒng)對用戶推薦信息的準確率,提升用戶體驗,對從業(yè)人員的工作效率也有一定的提升.