【知乎】推薦頁Ranking經(jīng)驗(yàn)分享

原文標(biāo)題:《知乎推薦頁Ranking經(jīng)驗(yàn)分享》

原文作者:DataFun —— 單厚智

原文鏈接:https://mp.weixin.qq.com/s/GUMz-HfbjQvzdGVQkKz4zA

【聲明】僅供技術(shù)學(xué)習(xí)和科學(xué)研究使用画侣,如有侵權(quán)請聯(lián)系刪除


本次分享主題主要從以下是三個方面展開:

o?知乎推薦頁場景和Ranking歷程介紹闺魏;

o?深度學(xué)習(xí)在Ranking中的嘗試和應(yīng)用現(xiàn)狀段誊;

o?Ranking面臨的問題和未來研究方向。

首先大家看一下知乎APP的推薦頁的推薦結(jié)果排抬,由于單厚智老師對機(jī)器學(xué)習(xí)比較感興趣懂从,所以推薦內(nèi)容大部分和機(jī)器學(xué)習(xí)相關(guān)。

Page 1

一蹲蒲、推薦頁請求流程

Page 2

1番甩、?召回:負(fù)責(zé)將用戶可能感興趣的內(nèi)容提取出來,重點(diǎn)是全届搁。

o?基于話題:獲取用戶的關(guān)注數(shù)據(jù)缘薛,用戶行為挖掘;

o?基于內(nèi)容:協(xié)同過濾的方式卡睦。

2宴胧、排序:負(fù)責(zé)對召回的內(nèi)容進(jìn)行打分,可以理解為感興趣程度表锻,重點(diǎn)是準(zhǔn)恕齐。

o?基于規(guī)則:時間順序,線性加權(quán)瞬逊;

o?基于模型:GDBT显歧,DNN。

3确镊、重排序:出于產(chǎn)品或業(yè)務(wù)的考慮士骤,對排序的內(nèi)容進(jìn)行重排,最終展示給用戶骚腥。

o?提權(quán):比如給視頻進(jìn)行一定的提權(quán)敦间;

o?隔離:相似內(nèi)容隔開;

o?強(qiáng)插:高質(zhì)量的新內(nèi)容流通束铭。

以上就是知乎推薦頁的整體架構(gòu)流程廓块,下面針對Ranking模塊做詳細(xì)講解。

首先介紹一下推薦頁Ranking的演進(jìn)歷程,如下圖所示契沫,Ranking的演進(jìn)主要經(jīng)歷了四個階段带猴。

Page 3

1.?按照時間排序

o?按照用戶的行為,比如關(guān)注懈万,動態(tài)等拴清,并根據(jù)時間進(jìn)行排序;

o?它的問題是沒有考慮到親密度或者感興趣的程度会通。

2.?EdgeRank算法

該算法借鑒Facebook的EdgeRank算法口予,根據(jù)用戶親密度進(jìn)行排序。

3.?Feed Ranking

采用GDBT模型涕侈。

4.?Global Ranking

深度學(xué)習(xí)模型沪停,DNN等。

模型的選擇主要有以下方面的考量:

o?深度學(xué)習(xí)大趨勢裳涛;

o?能處理更高維度特征木张,如幾十萬話題量級,GBDT 無法完成訓(xùn)練端三;

o?非線性模型舷礼,不必做大量的特征組合;

o?使用GPU + HDFS結(jié)構(gòu)郊闯,可以訓(xùn)練更多的樣本妻献。

二、特征介紹

我們的特征按照內(nèi)容進(jìn)行劃团赁,可分為如下分三類:

1旋奢、用戶畫像特征

o?用戶屬性特征:性別等;

o?統(tǒng)計特征:用戶點(diǎn)贊數(shù)等然痊。

2至朗、 內(nèi)容畫像

o?固有特征:文章長度,關(guān)鍵詞等剧浸;

o?統(tǒng)計特征:歷史點(diǎn)贊數(shù)等锹引。

3、交叉特征

o?用戶與內(nèi)容的交叉特征:比如用用戶感興趣的話題和當(dāng)前待推薦內(nèi)容的話題交叉唆香。

特征的形式主要有以下幾個方面:

o?數(shù)值特征:文章長度嫌变,點(diǎn)贊數(shù);

o?Onehot:比如躬它,內(nèi)容類型腾啥;

o?Multihot:內(nèi)容多個話題 id;

o?Onehot with value:用戶對單類型內(nèi)容的感興趣程度;

o?Multihot with value :用戶對各話題的感興趣程度倘待。

三疮跑、特征設(shè)計

設(shè)計原則:

