小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

搜狗深度學(xué)習(xí)技術(shù)在廣告推薦領(lǐng)域的應(yīng)用

 新用戶73848091 2020-05-04

內(nèi)容來源:2017年4月17日,搜狗移動搜索廣告策略研究組負(fù)責(zé)人舒鵬在七牛云和QCon聯(lián)合主辦的深度學(xué)習(xí)論壇“深度學(xué)習(xí)最新進(jìn)展與實(shí)踐”上進(jìn)行《搜狗深度學(xué)習(xí)技術(shù)在廣告推薦領(lǐng)域的應(yīng)用》演講分享。

編者按

近來,深度學(xué)習(xí)成為一個流行詞。深度學(xué)習(xí)可以更好地通過增加數(shù)據(jù)集的規(guī)模來改善學(xué)習(xí)結(jié)果,與傳統(tǒng)的機(jī)器學(xué)習(xí)工具相比,深度學(xué)習(xí)挖掘了神經(jīng)網(wǎng)絡(luò)的潛力?;趶?qiáng)大的特征提取,它比其他工具更適合模式識別(圖像、文本、音頻)。深度學(xué)習(xí)應(yīng)用的范疇也越來越廣。這次搜狗移動搜索廣告策略研究組負(fù)責(zé)人舒鵬用自身的經(jīng)驗(yàn)分享搜狗深度學(xué)習(xí)技術(shù)在廣告推薦領(lǐng)域的應(yīng)用,以下為此次演講內(nèi)容的整理。

嘉賓演講視頻地址:http:///4G8CYm

搜索廣告背景知識

圖1

大家對廣告多多少少都有一些了解,現(xiàn)在大家都用搜索引擎,從總體的覆蓋率看,大家應(yīng)該都會碰到廣告。大家對廣告多少會有些討厭,但中國互聯(lián)網(wǎng)領(lǐng)域的很多行業(yè),都靠廣告變現(xiàn)來生存,大家手機(jī)上有很多免費(fèi)APP,但天下沒有免費(fèi)的午餐,很多APP都靠廣告來盈利,廣告是互聯(lián)網(wǎng)商業(yè)的基石。現(xiàn)在也有一些新的流量變現(xiàn)方式,如 O2O、電商,還有直播等。在這些商業(yè)模式出現(xiàn)之前,廣告為互聯(lián)網(wǎng)行業(yè)提供了商業(yè)基礎(chǔ)。

如圖 1 是搜索廣告的流程圖,對于搜索廣告來說一般有幾個處理步驟:首先是查詢理解,用戶當(dāng)前的查詢到底想干什么、他有什么目的?我們進(jìn)行分詞,以及查詢傾向的分析;然后做廣告召回,有很多的客戶會在搜索廣告中買一些他們感興趣的詞,這些詞代表了他們對不同流量的感興趣程度,系統(tǒng)要對這些詞進(jìn)行競價(jià)排序,所以需要先做一個廣告召回,判定在當(dāng)前語境下面哪些客戶提供的廣告比較合適。這個量比較大,搜狗的廣告庫在幾十億的量級,所以會做一定篩選,剩下幾千幾百個廣告,然后進(jìn)行詳細(xì)評估;同時我們還會做點(diǎn)擊率預(yù)估,即假定這個廣告能夠在用戶面前展示,實(shí)際的點(diǎn)擊比例會怎么樣,點(diǎn)擊率能夠反映出很多因素,包括廣告的質(zhì)量,以及廣告的價(jià)值等。此外,有的時候我們也需要花錢購買流量,如何更有效的利用這些流量,通常都要靠這些來保證;而后會有排序計(jì)價(jià),挑選排名靠前的廣告來進(jìn)行結(jié)果展示;然后會有后續(xù)的日志收集功能,接下來會拿這個日志做各種各樣的處理,包括 CTR預(yù)估模型的線下實(shí)驗(yàn)以及各種各樣的事情,如此就完成了整個閉環(huán),這是廣告系統(tǒng)的介紹。

深度學(xué)習(xí)在搜狗搜索廣告的一些應(yīng)用

圖2

下邊介紹一下搜狗深度學(xué)習(xí)在搜索廣告領(lǐng)域里面有哪些應(yīng)用。

