日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

知乎推荐页 Ranking 构建历程和经验分享

發(fā)布時(shí)間:2025/4/5 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 知乎推荐页 Ranking 构建历程和经验分享 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

https://www.infoq.cn/article/g95hu67a4WheikGu*w9K

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

  • 知乎推薦頁(yè)場(chǎng)景和 Ranking 歷程介紹;

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

  • Ranking 面臨的問(wèn)題和未來(lái)研究方向。

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

一、推薦頁(yè)請(qǐng)求流程

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

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

  • 基于內(nèi)容:協(xié)同過(guò)濾的方式。

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

  • 基于規(guī)則:時(shí)間順序,線性加權(quán);

  • 基于模型:GDBT,DNN。

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

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

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

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

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

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

  • 按照時(shí)間排序
    • 按照用戶的行為,比如關(guān)注,動(dòng)態(tài)等,并根據(jù)時(shí)間進(jìn)行排序;

    • 它的問(wèn)題是沒(méi)有考慮到親密度或者感興趣的程度。

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

  • Feed Ranking
  • 采用 GDBT 模型。

  • Global Ranking
  • 深度學(xué)習(xí)模型,DNN 等。

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

    • 深度學(xué)習(xí)大趨勢(shì);

    • 能處理更高維度特征,如幾十萬(wàn)話題量級(jí),GBDT 無(wú)法完成訓(xùn)練;

    • 非線性模型,不必做大量的特征組合;

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

    二、特征介紹

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

    1、用戶畫像特征

    • 用戶屬性特征: 性別等;

    • 統(tǒng)計(jì)特征:用戶點(diǎn)贊數(shù)等。

    2、 內(nèi)容畫像

    • 固有特征:文章長(zhǎng)度,關(guān)鍵詞等;

    • 統(tǒng)計(jì)特征:歷史點(diǎn)贊數(shù)等。

    3、交叉特征

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

    特征的形式主要有以下幾個(gè)方面:

    • 數(shù)值特征:文章長(zhǎng)度,點(diǎn)贊數(shù);

    • Onehot:比如,內(nèi)容類型;

    • Multihot:內(nèi)容多個(gè)話題 id;

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

    • Multihot with value :用戶對(duì)各話題的感興趣程度。

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

    設(shè)計(jì)原則:

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

    • 特征原始值全:比如加歷史 CTR 特征的時(shí)候,可以把 pv 和 click 都帶上;

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

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

    新特征方向:

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

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

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

    3.1 內(nèi)容 Embedding

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

    • 文本角度:tfidf,關(guān)鍵詞進(jìn)行 word2vec 等;

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

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

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

    • 樣本:85 億;

    • 模型:skip-gram;

    • loss:nce-loss。

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

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

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

    四、CTR 模型

    選擇模型的原因:

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

    • 停留時(shí)長(zhǎng):適合用回歸問(wèn)題來(lái)解決,最后會(huì)偏向于長(zhǎng)文章;

    • 點(diǎn)擊率:二分類問(wèn)題,知乎的問(wèn)答一般不長(zhǎng),更加合適。

    2、分類問(wèn)題相比回歸問(wèn)題,目標(biāo)類別少,相對(duì)準(zhǔn)確率高;

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

    4、分類問(wèn)題最后會(huì)輸出一個(gè)概率分,方便與多目標(biāo)結(jié)合。

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

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

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

    • 經(jīng)過(guò)特征映射后分別通過(guò)全連接與兩個(gè)獨(dú)立的隱含層連接;

    • 兩個(gè)獨(dú)立的隱含層 cancat 后再經(jīng)過(guò)兩個(gè)全連接層;

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

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

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

    • 將用戶和內(nèi)容的特征,分別按照內(nèi)容的 field 分為不同的 block;

    • 每個(gè) block 先經(jīng)過(guò)全連接到獨(dú)立的隱含層;

    • 將上面的隱含層 concat 再經(jīng)過(guò)后面的 DNN 模型。

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

    4.3 Deep FM

    • 增加了一階和 FM 模塊,FM 通過(guò) block 之間的內(nèi)積實(shí)現(xiàn);

    • AUC 提升 0.2%。

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

    4.4 Last View + DIN

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

    • AUC 提升約 0.2%。

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

    4.5 Last Display + GRU

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

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

    • AUC 提升約 0.4%。

    4.6 多目標(biāo)

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

    后來(lái)考慮設(shè)計(jì)一個(gè)多目標(biāo)模型,一個(gè)是基于點(diǎn)擊率的模型,一個(gè)是基于收藏率的模型,基于點(diǎn)贊率,基于評(píng)論率等等,一共設(shè)計(jì) 8 個(gè)目標(biāo)。

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

    主要分為以下步驟:

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

    o Loss 可以是幾個(gè) task 的 loss 做簡(jiǎn)單線性加權(quán);

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

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

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

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

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

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

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

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

    4、做特征歸一化操作,發(fā)現(xiàn)有特別大的值,比如幾萬(wàn)或者幾十萬(wàn),要先取 log ,不然會(huì)導(dǎo)致這個(gè)特征大部分值都趨向 0,相當(dāng)于征失效;

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

    6、對(duì)于線上的每次請(qǐng)求,用戶特征都是一樣的,可以只計(jì)算一遍用戶特征相關(guān)的 block,避免冗余運(yùn)算;

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

    8、線上模型要能自動(dòng)更新,過(guò)老的模型效果下降嚴(yán)重。

    六、面臨問(wèn)題

    1、推薦頁(yè)與搜索頁(yè)的特性不同

    • 搜索帶著 query 來(lái)的,結(jié)果與之相關(guān)性越高越好,不用太關(guān)心結(jié)果的多樣性;

    • 推薦頁(yè)用戶沒(méi)有明確的目的,但是有興趣偏好和對(duì)結(jié)果的多樣性需求,推薦既要準(zhǔn)確又要多樣化。

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

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

    七、未來(lái)方向

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

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

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

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

    • 能及時(shí)捕捉用戶的反饋,從而避免對(duì)同一話題產(chǎn)生審美疲勞;

    • 推薦整屏幕內(nèi)容,避免 pointwise 方式下內(nèi)容較為集中問(wèn)題。

    3、缺點(diǎn)

    • 模型結(jié)構(gòu)復(fù)雜,模型參數(shù)訓(xùn)練較困難。

    轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/10576464.html

    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的知乎推荐页 Ranking 构建历程和经验分享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。