o?特征盡量全:從現(xiàn)有的數(shù)據(jù)中提取盡可能多的特征;

o?特征原始值全:比如加歷史CTR 特征的時候凸舵,可以把 pv 和 click 都帶上祖娘;

o?覆蓋率大:去掉一些覆蓋率很低的特征,這些特征影響影響范圍小啊奄,大部分是缺失值渐苏;

o?線上線下一致:覆蓋率和取值分布盡可能接近。

新特征方向:

o?顯式交叉特征:DNN 能學(xué)習(xí)特征的非線性能力菇夸,增加交叉特征可以降低模型搜索的空間琼富,在訓(xùn)練數(shù)據(jù)一定的情況下可以提升效果,如用戶的話題興趣和當(dāng)前話題的均值和最大值庄新,效果提升明顯鞠眉;

o?出于業(yè)務(wù)考慮:需要對業(yè)務(wù)有一定的理解,把自己當(dāng)做用戶摄咆,考慮什么情況下點(diǎn)擊率會大凡蚜,什么樣的內(nèi)容更容易被用戶點(diǎn),比如視頻在 wifi 下更容易被點(diǎn)吭从,視頻點(diǎn)擊率高的人更喜歡視頻朝蜘;

o?數(shù)據(jù)挖掘特征:如內(nèi)容 Embedding 特征。

3.1 內(nèi)容Embedding

o?Embedding 目的:把內(nèi)容映射到低緯空間涩金,相似內(nèi)容距離較近谱醇,可以當(dāng)做內(nèi)容特征;

o?文本角度:tfidf步做,關(guān)鍵詞進(jìn)行word2vec 等副渴;

o?行為角度:考慮用戶在知乎的行為,搜索內(nèi)容相關(guān)性較好全度,依據(jù)搜索點(diǎn)擊序列設(shè)計 Embedding煮剧。

實(shí)現(xiàn)細(xì)節(jié)

o?數(shù)據(jù):將搜索行為進(jìn)行session切分,組織成類似于 sentence 序列将鸵;

o?樣本:85億勉盅;

o?模型:skip-gram;

o?loss:nce-loss顶掉。

Page 4

該方法借鑒word2vec的原理,通過“詞”去預(yù)測“上下文”草娜,這里面的“詞”就是itemId,“上下文”就是指在點(diǎn)擊該Item事件前后痒筒,固定窗口下其他Item的Id信息宰闰。

之所以通過搜索行為構(gòu)建序列茬贵,是因?yàn)樗阉魇菍儆凇皬?qiáng)目的”的,并且搜索結(jié)果內(nèi)容相似移袍。

下圖是模型的訓(xùn)練結(jié)果解藻,從結(jié)果可以看出,這些內(nèi)容大體相似咐容。

Page 5

四舆逃、CTR模型

選擇模型的原因:

1蚂维、推薦頁排序目標(biāo)是把用戶推薦感興趣的內(nèi)容排在前面戳粒,可有下面兩個學(xué)習(xí)目標(biāo):

o?停留時長:適合用回歸問題來解決,最后會偏向于長文章虫啥;

o?點(diǎn)擊率:二分類問題蔚约,知乎的問答一般不長,更加合適涂籽。

2苹祟、分類問題相比回歸問題,目標(biāo)類別少评雌,相對準(zhǔn)確率高树枫;

3、分類問題場景業(yè)界應(yīng)用較廣景东,可交流空間大砂轻;

4、分類問題最后會輸出一個概率分斤吐,方便與多目標(biāo)結(jié)合搔涝。

損失函數(shù)采用交叉熵:

Page 6

4.1 最初DNN結(jié)構(gòu)

Page 7

o?將輸入特征分為用戶和內(nèi)容兩塊;

o?經(jīng)過特征映射后分別通過全連接與兩個獨(dú)立的隱含層連接和措;

o?兩個獨(dú)立的隱含層 cancat 后再經(jīng)過兩個全連接層庄呈;

o?最后輸出 sigmoid 與交叉熵?fù)p失作為 loss。

結(jié)果:這一版模型的AUC為0.7618

4.2 優(yōu)化DNN結(jié)構(gòu)

Page 8

o?將用戶和內(nèi)容的特征派阱,分別按照內(nèi)容的 field 分為不同的 block诬留;

o?每個 block 先經(jīng)過全連接到獨(dú)立的隱含層;

o?將上面的隱含層 concat 再經(jīng)過后面的 DNN 模型贫母。

結(jié)果:AUC:0.7678文兑,提升0.6%

4.3 Deep FM

Page 9