第一塊是文本相關(guān)性計(jì)算,簡單來講就是一個廣告的標(biāo)題、描述等整個信息跟當(dāng)前的查詢詞是否相關(guān),健康性有沒有問題,是否會影響用戶體驗(yàn)?有時候一些客戶買詞不規(guī)矩,可能會買一些當(dāng)下流行的熱點(diǎn)詞,但最后填寫的標(biāo)題、描述等創(chuàng)意信息跟這個熱點(diǎn)詞并沒有關(guān)系,如果展示出來就會引起大家的反感,因此我們需要圍繞相關(guān)性做一些工作,來避免這種情況。

如圖2是去年做的一項(xiàng)工作,后來也是投了一篇論文發(fā)表在CIKM2016上面去,這個論文是關(guān)于 Question Answering的,解決如何選出和 Question 最合適答案的問題,采用了典型的深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)。這篇論文的主要創(chuàng)新點(diǎn)在于無需分詞,做一些傳統(tǒng)的文本相關(guān)性計(jì)算時,一般會先做分詞,比如你會把論文進(jìn)行分詞,把廣告標(biāo)題進(jìn)行分詞等,分詞之后再做處理。這個分詞算法設(shè)計(jì)也有很多講究,你需要不斷的更新語料庫,以及其它相關(guān)性工作,當(dāng)時就想能不能不做分詞,把這個繞開直接搞定。就做了個實(shí)驗(yàn),簡單來講就是把英文的 26 個小寫字母,以及 26 個大寫字母,還有 0-9這些數(shù)字,以及標(biāo)點(diǎn)符號等,每個字符都看成是一個標(biāo)記,每個標(biāo)記對應(yīng)一個向量,這個向量可以通過向量表查詢得到,并在訓(xùn)練中逐步更新,這樣每個句子就可以轉(zhuǎn)化為一個矩陣,矩陣得到之后可通過卷積和pooling等方法最終轉(zhuǎn)化成向量,這個向量通過全連接層形成一個輸出值,而后和樣本標(biāo)注結(jié)果( 1 還是 0)進(jìn)行比對和誤差回傳,從而形成一個網(wǎng)絡(luò)。有了這個網(wǎng)絡(luò)之后,就可以拿一些語料進(jìn)行訓(xùn)練,結(jié)束之后就會得到最終每個字符的vector,用以后續(xù)的處理。這樣做不需要分詞,可避免外部系統(tǒng)的干擾。最近我們依賴的一個分詞庫需要進(jìn)行升級,很多事情都要重新做一遍,特別麻煩。如果這個架構(gòu)全面應(yīng)用的話,將會避免這些問題。

圖3

如圖 3 是廣告物料推薦,假設(shè)有一張圖片想知道含義,想知道跟這個圖片相關(guān)的文本有哪些。圖片采用 CNN 來處理,文本采用 LSTM 進(jìn)行處理,最后把兩者通過cosine的方式結(jié)合在一起訓(xùn)練以達(dá)到最終目的。

圖4

深度學(xué)習(xí)的應(yīng)用很廣泛,具體到廣告領(lǐng)域:如圖像理解,像剛才介紹的圖像物料推薦,這個是用 CNN 技術(shù)來做;還有文本相關(guān)性,通??梢詠碜鰪V告召回,以及創(chuàng)意生成等事情,相關(guān)技術(shù)比如 LSTM,以及剛才提到的 CSR;還有CTR預(yù)估,深度學(xué)習(xí)可用來做廣告排序和相關(guān)的特征挖掘,相關(guān)技術(shù)如CNN、MxNet和TensorFlow等。圖 4 舉的例子是一個典型應(yīng)用,具體到這個廣告而言,蛋糕的小圖片是通過剛才的技術(shù)做上去的,有很多客戶是屬于中小客戶,自己不具備強(qiáng)大的運(yùn)營能力,他可能想為廣告配一些圖,但沒有精力做這件事情,我們就會幫他自動匹配一些圖片,這會影響后續(xù)的很多東西,包括訂單轉(zhuǎn)化等事情。廣告下方的三行子標(biāo)題也是自動生成,系統(tǒng)會判斷一下當(dāng)前有哪些東西用戶比較感興趣,而且和客戶有關(guān),就會放在這里,這部分涉及到文本相關(guān)性計(jì)算。這是主要介紹的三點(diǎn)深度學(xué)習(xí)在廣告中的應(yīng)用。

