陳杰浩,張 欽,王樹良,史繼筠,趙子芊
(北京理工大學(xué) 計算機(jī)學(xué)院,北京 100081)
近年來,互聯(lián)網(wǎng)廣告已成為大部分互聯(lián)網(wǎng)公司的主要盈利手段,得到了極大的發(fā)展.為了達(dá)到最佳互聯(lián)網(wǎng)廣告投放效果,廣告點(diǎn)擊率(click-through rate,簡稱CTR)預(yù)估成為了計算廣告(computational advertising)[1]領(lǐng)域工業(yè)界和學(xué)術(shù)界研究的焦點(diǎn).
廣告精確投放,依賴于預(yù)測目標(biāo)受眾對相應(yīng)廣告的CTR[2].例如,搜索廣告為互聯(lián)網(wǎng)廣告的重要組成部分,該類廣告依據(jù)受眾搜索關(guān)鍵字的相關(guān)性進(jìn)行廣告投放.廣告投放的變現(xiàn)能力,即廣告此次投放后的期望收益,是決定廣告主是否愿意投放此次廣告的根本依據(jù).千次有效點(diǎn)擊(effective cost per mile,簡稱eCPM)是期望收益的重要指標(biāo),其公式為
其中,eCPM為點(diǎn)擊的變現(xiàn)能力,即期望收益;μ為廣告CTR;v為點(diǎn)擊的期望收益.由公式可知,廣告的變現(xiàn)能力由廣告CTR和點(diǎn)擊期望收益決定.由于點(diǎn)擊期望收益與產(chǎn)品本身有關(guān),因此對于廣告投放平臺和廣告主,精確的廣告CTR預(yù)估成為了決定廣告變現(xiàn)能力的關(guān)鍵.
為提高CTR預(yù)估的精確度,本文將深度置信網(wǎng)絡(luò)(deep belief net,簡稱DBN)應(yīng)用于CTR預(yù)估領(lǐng)域,進(jìn)行了大量實(shí)證研究,并提出了有效的優(yōu)化策略.本文的主要貢獻(xiàn)總結(jié)如下.
(1) 在CTR預(yù)估問題中引入DBN,設(shè)計了模型結(jié)構(gòu)及訓(xùn)練方法,通過實(shí)驗探討了不同的隱藏層層數(shù)、隱含節(jié)點(diǎn)數(shù)目對預(yù)測結(jié)果的影響.
(2) 將本文模型與基于梯度提升決策樹(gradient boost decision tree,簡稱GBDT)和邏輯回歸(logistics regression,簡稱LR)[3]的傳統(tǒng)模型以及模糊深度神經(jīng)網(wǎng)絡(luò)(fuzzy deep neural network,簡稱FDNN)的深度模型進(jìn)行對比.實(shí)驗結(jié)果表明,基于DBN的預(yù)估方法相比現(xiàn)有的CTR預(yù)估算法具有更好的預(yù)估精度,在均方誤差、曲線下面積和對數(shù)損失函數(shù)指標(biāo)上優(yōu)于GBDT+LR模型2.39%,9.70%和2.46%,優(yōu)于FDNN模型1.24%,7.61%和1.30%.
(3) 為了解決DBN在大數(shù)據(jù)規(guī)模較大的工業(yè)界解決方案中的訓(xùn)練效率問題,本文通過實(shí)驗證明:CTR預(yù)估中DBN的損失函數(shù)存在大量的駐點(diǎn),并且這些駐點(diǎn)對網(wǎng)絡(luò)訓(xùn)練效率有極大的影響.
(4) 為了進(jìn)一步提高模型效率,從發(fā)掘網(wǎng)絡(luò)損失函數(shù)特性入手,提出了基于隨機(jī)梯度下降算法(stochastic gradient descent,簡稱SGD)和改進(jìn)型粒子群算法(particle swarm optimization,簡稱PSO)[4,5]的融合算法來優(yōu)化網(wǎng)絡(luò)訓(xùn)練.最終,融合算法在迭代步長小于閾值時可以跳出駐點(diǎn)平面,繼續(xù)正常迭代.實(shí)驗證明,使用融合方法訓(xùn)練深度置信網(wǎng)絡(luò)訓(xùn)練效率可提高30%~70%.
本文第1節(jié)介紹優(yōu)化深度神經(jīng)網(wǎng)絡(luò)(deep neural network,簡稱DNN)訓(xùn)練效率的兩種主要思路,并結(jié)合文獻(xiàn)進(jìn)行了分析.第2節(jié)提出基于DBN的CTR預(yù)估模型,并給出了訓(xùn)練方式.第3節(jié)設(shè)計實(shí)驗取得模型參數(shù)最佳取值,驗證模型CTR的預(yù)估效果.第4節(jié)根據(jù)訓(xùn)練過程討論駐點(diǎn)對DBN訓(xùn)練的影響,針對駐點(diǎn)的特性,提出基于SGD和PSO的訓(xùn)練優(yōu)化算法,并通過實(shí)驗證明訓(xùn)練優(yōu)化策略的有效性,進(jìn)行結(jié)果分析.最后總結(jié)全文,并對未來值得關(guān)注的研究方向進(jìn)行初步探討.
成熟的CTR預(yù)估模型常采用機(jī)器學(xué)習(xí)的方法.Chapelle等人[6]提出了基于LR的CTR預(yù)估機(jī)器學(xué)習(xí)框架,主要解決雅虎的CTR預(yù)估問題,其采用了4組特征(包含類別特征和連續(xù)特征)作為模型輸入:廣告主特征、網(wǎng)頁出版商特征、用戶特征和時間特征.該框架在LR模型的基礎(chǔ)上加入了參數(shù)的二范數(shù)正則化項,該方法可以產(chǎn)生更稀疏的模型,使得非零參數(shù)增加避免過擬合的問題;本文還提出了針對稀疏數(shù)據(jù)的哈希方法,通過哈希函數(shù)使得原本很稀疏的數(shù)據(jù)映射到一個固定長度的數(shù)據(jù)空間中.Facebook[3]于2014年提出了基于GBDT方法,針對其廣告系統(tǒng)進(jìn)行CTR預(yù)估研究,利用用戶的自身信息以及網(wǎng)頁信息等作為特征,由決策樹模型進(jìn)行模型訓(xùn)練,得到的輸出結(jié)果是一個固定維度的二值向量;而后,使用決策樹模型的輸出結(jié)果作為LR模型的輸入重新進(jìn)行模型訓(xùn)練,并根據(jù)誤差進(jìn)行權(quán)值的調(diào)整.這種模型融合的方法結(jié)合了非線性決策樹模型能夠擬合非線性特征的特點(diǎn),以及線性LR模型優(yōu)秀的擴(kuò)展性、模型訓(xùn)練速度快的特點(diǎn).
現(xiàn)有的CTR預(yù)估模型發(fā)展比較完備,在經(jīng)過大量的訓(xùn)練后均可達(dá)到較好的預(yù)估效果,但需要人工投入大量精力進(jìn)行特征的選取、處理與構(gòu)造工作,廣告數(shù)據(jù)特征提取不充分,不同特征之間的非線性關(guān)聯(lián)無法得到充分體現(xiàn),其預(yù)測結(jié)果準(zhǔn)確程度多與數(shù)據(jù)分析人員經(jīng)驗豐富程度正相關(guān).深度學(xué)習(xí)具有多層非線性映射的深層結(jié)構(gòu),可以完成復(fù)雜的函數(shù)逼近,近年來,在計算廣告領(lǐng)域成為研究熱點(diǎn)[7,8].Zhang等人[9]提出一種基于循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural networks,簡稱RNN)的新型CTR預(yù)估模型.與傳統(tǒng)模型相比,該模型直接對用戶行為順序進(jìn)行建模,優(yōu)于LR模型1.11%~3.35%.Chen等人[10]提出了基于長短時記憶模型(long-short term memory,簡稱LSTM)的RNN模型,該模型優(yōu)化了RNN的梯度問題,預(yù)測結(jié)果優(yōu)于LR模型5%.Jiang等人[11]提出了FDNN模型,該算法基于模糊受限玻爾茲曼機(jī)(fuzzy restricted Boltzman machine,簡稱FRBM)和高斯-伯努利受限玻爾茲曼機(jī)(Gaussian-Bernoulli restricted Boltzmann machine,簡稱GBRBM),從原始數(shù)據(jù)集自動提取隱藏的解釋性信息,放大長尾重要信息,削弱無關(guān)信息,預(yù)測結(jié)果優(yōu)于LR模型3.25%.
然而,RNN模型應(yīng)用于CTR領(lǐng)域時,需基于用戶或廣告的歷史行為進(jìn)行時序性建模,現(xiàn)有的廣告數(shù)據(jù)集大多不包含該類特征,并且在實(shí)際工業(yè)運(yùn)用時采集難度大.
由于DNN模型的并行性能相對較差,在訓(xùn)練數(shù)據(jù)規(guī)模較大時,其訓(xùn)練效率是影響網(wǎng)絡(luò)性能的關(guān)鍵.目前,對網(wǎng)絡(luò)訓(xùn)練效率的研究主要集中于設(shè)計更出色的通用優(yōu)化算法和發(fā)掘網(wǎng)絡(luò)損失函數(shù)特性,并根據(jù)特性尋求特定優(yōu)化算法兩個方面.這些方法在DBN的訓(xùn)練中同樣適用.
1.2.1 通用優(yōu)化算法
在通用優(yōu)化算法[12]方面,Rumelhart等人[13]提出了基于動量(momentum)的優(yōu)化算法,期望使用前一次迭代的信息改進(jìn)當(dāng)前迭代的步長;Sutskever等人[14]基于Nesterov的工作提出Nesterov Momentum算法,該算法考慮并嘗試解決了Momentum算法迭代過程中的震蕩問題;Gabriel等人[15]則提出了自適應(yīng)梯度(adagrad)算法,該算法通過歷史梯度調(diào)整學(xué)習(xí)率,使學(xué)習(xí)率跟隨梯度變化變化,從而達(dá)到調(diào)整步長的目的.
1.2.2 針對損失函數(shù)特性的優(yōu)化算法
針對損失函數(shù)特性的優(yōu)化算法主要挖掘損失函數(shù)特性并針對性地進(jìn)行優(yōu)化[16].在高維空間中,存在各方向梯度均為0的點(diǎn),被稱為駐點(diǎn).駐點(diǎn)分為局部極值點(diǎn)與鞍點(diǎn).近年來,很多研究人員認(rèn)為,損失函數(shù)的局部極值點(diǎn)是影響DNN訓(xùn)練效率的最大原因.Lo等人[17]對多層感知器中局部極值點(diǎn)的影響進(jìn)行了研究;Chen等人[18]提出了隨機(jī)模糊向后傳播(random fuzzy back-propagation,簡稱RFBP)學(xué)習(xí)算法,使得迭代時能夠逃離局部值.
然而,最新研究證明:在實(shí)際的高維問題中,局部極小值相對數(shù)量較少[18,19]:Leonard等人[19]發(fā)現(xiàn),在某些神經(jīng)網(wǎng)絡(luò)的損失函數(shù)中不存在局部極小值;Daniel等人[20]研究表明,高維神經(jīng)網(wǎng)絡(luò)中存在一些局部極小值點(diǎn),但他們的質(zhì)量相差不大(即通過不同極值點(diǎn)對應(yīng)的神經(jīng)網(wǎng)絡(luò)得到的最終預(yù)測正確率相差不大),并且通用優(yōu)化算法(如momentum等)的效果優(yōu)劣并不明確,甚至有時不如最基本的參數(shù)調(diào)優(yōu)算法.
目前,繼續(xù)挖掘特定DNN模型的損失函數(shù)特性、尋找對其訓(xùn)練效率影響最大的因素并提出解決方案,成為DNN訓(xùn)練優(yōu)化策略的研究熱點(diǎn).
DBN由多個受限玻爾茲曼機(jī)(restricted Boltzmann machine,簡稱RBM)堆疊而成.RBM是一個兩層的無向圖模型,結(jié)構(gòu)如圖1所示.RBM可以被用來作為構(gòu)建DBN的組成部分,它包括一層可視單元和一層隱藏單元,可視單元與隱藏單元之間任意連接,但可視單元、隱藏單元自身沒有連接關(guān)系.RBM中的可見層和隱層單元可以是二值節(jié)點(diǎn),也可以是任意指數(shù)族單元,例如高斯單元、泊松單元、softmax單元等.
Fig.1 Structure of RBMs圖1 RBM的結(jié)構(gòu)
DBN最頂?shù)膬蓪又g是無向連接,稱為聯(lián)想記憶層(associative memory);而其余層與層之間均為有向連接,分為向下的認(rèn)知權(quán)重和向上的生成權(quán)重.其結(jié)構(gòu)如圖2所示.
Fig.2 Structure of DBN圖2 DBN結(jié)構(gòu)
本文的研究中,對DBN的學(xué)習(xí)和訓(xùn)練包括兩個部分.
(1) 對模型進(jìn)行無監(jiān)督的預(yù)訓(xùn)練.將DBN每兩層看作一個RBM模型,下層RBM的隱藏層作為上層的可視層,依次進(jìn)行訓(xùn)練.最終訓(xùn)練獲得的參數(shù)作為DBN的初始化參數(shù).
(2) 使用Wake-sleep算法,無監(jiān)督地對預(yù)訓(xùn)練之后的模型參數(shù)進(jìn)行調(diào)優(yōu).除了頂端的兩層為聯(lián)想記憶層之外,網(wǎng)絡(luò)中其他層之間的連接均為有向連接,分為自底向上的認(rèn)知權(quán)重和自頂向下的識別權(quán)重.調(diào)優(yōu)的過程分為“wake”和“sleep”兩個階段.
? “wake”階段是一個識別事物的過程,使用認(rèn)知權(quán)重將底層的輸入樣本數(shù)據(jù)自底向上的抽象為各層的隱含特征.在此過程中,通過對比散度差算法對生成權(quán)重進(jìn)行調(diào)整.在聯(lián)想記憶層中進(jìn)行T步吉布斯采樣,并對聯(lián)想記憶層的權(quán)重進(jìn)行調(diào)整.
? “sleep”階段是生成樣本數(shù)據(jù)的過程,使用生成權(quán)重自頂向下利用各隱含層抽象出的隱藏特征對輸入樣本數(shù)據(jù)進(jìn)行生成重構(gòu).
為了避免過擬合,在本文使用的DBN的訓(xùn)練過程中,采用權(quán)值衰減策略(weight-decay).模型各節(jié)點(diǎn)間的權(quán)重更新方法如公式(2)所示.
其中,Δwij(t?1)為上一次權(quán)重的更新值.模型訓(xùn)練參數(shù)見表1.
Table 1 Training parameters表1 訓(xùn)練參數(shù)
本文采用的CTR預(yù)估模型為DBN,共分為1個可視層、多個隱藏層和一個輸出層.輸出層使用LR模型進(jìn)行輸出,整體結(jié)構(gòu)如圖3所示.
CTR預(yù)估模型訓(xùn)練主要分為以下3個階段.
(1) 利用DBN進(jìn)行深層次的有效特征提取,將降維后的特征數(shù)據(jù)作為模型的輸入,通過DBN的認(rèn)知權(quán)重,轉(zhuǎn)化為深層次的抽象特征.
(2) 結(jié)合LR模型進(jìn)行CTR預(yù)估.使用DBN模型的最頂層的隱藏層作為LR模型的輸入;同時,在模型的頂層增加一層(包含1個節(jié)點(diǎn))作為LR模型的輸出;接著,對LR模型進(jìn)行訓(xùn)練.
(3) 在對LR模型進(jìn)行訓(xùn)練的同時,使用標(biāo)簽數(shù)據(jù),對深度網(wǎng)絡(luò)模型的參數(shù)進(jìn)行有監(jiān)督的調(diào)優(yōu).將整個網(wǎng)絡(luò)模型(包括DBN和LR模型)看作是由向上的認(rèn)知權(quán)重進(jìn)行連接的標(biāo)準(zhǔn)前饋型神經(jīng)網(wǎng)絡(luò),模型可視層輸入樣本數(shù)據(jù)進(jìn)行前向傳播,而后利用訓(xùn)練樣本的標(biāo)簽數(shù)據(jù)計算模型輸出誤差,使用反向誤差傳播算法(error back propagation,簡稱BP)進(jìn)行誤差傳播對模型的參數(shù)進(jìn)行進(jìn)一步調(diào)優(yōu).
在整個DBN的模型中,各個節(jié)點(diǎn)的激活函數(shù)均采用sigmoid函數(shù),以便引入非線性,并保證數(shù)據(jù)在傳遞的過程中不發(fā)散.經(jīng)過處理后的樣本特征數(shù)據(jù)從模型的可視層進(jìn)入網(wǎng)絡(luò),經(jīng)過多個隱藏層的抽象轉(zhuǎn)化,在模型的頂層形成了深層抽象特征.最后,模型利用DBN提取得到的深層抽象特征作為LR模型的輸入,加入標(biāo)簽信息,進(jìn)行CTR的預(yù)測.模型的輸出層包含一個sigmoid節(jié)點(diǎn),其與DBN的頂層隱藏節(jié)點(diǎn)共同構(gòu)成LR模型.
Fig.3 Structure of CTR prediction model圖3 CTR預(yù)估模型結(jié)構(gòu)
模型輸出層節(jié)點(diǎn)的激活概率如公式(3)所示.
其中,x為DBN頂層節(jié)點(diǎn)狀態(tài),θ為模型輸出層與DBN頂層之間的連接參數(shù),而b則表示輸出層節(jié)點(diǎn)的偏置.
其中,N為測試樣本總數(shù),yi為第i個樣本的目標(biāo)值(點(diǎn)擊為1,未點(diǎn)擊為0),1/eix bipθ?+=為第i個樣本模型給出的估計值(預(yù)估CTR).使用梯度下降算法可以求出參數(shù)θ和b的梯度,如公式(5)和公式(6)所示.
本文進(jìn)行的實(shí)驗基于Kaggle數(shù)據(jù)挖掘比賽平臺的Click-Through Rate Prediction比賽數(shù)據(jù)集.該數(shù)據(jù)集由Avazu提供,數(shù)據(jù)集描述見表2.本文使用數(shù)據(jù)集中隨機(jī)選取的1 000萬條數(shù)據(jù),并使用10折交叉法作為實(shí)驗驗證方法.
在本文實(shí)驗中,針對整體模型CTR預(yù)估效果的指標(biāo)為均方誤差(mean squared error,簡稱MSE)、曲線下面積(area under curve,簡稱AUC)和對數(shù)損失函數(shù)(LogLoss).針對DBN訓(xùn)練效率的衡量指標(biāo)為損失值(loss)、迭代次數(shù)(iterations)和訓(xùn)練時間.
Table 2 Description of dataset表2 數(shù)據(jù)集描述
本節(jié)將首先針對DBN中的重要參數(shù)進(jìn)行單獨(dú)實(shí)驗,考察不同的參數(shù)對預(yù)估結(jié)果的影響,獲取算法最優(yōu)的預(yù)測結(jié)果.實(shí)驗中,使用AUC指標(biāo)對不同模型的CTR預(yù)估結(jié)果進(jìn)行評估,實(shí)驗總共分為3個部分.
(1) 通過實(shí)驗,探討DBN隱藏層層數(shù)對CTR預(yù)估結(jié)果的影響.
(2) 通過實(shí)驗,對模型逐層驗證不同的隱藏節(jié)點(diǎn)數(shù)目對CTR預(yù)估結(jié)果的影響.
(3) 通過實(shí)驗,研究基于DBN的CTR預(yù)估模型預(yù)估效果.
3.2.1 深度置信網(wǎng)絡(luò)隱藏層數(shù)實(shí)驗
深度模型的隱藏層的個數(shù)是模型預(yù)估能力關(guān)鍵因素,經(jīng)驗表明,模型的特征表征和提取能力在一定程度上與隱藏層層數(shù)正相關(guān);同時,層數(shù)越多,深度模型訓(xùn)練過程越復(fù)雜.在實(shí)際應(yīng)用中,通常隱藏層層數(shù)的設(shè)置要根據(jù)實(shí)際情況,通過實(shí)驗確定.在本節(jié)中,對DBN中隱藏層的層數(shù)設(shè)定進(jìn)行實(shí)驗分析,在進(jìn)行實(shí)驗的時候,各隱藏層節(jié)點(diǎn)數(shù)目均設(shè)置為256,逐步添加隱藏層的層數(shù),最終得出的實(shí)驗結(jié)果如圖4所示.
Fig.4 Curves of the MSE,AUC and LogLoss while training DBN with different hidden layers圖4 用不同隱藏層數(shù)訓(xùn)練DBN的MSE、AUC和LogLoss曲線
隨著神經(jīng)網(wǎng)絡(luò)隱藏層數(shù)目的增加,CTR預(yù)估準(zhǔn)確率出現(xiàn)了明顯的上升,說明在利用深度模型進(jìn)行深層次特征提取的時候,隱藏層的數(shù)目越多,對于輸入層樣本數(shù)據(jù)特征學(xué)習(xí)的就越充分,能夠更好地反映數(shù)據(jù)深層的特征;而當(dāng)隱藏層數(shù)目大于4層時,實(shí)驗結(jié)果的準(zhǔn)確率出現(xiàn)了較快的下滑,說明僅通過增加深度模型的隱藏層數(shù)量不能無限制地增加模型預(yù)測效果,且進(jìn)行實(shí)驗的過程中隱藏層數(shù)目過多,容易導(dǎo)致模型出現(xiàn)過擬合,因此需要通過實(shí)驗來確定最合適的隱藏層數(shù)目.
3.2.2 深度置信網(wǎng)絡(luò)隱藏層節(jié)點(diǎn)數(shù)實(shí)驗
在本節(jié)中,主要考察DBN模型中各個隱藏層節(jié)點(diǎn)數(shù)目對于實(shí)驗結(jié)果的影響.首先,考察第1層隱藏層對實(shí)驗結(jié)果的影響,此時固定第2層~第4層隱藏層節(jié)點(diǎn)數(shù)為256.實(shí)驗結(jié)果如圖5所示.
Fig.5 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 1st hidden layer圖5 用不同的隱藏層第1層節(jié)點(diǎn)數(shù)訓(xùn)練DBN的MSE、AUC和LogLoss曲線
在固定隱藏層數(shù)和其他層節(jié)點(diǎn)數(shù)的實(shí)驗中,隨著第1層隱藏層節(jié)點(diǎn)數(shù)的增加,實(shí)驗結(jié)果的準(zhǔn)確率逐漸升高.當(dāng)節(jié)點(diǎn)數(shù)大于512時,整體模型同樣出現(xiàn)過擬合的現(xiàn)象,因此512為最佳取值.此時,固定第1層節(jié)點(diǎn)數(shù)為最佳取值512,其他層節(jié)點(diǎn)數(shù)為256,進(jìn)行第2層節(jié)點(diǎn)數(shù)的實(shí)驗,其結(jié)果如圖6所示.
Fig.6 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 2nd hidden layer圖6 用不同的隱藏層第2層節(jié)點(diǎn)數(shù)訓(xùn)練DBN的MSE、AUC和LogLoss曲線
隨著隱藏層節(jié)點(diǎn)數(shù)的增加,實(shí)驗結(jié)果的準(zhǔn)確率逐漸升高.當(dāng)節(jié)點(diǎn)數(shù)目大于512時,模型同樣出現(xiàn)了過擬合的現(xiàn)象,因此512為第2層節(jié)點(diǎn)數(shù)最佳取值.
同理可以得到第3層、第4層隱藏層節(jié)點(diǎn)數(shù)目對實(shí)驗結(jié)果的影響,如圖7和圖8所示.可以看出,第3層、第4層隱藏層節(jié)點(diǎn)數(shù)目同樣也應(yīng)該設(shè)置為512.
Fig.7 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 2nd hidden layer圖7 用不同的隱藏層第2層節(jié)點(diǎn)數(shù)訓(xùn)練DBN的MSE、AUC和LogLoss曲線
Fig.8 Curves of the MSE,AUC and LogLoss while training DBN with different units in the 2nd hidden layer圖8 用不同的隱藏層第2層節(jié)點(diǎn)數(shù)訓(xùn)練DBN的MSE、AUC和LogLoss曲線
通過實(shí)驗結(jié)果可以看出,隨著隱藏層節(jié)點(diǎn)數(shù)目的增加,模型CTR預(yù)估能力出現(xiàn)了先增后減的現(xiàn)象.這是因為,一方面,隨著隱藏層節(jié)點(diǎn)數(shù)目的增加,模型對于樣本數(shù)據(jù)的隱含特征學(xué)習(xí)的更加充分;另一方面,如果隱藏層節(jié)點(diǎn)過多的話,容易致使特征學(xué)習(xí)的過于充分,極度放大不同的特征對預(yù)測結(jié)果的影響,使得模型對CTR的預(yù)測結(jié)果過于敏感和不穩(wěn)定.
3.2.3 對比實(shí)驗及結(jié)果
本節(jié)中進(jìn)行了本文模型與GBDT+LR及FDNN模型的對比實(shí)驗,其中,GBDT+LR模型結(jié)構(gòu)及訓(xùn)練過程參考文獻(xiàn)[2],F(xiàn)DNN模型結(jié)構(gòu)及訓(xùn)練過程參考文獻(xiàn)[6].
利用與第3.2.2節(jié)相似的參數(shù)調(diào)優(yōu)方法,逐步固定某一參數(shù)進(jìn)行調(diào)優(yōu),取得GBDT+LR以及FDNN模型的最優(yōu)參數(shù),見表3.
Table 3 Bset parameters of GBDT+LR and FDNN表3 GBDT+LR和FDNN模型的最優(yōu)參數(shù)取值
最終對比實(shí)驗結(jié)果如表4所示,本文提出的基于DBN的互聯(lián)網(wǎng)廣告CTR模型,CTR預(yù)測效果分別在MSE、AUC和LogLoss指標(biāo)上優(yōu)于GBDT+LR的融合模型2.39%,9.70%和2.46%,優(yōu)于FDNN模型1.24%,7.61%和1.30%.證明了DBN在隱含特征提取和抽象方面更加強(qiáng)大,提取出的深層次特征更能反映事物的本質(zhì),這也說明了本文設(shè)計的融合模型在互聯(lián)網(wǎng)廣告CTR預(yù)估的準(zhǔn)確率方面達(dá)到了預(yù)期的實(shí)驗效果.
Table 4 MSE,AUC and LogLoss of GBDT+LR,F(xiàn)DNN and DBN表4 GBDT+LR,F(xiàn)DNN和DBN實(shí)驗的MSE、AUC和LogLoss指標(biāo)
本節(jié)分別進(jìn)行了DBN隱藏層數(shù)實(shí)驗、DBN隱藏層節(jié)點(diǎn)數(shù)實(shí)驗和融合模型與其他模型的對比實(shí)驗.隨著隱藏層層數(shù)和隱藏層節(jié)點(diǎn)數(shù)目的增加,模型對于樣本數(shù)據(jù)的隱含特征學(xué)習(xí)的更加充分;隱藏層層數(shù)和隱藏層節(jié)點(diǎn)過多,容易致使特征學(xué)習(xí)的過于充分,極度放大不同的特征對預(yù)測結(jié)果的影響,使模型對CTR的預(yù)測結(jié)果過于敏感和不穩(wěn)定.最終,基于DBN的模型CTR預(yù)測效果分別在MSE、AUC和LogLoss指標(biāo)上優(yōu)于GBDT+LR的融合模型2.39%,9.70%和2.46%,優(yōu)于FDNN模型1.24%,7.61%和1.30%.
在將DNN[21,22]用于訓(xùn)練數(shù)據(jù)規(guī)模較大的工業(yè)界解決方案時,常因其有限的并行性而受到訓(xùn)練效率的制約.作為DNN中的一種,DBN存在著相同的問題.本節(jié)基于網(wǎng)絡(luò)損失函數(shù)特性,發(fā)現(xiàn)在DBN的損失函數(shù)中存在大量嚴(yán)重影響訓(xùn)練效率的駐點(diǎn).針對這些駐點(diǎn)的特性,提出了一種基于SGD和改進(jìn)型PSO的網(wǎng)絡(luò)訓(xùn)練優(yōu)化算法.
駐點(diǎn)包括局部極值點(diǎn)與鞍點(diǎn).本節(jié)通過實(shí)驗分別證明在DBN的損失函數(shù)平面中存在這兩種點(diǎn),以及他們對網(wǎng)絡(luò)訓(xùn)練的影響.
4.1.1 極值點(diǎn)與鞍點(diǎn)判定方式
在數(shù)學(xué)中,Hessian矩陣是一個多變量實(shí)值函數(shù)的二階偏導(dǎo)數(shù)組成的方塊矩陣,假設(shè)有一實(shí)數(shù)函數(shù)f(x1,x2,…,xn),若函數(shù)f的所有二階偏導(dǎo)數(shù)都存在,則f的Hessian矩陣的第ij項為
當(dāng)Hessian矩陣為正定矩陣時,該點(diǎn)為極小值點(diǎn);當(dāng)Hessian矩陣為不定矩陣時,該點(diǎn)為鞍點(diǎn).
4.1.2 局部極值點(diǎn)
局部極值點(diǎn)是指梯度在各方向上都為0,并在鄰域內(nèi)取值最大或最小的點(diǎn),在本文研究的問題中,為網(wǎng)絡(luò)損失函數(shù)的極小值點(diǎn),而網(wǎng)絡(luò)訓(xùn)練的最終目的在于找到一個達(dá)到精度要求的極小值點(diǎn).本節(jié)通過在梯度下降過程中使用不同訓(xùn)練算法和不同網(wǎng)絡(luò)參數(shù)初始值,來對比不同訓(xùn)練過程和不同初始狀態(tài)下網(wǎng)絡(luò)的訓(xùn)練結(jié)果.其結(jié)果如圖9、圖10、表5、表6所示.
Fig.9 Curves of the loss while training DBN with SGD and Momentum圖9 用SGD和Momentum訓(xùn)練DBN的損失曲線
Fig.10 Curves of the loss while training DBN with SGD in different initial parameters圖10 用SGD在不同初值條件下訓(xùn)練DBN的損失曲線
Table 5 Results while training DBN with SGD and Momentum表5 用SGD和Momentum訓(xùn)練DBN的結(jié)果
Table 6 Results while training DBN with SGD in different initial parameters表6 用SGD在不同初值條件下訓(xùn)練DBN的結(jié)果
由表5、表6可知:不論迭代次數(shù)和訓(xùn)練時間如何,在最終收斂時其MSE、AUC和LogLoss指標(biāo)相差均小于1%.由此可得出結(jié)論:高維網(wǎng)絡(luò)最終能夠到達(dá)的極值點(diǎn)之間差異不大,只要能夠找到一個可接受的極值點(diǎn),網(wǎng)絡(luò)訓(xùn)練都可以認(rèn)為是成功的.
如圖11、圖12所示的是用SGD和Momentum訓(xùn)練的loss曲線,圖中字母處的小圖代表著各字母點(diǎn)處步長的變化趨勢.先減小后增加的步長趨勢代表著訓(xùn)練陷入平緩平面并最終跳出.
Fig.11 Curve of the loss while training DBN with SGD圖11 用SGD訓(xùn)練DBN的損失曲線
Fig.12 Curve of the loss while training DBN with Momentum圖12 用Momentum訓(xùn)練DBN的損失曲線
兩次實(shí)驗中訓(xùn)練過程在極值點(diǎn)周圍的平緩平面上停留的迭代次數(shù)分別達(dá)到總次數(shù)的37.95%和5%.如圖11點(diǎn)e、圖12點(diǎn)g所示,證明了極值點(diǎn)對訓(xùn)練效率的影響.
4.1.3 鞍點(diǎn)
鞍點(diǎn)也是各方向梯度等于0的點(diǎn),但它并非是鄰域內(nèi)的取值最小值點(diǎn),即在某些方向上,鞍點(diǎn)可以繼續(xù)訓(xùn)練下降.實(shí)驗測試了使用SGD算法和Momentum算法時的損失函數(shù)值下降過程.實(shí)驗結(jié)果表明:在使用SGD算法和Momentum算法進(jìn)行訓(xùn)練的過程中,損失函數(shù)值的下降過程存在較明顯的階梯形態(tài),即過程中會遇到許多鞍點(diǎn)區(qū)域.損失函數(shù)停留在這些區(qū)域內(nèi)浪費(fèi)了大量的時間[23?25].除圖11點(diǎn)e、圖12點(diǎn)g外,其他點(diǎn)均為鞍點(diǎn)平面.
在使用SGD算法作為優(yōu)化算法的實(shí)驗中,在不算最后一次屬于極值點(diǎn)平面的情況下,迭代次數(shù)中有24.18%在鞍點(diǎn)平面內(nèi),Momentum算法中為54.34%.
4.1.4 分析與結(jié)論
一方面,在CTR預(yù)估問題的高維網(wǎng)絡(luò)中,收斂到的不同極值點(diǎn)對最終結(jié)果的影響不大,即不需要太過在意最終收斂解的質(zhì)量.另一方面,駐點(diǎn),即極值點(diǎn)與鞍點(diǎn)對網(wǎng)絡(luò)訓(xùn)練的效率影響非常大,總體上,在使用SGD算法時有62.13%、使用Momentum算法時有59.34%的迭代是在駐點(diǎn)平面內(nèi)進(jìn)行,這極大地拖累了網(wǎng)絡(luò)訓(xùn)練的效率.
4.2.1 融合方法流程
跳出駐點(diǎn)的判斷標(biāo)準(zhǔn)依靠判斷其Hessian矩陣的正定性,計算復(fù)雜度為O(n3),且在駐點(diǎn)附近的駐點(diǎn)平臺上訓(xùn)練同樣會被拖慢.根據(jù)第3節(jié)的實(shí)驗結(jié)果,當(dāng)?shù)介L小于0.3時,極有可能陷入駐點(diǎn)平臺.為簡化計算,以判斷步長為激活條件,融合方法使用單次迭代效率較高的SGD算法作為基礎(chǔ)算法,并在陷入駐點(diǎn)平臺時激活PSO算法進(jìn)行跳出.融合方法的偽代碼如圖13所示.算法流程圖如圖14所示.
Fig.13 Pseudocode of fusion method圖13 融合算法偽代碼
Fig.14 Flowchart of the fusion method圖14 融合算法流程圖
4.2.2 隨機(jī)梯度下降算法
SGD算法是最常用的DNN模型優(yōu)化算法之一,發(fā)展成熟,存在較為完善的實(shí)現(xiàn)方式,且訓(xùn)練速度快,故融合算法使用SGD作為基礎(chǔ)優(yōu)化算法.與梯度下降算法(gradient descent)和批量梯度下降(batch gradient descent)算法不同的是:SGD算法計算損失函數(shù)的每個參數(shù)的偏導(dǎo)數(shù),并在每次迭代時使用單一樣本進(jìn)行梯度下降.SGD的優(yōu)化函數(shù)公式為
其中,θ代表被優(yōu)化的參數(shù),J(θ)為損失函數(shù),α為學(xué)習(xí)率.當(dāng)損失函數(shù)是方差時,其形式為
其中,x(j)代表數(shù)據(jù)集中第j個樣本.
4.2.3 改進(jìn)的粒子群算法
粒子群算法參數(shù)少,易于調(diào)整,并具有易實(shí)現(xiàn)、收斂快、應(yīng)用靈活等優(yōu)點(diǎn),在函數(shù)優(yōu)化、神經(jīng)網(wǎng)絡(luò)訓(xùn)練和模糊系統(tǒng)控制中均有良好的應(yīng)用效果.本文根據(jù)駐點(diǎn)性質(zhì),改進(jìn)了標(biāo)準(zhǔn)版本的PSO算法.引入PSO的目的不在于尋找局部極值點(diǎn),而是跳出駐點(diǎn)平面.改進(jìn)的PSO在初始化、迭代和退出判斷等方面均與標(biāo)準(zhǔn)版本不同.
(1) 初始化
改進(jìn)的PSO算法首先初始化初始粒子P0,其值等于DBN中需要被訓(xùn)練的參數(shù)值.接著,該算法引入沖量[11]的思想初始化一系列如標(biāo)準(zhǔn)PSO中的粒子,使用初始粒子P0的值作為基準(zhǔn)值,根據(jù)上一次迭代的方向和距離,將每個粒子值的方向設(shè)置為在各個維度內(nèi)與上次迭代方向偏角不超過45°的隨機(jī)值,粒子與初始粒子的距離大小為與上一次迭代前進(jìn)步長相關(guān)的隨機(jī)值,公式如下:
其中,Addki是第k個粒子的第i個參數(shù)的增量,rand(M)是值域為?M,M的隨機(jī)函數(shù),LastStep0i為上次迭代時第i個參數(shù)的步長,max(Addki)是屬于第k個粒子的所有參數(shù)的最大值.
(2) 迭代
迭代過程中,與標(biāo)準(zhǔn)PSO算法相同,記錄每個粒子的歷史最優(yōu)值和所有粒子的歷史最優(yōu)值.算法使用公式(14)和公式(15)計算粒子下一個位置:
其中,speedki指第k個粒子第i個參數(shù)此次的迭代步長;w即慣性因子,即此次迭代步長中保留了上一次迭代的慣性;c1,c2分別為個體學(xué)習(xí)率和全局學(xué)習(xí)率,分別乘上個體歷史最優(yōu)與當(dāng)前位置的差,和全局最優(yōu)與當(dāng)前位置的差;rand是0~1的隨機(jī)值.由于希望向外搜索而非向內(nèi)搜索,本文將學(xué)習(xí)率設(shè)置為大于1的值,此處c1,c2均設(shè)置為2.
(3) 退出判斷
由于本文中PSO算法并不需要收斂到一個極值點(diǎn),而是向外找到一個駐點(diǎn)平面以外的點(diǎn),考慮兩種情況.
a) PSO算法與梯度算法相比效率較低,為了確保融合算法的整體效率,需要為PSO算法的迭代次數(shù)設(shè)置上限,即如果在一定次數(shù)的迭代后算法仍然沒有找到駐點(diǎn)平面外的點(diǎn),算法被強(qiáng)行退出.根據(jù)實(shí)驗經(jīng)驗,本模型中迭代次數(shù)上限為10次.
b) 如果在迭代次數(shù)上限之內(nèi)算法找到了當(dāng)前駐點(diǎn)平面以外的點(diǎn),即算法找到的最優(yōu)粒子的損失值與初始粒子P0的損失值相差大于某個閾值,則算法成功運(yùn)行并退出.根據(jù)實(shí)驗經(jīng)驗,此處閾值設(shè)為30.
4.2.4 Momentum優(yōu)化算法
Momentum算法是基于動量的優(yōu)化算法,核心思路在于在當(dāng)前梯度上加入上一次迭代的動量,即
其中,Δxt為本次迭代步長,Δxt?1為上次迭代步長,η為學(xué)習(xí)率,gt為此次迭代梯度,ρ為上一次迭代的動量參數(shù).本文使用Momentum優(yōu)化算法作為對照組,考察融合算法的優(yōu)化效果.
學(xué)習(xí)率是一個重要的超參數(shù),它控制著基于損失梯度調(diào)整神經(jīng)網(wǎng)絡(luò)權(quán)值的速度,大多數(shù)優(yōu)化算法對它都有涉及.學(xué)習(xí)率越小,沿著損失梯度下降的速度越慢.從長遠(yuǎn)來看,這種謹(jǐn)慎慢行的選擇比較保守,但可以避免錯過任何局部最優(yōu)解.然而,過小的學(xué)習(xí)率也意味著收斂速度變慢.本節(jié)將討論不同學(xué)習(xí)率下訓(xùn)練優(yōu)化算法的效果.
4.3.1 較小學(xué)習(xí)率實(shí)驗
如圖15所示為學(xué)習(xí)率0.008(較小學(xué)習(xí)率)時,網(wǎng)絡(luò)在使用SGD算法,Momentum算法和新融合算法作為優(yōu)化函數(shù)時損失函數(shù)值的下降過程.
Fig.15 Curves of the loss while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.008)圖15 用SGD,Momentum及SGD+PSO訓(xùn)練DBN的損失曲線(學(xué)習(xí)率為0.008)
從圖中可知,不同算法訓(xùn)練Loss下降速度不同.SGD算法與SGD+PSO算法Loss曲線存在兩次交點(diǎn),在迭代次數(shù)小于第1次交點(diǎn)時,融合算法下降速度快;此后,單一SGD算法下降速度反超.但在Loss值逼近2 000時,單一SGD算法下降趨于平緩,陷入了駐點(diǎn)平面;而融合算法通過改進(jìn)型PSO算法跳出平緩平面,從而繼續(xù)正常下降.3種算法的詳細(xì)表現(xiàn)情況見表7.
Table 7 Detailed result of training DBN with SGD,Momentum and SGD+PSO (learning rate 0.008)表7 用SGD,Momentum及SGD+PSO訓(xùn)練DBN的詳細(xì)結(jié)果(學(xué)習(xí)率為0.008)
如圖16所示是在使用這3種算法時每次迭代損失函數(shù)下降幅度的log值.在相同的參數(shù)下,使用新算法進(jìn)行優(yōu)化時每次迭代下降幅度都可以控制在閾值以上.如圖8所示,此處閾值為0.3,則新算法下降幅度的log值均大于?0.5.這證明融合算法可以極大地減少網(wǎng)絡(luò)需要迭代的次數(shù)和時間.具體地,使用了融合算法的優(yōu)化過程迭代次數(shù)是僅使用SGD算法的62.34%,迭代用時是僅使用SGD算法的75.87%.
Fig.16 Curves of log(Δloss) while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.008)圖16 用SGD,Momentum及SGD+PSO訓(xùn)練DBN時每次迭代loss的log值(學(xué)習(xí)率為0.008)
4.3.2 較大學(xué)習(xí)率實(shí)驗
在學(xué)習(xí)率為0.02(較大學(xué)習(xí)率)時,SGD,Momentum和SGD+PSO算法的訓(xùn)練過程和結(jié)果如圖17所示.
Fig.17 Curves of the loss while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.02)圖17 用SGD,Momentum及SGD+PSO訓(xùn)練DBN的損失曲線(學(xué)習(xí)率為0.02)
如表8所示為3種算法的詳細(xì)表現(xiàn)情況.在學(xué)習(xí)率較大的情況下,單一SGD算法和Momentum算法在迭代過程中都出現(xiàn)了Loss值升高的情況,而融合算法保持持續(xù)下降態(tài)勢,證明了融合算法更適應(yīng)激進(jìn)的學(xué)習(xí)策略.融合算法的總迭代次數(shù)是單獨(dú)使用SGD算法的22.35%,運(yùn)行總時間是SGD算法的35.09%.同時,融合算法迭代次數(shù)是單獨(dú)使用Momentum算法的37.15%,運(yùn)行時間則縮短為44.85%.
Table 8 Detailed result of training DBN with SGD,Momentum and SGD+PSO (learning rate 0.02)表8 用SGD,Momentum及SGD+PSO訓(xùn)練DBN的詳細(xì)結(jié)果(學(xué)習(xí)率為0.02)
如圖18所示是3種算法每次迭代loss的log值,對比圖17可以看出,明顯出現(xiàn)了振蕩現(xiàn)象.
Fig.18 Curves of log(Δloss) while training DBN with SGD,Momentum and SGD+PSO (learning rate 0.02)圖18 用SGD,Momentum及SGD+PSO訓(xùn)練DBN時每次迭代loss的log值(學(xué)習(xí)率為0.02)
4.3.3 分析與結(jié)論
本文提出的DBN模型訓(xùn)練優(yōu)化融合算法使用SGD作為基礎(chǔ)優(yōu)化算法,該算法是最常用的DNN模型優(yōu)化算法之一,發(fā)展成熟,存在較為完善的實(shí)現(xiàn)方式,訓(xùn)練速度快.而作為跳出算法的PSO算法參數(shù)少,易于調(diào)整,并具有易實(shí)現(xiàn)、收斂快、應(yīng)用靈活等優(yōu)點(diǎn),在函數(shù)優(yōu)化、神經(jīng)網(wǎng)絡(luò)訓(xùn)練和模糊系統(tǒng)控制中均有良好的應(yīng)用效果.針對駐點(diǎn)特性,在將PSO算法的初始化、迭代和退出判斷進(jìn)行改進(jìn)之后,本文提出的融合算法在迭代步長小于閾值時激活改進(jìn)型PSO算法跳出駐點(diǎn)平面,減少訓(xùn)練過程中的震蕩,提升整體訓(xùn)練效率.
在較小學(xué)習(xí)率和較大學(xué)習(xí)率實(shí)驗中,實(shí)驗結(jié)果均證明了本文融合算法的有效性,算法效率在迭代次數(shù)和迭代時間方面均有較大提升.從圖17中可以得到結(jié)論:當(dāng)學(xué)習(xí)率較小,每次迭代時loss的下降幅度較小.相對地,圖18中顯示出較大的學(xué)習(xí)率會激化訓(xùn)練時的震蕩.
學(xué)習(xí)率越大,改進(jìn)型PSO算法的采用便越多,融合算法對訓(xùn)練的影響便越大.大的學(xué)習(xí)率也意味著SGD算法部分更加激進(jìn),在地形復(fù)雜程度較小的前中期,SGD算法的優(yōu)化效率自身就可以更高;而當(dāng)?shù)竭_(dá)地形較為復(fù)雜的空間,網(wǎng)絡(luò)損失函數(shù)值的下降幅度一旦有減小的趨勢,即訓(xùn)練效率有惡化的跡象時,較大的學(xué)習(xí)率會使得損失值下降幅度在更少的迭代次數(shù)內(nèi)下降得足夠小,甚至產(chǎn)生震蕩,而這會導(dǎo)致改進(jìn)型PSO算法的調(diào)用.相反,在學(xué)習(xí)率較小時,相鄰迭代的損失值下降幅度變化較小,從較大下降幅度下降到調(diào)用改進(jìn)型PSO算法的閾值需要的迭代次數(shù)較多,這一定程度上降低了融合算法的效率.
通過加大學(xué)習(xí)率來提高融合算法的優(yōu)化效率并非無限制的,更高的學(xué)習(xí)率會導(dǎo)致傳統(tǒng)算法震蕩現(xiàn)象的大量出現(xiàn),因此,過大的學(xué)習(xí)率本身沒有任何實(shí)用和對比意義.另外,學(xué)習(xí)率的提高會使得改進(jìn)型PSO算法調(diào)用頻率的增加,而改進(jìn)型PSO算法的迭代效率低于SGD算法,這會導(dǎo)致網(wǎng)絡(luò)整體迭代效率的下降.
本文引入DBN進(jìn)行CTR預(yù)估,給出了其結(jié)構(gòu)及訓(xùn)練方法,通過實(shí)驗探討了不同的隱藏層層數(shù),隱含節(jié)點(diǎn)數(shù)目以及迭代周期對預(yù)測結(jié)果的影響,并與其他模型的預(yù)估結(jié)果進(jìn)行對比分析,實(shí)驗證明了使用DBN作為構(gòu)造模型的融合模型相比現(xiàn)有的CTR預(yù)估常見算法具有更好的CTR預(yù)估效果,預(yù)估精度在MSE、AUC和LogLoss指標(biāo)上優(yōu)于GBDT+LR模型的融合模型2.39%,9.70%和2.46%,優(yōu)于FDNN模型1.24%,7.61%和1.30%.
優(yōu)化策略方面,通過實(shí)驗證明了在CTR預(yù)估問題的DBN模型中,駐點(diǎn)對網(wǎng)絡(luò)訓(xùn)練效率和結(jié)果有很大的影響.接著,本文從發(fā)掘DBN損失函數(shù)特性入手,針對駐點(diǎn)特征,提出了一種結(jié)合了SGD和PSO的融合算法.該融合算法在迭代步長小于閾值時可以跳出駐點(diǎn)平面,繼續(xù)正常迭代.最終實(shí)驗結(jié)果表明,融合算法能夠很好地結(jié)合SGD的高效與PSO的梯度無關(guān)性,在不影響網(wǎng)絡(luò)訓(xùn)練結(jié)果的前提下,提高了網(wǎng)絡(luò)訓(xùn)練的效率30%~70%.
本文提出的融合算法仍有一些后續(xù)工作值得擴(kuò)展:(1) 在DNN的訓(xùn)練中,如何系統(tǒng)科學(xué)地設(shè)置學(xué)習(xí)率已是研究人員的研究重點(diǎn)[26,27],也是本文提出的融合算法的關(guān)鍵參數(shù)之一;(2) 本文使用閾值方法判斷駐點(diǎn)和駐點(diǎn)平面,下一步本文考慮引入自適應(yīng)方法,進(jìn)行該閾值的動態(tài)調(diào)節(jié);(3) 引入更多的應(yīng)用場景,考察本文提出的融合算法對于其他應(yīng)用場景中的DBN乃至DNN是否存在普適性,以及本文研究結(jié)論的一般性.