o?增加了一階和 FM 模塊,F(xiàn)M 通過 block 之間的內(nèi)積實(shí)現(xiàn)颁独;

o?AUC 提升 0.2%彩届。

該DeepFM算法與華為設(shè)計的DeepFM不同,改模型將FM層的結(jié)果作為DNN的輸入誓酒。

4.4 Last View + DIN

Page 10

o?Last view topic 與當(dāng)前內(nèi)容的幾個 topic 計算 Attention Score樟蠕,再按權(quán)重進(jìn)行 sum pooling贮聂;

o?AUC 提升約 0.2%。

我們基于的考慮是用戶過去點(diǎn)擊的內(nèi)容肯定對他2將要點(diǎn)擊的內(nèi)容產(chǎn)生動態(tài)影響寨辩,這個模型參考了阿里的DIN模型吓懈,它會把用戶看過的東西Embedding,然后根據(jù)Attention Score再乘起來靡狞,我們的做法有所不同耻警,我們是基于Topic,是過去用戶看過那些Topic下的內(nèi)容進(jìn)行劃分甸怕。

4.5 Last Display + GRU

Page 11

根據(jù)4.4的思想甘穿,過去點(diǎn)擊的行為對現(xiàn)在能夠產(chǎn)生影響,那么同理梢杭,過去展示的內(nèi)容中沒有點(diǎn)擊的內(nèi)容對當(dāng)下的點(diǎn)擊行為同樣會產(chǎn)生影響温兼,所以這里面增加了Last Display(包括點(diǎn)擊和沒點(diǎn)擊的所有數(shù)據(jù))。

o?Last Display 經(jīng)過 Embedding 后與是否點(diǎn)擊結(jié)合武契,再進(jìn)入 GRU 模塊募判,最后狀態(tài)當(dāng)做 DNN 輸入;

o?AUC 提升約 0.4%咒唆。

4.6 多目標(biāo)

Page 12

之前所有的模型都是基于CTR為導(dǎo)向來進(jìn)行設(shè)計的届垫,但是這樣用戶的負(fù)反饋可能會比較多一些,因?yàn)橐恍╅L尾的內(nèi)容全释,或者大眾化的內(nèi)容會比較多装处,影響用戶的體驗(yàn)恨溜。

后來考慮設(shè)計一個多目標(biāo)模型,一個是基于點(diǎn)擊率的模型判族,一個是基于收藏率的模型,基于點(diǎn)贊率项戴,基于評論率等等形帮,一共設(shè)計8個目標(biāo)周叮。

從性能方面的考慮辩撑,我們將底層權(quán)重設(shè)置成共享的,最后一層會根據(jù)不同的目標(biāo)進(jìn)行權(quán)重的訓(xùn)練仿耽。

主要分為以下步驟:

o?每個 task 共享前面的幾層權(quán)重合冀,可以節(jié)省訓(xùn)練和預(yù)測的計算量;

o?Loss 可以是幾個 task 的 loss 做簡單線性加權(quán)项贺;

o?上線仍然要確定各個 ctr 的加權(quán)值峭判,經(jīng)驗(yàn)比較重要棕叫;

o?上線后線上表現(xiàn):點(diǎn)擊率基本不變,而其他的幾個指標(biāo)俺泣,比如點(diǎn)贊,收藏大幅提升横漏。

4.7 最終模型結(jié)構(gòu)

Page 13

綜合以上模型的優(yōu)點(diǎn)贝润,最終設(shè)計出如上圖所示的模型铝宵。

五、經(jīng)驗(yàn)分享

1尊蚁、對于隨時間變化的統(tǒng)計特征侣夷,比如用戶和內(nèi)容畫像的統(tǒng)計值,線上 service 應(yīng)當(dāng)紀(jì)錄請求時的值百拓,生成訓(xùn)練樣本時直接從紀(jì)錄的日志里獲取,避免特征穿越問題决帖;

2蓖捶、如果發(fā)現(xiàn)線下效果好,比如 AUC 和 NDCG 提升明顯刻像,但上線效果不顯著并闲,很可能是特征不一致導(dǎo)致的,可重點(diǎn)排查帝火;

3洒宝、線上線下最好使用同一套特征抽取框架萌京,只需使用的相同特征配置便可保證一致性知残,我們 Global Ranking 使用同一套 proto結(jié)構(gòu)和特征抽取模塊實(shí)現(xiàn);

4求妹、做特征歸一化操作,發(fā)現(xiàn)有特別大的值父能,比如幾萬或者幾十萬净神,要先取 log ,不然會導(dǎo)致這個特征大部分值都趨向0爱榕,相當(dāng)于征失效坡慌;

