點(diǎn)擊頂部藍(lán)字'計(jì)算廣告',關(guān)注有趣的負(fù)媒體,帶你參觀互聯(lián)網(wǎng)變現(xiàn)的濕暗后廚。
由于@北冥乘海生 老師堅(jiān)持傳播負(fù)能量,不談?dòng)?jì)算廣告干貨,犯了嚴(yán)重的右傾機(jī)會(huì)主義錯(cuò)誤,現(xiàn)暫停發(fā)文一次,由@德川 替代。
說(shuō)到計(jì)算廣告,或者個(gè)性化推薦,甚至一般的互聯(lián)網(wǎng)產(chǎn)品,無(wú)論是運(yùn)營(yíng)、產(chǎn)品還是技術(shù),最為關(guān)注的指標(biāo),就是點(diǎn)擊率。業(yè)界也經(jīng)常流傳著一些故事,某某科學(xué)家通過(guò)建立更好的點(diǎn)擊率預(yù)測(cè)模型,為公司帶來(lái)了上億的增量收入。點(diǎn)擊率這樣一個(gè)簡(jiǎn)單直接的統(tǒng)計(jì)量,為什么要用復(fù)雜的數(shù)學(xué)模型來(lái)刻畫(huà)呢?這樣的模型又是如何建立與評(píng)估的呢?我們這一期就來(lái)談?wù)勥@個(gè)問(wèn)題。
對(duì)于那些不思進(jìn)取,只關(guān)注負(fù)能量,不關(guān)注技術(shù)內(nèi)容的落后讀者來(lái)說(shuō),你們也不要沮喪。相信劉老師在憋了一期以后,一定會(huì)拿出無(wú)比暗黑的負(fù)能量新作品來(lái)的。
一、為什么要建立一個(gè)點(diǎn)擊率模型?
無(wú)論是人工運(yùn)營(yíng)還是機(jī)器決策,我們都希望對(duì)某條廣告或內(nèi)容可能的點(diǎn)擊率有一個(gè)預(yù)判,以便判斷哪些條目應(yīng)該被放在更重要的位置上。這件事兒看起來(lái)并不難,比如說(shuō)我有十條內(nèi)容,在歷史上呈現(xiàn)出來(lái)的點(diǎn)擊率各個(gè)不同,那么只需要根據(jù)歷史點(diǎn)擊率的統(tǒng)計(jì)做決策即可,似乎并沒(méi)有什么困難。
然并卵。直接統(tǒng)計(jì)歷史點(diǎn)擊率的方法,雖然簡(jiǎn)單易操作,卻會(huì)碰到一個(gè)非常棘手的問(wèn)題。首先,大家要建立一個(gè)概念:不考慮位置、時(shí)間等一系列環(huán)境因素,絕對(duì)的點(diǎn)擊率水平是沒(méi)有什么太大意義的。比方說(shuō),下面的一個(gè)廣告,分別被放在圖中的兩個(gè)位置上,統(tǒng)計(jì)得到前者的點(diǎn)擊率是2%,后者的點(diǎn)擊率是1%,究竟哪個(gè)廣告好一些呢?其實(shí)我們得不出任何結(jié)論。
于是,聰明的運(yùn)營(yíng)想到一個(gè)辦法,干脆我在不同的位置上分別統(tǒng)計(jì)點(diǎn)擊率,然后分別排序。這個(gè)思路從道理上來(lái)說(shuō)無(wú)懈可擊,相當(dāng)于直接求解聯(lián)合分布;不過(guò),其實(shí)用價(jià)值并不高:在每個(gè)位置上分別統(tǒng)計(jì),大多數(shù)廣告或內(nèi)容條目的數(shù)據(jù)都太少,比如說(shuō)100次展示,產(chǎn)生了一次點(diǎn)擊,這難道能得出1%點(diǎn)擊率的結(jié)論么?
那能不能再換一個(gè)思路,找到一些影響點(diǎn)擊率的一些關(guān)健因素,對(duì)這些因素分別統(tǒng)計(jì)?這實(shí)際上已經(jīng)產(chǎn)生了“特征”這樣的建模思路了。比如說(shuō),廣告位是一個(gè)因素,廣告本身是一個(gè)因素,用戶(hù)的性別是一個(gè)因素,在每個(gè)因素上分別統(tǒng)計(jì)點(diǎn)擊率,從數(shù)據(jù)充分性上是可行的。不過(guò)這又產(chǎn)生了一個(gè)新的問(wèn)題:我知道了男性用戶(hù)的平均點(diǎn)擊率、廣告位S平均點(diǎn)擊率、某廣告A的平均點(diǎn)擊率,那么如何評(píng)估某男性用戶(hù)在廣告位S上看到廣告A的點(diǎn)擊率呢?直覺(jué)的方法,是求上面三個(gè)點(diǎn)擊率的幾何平均。不過(guò)這里面有一個(gè)隱含的假設(shè):即這三個(gè)因素是相互獨(dú)立的。然而當(dāng)特征多起來(lái)以后,這樣的獨(dú)立性假設(shè)是很難保證的。
特征之間獨(dú)立性,經(jīng)常對(duì)我們的結(jié)論影響很大。比如說(shuō),中國(guó)的癌癥發(fā)病率上升,到底是“中國(guó)”這個(gè)因素的原因呢?還是“平均壽命”這個(gè)因素的原因呢?顯然這兩個(gè)因素有一些相關(guān)性,因此簡(jiǎn)單的分別統(tǒng)計(jì),往往也是行不通的。
那么怎么辦呢?這就要統(tǒng)計(jì)學(xué)家和計(jì)算機(jī)科學(xué)家出馬,建立一個(gè)綜合考慮各種特征,并根據(jù)歷史數(shù)據(jù)調(diào)整出來(lái)的點(diǎn)擊率模型,這個(gè)模型既要考慮各種特征的相關(guān)性,又要解決每個(gè)特征數(shù)據(jù)充分性的問(wèn)題,并且還要能在大量的數(shù)據(jù)上自動(dòng)訓(xùn)練優(yōu)化。這就是點(diǎn)擊率模型的意義,這是一項(xiàng)偉大的、光榮的、正確的、有著極大實(shí)用價(jià)值和戰(zhàn)略意義的互聯(lián)網(wǎng) 和大數(shù)據(jù)時(shí)代的重要工作。那位說(shuō)了,有必要抬得這么高么?當(dāng)然有必要!因?yàn)檫@門(mén)手藝我也粗通一點(diǎn)兒,不吹哪行。
二、怎樣建立一個(gè)點(diǎn)擊率模型?
這個(gè)問(wèn)題比較簡(jiǎn)單,我們就不多談了。(想罵街的讀者,請(qǐng)稍安勿躁,繼續(xù)往下看。)
三、如何評(píng)估一個(gè)點(diǎn)擊率模型?
評(píng)估點(diǎn)擊率模型的好壞,有各種定性的或定量的、線上的或線下的方法。但是不論什么樣的評(píng)測(cè)方法,其本質(zhì)都是一樣,就是要看這個(gè)模型區(qū)別被點(diǎn)擊的展示與沒(méi)被點(diǎn)擊的展示之間的區(qū)別。當(dāng)然,如果能找到一個(gè)離線可以計(jì)算的量化指標(biāo),是再好不過(guò)了。
這樣的指標(biāo)是有一個(gè),就是如下圖所示的ROC曲線下的面積,術(shù)語(yǔ)上稱(chēng)為AUC。(關(guān)于ROC和AUC的詳細(xì)介紹,請(qǐng)大家參考《計(jì)算廣告》第*章。)AUC這個(gè)數(shù)值越大,對(duì)應(yīng)的模型區(qū)別能力就越強(qiáng)。
好了,為了讓大家深入理解點(diǎn)擊率模型評(píng)測(cè)的關(guān)鍵,我們要談到一個(gè)常見(jiàn)的口水仗:有一天,有兩位工程師在閑談,一位叫小優(yōu),一位叫小度。他們分別負(fù)責(zé)某視頻網(wǎng)站和某網(wǎng)盟廣告的點(diǎn)擊率建模。小優(yōu)說(shuō):最近可把我忙壞了,上線了個(gè)全新的點(diǎn)擊率模型,把AUC從0.62提高到0.67,效果真不錯(cuò)!哪知道小度聽(tīng)了哈哈大笑:這數(shù)據(jù)你也好意思拿出來(lái)說(shuō),我們的AUC早就到0.9以上了!
那么,是不是小度的模型比小優(yōu)真的好那么多呢?當(dāng)然不是,我們看看該視頻網(wǎng)站和網(wǎng)盟的廣告位分布,就一目了然了。
什么?你還沒(méi)有明白,那么我建議你自己好好把這個(gè)問(wèn)題想清楚。不論你是運(yùn)營(yíng)還是產(chǎn)品,經(jīng)過(guò)了這樣的思考,你的數(shù)據(jù)解讀能力會(huì)上一個(gè)臺(tái)階。
好了,三個(gè)關(guān)鍵點(diǎn)說(shuō)完了,我知道有的讀者還會(huì)對(duì)第二點(diǎn)表示沒(méi)看懂,那干脆我們就再多說(shuō)一點(diǎn)兒,將2015年11月15日王超在計(jì)算廣告讀者微信群里所做的題為“點(diǎn)擊率預(yù)估趨勢(shì)淺析”的分享內(nèi)容整理發(fā)布在下面。沒(méi)有堅(jiān)持到這里就把文章關(guān)掉的碼農(nóng)們,讓他們后悔一輩子去吧!(轉(zhuǎn)發(fā)本文的讀者,可以在公眾號(hào)后臺(tái)留言索取完整版PPT。)
計(jì)算廣告群里的朋友晚上好,今天分享一下點(diǎn)擊率預(yù)估近年來(lái)的一些趨勢(shì)。主要結(jié)合劉鵬老師的一些指導(dǎo),以及自身工作的一些經(jīng)驗(yàn),有偏頗的地方請(qǐng)大家多多指正。
在計(jì)算廣告第一版的書(shū)里,主要講到了經(jīng)典的點(diǎn)擊率預(yù)估模型邏輯回歸,特征工程,模型的評(píng)估等,相信對(duì)大多數(shù)場(chǎng)景來(lái)說(shuō)這一步是必做的基線版本。后續(xù)可以在此基礎(chǔ)上做一些更細(xì)致的特征工程和模型工作??紤]到群里的朋友都已經(jīng)拿到了這本書(shū),今天先跳過(guò)書(shū)里覆蓋的內(nèi)容,講一些目前書(shū)里沒(méi)有提及的部分。如果對(duì)書(shū)里內(nèi)容還不夠了解的朋友,建議第一步還是把書(shū)中基礎(chǔ)性的內(nèi)容仔細(xì)掌握。
LR 人工特征工程風(fēng)光不再
講近年來(lái)點(diǎn)擊率預(yù)估的發(fā)展趨勢(shì),我想先從近年來(lái)一次最具參考意義和號(hào)召力的criteo舉辦的點(diǎn)擊率預(yù)估比賽作為切入點(diǎn)說(shuō)起。
為什么要拿這次比賽來(lái)說(shuō)?首先criteo是全球一家專(zhuān)注在效果廣告的公司,在業(yè)界很有影響力,計(jì)算廣告書(shū)中對(duì)其也有介紹,比賽的數(shù)據(jù)質(zhì)量不錯(cuò)。其次前三名有10w美金的激勵(lì),繼KDD cup 2012 track2之后,算是點(diǎn)擊率預(yù)估問(wèn)題上最知名的一次比賽,很多kdd cup的往屆冠軍都前來(lái)參加。最后呢這次比賽都是脫敏過(guò)的特征,沒(méi)有具體的特征含義,使得難以結(jié)合領(lǐng)域知識(shí)做更細(xì)致的特征工程,更多考量模型的工作,比較適合我們今天討論的話(huà)題,另外比賽時(shí)間是從去年6月到9月三個(gè)月的時(shí)間,參賽者們的方案相對(duì)也會(huì)比較細(xì)致。
從leadboard中可以看到在700多支team里,Kdd 2012年起的各屆冠軍,這些比賽型的選手,基本占據(jù)了前十的位置,我是第7。其次,從使用的模型上,基本以fm和gbdt,還有神經(jīng)網(wǎng)絡(luò)這些非線性模型為主??梢赃@么說(shuō),在比賽里,邏輯回歸加大量的人工特征工程的方案已經(jīng)很難排到比賽前列,靠邏輯回歸一個(gè)模型包打天下,已經(jīng)成為過(guò)去時(shí)。
特征,特征
在接下來(lái)講具體模型之前,先來(lái)回顧一下我們?yōu)槭裁匆龃罅康奶卣鞴こ?。點(diǎn)擊率預(yù)估的主要場(chǎng)景,是在各種長(zhǎng)尾的流量上,對(duì)一個(gè)給定的<用戶(hù),廣告,上下文>三元組做出精準(zhǔn)估計(jì)。在這種long tail的場(chǎng)景下,用戶(hù)或上下文對(duì)廣告的偏好,基本都是一些相對(duì)weak的signal,我們需要把這些弱信號(hào)package在一起,才能去更好的發(fā)現(xiàn)當(dāng)前場(chǎng)景下用戶(hù)感興趣的廣告。
特征工程是各個(gè)公司相對(duì)模型來(lái)說(shuō)更看重保密的部分,因?yàn)閺钠渲袝?huì)大致了解到該公司的數(shù)據(jù)分布,這方面的公開(kāi)資料不會(huì)太多。大體來(lái)說(shuō),有這么倆部分工作:
首先了解行業(yè)的領(lǐng)域知識(shí),去尋找和設(shè)計(jì)強(qiáng)信號(hào)依然重要,比如搜索廣告里query和廣告創(chuàng)意的相關(guān)性是強(qiáng)信號(hào),電商領(lǐng)域圖片和價(jià)格特征是強(qiáng)信號(hào)等。這部分工作是和各家公司業(yè)務(wù)緊密相關(guān)的。
其次如果采用的是邏輯回歸這種廣義線性模型,需要手動(dòng)構(gòu)造特征變換,才能更好處理非線性問(wèn)題。常見(jiàn)的特征變換方法比如特征組合,特征選擇,特征離散化歸一化等,多數(shù)時(shí)候通過(guò)eyeballing和統(tǒng)計(jì)學(xué)的方法來(lái)完成。工程師自然是希望能將更多的精力放在設(shè)計(jì)業(yè)務(wù)上的強(qiáng)信號(hào)特征上面,而特征變換自動(dòng)的由模型來(lái)完成。出于這樣的考慮,非線性模型逐漸在取代LR,比如通過(guò)FM,GBDT去自動(dòng)挖掘組合特征,通過(guò)GBDT去做特征選擇,離散化等,正如上述比賽中看到的。
最后基于一些深度學(xué)習(xí)的方法,也能夠做一些特征發(fā)現(xiàn)的事情,舉個(gè)典型的例子就是語(yǔ)音識(shí)別里,dnn已經(jīng)把MFCC這種人工特征取代了,wer有顯著的降低。而在廣告領(lǐng)域,DNN目前基本在百度等大公司也正在探索中,發(fā)展比較快,這部分今天簡(jiǎn)單提一下。
模型選擇
點(diǎn)擊率預(yù)估的模型,如果包括各個(gè)模型的變種,可能不下數(shù)十種。根據(jù)自己的業(yè)務(wù)如何選擇相關(guān)的模型,我想從三個(gè)維度說(shuō)下個(gè)人選擇模型時(shí)候的觀點(diǎn),偏頗之處請(qǐng)大家多多指正。
第一,線性模型還是非線性模型。一般在模型的初期線性模型會(huì)作為首選方法采用,有經(jīng)驗(yàn)的工程師對(duì)業(yè)務(wù)領(lǐng)域中的強(qiáng)信號(hào)比較熟悉,能夠快速rush完幾個(gè)版本的特征工程后達(dá)到一個(gè)不錯(cuò)的基線水平。而當(dāng)從業(yè)務(wù)中抽象出強(qiáng)信號(hào)越來(lái)越困難時(shí),往往就會(huì)伴隨著比較暴力的特征工程去捕捉業(yè)務(wù)里的弱信號(hào)。隨著這一過(guò)程的深入,模型訓(xùn)練的代價(jià)在快速增長(zhǎng),而收益卻逐漸逼近上限。而非線性模型的長(zhǎng)期優(yōu)勢(shì)則比較明顯,模型泛化能力強(qiáng),調(diào)參成本相對(duì)較小,能在訓(xùn)練代價(jià)和模型精度上達(dá)到更好的tradeoff,百度等大公司都已經(jīng)從LR過(guò)渡到了DNN。
第二,基于Sparse的特征(靜態(tài)特征)建模,還是Dense的特征(動(dòng)態(tài)特征)建模。這一點(diǎn)可能沒(méi)有細(xì)看書(shū)的朋友不太熟悉,簡(jiǎn)單說(shuō)就是當(dāng)某個(gè)特征被觸發(fā)時(shí),不再用1,而是用這個(gè)特征歷史上一段時(shí)間(或者多個(gè)時(shí)間窗口)的點(diǎn)擊率作為其特征取值。當(dāng)特征動(dòng)起來(lái)以后,通過(guò)特征側(cè)捕捉動(dòng)態(tài)信號(hào),模型就不用快速更新了,可以說(shuō)dense建模的方案相對(duì)更加簡(jiǎn)單優(yōu)雅。曾經(jīng)做過(guò)這樣的實(shí)驗(yàn),當(dāng)采用動(dòng)態(tài)特征加Offline模型,和靜態(tài)特征加Online模型,倆者收益是相當(dāng)?shù)摹?/p>
這里補(bǔ)充重點(diǎn)說(shuō)明一點(diǎn),如果基于sparse特征建模的話(huà),knowledge完全存儲(chǔ)在模型處,而基于dense特征建模,知識(shí)存放在模型和特征(點(diǎn)擊率)倆處,喂給模型的點(diǎn)擊率特征是否置信,直接決定了這個(gè)方案的魯棒性。這里有倆個(gè)問(wèn)題,一個(gè)是在某些場(chǎng)景下,點(diǎn)擊率是有bias的,比如展示廣告里,頭部流量上點(diǎn)擊率被高估,點(diǎn)擊率高是因?yàn)槠鋸V告位置比較好,如果不消去bias,則會(huì)產(chǎn)生強(qiáng)者愈強(qiáng)的馬太效應(yīng)。另一個(gè)問(wèn)題是長(zhǎng)尾流量上,對(duì)于某個(gè)特征值的pv較少,ctr不再置信,也需要去平滑。計(jì)算廣告書(shū)中針對(duì)這倆個(gè)問(wèn)題介紹了相關(guān)的方案COEC 平滑可供參考。
第三,應(yīng)用Online的更新方式去更新模型,還是batch的方式。Online的方式對(duì)應(yīng)的最優(yōu)化算法主要是minibatch sgd,Offline的方式可以應(yīng)用計(jì)算廣告書(shū)里說(shuō)的LBFGS,Trust region這些。按我個(gè)人經(jīng)驗(yàn),minibatch sgd的更新方式對(duì)頭部的數(shù)據(jù)學(xué)習(xí)的會(huì)更快更充分,因此更善于fine tuning the head part。而Offline的方式全局優(yōu)化歷史數(shù)據(jù),對(duì)于長(zhǎng)尾稀疏特征,就比sgd的方式要精細(xì)些了。如果業(yè)務(wù)場(chǎng)景時(shí)效性較強(qiáng),更關(guān)注頭部,用一個(gè)Online keep更新的模型就足夠了,比如新聞推薦的場(chǎng)景。但是如果業(yè)務(wù)場(chǎng)景有很多長(zhǎng)尾流量,需要精細(xì)的預(yù)估,一個(gè)batch的Offline model是必要的,為了業(yè)務(wù)的時(shí)效性考慮,可以用batch的模型結(jié)果去初始化Online的模型更新,定期的batch結(jié)合Online的delta更新,比如搜索廣告的場(chǎng)景。
模型演進(jìn)概述
上述的模型選擇都是結(jié)合業(yè)務(wù)場(chǎng)景做出的選擇,這里按我個(gè)人理解給出一個(gè)連貫一些的點(diǎn)擊率預(yù)估模型演進(jìn)的過(guò)程:
之前提及過(guò),一般會(huì)以高維sparse特征的LR模型作為基線模型,也有用dense特征直接結(jié)合LR來(lái)建模的。由于LR是線性分類(lèi)器,后者需要對(duì)dense特征手工加各種非線性變換,遇到瓶頸后會(huì)轉(zhuǎn)向前者,或者改成使用GBDT,NN等非線性模型。而高維sparse特征結(jié)合LR的方案,人工在特征工程遇到一定瓶頸后,會(huì)采用FM等方案自動(dòng)做特征發(fā)現(xiàn),為了解決時(shí)效性的問(wèn)題,會(huì)結(jié)合batch的訓(xùn)練加上Online的更新方式,或者直接轉(zhuǎn)向完全Online的方案如ftrl。還有一個(gè)方向是會(huì)結(jié)合自身的業(yè)務(wù)場(chǎng)景,對(duì)模型的損失函數(shù)做一些創(chuàng)新,比如yahoo的laser,阿里的coupled group lasso,比賽里的field aware的ffm等等。
在比賽里為了提升效果,很常見(jiàn)的一個(gè)策略是把各個(gè)模型融合在一起,最簡(jiǎn)單的有把各個(gè)模型的結(jié)果做線性加權(quán),也有把各個(gè)模型進(jìn)行stacking的方案,比如Facebook的gbdt lr,再有把各個(gè)模型的信息喂給dnn去學(xué)習(xí)的。對(duì)這三種方案來(lái)說(shuō),效果最好的,我個(gè)人比較相信,是用dnn去做模型的blending(融合)。注意這里說(shuō)的DNN不是指具體的某個(gè)模型dbn,cnn,而是指將各種淺層模型的中間權(quán)重,預(yù)估結(jié)果,原始的靜態(tài),動(dòng)態(tài)特征等作為DNN的輸入,使用dnn后饋的輸入梯度來(lái)聯(lián)合更新這些結(jié)構(gòu)的參數(shù)。對(duì)DNN大家可能比較詬病的是其訓(xùn)練效率,但我覺(jué)得在大公司可能還好,聽(tīng)在百度的朋友說(shuō)DNN的開(kāi)發(fā)代價(jià)和訓(xùn)練開(kāi)銷(xiāo)隨著探索在逐步降低,不一定比gbdt等非線性模型代價(jià)高很多。
當(dāng)然,對(duì)小公司來(lái)說(shuō),直接走到DNN有點(diǎn)用力過(guò)猛,我在這里簡(jiǎn)要介紹一下FM gbdt去融合的方案:第一步當(dāng)然也是基于大規(guī)模稀疏特征LR。第二步,為了更好的刻畫(huà)長(zhǎng)尾,自動(dòng)發(fā)現(xiàn)組合特征,采用了FM。在同樣的訓(xùn)練時(shí)間下,AUC提升,模型泛化性能可控。第三步:為了更好的fine tuning頭部和提升時(shí)效性,采用了用gbdt加動(dòng)態(tài)特征的模型。最后呢,把這兩個(gè)模型簡(jiǎn)單的做線性融合,由于倆個(gè)模型的特征和模型差異性較大,融合后auc也有顯著的提升。
對(duì)于gbdt,開(kāi)源的實(shí)現(xiàn)有很多,但效果差別比較大,這里推薦一個(gè)開(kāi)源實(shí)現(xiàn)xgboost,很多kaggle上的比賽借助這個(gè)工具都拿到了好名次。之前我寫(xiě)過(guò)一篇叫做xgboost導(dǎo)讀和實(shí)戰(zhàn)的文章,對(duì)原始paper中的公式給出了一些推導(dǎo)細(xì)節(jié),這里不再詳述。簡(jiǎn)單的說(shuō)原始paper里是在函數(shù)空間上梯度下降求解,在求解步長(zhǎng)時(shí)一般都是固定學(xué)習(xí)率。而xgboost對(duì)損失函數(shù)做了二階的泰勒展開(kāi),考慮了損失函數(shù)的二階梯度信息,并加入了正則項(xiàng)整體求最優(yōu)解,有比較好的泛化性能。另外在具體建樹(shù)的分裂節(jié)點(diǎn)過(guò)程也不是大多數(shù)實(shí)現(xiàn)里基于信息增益等,而是結(jié)合具體目標(biāo)函數(shù)的真實(shí)下降量。有人做過(guò)各實(shí)現(xiàn)的評(píng)測(cè),xgboost在性能和效果上都是相當(dāng)不錯(cuò)的。
BSP->SSP
幾個(gè)典型的模型基本就簡(jiǎn)要講到這里,最后講一下模型求解的優(yōu)化算法,計(jì)算廣告書(shū)里給出了不少經(jīng)典的優(yōu)化凸優(yōu)化算法的原理和實(shí)現(xiàn)代碼,LBFGS,trust region等,這些凸優(yōu)化算法基本上都是掃一遍樣本,迭代的更新一次模型參數(shù),想要提升模型訓(xùn)練收斂的效率,主要思路是降低掃樣本的成本,比如把樣本cache在內(nèi)存里,另外就是降低迭代輪數(shù),比如書(shū)里提到的admm。
這樣的batch做迭代的優(yōu)化方法現(xiàn)在被稱(chēng)為一種叫做BSP(Bulk Synchronous Parallel)的方式,與之相對(duì)應(yīng)的叫做SSP(StalenessSynchronous Parallel),主要是基于異步的minibatch sgd的優(yōu)化算法來(lái)更新,加上了一個(gè)bounded的一致性協(xié)議來(lái)保證收斂。補(bǔ)充一點(diǎn)的是,很多實(shí)現(xiàn)中其實(shí)是完全異步來(lái)實(shí)現(xiàn)的,更為簡(jiǎn)單一些。SSP的方式雖然單輪迭代的網(wǎng)絡(luò)開(kāi)銷(xiāo)不小,但是掃一遍樣本,minibatch sgd可以更新很多次模型,迭代的次數(shù)相對(duì)LBFGS會(huì)降低很多,所以整體的時(shí)間開(kāi)銷(xiāo)相對(duì)也會(huì)少很多,另外可以結(jié)合online更新進(jìn)一步降低訓(xùn)練時(shí)間。從底層消息通訊的工程架構(gòu)上來(lái)說(shuō),ssp的方式主要是異步的push pull,基于消息隊(duì)列如zeromq等去實(shí)現(xiàn),相對(duì)bsp的這樣的同步原語(yǔ),實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單優(yōu)雅些,也有一些不錯(cuò)的開(kāi)源實(shí)現(xiàn)比如李沐的dmlc。
ssp方式的缺點(diǎn)是數(shù)據(jù)量少的時(shí)候minibatch sgd的優(yōu)勢(shì)相對(duì)不明顯,需要多調(diào)調(diào)參數(shù),沒(méi)有batch算法省事??傮w說(shuō)來(lái),趨勢(shì)是在從bsp的架構(gòu)往ssp的架構(gòu)在轉(zhuǎn),包括一些dnn的實(shí)現(xiàn),基于SSP的方式加Online更新后訓(xùn)練模型的開(kāi)銷(xiāo)相對(duì)已經(jīng)較小了。
參考文獻(xiàn)
最后附上這次分享的主要參考文獻(xiàn),這次分享主要是對(duì)點(diǎn)擊率預(yù)估做一個(gè)概述。相關(guān)模型的數(shù)學(xué)原理和實(shí)現(xiàn)的高效工程架構(gòu)其實(shí)都很有趣,如果大家有興趣的話(huà),后面有時(shí)間的時(shí)候可以群里和大家再詳細(xì)的做深入交流。
· [STEFFEN RENDLE]Factorization Machines with libFM
· [Jerome H. Friedman] Greedy Function Approximation-A GradientBoosting Machine
· [li_mu]Scaling Distributed Machine Learning with the ParameterServer
· https://www.kaggle.com/c/criteo-display-ad-challenge/forums
聯(lián)系客服