基于多模型融合的CTR預(yù)估

CTR預(yù)估流程

圖5

下邊我們重點(diǎn)介紹一下 CTR 預(yù)估模塊。通常單個模型的能力有限,每個模型都有自己的特點(diǎn),比如 LR 模型比較穩(wěn)定,DNN 模型擅長做特征交叉。每個模型都有自己的特點(diǎn),需要根據(jù)模型的特點(diǎn)去最大化利用它。我就這個領(lǐng)域詳細(xì)介紹一下。

首先介紹一下CTR預(yù)估的流程:首先搜集原始數(shù)據(jù),包括查詢請求和點(diǎn)擊信息,這兩項(xiàng)每天都會實(shí)時產(chǎn)生并且量級很大;有這些之后就可以做特征的抽取,比如查詢相關(guān)特征,用戶查詢詞是什么?他所處哪個地域?今天是星期幾?還有廣告特征,廣告本身的標(biāo)題是什么?描述是什么?客戶購買的關(guān)鍵詞是什么,以及這個廣告和查詢詞之間的匹配相關(guān)性。有了特征之后會進(jìn)行線下模型訓(xùn)練。圖 5 中有兩類模型,一個是線性模型,一個是非線性模型,線性模型主要指LR ,非線性模型主要是指 GBDT、DNN等。模型訓(xùn)練完畢之后會加載到線上,同時線上 Server 會把整個特征抽取流程在線完成,而后會進(jìn)行模型計(jì)算,然后形成 CTR 預(yù)估的完整結(jié)果。最后 Online 本身會產(chǎn)生實(shí)時日志,形成完整的流程。

CTR預(yù)估涉及技術(shù)

圖6

大家知道,跟CTR預(yù)估有關(guān)的主要有三個因素,一個是數(shù)據(jù)、一個是特征、一個是模型。平臺是承載這三點(diǎn)的基礎(chǔ)。具體到平臺而言,我們通常會用多天的數(shù)據(jù)進(jìn)行訓(xùn)練,這種情況下單機(jī)是跑不完的,因此需要一個并行計(jì)算平臺來同時處理大數(shù)據(jù)量。如圖 6 左邊列出來的幾個平臺都是較為常用的平臺:第一個是 MPI,如果做科學(xué)計(jì)算的話就會比較熟悉,這是比較早期的,這個平臺會偏底層一些,需要修改不少代碼才能實(shí)現(xiàn)工作,現(xiàn)在大家不大會用,因?yàn)樽銎饋肀容^繁瑣;第二種是XgBoost,主要是做 GBDT 相關(guān)的東西;然后是 MxNet,在深度學(xué)習(xí)中的應(yīng)用比較多,像亞馬遜就在利用這個平臺做些事情;最后是 TensorFlow,谷歌最近一兩年做出來的,主要是提供跨平臺的深度學(xué)習(xí)計(jì)算工具。

在模型方面:首先有線性模型,LR 模型又有一些細(xì)分算法,實(shí)時(FTRL)和特征自動組合(FM);非線性的模型是有GBDT,是決策樹的變體,可以看作多個決策樹的組合;然后是深度學(xué)習(xí)模型, 如DNN;

以及模型融合,剛才講到怎么樣能把不同模型的優(yōu)點(diǎn)都集中在一起,具體的做法有多種:第一種是 Bagging,比較實(shí)用簡單,就是有多個模型,每個模型都有個結(jié)果,怎么樣把多個結(jié)果放在一起呢?直接加權(quán)平均一下就可以了,這個方法很簡單;其次是級聯(lián)模型,級聯(lián)模型相對復(fù)雜一些,這個做法不是把最終的評估結(jié)果放在一起,而是說每一個模型中間產(chǎn)生的數(shù)據(jù)也可以送到另外一個模型中去,這樣做起來就比較麻煩,但操作空間比較大,而且可以有多種組合方法;最后一個是 Wide&Deep,這是谷歌去年提出的思路,它跟前面兩種都不一樣,前面兩種每個模型訓(xùn)練都是獨(dú)立的,即使有先后順序,但是 Wide&Deep 是針對兩個模型同時交互訓(xùn)練,我們認(rèn)為它相比其他兩個效果會更好一些。

