個(gè)性化推薦如何滿足用戶口味?微信看一看的技術(shù)這樣做

1 評(píng)論 7817 瀏覽 24 收藏 26 分鐘

編輯導(dǎo)讀:很多人每天都會(huì)習(xí)慣性地點(diǎn)開微信公眾號(hào)閱讀,除了朋友圈和轉(zhuǎn)發(fā)等渠道以外,我們還可以通過看一看發(fā)現(xiàn)更多有趣的文章。那么,看一看是怎么實(shí)現(xiàn)個(gè)性化推薦的呢?本文將從八個(gè)方面進(jìn)行深入分析,希望對(duì)你有幫助。

一、背景

微信公眾平臺(tái)作為目前用戶量最大的互聯(lián)網(wǎng)原創(chuàng)內(nèi)容平臺(tái)之一,每日新發(fā)表的文章可達(dá)幾百萬篇。用戶可以通過關(guān)注公眾號(hào)、朋友圈、聊天轉(zhuǎn)發(fā)等渠道閱讀文章。

除了前述幾種方式以外,用戶很難再有其他方式發(fā)現(xiàn)更多有趣的文章。因此,看一看個(gè)性化推薦應(yīng)運(yùn)而生。

我們利用用戶在微信內(nèi)的閱讀、關(guān)注、分享等信息,結(jié)合目前最新的深度學(xué)習(xí)算法,為用戶推薦最符合興趣的文章。除了文章以外,我們也接入了騰訊視頻、企鵝號(hào)、豎屏小視頻等內(nèi)容,大大豐富了推薦的內(nèi)容多樣性。

二、整體架構(gòu)

看一看的整體架構(gòu)如圖所示

和大多數(shù)的推薦系統(tǒng)一樣,我們最底層采用了經(jīng)典的召回、粗排、精排三層結(jié)構(gòu),各階段處理的候選集數(shù)量逐層遞減,主要考慮是需要在實(shí)時(shí)性能和效果之間做tradeoff。

比較特別的一點(diǎn)是,我們?cè)诰胖蠼恿艘粚赢悩?gòu)內(nèi)容混排,主要是考慮到不同內(nèi)容源的點(diǎn)擊率、優(yōu)化目標(biāo)不盡相同,難以放在一起比較。目前,混排側(cè)引入了強(qiáng)化學(xué)習(xí)模型,優(yōu)化長期收益,實(shí)現(xiàn)快速實(shí)時(shí)反饋。

三、基礎(chǔ)數(shù)據(jù)和召回

數(shù)據(jù)是推薦系統(tǒng)的天花板所在。簡單來講,推薦系統(tǒng)就是根據(jù)用戶的行為,在千萬級(jí)別的候選集中挑選最適合用戶的topN條結(jié)果。對(duì)數(shù)據(jù)判斷得越準(zhǔn)確,越細(xì)致,數(shù)據(jù)的表達(dá)能力越強(qiáng),推薦也越精準(zhǔn)。整體上看,數(shù)據(jù)可以分為用戶數(shù)據(jù)和內(nèi)容數(shù)據(jù)。

通過基礎(chǔ)數(shù)據(jù),我們可以從多個(gè)緯度去判斷用戶需求,包括用戶的一級(jí)類目興趣,二級(jí)類目興趣,興趣關(guān)鍵詞,topic分布等。同時(shí),在embedding everything的號(hào)召下,我們通過深度網(wǎng)絡(luò),對(duì)畫像做了多種層面的embedding。

內(nèi)容數(shù)據(jù)泛指所有文檔相關(guān)的數(shù)據(jù)。

  • 從業(yè)務(wù)層面看,內(nèi)容數(shù)據(jù)分為圖文、視頻、新聞、小視頻、人工干預(yù)等幾個(gè)大類,每種業(yè)務(wù)都是一個(gè)獨(dú)立的池子,有單獨(dú)的數(shù)據(jù)清洗、質(zhì)量評(píng)估流程,前期甚至有獨(dú)立的分類體系。
  • 從來源看,內(nèi)容數(shù)據(jù)分為公眾平臺(tái)文章、企鵝號(hào)號(hào)文章、外部鏈接文章、短視頻、小視頻。
  • 從時(shí)間上看,內(nèi)容數(shù)據(jù)分為實(shí)時(shí)數(shù)據(jù)、15天全量數(shù)據(jù)、歷史優(yōu)質(zhì)數(shù)據(jù)。

