文:yangyixie
召回模塊面對(duì)幾百上千萬的推薦池物料規(guī)模,候選集十分龐大。由于后續(xù)有排序模塊作為保障,故不需要十分準(zhǔn)確,但必須保證不要遺漏和低延遲。目前主要通過多路召回來實(shí)現(xiàn),一方面各路可以并行計(jì)算,另一方面取長補(bǔ)短。召回通路主要有非個(gè)性化和個(gè)性化兩大類。
1 推薦算法整體架構(gòu)
1.1 推薦算法意義
隨著互聯(lián)網(wǎng)近十年來的大力發(fā)展,用戶規(guī)模和內(nèi)容規(guī)模均呈現(xiàn)迅猛發(fā)展。用戶側(cè)日活過億早已不是什么新鮮事,內(nèi)容側(cè)由于 UGC 生產(chǎn)方式的普及,擁有幾十億內(nèi)容庫的平臺(tái)也屢見不鮮。如何讓海量用戶在海量內(nèi)容中找到自己喜歡的,以及如何讓海量內(nèi)容被海量用戶精準(zhǔn)消費(fèi),一直以來都是每個(gè)公司十分核心的問題。在這個(gè)背景下,搜索系統(tǒng)和推薦系統(tǒng)應(yīng)運(yùn)而生。搜索系統(tǒng)主要解決用戶尋找感興趣的內(nèi)容,偏主動(dòng)型消費(fèi)。推薦系統(tǒng)則主要解決內(nèi)容推送給合適用戶,偏被動(dòng)型消費(fèi)。二者一邊牽引用戶,一邊牽引內(nèi)容,是實(shí)現(xiàn)用戶與內(nèi)容匹配的中間媒介。推薦系統(tǒng)在每個(gè)公司都是十分核心的地位,其意義主要有
- 用戶側(cè),為用戶及時(shí)精準(zhǔn)的推送感興趣的個(gè)性化內(nèi)容,并不斷發(fā)現(xiàn)和培養(yǎng)用戶的潛在興趣,滿足用戶消費(fèi)需求,提升用戶體驗(yàn),從而提升用戶活躍度和留存。
- 內(nèi)容側(cè),作為流量分發(fā)平臺(tái),對(duì)生產(chǎn)者(如 UGC 作者、電商賣家等)有正向反饋刺激能力,通過扶持有潛力的中小生產(chǎn)者,可以促進(jìn)整體內(nèi)容生態(tài)的繁榮發(fā)展
- 平臺(tái)側(cè),推薦系統(tǒng)對(duì)內(nèi)容分發(fā)的流量和效率都至關(guān)重要。通過提升用戶體驗(yàn),可提升用戶留存,從而提升日活。通過提升用戶轉(zhuǎn)化和流量效率,可提升電商平臺(tái)訂單量和內(nèi)容平臺(tái)用戶人均時(shí)長等核心指標(biāo)。通過提升用戶消費(fèi)深度,可提升平臺(tái)整體流量,為商業(yè)化目標(biāo)(如廣告)打下基礎(chǔ),提升 ARPU(每用戶平均收入)等核心指標(biāo)。推薦系統(tǒng)與公司很多核心指標(biāo)息息相關(guān),有極大的牽引和推動(dòng)作用,意義十分重要。
1.2 推薦算法基本模塊
當(dāng)前基于算力和存儲(chǔ)的考慮,還沒辦法實(shí)現(xiàn)整體端到端的推薦。一般來說推薦系統(tǒng)分為以下幾個(gè)主要模塊:
- 推薦池:一般會(huì)基于一些規(guī)則,從整體物料庫(可能會(huì)有幾十億甚至百億規(guī)模)中選擇一些 item 進(jìn)入推薦池,再通過汰換規(guī)則定期進(jìn)行更新。比如電商平臺(tái)可以基于近 30 天成交量、商品在所屬類目價(jià)格檔位等構(gòu)建推薦池,短視頻平臺(tái)可以基于發(fā)布時(shí)間、近 7 天播放量等構(gòu)建推薦池。推薦池一般定期離線構(gòu)建好就可以了。
- 召回:從推薦池中選取幾千上萬的 item,送給后續(xù)的排序模塊。由于召回面對(duì)的候選集十分大,且一般需要在線輸出,故召回模塊必須輕量快速低延遲。由于后續(xù)還有排序模塊作為保障,召回不需要十分準(zhǔn)確,但不可遺漏(特別是搜索系統(tǒng)中的召回模塊)。目前基本上采用多路召回解決范式,分為非個(gè)性化召回和個(gè)性化召回。個(gè)性化召回又有 content-based、behavior-based、feature-based 等多種方式。
- 粗排:獲取召回模塊結(jié)果,從中選擇上千 item 送給精排模塊。粗排可以理解為精排前的一輪過濾機(jī)制,減輕精排模塊的壓力。粗排介于召回和精排之間,要同時(shí)兼顧精準(zhǔn)性和低延遲。一般模型也不能過于復(fù)雜
- 精排:獲取粗排模塊的結(jié)果,對(duì)候選集進(jìn)行打分和排序。精排需要在最大時(shí)延允許的情況下,保證打分的精準(zhǔn)性,是整個(gè)系統(tǒng)中至關(guān)重要的一個(gè)模塊,也是最復(fù)雜,研究最多的一個(gè)模塊。精排系統(tǒng)構(gòu)建一般需要涉及樣本、特征、模型三部分。
- 重排:獲取精排的排序結(jié)果,基于運(yùn)營策略、多樣性、context 上下文等,重新進(jìn)行一個(gè)微調(diào)。比如三八節(jié)對(duì)美妝類目商品提權(quán),類目打散、同圖打散、同賣家打散等保證用戶體驗(yàn)措施。重排中規(guī)則比較多,但目前也有不少基于模型來提升重排效果的方案。
- 混排:多個(gè)業(yè)務(wù)線都想在 Feeds 流中獲取曝光,則需要對(duì)它們的結(jié)果進(jìn)行混排。比如推薦流中插入廣告、視頻流中插入圖文和 banner 等??梢曰谝?guī)則策略(如廣告定坑)和強(qiáng)化學(xué)習(xí)來實(shí)現(xiàn)。