數(shù)據(jù)模塊:首先要有一個日志收集模塊,會收集到最原始的數(shù)據(jù),需要進(jìn)行去噪,是因?yàn)樵紨?shù)據(jù)也會有一些噪聲點(diǎn),比如同一個用戶同一個查詢詞連續(xù)搜索兩次,第一次沒點(diǎn)廣告,但第二次點(diǎn)了,第一次沒點(diǎn)到底是因?yàn)閺V告出的不好,還是因?yàn)橛脩舢?dāng)時不在狀態(tài),根本沒有看到廣告呢。

其次是特征,在搜索廣告領(lǐng)域里面特征是非常重要的。有一個專有名詞叫特征工程,主要包括特征的設(shè)計(jì)、選擇、組合:所謂設(shè)計(jì),就是概率論,你認(rèn)為哪些因素對用戶選擇廣告有影響,這時你就要把它找到并設(shè)計(jì)一些新特征出來;單單有這個還不夠,我們需要判斷這種新特征是否有效,這就涉及到特征選擇,特征選擇需要進(jìn)行仔細(xì)的分析,看看能不能用;最后是特征組合,也就是交叉特征,有的時候單個因素出現(xiàn)并不能說明問題,而兩個因素一塊出現(xiàn)時,可能就代表了特殊的含義。

特征設(shè)計(jì)

圖7

關(guān)于特征設(shè)計(jì)大體上可以分為兩類:一類是離散特征,所謂離散特征是指,比如一天 24 個小時,下午16 點(diǎn)整,我認(rèn)為 16 點(diǎn)整在一天 24 小時當(dāng)中會占據(jù)一個位置,把時間刻畫為長度為24的向量,其中 16 點(diǎn)就會占據(jù)這個向量中的一個位置。這種設(shè)計(jì)方法有幾個特點(diǎn):首先比較容易設(shè)計(jì),不管什么樣的特征,只要它有一個取值就可以映射到系統(tǒng)里,實(shí)現(xiàn)特征的產(chǎn)生;還有一個特點(diǎn),就是特征空間非常大,百億或者上千億的量級,但對于任何一個樣本最后只有幾百個特征是有效的,其他的特征都沒有取值,它的稀疏性非常明顯,特征空間非常大,這樣會導(dǎo)致模型復(fù)雜度比較受限制。如果模型過于復(fù)雜,比如你把每一個離散特征都連接到DNN輸入層的話,參數(shù)就會非常多,訓(xùn)練時間會非常長,結(jié)果也不一定好。這是離散特征。

其次是連續(xù)特征,跟離散特征反著過來的。像上邊那個時間的例子,如果說 24 個小時刻畫成離散特征是 24 個點(diǎn)的話,連續(xù)特征就是一個值,16 點(diǎn)就是 16,13 點(diǎn)就是 13,它只會占據(jù)一個位置,但是那個位置的取值范圍可以有 24 種,而不僅僅是0和1,跟離散特征正好反過來。像這種特征一般來說需要做一個比較仔細(xì)的設(shè)計(jì)才行,大家都知道連續(xù)特征每一個特征只會占一個位置,不像離散特征那樣隨意占據(jù)大量的空間。它的特點(diǎn)是定長,每個特征取值只能有一個,像離散特征中有個特征叫當(dāng)前查詢詞分詞之后的term分布,如果這個查詢詞比較長,它的term分布就長一些,占據(jù)的位置就多一些;如果只是一個短的查詢,占據(jù)的位置就比較少,是變長的,這點(diǎn)和連續(xù)特征區(qū)別很大。此外,基本上每個連續(xù)特征都有值。有上面這幾個特點(diǎn),就會導(dǎo)致連續(xù)特征量相對小一些,差不多幾百維的向量就搞定了,它可以用比較復(fù)雜的模型進(jìn)行訓(xùn)練,像DNN 這種大概只有幾百個輸入節(jié)點(diǎn),相比圖像處理還是比較小兒科的。