每個(gè)文檔都有豐富的基礎(chǔ)屬性,包括一級(jí)分類、二級(jí)分類、tag、實(shí)體詞、topic、曝光數(shù)、點(diǎn)擊數(shù)、質(zhì)量分、色情分、垃圾分。我們還創(chuàng)新的提出了people rank算法,通過每個(gè)人的社交影響力,將每個(gè)人的社交影響力反饋到文章上,形成文章的權(quán)威分、精英分等,能較好的提煉出高質(zhì)文章。

召回主要負(fù)責(zé)從百萬級(jí)的海量候選集中選出萬級(jí)別的候選集給到粗排。召回主要分為興趣畫像、協(xié)同、公眾號(hào)、社交等幾個(gè)大類召回。興趣畫像召回主要有一級(jí)/二級(jí)類目、topic、地域、關(guān)鍵詞等召回;協(xié)同召回包括Item協(xié)同、內(nèi)容協(xié)同、用戶協(xié)同等召回;公眾號(hào)召回包括關(guān)注公眾號(hào)、擴(kuò)展公眾號(hào)召回。為了增加多樣性,在以上召回之外還有一些試探、冷啟動(dòng)召回,對(duì)用戶興趣進(jìn)行探索。

四、排序

排序主要分為精排和粗排2個(gè)階段,二者主要的區(qū)別在于候選集的量級(jí)不一樣,粗排輸入候選集在1萬級(jí)別,精排只有1千級(jí)別。

候選集的數(shù)量差異決定了粗排在性能上要求會(huì)更高,因此在特征上只能選取粗粒度、區(qū)分度較高的少量特征,而模型側(cè)也只能選擇線性模型,或者復(fù)雜度較低的深度模型。粗排其他部分的工作和精排比較類似,這里著重介紹精排。

精排階段需要對(duì)粗排候選池中的ItemList進(jìn)行打分,這個(gè)分?jǐn)?shù)是針對(duì)每個(gè)用戶對(duì)候選文章點(diǎn)擊概率的預(yù)測(cè),即Ctr預(yù)估??匆豢礃I(yè)務(wù)中每天有海量活躍用戶,這些海量日志可以用來進(jìn)行模型訓(xùn)練以建模喜好。

1. LR/FM

大規(guī)模的Ctr預(yù)估系統(tǒng)中,Logistic Regression因簡單、易擴(kuò)展、可解釋的特性成為初期階段使用最為廣泛的一種模型。其Ctr預(yù)估模型公式為:

我們第一階段的模型采用大規(guī)模分布式的LR,使用自研的分布式訓(xùn)練平臺(tái)PanguX,通過人工特征工程提取十億級(jí)的特征用于離線訓(xùn)練。但LR屬于Memorization比較強(qiáng)的model,主要記憶每個(gè)特征的歷史點(diǎn)擊率,在Generalization上有很大的缺陷,需要大量的人工特征工程來提高泛化能力。

另外,這種線性模型特征與特征之間在模型中是獨(dú)立的,無法學(xué)到在訓(xùn)練集中未出現(xiàn)過的交叉信息。因此第二階段我們切換到了FM(Factorization Machines),該模型可以在很少特征工程的情況下通過學(xué)習(xí)特征的embedding表示來學(xué)習(xí)訓(xùn)練集中從未見過的組合特征,F(xiàn)M的模型公式如下:

雖然理論上講FM可以對(duì)高階特征進(jìn)行組合建模,但是我們一般在使用中受計(jì)算復(fù)雜度和參數(shù)維度的限制都是只用到了二階特征。很自然的,對(duì)于更高階的特征組合可以用多層神經(jīng)網(wǎng)絡(luò)去解決。