推薦系統(tǒng)包含模塊很多,論文也是層出不窮,相對(duì)來說還是十分復(fù)雜的。我們掌握推薦系統(tǒng)算法最重要的還是要梳理清楚整個(gè)算法架構(gòu)和大圖,知道每個(gè)模塊是怎么做的,有哪些局限性和待解決問題,可以通過什么手段優(yōu)化等。并通過算法架構(gòu)大圖將各個(gè)模塊聯(lián)系起來,融會(huì)貫通。從而不至于深陷某個(gè)細(xì)節(jié),不能自拔??凑撐牡臅r(shí)候也應(yīng)該先了解它是為了解決什么問題,之前已經(jīng)有哪些解決方案,再去了解它怎么解決的,以及相比其他方案有什么改進(jìn)和優(yōu)化點(diǎn)。本文主要講解推薦算法架構(gòu)大圖,幫助讀者掌握全局,起到提綱挈領(lǐng)作用。
2 召回

2.1 多路召回
召回模塊面對(duì)幾百上千萬的推薦池物料規(guī)模,候選集十分龐大。由于后續(xù)有排序模塊作為保障,故不需要十分準(zhǔn)確,但必須保證不要遺漏和低延遲。目前主要通過多路召回來實(shí)現(xiàn),一方面各路可以并行計(jì)算,另一方面取長補(bǔ)短。召回通路主要有非個(gè)性化和個(gè)性化兩大類。
2.1.1 非個(gè)性化召回
非個(gè)性化召回與用戶無關(guān),可以離線構(gòu)建好,主要有
- 熱門召回:比如近 7 天播放 vv 比較高的短視頻,可以結(jié)合 CTR 和時(shí)間衰減做平滑,并過濾掉人均時(shí)長偏低的疑似騙點(diǎn)擊 item。還可以選擇用戶點(diǎn)贊多、好評(píng)多的 item 等。這部分主要基于規(guī)則實(shí)現(xiàn)即可。由于熱門 item 容易導(dǎo)致馬太效應(yīng),如果熱門召回占整體通路比例過大,可以考慮做一定打壓。
- 高效率召回:比如高 CTR、高完播率、高人均時(shí)長的短視頻,這類 item 效率較高,但可能上架不久,歷史播放 vv 不多,好評(píng)也需要時(shí)間積累,有可能不在熱門召回內(nèi)。
- 運(yùn)營策略召回:例如運(yùn)營構(gòu)建的各個(gè)類目的榜單、片單,最新上架 item 等。
2.1.2 個(gè)性化召回
個(gè)性化召回與用戶相關(guān),千人千面,根據(jù)構(gòu)建方式主要有
- content-based:基于內(nèi)容,可以通過用戶標(biāo)簽,比如新注冊(cè)時(shí)填寫的喜歡的導(dǎo)演、演員、類目等信息,也可以通過用戶歷史行為作為 trigger,來選取與之內(nèi)容相似的 item。主要有:
- 標(biāo)簽召回:比如演員、導(dǎo)演、item 標(biāo)簽 tag、類目等。
- 知識(shí)圖譜
- 多模態(tài):比如標(biāo)題語義相似的 item,首圖相似的 item,視頻理解相似的 item 等
一般先離線構(gòu)建好倒排索引,在線使用時(shí)通過用戶標(biāo)簽或者歷史行為 item 作為 trigger,取出對(duì)應(yīng)候選即可?;趦?nèi)容來構(gòu)建倒排索引,不需要 item 有豐富的行為,對(duì)冷啟 item 比較友好。
- behavior-based:基于行為,主要是 userCF 和 itemCF 兩種,都是通過行為來找相似,需要 user 或者 item 有比較豐富的行為。userCF 先找到與 user 行為相似的 user,選取他們行為序列中的 item 作為候選。itemCF 則找到每個(gè) item 被行為相似的其他 item,構(gòu)建倒排索引。構(gòu)建方式主要有 CF 和 MF 兩大類,MF 又稱 model-based CF,就不具體展開了。
- feature-based:基于特征,比如 user 的年齡、性別、機(jī)型、地理位置、行為序列等,item 的上架時(shí)間、視頻時(shí)長、歷史統(tǒng)計(jì)信息等。基于特征的召回構(gòu)建方式,信息利用比較充分,效果一般也比較好,對(duì)冷啟也比較友好,是最近幾年來的研究重點(diǎn)。又主要分為
- 線性模型:比如 FM、FFM 等,就不具體展開了
- 深度模型:比如基于 DNN 的 DSSM 雙塔、youtubeDNN(又叫 deepMatch)?;谟脩粜蛄械?Mind?;?GNN 的 graphSAGE 等。
線上使用時(shí),可以有兩種方式:
- 向量檢索:通過生成的 user embedding,采用近鄰搜索,尋找與之相似的 item embedding,從而找到具體 item。檢索方式有哈希分桶、HNSW 等多種方法
- i2i 倒排索引:通過 item embedding,找到與本 item 相似的其他 item,離線構(gòu)建 i2i 索引。線上使用時(shí),通過用戶歷史行為中的 item 作為 trigger,從倒排索引中找到候選集
- social-network:通過好友點(diǎn)贊、關(guān)注關(guān)系、通信錄關(guān)系等,找到社交鏈上的其他人,然后通過他們來召回 item。原則就是好友喜歡的 item,大概率也會(huì)喜歡,物以類聚人以群分嘛。
2.2 召回優(yōu)化
多路召回的各通路主要就是這些,那召回中主要有哪些問題呢,個(gè)人認(rèn)為主要有
- 負(fù)樣本構(gòu)建問題:召回是樣本的藝術(shù),排序是特征的藝術(shù),這句話說的很對(duì)。召回正樣本可以選擇曝光點(diǎn)擊的樣本,但負(fù)樣本怎么選呢?選擇曝光未點(diǎn)擊的樣本嗎,肯定不行
- 曝光未點(diǎn)擊樣本,能從已有召回、粗排、精排模塊中競(jìng)爭(zhēng)出來,說明其 item 質(zhì)量和相關(guān)性都還是不錯(cuò)的,作為召回負(fù)樣本肯定不合適
- SSB 問題,召回面向的全體推薦池,但能得到曝光的 item 只是其中很小的子集,這樣構(gòu)建負(fù)樣本會(huì)導(dǎo)致十分嚴(yán)重的 SSB(sample selection bias)問題,使得模型嚴(yán)重偏離實(shí)際
基于這個(gè)問題,我們可以在推薦池中隨機(jī)選擇 item 作為負(fù)樣本,但又會(huì)有一個(gè)問題,隨機(jī)選擇的 item,相對(duì)于正樣本來說,一般很容易區(qū)分,所以需要有 hard negative sample 來刺激和提升召回模型效果。構(gòu)建 hard negative sample,是目前召回研究中比較多的一個(gè)方向,主要有:
- 借助精排模型:比如選取精排打分處于中間位置的 item,如排名 100~500 左右的 item,它們不是很靠前,可以看做負(fù)樣本,也不是吊車尾,與正樣本有一定相關(guān)性,區(qū)分起來有一定難度。
- 業(yè)務(wù)規(guī)則:比如選擇同類目、同價(jià)格檔位等規(guī)則的 item,可以參考 Airbnb 論文的做法。
- 主動(dòng)學(xué)習(xí):召回結(jié)果進(jìn)行人工審核,bad case 作為負(fù)樣本
一般會(huì)將 hard negative 與 easy negative,按照一定比例,比如 1: 100,同時(shí)作為召回負(fù)樣本。
- SSB 問題:召回面向的是全體推薦池,item 數(shù)量巨大,故需要做一定的負(fù)采樣,有比較大的 SSB 樣本選擇偏差問題。故需要讓選擇出來的負(fù)樣本,盡可能的能代表全體推薦池,從而提升模型泛化能力。主要問題仍然是負(fù)采樣,特別是 hard negative sample 的問題。
- 目標(biāo)不一致問題:目前的召回目標(biāo)仍然是找相似,不論是基于內(nèi)容的,還是基于行為和特征的。但精排和最終實(shí)際業(yè)務(wù)指標(biāo)仍然看的是轉(zhuǎn)化,相似不代表就能得到很好的轉(zhuǎn)化,比如極端情況,全部召回與用戶最近播放相似的短視頻,顯然最終整體的轉(zhuǎn)化是不高的。
- 競(jìng)爭(zhēng)問題:各召回通路最終會(huì)做 merge 去重,各通道之間重復(fù)度過高則沒有意義,特別是新增召回通路,需要對(duì)歷史通路有較好的補(bǔ)充增益作用,各召回通路之間存在一定的重疊和競(jìng)爭(zhēng)問題。同時(shí),召回通路的候選 item,不一定能在精排中競(jìng)爭(zhēng)透出,特別是歷史召回少的 item,由于其曝光樣本很少,精排中打分不高,所以不一定能透出。召回和精排的相愛相殺,還需要通過全鏈路優(yōu)化來緩解。
本文經(jīng)授權(quán)發(fā)布,不代表增長黑客立場(chǎng),如若轉(zhuǎn)載,請(qǐng)注明出處:http://allfloridahomeinspectors.com/quan/60894.html