模型類別

圖8

關(guān)于模型,剛才提到分為線性和非線性,線性模型中最典型的就是 LR,邏輯斯特回歸,這個模型比較簡單,它的公式大概是一個權(quán)重分量×特征分量+偏置,而后再做一個變換得到最終結(jié)果,它比較簡單,比較適合處理離散特征,而且穩(wěn)定性比較好。但它有一個缺點(diǎn),LR 本身沒法做特征交叉,只能通過線下分析,嘗試兩種特征的交叉是否可以改善線下指標(biāo),這樣才能得到比較好的結(jié)果。這件事情很多公司都有自動化的學(xué)習(xí)平臺,會自動進(jìn)行特征的交叉并評估哪個特征比較好,盡管如此,這些工作還是比較耗時間的。

非線性模型有特別明顯的優(yōu)點(diǎn),能夠自動學(xué)習(xí)特征之間的交叉關(guān)系,如哪兩個特征交叉在一起比較好,模型會幫你實(shí)現(xiàn)。比如說 DNN 輸入 100 維特征,隱藏層中每層都有交叉關(guān)聯(lián)。如果兩個特征之間有很強(qiáng)的依賴關(guān)系,且對結(jié)果有影響的話,在權(quán)重分量上會有相應(yīng)的側(cè)重,最后會達(dá)到特征自動交叉的目的,這就是為什么 DNN 出來之后用戶非常廣泛的原因。像剛才 LR 這種特征組合,非常耗費(fèi)人力和精力,可能一個公司一個特征組有幾個人或十幾個人,都在做這件事情,大家都在研究哪些特征會好,或者交叉在一起會好。但如果用非線性模型的話就會相對規(guī)避這一點(diǎn),從這一點(diǎn)來看它比較適合做新領(lǐng)域的探索,可能效果會好一些。

但因?yàn)橛猩厦鎯?yōu)點(diǎn)的存在,它就會有一些缺點(diǎn),模型比較復(fù)雜,計(jì)算比較耗時。這點(diǎn)對于在線計(jì)算任務(wù)就比較關(guān)鍵一些,像做廣告CTR預(yù)估,每天有幾億次查詢,每次查詢有成百上千條廣告需要處理,查詢配對在千億量級,對計(jì)算資源的要求非常高。如果模型太復(fù)雜的話,就需要把計(jì)算資源擴(kuò)充一些,買機(jī)器這些都要考慮,最后收益怎么樣,到底值不值得,這是比較有風(fēng)險(xiǎn)的一點(diǎn)。

模型融合

圖9

上邊提到,因?yàn)槊總€模型都有優(yōu)點(diǎn),比如說 LR 模型最突出的優(yōu)點(diǎn)是簡單、可靠、文本類特征處理比較好,但又不具備交叉能力;而DNN有這種能力,但沒有前邊說的優(yōu)點(diǎn),怎么把它們?nèi)诤显谝黄鹉兀恳虼藭玫侥P腿诤希?/p>

CTR bagging 將多個模型的輸出 CTR 加權(quán)平均,實(shí)現(xiàn)方法簡單,模型之間不會產(chǎn)生耦合,但是可調(diào)參數(shù)有限,改進(jìn)空間相對較小。

再有模型融合,每個模型中間的結(jié)果或者是輸出結(jié)果可以作為另外一個模型的輸入,這個模型會學(xué)習(xí)上一個模型哪個地方處理的好或者不好,自動做出調(diào)整。實(shí)現(xiàn)的方法比較復(fù)雜,因?yàn)槟P椭g有依賴關(guān)系。但優(yōu)點(diǎn)是實(shí)現(xiàn)方案較多,改進(jìn)空間大一些。

圖10