2. wide&deep

2016年Google提出的wide&deep模型拉開了深度學(xué)習(xí)在ctr預(yù)估領(lǐng)域大規(guī)模應(yīng)用的序幕,該模型包括兩部分:線性模型 + DNN部分。

wide部分通過Cross-product transformation在Memorization上增加低階非線性,deep部分聚焦Generalization,對(duì)特征的dense embedding進(jìn)行組合,學(xué)習(xí)更深層的隱藏特征。

在我們的實(shí)際應(yīng)用中, wide部分增加cross-product transformation的組合特征,deep部分主要由embedding化的離散特征及連續(xù)特征組成,對(duì)離散特征學(xué)習(xí)了一個(gè)低緯度的embedding向量(dense representation),Embedding vectors 隨機(jī)初始化后根據(jù)最終的 loss 來反向訓(xùn)練更新。

我們把同一個(gè)field內(nèi)embedding向量進(jìn)行sum pooling,不同field得到的向量concat在一起作為第一個(gè)隱藏層的輸入。

wide&deep 作為我們進(jìn)入深度學(xué)習(xí)領(lǐng)域的第一個(gè)模型在看一看精排場(chǎng)景中取得了很大的收益。

3. DeepFM

wide&deep模型全量之后相比FM這種淺層模型點(diǎn)擊率提升明顯,但wide部分仍需要大量的人工特征工程來引入低階組合信息。

我們參考DeepFM在網(wǎng)絡(luò)結(jié)構(gòu)上引入因子分解機(jī)部分,通過FM的特征交叉學(xué)習(xí)淺層組合,dnn部分挖掘特征間的深層非線性關(guān)聯(lián)。

標(biāo)準(zhǔn)的DeepFM網(wǎng)絡(luò)結(jié)構(gòu)如下:

我們?cè)谝隖M Layer時(shí),不同field間的交叉不再使用點(diǎn)積操作,而是通過哈達(dá)馬積得到一個(gè)向量,用于上層的多模塊融合。同時(shí),引入field-wise的Wide Layer以防止共享embedding的訓(xùn)練有偏。

對(duì)于Show/Clk/Ctr等統(tǒng)計(jì)特征,我們放棄了離線單獨(dú)統(tǒng)計(jì)載入字典的模式,直接在PanguX訓(xùn)練平臺(tái)框架層面引入該類型統(tǒng)計(jì)信息,server針對(duì)每個(gè)特征保存一份實(shí)時(shí)的全局show clk信息,并且該數(shù)據(jù)隨著訓(xùn)練的進(jìn)行持續(xù)累計(jì)和隨時(shí)間衰減。

最后的模型框架結(jié)構(gòu)如下:

目前該優(yōu)化過的DeepFM已經(jīng)全量應(yīng)用于看一看精排業(yè)務(wù)中,取得了非常不錯(cuò)的效果。

五、多目標(biāo)

除了前述ctr預(yù)估,在微信看一看的排序中,我們非常重視多目標(biāo)的推薦效果優(yōu)化。這里多目標(biāo)是指包括了點(diǎn)擊目標(biāo)之外的時(shí)長、分享、點(diǎn)贊、評(píng)論等其他跟用戶體驗(yàn)息息相關(guān)的推薦指標(biāo)。單純以pctr為目標(biāo),會(huì)帶來標(biāo)題黨問題。

站在平臺(tái)的角度,我們不僅希望在打造一款大眾化的閱讀產(chǎn)品,同時(shí)希望提升產(chǎn)品的社交屬性,因此用戶閱讀外的其他互動(dòng)行為,也是用戶體驗(yàn)的重要衡量準(zhǔn)則。

站在內(nèi)容的角度,被用戶點(diǎn)贊、分享、評(píng)論的內(nèi)容以及停留時(shí)長長的內(nèi)容,往往質(zhì)量比較高,因此引入這些目標(biāo)有利于推薦過程中避免標(biāo)題黨等低質(zhì)量內(nèi)容的展現(xiàn)。