5、 輸入特征要做非法檢查洪橘,防止出現(xiàn) inf熄求,nan,而導(dǎo)致模型訓(xùn)練出現(xiàn)異常的參數(shù)抡四;

6、對于線上的每次請求淑履,用戶特征都是一樣的藻雪,可以只計算一遍用戶特征相關(guān)的 block,避免冗余運(yùn)算指煎;

7、訓(xùn)練數(shù)據(jù)量要盡可能大至壤,可以使用 FlatBuffer 結(jié)構(gòu)把訓(xùn)練數(shù)據(jù)存放在 HDFS 上像街,訓(xùn)練時直接從 HDFS 讀取,邊讀取邊訓(xùn)練镰绎;

8畴栖、線上模型要能自動更新,過老的模型效果下降嚴(yán)重吗讶。

六、面臨問題

1扛门、推薦頁與搜索頁的特性不同

o?搜索帶著 query 來的纵寝,結(jié)果與之相關(guān)性越高越好星立,不用太關(guān)心結(jié)果的多樣性;

o?推薦頁用戶沒有明確的目的室奏,但是有興趣偏好和對結(jié)果的多樣性需求劲装,推薦既要準(zhǔn)確又要多樣化。

2绒怨、CTR 預(yù)估模型是 pointwise 模型谦疾,沒有考慮單個內(nèi)容與其他內(nèi)容同時出現(xiàn)的影響。

3六剥、用戶對感興趣的東西會出現(xiàn)審美疲勞,要及時抓住這種特點(diǎn)疗疟,比如一個算法工程師看完幾個機(jī)器學(xué)習(xí)文章后就不想再看了策彤,這時候要能推薦一些其他話題的內(nèi)容。

七锅锨、未來方向

1必搞、強(qiáng)化學(xué)習(xí)

o?Actor:根據(jù)用戶過去的瀏覽和點(diǎn)擊行為生成推薦頁整屏結(jié)果;

o?Critic:接收到點(diǎn)擊或者其他正向行為作為 reward恕洲,同時訓(xùn)練 Critic 和 Actor 網(wǎng)絡(luò)參數(shù)。

2葛家、優(yōu)點(diǎn)

o?能及時捕捉用戶的反饋泌类,從而避免對同一話題產(chǎn)生審美疲勞;

o?推薦整屏幕內(nèi)容弹砚,避免 pointwise 方式下內(nèi)容較為集中問題枢希。

3、缺點(diǎn)

o?模型結(jié)構(gòu)復(fù)雜茅诱,模型參數(shù)訓(xùn)練較困難搬卒。

作者介紹:

單厚智,知乎推薦算法高級工程師尔当,排序算法負(fù)責(zé)人,碩士畢業(yè)于北京郵電大學(xué)锐帜,曾在搜狗從事廣告點(diǎn)擊率預(yù)估工作畜号,引入GBDT+LR模型;加入知乎后蛮拔,主要負(fù)責(zé)推薦頁 ranking 工作痹升,首次引入深度學(xué)習(xí)模型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肛跌,一起剝皮案震驚了整個濱河市察郁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稳捆,老刑警劉巖麦轰,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件原朝,死亡現(xiàn)場離奇詭異,居然都是意外死亡喳坠,警方通過查閱死者的電腦和手機(jī)茂蚓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門聋涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脊凰,你說我怎么就攤上這事∏惺。” “怎么了帕胆?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芙盘。 經(jīng)常有香客問我脸秽,道長,這世上最難降的妖魔是什么驮樊? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任剥扣,我火速辦了婚禮钠怯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晦炊。我一直安慰自己,他們只是感情好贤姆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布霞捡。 她就那樣靜靜地躺著薄疚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砰碴。 梳的紋絲不亂的頭發(fā)上板丽,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機(jī)與錄音猖辫,去河邊找鬼。 笑死住册,一個胖子當(dāng)著我的面吹牛荧飞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叹阔,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼耳幢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了启上?” 一聲冷哼從身側(cè)響起店印,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤按摘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炫贤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年励幼,在試婚紗的時候發(fā)現(xiàn)自己被綠了口柳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片有滑。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖望艺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情艇劫,我是刑警寧澤惩激,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站顷蟀,受9級特大地震影響骡技,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜囤萤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一是趴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧做盅,春花似錦窘哈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瓜晤,卻和暖如春腹纳,著一層夾襖步出監(jiān)牢的瞬間驱犹,已是汗流浹背足画。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工淹辞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人象缀。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓攻冷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親等曼。 傳聞我的和親對象是個殘疾皇子禁谦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348