由于第一種方式 (CTR bagging) 的空間有限,我們就選擇第二種。并針對性的做了一些設(shè)計(jì),這些跟工程設(shè)計(jì)的關(guān)系大一些。如何做這件事情?要定一個目標(biāo),要做成什么樣子來達(dá)成這個目的?首先希望這個東西能支持多個模型的加載的和計(jì)算;第二點(diǎn),可支持模型之間的交叉和 CTR 的 Bagging;第三點(diǎn),可通過配置項(xiàng)隨時調(diào)整模型融合方案;第四點(diǎn),避免不必要的重復(fù)操作,以降低時間復(fù)雜度。根據(jù)這 4 個要求我們做了個解決方案,核心理念是引入了ModelFeature 的概念,即把模型本身看做一個特征,模型通過計(jì)算得到新的特征,對于模型輸出可作為 CTR,也可以作為特征為其它模型使用。限定 ModelFeature 的計(jì)算順序,即可實(shí)現(xiàn) Bagging 和模型交叉等功能。

但是必須要注意數(shù)據(jù)一致性,線上依賴的數(shù)據(jù)源是否跟線下完全一致,如果數(shù)據(jù)不一致,所有的結(jié)論和實(shí)驗(yàn)都是空中樓閣沒有根基。我們之前碰到過一個問題,做了一個特征線下效果很好,但線上效果不怎么樣,可能就會有數(shù)據(jù)不一致的問題。拿剛才時間的例子,如果線下計(jì)算離散值時,比如說是 0 點(diǎn)占到第一個位置,1 點(diǎn)占到第二個位置,24 點(diǎn)占到第 24 個位置,但是線上有一個錯誤,0 點(diǎn)占到第 24 個位置,24 點(diǎn)占到第一個位置,就給它反過來,雖然線下做的很好,但是線上的使用效果會很差。

第二點(diǎn),流程的穩(wěn)定性,如果設(shè)計(jì)一個很復(fù)雜的流程,包括融合模型操作的話,流程之間就會有很強(qiáng)的依賴性,任何一個前面的流程失敗,后面的流程就跑不下去,所以你的流程必須要穩(wěn)定,要有機(jī)制保證。

圖11

如圖 11 是一個流程圖,線下流程會把這些數(shù)據(jù)重組抽取特征進(jìn)行訓(xùn)練。在線下會訓(xùn)練一個 LR 模型,這個結(jié)果反饋到 DNN 模型里再進(jìn)行訓(xùn)練。到了線上之后,針對每個查詢請求都會抽取這些特征,得到特征值后進(jìn)行 LR 模型計(jì)算,LR 模型產(chǎn)生的最終結(jié)果放在特征池里面,后續(xù)的 DNN 模型也會依賴這個東西計(jì)算。通過這套架構(gòu)設(shè)計(jì),基本上保證了剛才提到的要點(diǎn)。這套框架在線上跑了快一年時間,比較穩(wěn)定。

模型效果評估

圖12

線下做實(shí)驗(yàn),以及線上上線,必須要評價(jià)一下這套流程是好還是壞。所以有一套模型效果的評估方法,用來判定新特征到底是好還是壞?

一、如圖 12的 AUC,這是搜索廣告領(lǐng)域以及現(xiàn)在的信息流推薦中常用的指標(biāo),只要涉及到排序結(jié)果通常都會用到 AUC,這個指標(biāo)表征排序能力,用于分析模型是不是把一些好的排在前面差的排在后面,它不一定能反映出數(shù)據(jù)的絕對值。AUC 還是比較穩(wěn)定的,據(jù)有些人講,只要這個指標(biāo)在線下提升到一定幅度,線上一定會有效果。如果線上沒有效果的話,通常來講肯定是某一塊出了問題,包括剛才講的線上線不一致等。

二、最直接的評估方法,上線收益。如果線下發(fā)現(xiàn) AUC 是有提升的,要到線上去看最終收益有沒有漲,看到底多賺多少錢?這兩個指標(biāo)有一定的關(guān)聯(lián)性,AUC 比較高的話收益一定會漲,也有一些例外的情況。為什么線下效果很好,到了線上之后沒有變化?通常從兩個角度來看:特征的覆蓋率,你這個特征如果非常好,但覆蓋的東西很有限,線上 100 個指征只覆蓋了 2 個,即使這兩個獲得很大的提升,最終的收益也比較有限;Survival Bias,線下訓(xùn)練時用到的數(shù)據(jù)都是自動篩選過的結(jié)果,一般凡是能展現(xiàn)的廣告通常都是之前系統(tǒng)認(rèn)為比較好的廣告,在這個數(shù)據(jù)集上表現(xiàn)比較好,不代表你在真正放到線上之后表現(xiàn)好。因?yàn)檎嬲暇€之后你會對所有的廣告進(jìn)行掃描計(jì)算,這時把壞廣告干掉的能力就會顯得比較關(guān)鍵。這兩點(diǎn)可能會導(dǎo)致線上和線下不一致,其實(shí)做別的事情也會有同樣的問題,一個是理論一個是實(shí)際,這兩個如果不一致時,應(yīng)該想一想到底哪一塊出了問題?