站在用戶的角度,從閱讀、分享、點(diǎn)贊、評(píng)論等多個(gè)角度提升用戶綜合體驗(yàn),有利于增加產(chǎn)品對(duì)用戶的使用黏性。

在創(chuàng)作者角度,作者會(huì)希望在多元的指標(biāo)上看到自己微信平臺(tái)上的內(nèi)容作品的反饋效果的提升。

多目標(biāo)問題業(yè)界常見的有方法有兩種:

多任務(wù)聯(lián)合建模:

阿里媽媽在廣告的點(diǎn)擊率-轉(zhuǎn)化率預(yù)估任務(wù)中,提出了對(duì)點(diǎn)擊率、轉(zhuǎn)化率進(jìn)行聯(lián)合建模,并將轉(zhuǎn)化率分解為點(diǎn)擊率乘以點(diǎn)擊后的轉(zhuǎn)化率,從而對(duì)兩個(gè)任務(wù)在目標(biāo)輸出層進(jìn)行關(guān)聯(lián)。

優(yōu)點(diǎn)是多個(gè)任務(wù)之間可以互相利用信息,點(diǎn)擊數(shù)據(jù)彌補(bǔ)了轉(zhuǎn)化數(shù)據(jù)過度稀疏造成的預(yù)估不穩(wěn)定問題,不足之處是模型強(qiáng)依賴于點(diǎn)擊-轉(zhuǎn)化目標(biāo)在業(yè)務(wù)遞進(jìn)關(guān)系,不能直接擴(kuò)展到其他復(fù)雜場(chǎng)景。

各任務(wù)獨(dú)立建模:

業(yè)界一些信息流推薦產(chǎn)品,對(duì)點(diǎn)擊、時(shí)長、點(diǎn)贊和評(píng)論等目標(biāo)采用獨(dú)立訓(xùn)練模型,線上進(jìn)行組合的model combination方案。

優(yōu)點(diǎn)是各任務(wù)完全解耦,加快了模型的迭代速度,也利于對(duì)具體任務(wù)的特征獨(dú)立優(yōu)化,不足之處是各任務(wù)之間無法互借信息。

其他方法:

