轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦粗排優(yōu)化實(shí)踐,你學(xué)會(huì)了嗎?
1 粗排簡(jiǎn)介
主流的推薦系統(tǒng)采用多階段級(jí)聯(lián)結(jié)構(gòu),主要分為召回(match)、粗排(pre-rank)、精排(rank)、重排(rerank)幾部分,每階段可以視為一個(gè)漏斗,候選物品數(shù)量逐漸減小。召回作為第一級(jí)漏斗,從海量物品池中盡可能召回所有用戶(hù)可能感興趣的物品,輸出數(shù)千個(gè)候選物品;粗排作為第二級(jí)漏斗,對(duì)數(shù)千個(gè)候選物品快速進(jìn)行初篩,將候選物品減少到數(shù)百個(gè);精排階段對(duì)候選進(jìn)行精準(zhǔn)排序;重排階段結(jié)合業(yè)務(wù)目標(biāo),決定最終結(jié)果的順序。
推薦系統(tǒng)漏斗
在推薦系統(tǒng)整個(gè)流程中,粗排作為承上啟下的一個(gè)環(huán)節(jié)有獨(dú)特的挑戰(zhàn)。一方面,它決定了后續(xù)環(huán)節(jié)的輸入,既要保證輸出足夠優(yōu)質(zhì),又要有一定多樣性,避免多樣性策略“巧婦難為無(wú)米之炊”;另一方面,與精排相比它的候選物品量級(jí)更大,這就限制了模型的復(fù)雜度,精度優(yōu)化必須在保證效率前提下進(jìn)行。
2 業(yè)界工作
2.1 模型優(yōu)化
目前業(yè)界主流的粗排模型都基于深度學(xué)習(xí),總體分為兩種:基于向量積的DNN模型(也稱(chēng)為雙塔模型)、全連接DNN模型。
2.1.1 雙塔模型
粗排對(duì)性能有較高的要求,而精度要求沒(méi)有精排高。雙塔模型在高效的同時(shí)也有不錯(cuò)的精度,得到了工業(yè)界的廣泛應(yīng)用。
雙塔模型結(jié)構(gòu)分為用戶(hù)塔、物品塔兩部分,分別輸入用戶(hù)及上下文特征、物品特征,經(jīng)過(guò)DNN得到向量表示后計(jì)算相似度,最終得到打分。雙塔模型的兩部分相對(duì)獨(dú)立,通常會(huì)離線(xiàn)將物品向量算好并存入緩存,在線(xiàn)僅計(jì)算一次用戶(hù)向量,再與緩存中的物品向量計(jì)算相似度。物品向量離線(xiàn)計(jì)算使得物品側(cè)可以使用復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),而不用擔(dān)心在線(xiàn)計(jì)算物品向量帶來(lái)的耗時(shí)問(wèn)題。然而,簡(jiǎn)單的結(jié)構(gòu)是一把“雙刃劍”,雙塔結(jié)構(gòu)導(dǎo)致模型無(wú)法使用用戶(hù)與物品的交叉特征,同時(shí)兩側(cè)特征交互太晚,細(xì)粒度特征經(jīng)過(guò)DNN后可能已丟失,這兩點(diǎn)限制了雙塔模型的精度。
雙塔模型
為了減少特征交互晚帶來(lái)的效果損失,一種方法是在雙塔模型的特征embedding層上增加SENet[1]。SENet分為Squeeze、Excitation兩個(gè)階段,在Squeeze階段將每個(gè)特征的embedding向量壓縮為一個(gè)數(shù)值,在Excitation階段得到各特征的權(quán)重,用來(lái)對(duì)原始embedding加權(quán)。SENet的加入使得重要特征被放大,噪音和無(wú)效低頻特征被動(dòng)態(tài)抑制,從而改善了特征交互的效果。
雙塔模型中的SENet
2.1.2 全連接DNN模型
與強(qiáng)調(diào)效率、兼顧精度的雙塔模型不同,粗排模型的另一個(gè)分支是以最大限度提高精度為目標(biāo)的全連接DNN模型。粗排全連接DNN模型的特征選取更加自由,可以像精排模型一樣使用交叉特征,但是為了提升效率,往往需要算法和工程的協(xié)同優(yōu)化。這一方向的代表性工作是阿里的COLD[2]和FSCD[3]。
COLD模型通過(guò)特征篩選、計(jì)算邏輯優(yōu)化來(lái)實(shí)現(xiàn)效果和性能的折中。模型結(jié)構(gòu)基于GwEN,訓(xùn)練時(shí)用SE Block計(jì)算特征重要度,篩選出重要特征后,重新訓(xùn)練模型供在線(xiàn)使用。工程方面,COLD模型還使用了異構(gòu)計(jì)算、列式計(jì)算、降低GPU計(jì)算精度的技巧。算法及工程優(yōu)化雙管齊下使得COLD模型效果明顯超過(guò)雙塔模型,但是它的QPS仍比雙塔模型小一個(gè)數(shù)量級(jí)。
COLD
FSCD將COLD中的特征篩選過(guò)程放在了損失函數(shù)里。模型中定義了特征的dropout參數(shù),使得特征復(fù)雜度越高保留概率越低。訓(xùn)練分為兩個(gè)階段,首先學(xué)習(xí)特征embedding、網(wǎng)絡(luò)參數(shù)和特征域被保留的概率,然后保留k個(gè)高價(jià)值特征域,用上一步得到的特征embedding和網(wǎng)絡(luò)參數(shù)初始化,對(duì)模型進(jìn)行微調(diào)。FSCD線(xiàn)上表現(xiàn)略好于COLD,但性能仍與雙塔有明顯差距。
2.2 樣本優(yōu)化
以CTR模型為例,精排模型通常使用曝光樣本訓(xùn)練,其中點(diǎn)擊為正樣本,未點(diǎn)擊為負(fù)樣本。然而,對(duì)于粗排,它在線(xiàn)預(yù)測(cè)的輸入為召回結(jié)果。若繼續(xù)只用曝光樣本訓(xùn)練,則訓(xùn)練樣本和預(yù)測(cè)樣本分布差異大,效果不確定,即存在樣本選擇偏差(Sample Selection Bias,SSB)。有許多工作提供了緩解SSB問(wèn)題的方案。
樣本分類(lèi)
2.2.1 負(fù)樣本采樣
負(fù)樣本采樣的目的是使訓(xùn)練數(shù)據(jù)和線(xiàn)上分布盡可能一致。常見(jiàn)的采樣方式有以下幾種:
全局隨機(jī)選擇
從全局候選物品中隨機(jī)抽取,代表工作為Youtube DNN[4]。這種方式的缺點(diǎn)是負(fù)樣本和正樣本可能太容易區(qū)分,模型學(xué)習(xí)不充分。此外,推薦系統(tǒng)中也存在二八定律,即少數(shù)熱門(mén)物品占據(jù)了大多數(shù)的曝光和點(diǎn)擊。由于正樣本被熱門(mén)物品“綁架”,采樣時(shí)也需要提高熱門(mén)物品在負(fù)樣本中的比例,同時(shí)保證冷門(mén)物品有可能被采到。實(shí)現(xiàn)時(shí)通常參考word2vec的方法計(jì)算各物品成為負(fù)樣本的概率。
batch內(nèi)隨機(jī)選擇
訓(xùn)練時(shí)僅輸入正樣本,在batch內(nèi)對(duì)于當(dāng)前用戶(hù),隨機(jī)采樣除當(dāng)前物品外的其他物品作為負(fù)樣本,即用其他用戶(hù)的正樣本作為當(dāng)前用戶(hù)的負(fù)樣本。代表工作為Google雙塔召回模型[5]。
困難負(fù)樣本選擇
困難負(fù)樣本是與正樣本相似的負(fù)樣本,適當(dāng)增加這種樣本可以使得模型關(guān)注細(xì)節(jié)。具體選取方法多種多樣。Airbnb[6]根據(jù)業(yè)務(wù)邏輯挖掘困難負(fù)樣本;Facebook[7]選取召回位置中段的物品;也有其他工作根據(jù)精排序選取,例如美團(tuán)[8]使用精排結(jié)果蒸餾粗排模型的一系列實(shí)驗(yàn)。
2.2.2 正樣本采樣
一般情況下,粗排模型的正樣本與精排相同,即曝光且有正反饋的樣本。當(dāng)業(yè)務(wù)有多個(gè)場(chǎng)景時(shí),例如淘寶有搜索、推薦等場(chǎng)景,我們可能希望將場(chǎng)景外的點(diǎn)擊、成交等收益轉(zhuǎn)化到場(chǎng)景內(nèi)。淘寶主搜[9]通過(guò)引入場(chǎng)景外正樣本來(lái)實(shí)現(xiàn)這個(gè)轉(zhuǎn)化,實(shí)現(xiàn)分為修正樣本、補(bǔ)充樣本兩種。修正樣本時(shí),對(duì)于原始的成交負(fù)樣本,如果在場(chǎng)景外有成交則修正為正樣本。與之相對(duì),補(bǔ)充樣本將不存在于原始樣本中的場(chǎng)景外成交加入曝光樣本,同時(shí)設(shè)為曝光、點(diǎn)擊、成交任務(wù)的正樣本。淘寶主搜通過(guò)組合兩種擴(kuò)充正樣本的方法,提升了場(chǎng)景外hitrate。
3 轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦粗排實(shí)踐
轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦場(chǎng)景的粗排模塊分為兩部分:第一部分為粗排模型,對(duì)召回的商品進(jìn)行品類(lèi)內(nèi)排序,目標(biāo)是最大化品類(lèi)內(nèi)預(yù)估精度;第二部分為流量池,負(fù)責(zé)分配各品類(lèi)quota,目標(biāo)是平衡粗排輸出的效率和多樣性。
3.1 模型優(yōu)化實(shí)踐
粗排模型為CTR模型,目標(biāo)是提升品類(lèi)內(nèi)預(yù)估精度。
轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦粗排-模型部分
粗排模型以雙塔結(jié)構(gòu)為基礎(chǔ),在樣本、網(wǎng)絡(luò)結(jié)構(gòu)方向進(jìn)行了多次優(yōu)化。
樣本優(yōu)化
最初粗排訓(xùn)練樣本與精排相同,即曝光點(diǎn)擊為正樣本,曝光未點(diǎn)擊為負(fù)樣本。此后對(duì)正樣本、負(fù)樣本都進(jìn)行了擴(kuò)充。擴(kuò)充正樣本參考了淘寶主搜的做法,補(bǔ)充了其他場(chǎng)景的點(diǎn)擊樣本,嘗試將推薦場(chǎng)景外的點(diǎn)擊轉(zhuǎn)化到場(chǎng)景內(nèi)。具體實(shí)現(xiàn)時(shí),嘗試了修正曝光未點(diǎn)擊樣本、補(bǔ)充未曝光樣本兩種方案,實(shí)驗(yàn)證明補(bǔ)充未曝光樣本效果更顯著。為緩解SSB問(wèn)題,在曝光未點(diǎn)擊負(fù)樣本基礎(chǔ)上,補(bǔ)充了未曝光的隨機(jī)負(fù)樣本。未曝光負(fù)樣本細(xì)分為兩種,即在全場(chǎng)景有曝光無(wú)點(diǎn)擊、在全場(chǎng)景無(wú)曝光兩種,第一種相當(dāng)于將其他場(chǎng)景的知識(shí)遷移到推薦場(chǎng)景。離線(xiàn)用hitrate評(píng)估各種負(fù)樣本組合的效果,發(fā)現(xiàn)同時(shí)補(bǔ)充兩種未曝光負(fù)樣本的模型效果最佳,在線(xiàn)AB實(shí)驗(yàn)也印證了這一結(jié)論。
網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化
粗排由一個(gè)模型承接多個(gè)品類(lèi)的CTR預(yù)估,各品類(lèi)的樣本量級(jí)、流量效率乃至特征都存在較大差異,模型訓(xùn)練容易被優(yōu)勢(shì)品類(lèi)主導(dǎo)。因此,網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)需要使得模型能學(xué)到各品類(lèi)的共性和差異性。將點(diǎn)擊視為任務(wù),品類(lèi)視為場(chǎng)景,則粗排預(yù)估屬于多場(chǎng)景單任務(wù)問(wèn)題,可以參考業(yè)界多場(chǎng)景多任務(wù)的解決方案。我們參考PEPNet[10]設(shè)計(jì)了網(wǎng)絡(luò)結(jié)構(gòu),在雙塔的物品側(cè)通過(guò)EPNet進(jìn)行特征選擇和融合。物品側(cè)特征包含品類(lèi)共享特征(例如價(jià)格、類(lèi)目)及品類(lèi)特有特征(例如CPU、GPU),通過(guò)EPNet實(shí)現(xiàn)特征權(quán)重調(diào)整,使得對(duì)于不同品類(lèi)的樣本,重要特征得到強(qiáng)化,無(wú)關(guān)特征得到削弱。
轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦粗排模型結(jié)構(gòu)
3.2 流量池簡(jiǎn)介
轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦鏈路中精排環(huán)節(jié)無(wú)截?cái)?,因此粗排輸出商品集合的多樣性直接決定了重排階段的多樣性策略能否開(kāi)展。粗排結(jié)果的品類(lèi)多樣性由流量池模塊保證。
流量池涉及召回、粗排等階段,保證了粗排輸出的品類(lèi)多樣性,有效避免了優(yōu)勢(shì)品類(lèi)獨(dú)占流量,給非優(yōu)勢(shì)品類(lèi)的流量增長(zhǎng)創(chuàng)造了空間。召回階段,流量池干預(yù)觸發(fā),使得用戶(hù)點(diǎn)擊過(guò)的品類(lèi)召回充足,保證了召回結(jié)果的多樣性。粗排進(jìn)精排是流量池的主要生效階段,對(duì)應(yīng)下圖中proportion部分。由于優(yōu)勢(shì)品類(lèi)、非優(yōu)勢(shì)品類(lèi)打分天然存在差距,如果一起競(jìng)爭(zhēng)非優(yōu)勢(shì)品類(lèi)必然難以透出。為了保證非優(yōu)勢(shì)品類(lèi)能獲得流量,流量池對(duì)模型排序結(jié)果先拆分后融合。拆分階段將模型打分后的完整商品列表按品類(lèi)拆分,每個(gè)品類(lèi)對(duì)應(yīng)一個(gè)有序列表。融合階段綜合用戶(hù)行為、商品供給等情況,為每個(gè)品類(lèi)計(jì)算quota,取各品類(lèi)列表頭部結(jié)果融合后輸出,保證各品類(lèi)都有機(jī)會(huì)透出。
轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦粗排-流量池部分
3.3 未來(lái)規(guī)劃
未來(lái)轉(zhuǎn)轉(zhuǎn)首頁(yè)推薦的粗排優(yōu)化仍會(huì)分為模型、流量池兩方面進(jìn)行。模型方面,嘗試更先進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu),增加更強(qiáng)的特征等提高模型精度。流量池方面,優(yōu)化流量分配邏輯,更好地平衡效率與多樣性。
參考文獻(xiàn)
[1] SENet雙塔模型:在推薦領(lǐng)域召回粗排的應(yīng)用及其它:https://zhuanlan.zhihu.com/p/358779957
[2] COLD: Towards the Next Generation of Pre-Ranking System:https://arxiv.org/pdf/2007.16122
[3] Towards a Better Tradeoff between Effectiveness and Efficiency in Pre-Ranking: A Learnable Feature Selection based Approach:https://arxiv.org/pdf/2105.07706
[4] Deep Neural Networks for YouTube Recommendations:https://dl.acm.org/doi/pdf/10.1145/2959100.2959190?utm_campaign=Weekly%20dose%20of%20Machine%20Learning&utm_medium=email&utm_source=Revue%20newsletter
[5] Sampling-bias-corrected neural modeling for large corpus item recommendations:https://dl.acm.org/doi/10.1145/3298689.3346996
[6] Real-time Personalization using Embeddings for Search Ranking at Airbnb:https://dl.acm.org/doi/abs/10.1145/3219819.3219885
[7] Embedding-based Retrieval in Facebook Search:https://arxiv.org/pdf/2006.11632
[8] 美團(tuán)搜索粗排優(yōu)化的探索與實(shí)踐:https://mp.weixin.qq.com/s/u3sw_PatpwkFC0AtkssmPA
[9] 承上啟下:基于全域漏斗分析的主搜深度統(tǒng)一粗排:https://zhuanlan.zhihu.com/p/587353144
[10] PEPNet: Parameter and Embedding Personalized Network for Infusing with Personalized Prior Information:https://arxiv.org/pdf/2302.01115