并行化訓(xùn)練

圖13

此外,我們還需要并行化訓(xùn)練,因?yàn)閱螜C(jī)不可能處理這么大的數(shù)據(jù)量。

數(shù)據(jù)量小的時候波動很大,做的很多改進(jìn)沒有效果,一些小修改效果反而好。數(shù)據(jù)量變大之后,模型收益會更高而且比較可控。

我們選擇的深度學(xué)習(xí)并行化訓(xùn)練方案是 MxNet,它支持多機(jī)多卡,使用成本比較低。我們每天都需要進(jìn)行模型更新,對時效性要求很高,如果把 MxNet 直接用過來的話,效果不一定好,訓(xùn)練時間比較久,需要優(yōu)化,比如 怎么樣做調(diào)度來提升GPU的加速比等。

現(xiàn)狀和計(jì)劃

我們目前已經(jīng)實(shí)現(xiàn)了 LR+DNN 融合模型的上線,收益比好。但是受限于線上計(jì)算資源,模型復(fù)雜度有限,線下訓(xùn)練流程有依賴關(guān)系,繁瑣易出錯。

我們針對這幾點(diǎn)情況做了個計(jì)劃。

一、做一個線上服務(wù)拆分,跟深度學(xué)習(xí)的模塊獨(dú)立出來,采用低功耗的 GPU 加速。這個現(xiàn)在做的差不多了,區(qū)別還是很明顯的。按目前線上 CPU 版本的服務(wù)器,其實(shí)它做這種工作時非常吃力,負(fù)載量不夠,但上了 GPU 之后,就能處理的很好。

二、支撐更寬、更深、更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),GPU 在處理已有線上任務(wù)時的負(fù)載量在 5% 左右,利用率很低,未來能支撐更寬更深更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)。

三、采用 Wide & Deep,線下訓(xùn)練流程解耦,因?yàn)橹暗脑诰€計(jì)算能力有限,如果GPU 運(yùn)轉(zhuǎn)良好的話,可以采用 Wide&Deep 替換,使線下訓(xùn)練流程解耦。

Wide Deep

圖14

這是接下來打算做的事情,大家如果感興趣可以看谷歌 2016 年 6 月份發(fā)表的相應(yīng)論文。大概的思路如圖 14所示, Wide 部分可以理解為 LR,Deep就是 DNN,這兩個模塊會把它的結(jié)果同時反饋到最終輸出節(jié)點(diǎn)上,來跟最終的結(jié)果進(jìn)行差值比對,它的誤差都會同時回傳,回傳之后進(jìn)行同步更新。這樣有一個好處,:LR 跟 DNN 模型是同時訓(xùn)練出來的,線下維護(hù)一個流程實(shí)現(xiàn)兩個模型的訓(xùn)練,正確性包括各種錯誤率都能得到很好的保證。

該方法的優(yōu)點(diǎn)比較明顯,首先它比較穩(wěn)定,一次訓(xùn)練出兩個模型,如果兩個模型同時訓(xùn)練的話,兩個模型會互相影響,兩個模型的權(quán)重分配會更好一些。大家現(xiàn)在都在朝這個方向發(fā)展,我們剛開始做沒有多久,目前來看有好的效果,相比之前最好的效果再好一些,但因?yàn)楝F(xiàn)在的TensorFlow 平臺不支持大規(guī)模訓(xùn)練,接下來還需要在這一塊持續(xù)投入改進(jìn),如果有更新的結(jié)果會跟大家分享下。

Q & A

現(xiàn)場提問:論文中的方法(CSR)在英文語料上的效果怎么樣?