一些通過修改樣本權(quán)重體現(xiàn)多目標(biāo)重要性的方法,以及一些通過增加正則項(xiàng)在損失函數(shù)中體現(xiàn)多目標(biāo)價(jià)值的方法,因?yàn)樵诘撵`活性和模型效果上均不具有優(yōu)勢(shì),此處不再詳述。

看一看的推薦場(chǎng)景和其他推薦產(chǎn)品有相似之處,也有自己獨(dú)特的一面。

例如,點(diǎn)擊目標(biāo)和閱讀時(shí)長、分享、乃至關(guān)注公眾號(hào)等目標(biāo)構(gòu)成業(yè)務(wù)場(chǎng)景上的遞進(jìn)關(guān)系,這一點(diǎn)是共通的。但在“好看”上線以后,用戶的點(diǎn)贊和評(píng)論行為則不必須依賴于點(diǎn)擊也可以發(fā)生,這些目標(biāo)和點(diǎn)擊目標(biāo)既有遞進(jìn)關(guān)系,也有平行的關(guān)系。

此外,用戶在閱讀中的社交互動(dòng)行為數(shù)據(jù)也是微信看一看的特色,共同閱讀一篇文章、觀看一個(gè)視頻的好友上下文信息,對(duì)用戶行為的引導(dǎo)起到了很大的作用。

看一看中多目標(biāo)優(yōu)化方法:

多目標(biāo)模型的網(wǎng)絡(luò)結(jié)構(gòu):

整體的多目標(biāo)建模方法論層面,我們也采用了多任務(wù)聯(lián)合建模的方案,各個(gè)任務(wù)共享底層特征embedding表示,獨(dú)享各自的神經(jīng)網(wǎng)絡(luò)和目標(biāo)輸出。

在對(duì)多目標(biāo)之間的聯(lián)結(jié)方式上,我們?cè)趯?duì)點(diǎn)擊目標(biāo)和點(diǎn)擊后的遞進(jìn)行為進(jìn)行全空間建模之外,增加了對(duì)非依賴點(diǎn)擊行為目標(biāo)的獨(dú)立輸出。

以“好看”業(yè)務(wù)為例,即對(duì)圖中的點(diǎn)擊(A+B),點(diǎn)擊并點(diǎn)贊(B),點(diǎn)贊(B+C)做三路輸出。這樣做的好處是既能受益于點(diǎn)擊目標(biāo)和遞進(jìn)的postclick目標(biāo)互相借用信息,又能通過獨(dú)立網(wǎng)絡(luò)將非依賴點(diǎn)擊的行為目標(biāo)完整的考慮進(jìn)來。

在底層特征表示方面,我們將特征種類劃分為三部分進(jìn)行研究,包括用戶屬性和興趣特征,內(nèi)容屬性特征,和社交關(guān)系上下文特征,我們目前是通過模型自動(dòng)學(xué)習(xí)不同目標(biāo)的預(yù)估任務(wù)下應(yīng)該如何配置特征之間的交互關(guān)系的,這一部分的擴(kuò)展性是可以很強(qiáng)的,比如可以加入人工的先驗(yàn)知識(shí),或者定制化的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行特征組選擇。

多目標(biāo)在線融合方式:

多目標(biāo)預(yù)估值的在線融合方式非常重要,是決定看一看產(chǎn)品的綜合用戶體驗(yàn)的最后一環(huán),我們通過離線、在線兩部實(shí)驗(yàn)獲得最終的權(quán)重融合參數(shù)。

在離線階段,我們通過grid search設(shè)置多組融合權(quán)重方案,觀察每種融合參數(shù)對(duì)各目標(biāo)的離線排序AUC得分,選擇AUC trade off比較平衡的一些權(quán)重組合作為候選集,上線進(jìn)行ABTEST。

在線階段,通過觀察各個(gè)實(shí)驗(yàn)的留存率、產(chǎn)品使用時(shí)長、用戶行為互動(dòng)率、以及內(nèi)容分發(fā)量和多樣性等,選擇和產(chǎn)品價(jià)值導(dǎo)向最一致的權(quán)重組合作為最終的融合方案。

六、重排與多樣性

重排主要負(fù)責(zé)多路異構(gòu)推薦結(jié)果混合排序,最終決定推薦給用戶的10條結(jié)果。除了負(fù)責(zé)策略混排,重排還負(fù)責(zé)整體的多樣性控制、規(guī)則重排、人工干預(yù)等。重排這里是業(yè)務(wù)的最終出口,我們的最終目標(biāo)是提升分發(fā)量,即pv+vv。

重排有幾個(gè)難點(diǎn):

  1. 數(shù)據(jù)是異構(gòu)的,包含多種業(yè)務(wù),不同業(yè)務(wù)數(shù)據(jù)包含不同的特征,并且點(diǎn)擊率差異也很大。
  2. 不同內(nèi)容的優(yōu)化目標(biāo)不盡相同,很難做統(tǒng)一的內(nèi)容排序。
  3. 不同內(nèi)容的點(diǎn)擊率不同,比如視頻點(diǎn)擊率超過20%,會(huì)擠壓低點(diǎn)擊率的業(yè)務(wù)。

我們嘗試了通過pctr來統(tǒng)一排序:

看一看中,視頻點(diǎn)擊率最高,新聞最低。當(dāng)我們提高視頻的展現(xiàn)占比,整體點(diǎn)擊數(shù)并不是持續(xù)升高,而是會(huì)有一個(gè)拐點(diǎn)。同樣,不斷降低新聞的占比,點(diǎn)擊數(shù)也會(huì)迎來拐點(diǎn)。

因此,提高高點(diǎn)擊率業(yè)務(wù),降低低點(diǎn)擊率業(yè)務(wù),整體的內(nèi)容點(diǎn)擊率會(huì)提高,但不會(huì)提高整體的點(diǎn)擊數(shù)。

基于上面的考慮,我們選擇使用強(qiáng)化學(xué)習(xí)來進(jìn)行多業(yè)務(wù)混排。用戶在推薦場(chǎng)景瀏覽可以建模成 Markov Progress,Agent是我們的推薦系統(tǒng),Action是我們推薦了什么內(nèi)容,Reward是用戶的反饋信息,包括點(diǎn)擊、負(fù)反饋、退出等,每次我們的推薦系統(tǒng)Agent采取某個(gè)Action,給用戶推薦了內(nèi)容,用戶給到我們相應(yīng)的反饋,通過最優(yōu)化總點(diǎn)擊數(shù)來獲得最佳效果。

未來有不確定因素,所以要對(duì)未來的收益做衰減:

DQN梯度下降求解MSE的LOSS:

初版DQN上線后,對(duì)比baseline規(guī)則,總點(diǎn)擊數(shù)有大幅提高。為了利用Session內(nèi)短期信息,我們將DQN內(nèi)的state用RNN的hidden來描述,結(jié)構(gòu)如下:

采用RNN結(jié)構(gòu)的強(qiáng)化學(xué)習(xí)模型上線后效果得到了進(jìn)一步提升。基于RL混排,我們?cè)趓eward的設(shè)計(jì)上也進(jìn)行了多輪迭代,如加入時(shí)長、負(fù)反饋、多樣性。下面重點(diǎn)介紹一下多樣性。

多樣性在推薦系統(tǒng)中是一個(gè)重要的優(yōu)化目標(biāo),但是相比于ctr等指標(biāo),學(xué)術(shù)界、工業(yè)界都并沒有一個(gè)明確指標(biāo)來指導(dǎo)多樣性優(yōu)化。為了更好的理解、分析和優(yōu)化多樣性策略,我們?cè)O(shè)計(jì)了10+中多樣性相關(guān)指標(biāo),如展示/點(diǎn)擊類目數(shù)、展示類目熵,用戶主興趣覆蓋率,符合用戶主興趣文章比例等。

第一版的多樣性策略采用啟發(fā)式的方法,限制相同類目/Topic/Tag等個(gè)數(shù)上限,結(jié)合離線平臺(tái)/abtest數(shù)據(jù)調(diào)整參數(shù)。這里最大的問題是個(gè)性化策略是全局的,沒有個(gè)性化特性,每個(gè)人對(duì)重復(fù)度的耐受度不一樣。因此,我們引入了submodular方法。

通過Submodular的邊際效應(yīng)遞減特性,對(duì)重復(fù)度高的類目、關(guān)鍵詞進(jìn)行打壓,同時(shí)引入pctr,體現(xiàn)了一定的個(gè)性化,上線取得了不錯(cuò)的效果,在損失較少的ctr的情況下大幅提升了多樣性。

進(jìn)一步地分析,Submodular本質(zhì)上是基于先驗(yàn)知識(shí)的規(guī)則,用戶的及時(shí)反饋信息使用的不夠高效,上述公式中仍然存在大量的超參數(shù)需要手工調(diào)節(jié),迭代效率緩慢?;谏鲜隹紤]和之前在強(qiáng)化學(xué)習(xí)混排中取得的成果,我們想到了使用強(qiáng)化學(xué)習(xí)來優(yōu)化多樣性,將多樣性作為reward加入進(jìn)來,最后上線取得了ctr和多樣性的雙贏。

七、工程挑戰(zhàn)

看一看排序工作在迭代中遇到了好幾個(gè)比較大的工程挑戰(zhàn)。

首先是算法平臺(tái)。排序最初上線采用spark mllib,快速實(shí)現(xiàn)了lr模型的上線。但是很快就遇到了算力瓶頸,我們先后嘗試了一些開源的算法平臺(tái),都不能滿足業(yè)務(wù)的需求,最后選擇基于ps-lite自研了大規(guī)模分布式深度學(xué)習(xí)平臺(tái)PanguX。

PanguX平臺(tái)支持百億級(jí)稀疏特征實(shí)時(shí)訓(xùn)練,支持低頻特征過濾、特征動(dòng)態(tài)過期,支持LR、W&D、DeepFM、RNN、MTL等常用算法,已經(jīng)穩(wěn)定支持看一看、搜一搜在線業(yè)務(wù)。

其次是在線serving瓶頸,這里包括內(nèi)存瓶頸和性能瓶頸。

內(nèi)存瓶頸方面,當(dāng)模型特征膨脹到百億級(jí)別,每個(gè)特征對(duì)應(yīng)一個(gè)n維embedding,單機(jī)無法load一個(gè)model,需要對(duì)model進(jìn)行拆分,這里就涉及到比較復(fù)雜的工程細(xì)節(jié)問題,如模型的一致性、版本控制、網(wǎng)絡(luò)帶寬等問題。

我們借助微信技術(shù)架構(gòu)部在kv方面的豐富經(jīng)驗(yàn),實(shí)現(xiàn)了一個(gè)高性能的特征FeatureKV,用于統(tǒng)一存儲(chǔ)模型,解決了model的在線存儲(chǔ)問題,單機(jī)可支持超過1kw key/s,同時(shí)運(yùn)營系統(tǒng)支持版本控制、快速回退等功能。模型過渡到深度模型后,預(yù)測(cè)的耗時(shí)大大增加,第一版采用tf-serving的模型,雖然取得了不錯(cuò)的效果,但是耗時(shí)接近1秒,完全沒辦法全量。

最后,借助于數(shù)據(jù)平臺(tái)團(tuán)隊(duì)的DeepX超高性能深度算法組件和sage向量運(yùn)算庫,將耗時(shí)壓縮到極致,最終達(dá)到上線要求。

最后是在線特征抽取的性能和模型可擴(kuò)展性問題。

通過perf發(fā)現(xiàn),特征抽取模塊中字符串拼接和hash計(jì)算消耗了大量的cpu時(shí)間,導(dǎo)致ctr預(yù)測(cè)吞吐量一直上不去。痛定思痛,我們對(duì)特征抽取模塊進(jìn)行了完全的重構(gòu),完完全全消除字符串copy和拼接,優(yōu)化hash算法,性能得到了成倍的提升。

可擴(kuò)展性方面,因?yàn)闃I(yè)務(wù)發(fā)展太快,前期每做一個(gè)新業(yè)務(wù),都是copy代碼,先上線后優(yōu)化。后面業(yè)務(wù)增多,排序目標(biāo)增多,模型增多,問題就暴露出來。尤其是新算法在一個(gè)業(yè)務(wù)迭代取得效果想推廣到另一個(gè)業(yè)務(wù)時(shí),需要copy大量代碼,往往需要滯后很久。

因此,我們果斷對(duì)ctrsvr進(jìn)行重構(gòu),將在線預(yù)測(cè)打分邏輯抽象成特征抽取、打分算法、模型存儲(chǔ)等幾個(gè)基礎(chǔ)組件,采用配置化的方式進(jìn)行組裝,大大提升了迭代效率。

八、后記

看一看上線以來,排序側(cè)逐步從線性模型過渡到深度模型,并引入了強(qiáng)化學(xué)習(xí)、多目標(biāo)學(xué)習(xí)等方法,對(duì)ctr、時(shí)長、多樣性等指標(biāo)均帶來大幅提升。

在逐步迭代的過程中,一個(gè)比較大的感悟是,模型算法要發(fā)揮最大效果,一定要在算法工程架構(gòu)上精耕細(xì)作,充分挖掘性能,提升算力,才能將算法的緯度和深度優(yōu)勢(shì)發(fā)揮到極致。

 

作者:xiafengxia ;微信公眾號(hào):微信AI

來源:https://mp.weixin.qq.com/s/OGBQvSNce6PGbpTH9yBD3A

本文由 @ 微信AI 授權(quán)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 看了一半

    來自河南 回復(fù)