舒鵬:效果差不多,比如說英文單詞在幾十萬百萬的量級,如果在線應(yīng)用的話要加載幾十萬個字符和向量的映射關(guān)系,如果采用這種方法的話,大概 幾十個字符,加載 幾十 個vector 就實(shí)現(xiàn)這個功能。

現(xiàn)場提問:字的編碼怎么編的?

舒鵬:總共 26 個字母加上大小寫以及標(biāo)點(diǎn)符號和數(shù)字不到 100 種,每個對應(yīng)一個向量。漢字看哪個庫,如果常用漢字大概幾千個,其實(shí)這個矩陣并不大。

現(xiàn)場提問:你剛才說的 MxNet你能介紹一下調(diào)度的優(yōu)化嗎?

舒鵬:我們這邊有一些工程團(tuán)隊(duì)支持,具體他們那邊熟悉一些??傮w來講,首先I/O方面,我們的訓(xùn)練數(shù)量比較大,在幾十億量級,首先多臺機(jī)器可以并行加載,怎么樣把I/O和后面的計(jì)算錯開,這是關(guān)鍵的。還要看網(wǎng)絡(luò)結(jié)構(gòu)怎么設(shè)計(jì),深度學(xué)習(xí)訓(xùn)練也是每一個節(jié)點(diǎn)做完一輪BP之后會把系數(shù)拿在一起做個平均計(jì)算,怎么去設(shè)計(jì)機(jī)制來盡量縮短時間,主要是這些方面。

現(xiàn)場提問:我想問一下論文中使用的訓(xùn)練數(shù)據(jù)規(guī)模大概多少?

舒鵬:我們當(dāng)時做論文時訓(xùn)練數(shù)據(jù)規(guī)模比較小,是基于公開的庫,大概不超過一百萬,比較小的庫。線上訓(xùn)練要看應(yīng)用場景,我們有好幾種數(shù)據(jù),有一種是人工標(biāo)注過的。除此之外,還有自動數(shù)據(jù),例如用戶提交query之后,下面會出十條自然結(jié)果,點(diǎn)擊哪條結(jié)果能一定程度上表征query的一些屬性。query點(diǎn)擊的數(shù)據(jù)量很大,在百億量級。但第一種標(biāo)注數(shù)據(jù)的話,量級比較小一些,主要取決于你的應(yīng)用。

現(xiàn)場提問:請問CTR預(yù)估模型效果評估中的準(zhǔn)確率度如何計(jì)算?

舒鵬:剛才沒有列出來,直觀想象下大概有個準(zhǔn)確率計(jì)算方法。假設(shè)每個廣告系統(tǒng)有個預(yù)估CTR,假如是 0.10,可以把所有預(yù)測CTR是 0.10 的廣告放在一起,這些廣告就會有實(shí)際的點(diǎn)擊率,這個實(shí)際的點(diǎn)擊率和 0.10 的差距會有個監(jiān)控,這個就是準(zhǔn)確率。

現(xiàn)場提問:你剛剛在演講當(dāng)中提到有一個 SurvivalBias 問題,想問一下具體怎么解決這個問題的?

舒鵬:這個主要是說這個模型在碰到之前沒有見到的一些樣本時如何處理。關(guān)鍵點(diǎn)在于特征設(shè)計(jì),尤其是特征泛化性,所謂泛化性,比如說一個新廣告,雖然廣告是新的,但廣告標(biāo)題和舊廣告差不多,只要你的特征能捕捉到這些經(jīng)常出現(xiàn)的東西,例如查詢詞和廣告標(biāo)題的匹配度,這種泛化性能保證的話,這個 SurvivalBias 就不會很差。反過來講,如果你的模型中所有特征都跟跟通用性特征沒有關(guān)聯(lián),這個模型的 SurvivalBias 就會很差。舉個例子,如果你的模型訓(xùn)練時依賴的特征是昨天模型的預(yù)估點(diǎn)擊率,你的模型就會變得很簡單,而且 AUC不會低,但實(shí)際上到了線上之后這個特征會缺失,然后效果就會很差,大概是這個意思。

今天就介紹到這里,謝謝!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多