粗排是工業(yè)界搜廣推系統(tǒng)的重要模塊。美團(tuán)搜索排序團(tuán)隊(duì)在優(yōu)化粗排效果的探索和實(shí)踐中,基于業(yè)務(wù)實(shí)際場(chǎng)景,從精排聯(lián)動(dòng)和效果性能聯(lián)合優(yōu)化兩方面優(yōu)化粗排,提升了粗排的效果。本文介紹了美團(tuán)搜索粗排的迭代路線(xiàn)、基于知識(shí)蒸餾和自動(dòng)神經(jīng)網(wǎng)絡(luò)選擇的粗排優(yōu)化工作,希望為從事相關(guān)工作的同學(xué)帶來(lái)一些啟發(fā)或者幫助。
1. 前言
眾所周知,在搜索、推薦、廣告等大規(guī)模工業(yè)界應(yīng)用領(lǐng)域,為了平衡性能和效果,排序系統(tǒng)普遍采用級(jí)聯(lián)架構(gòu)[1,2],如下圖 1 所示。以美團(tuán)搜索排序系統(tǒng)為例,整個(gè)排序分為粗排、精排、重排和混排層;粗排位于召回和精排之間,需要從千級(jí)別候選 item 集合中篩選出百級(jí)別 item 集合送給精排層。
圖1 排序漏斗
從美團(tuán)搜索排序全鏈路視角審視粗排模塊,目前粗排層優(yōu)化存在如下幾個(gè)挑戰(zhàn)點(diǎn):
樣本選擇偏差:級(jí)聯(lián)排序系統(tǒng)下,粗排離最后的結(jié)果展示環(huán)節(jié)較遠(yuǎn),導(dǎo)致粗排模型離線(xiàn)訓(xùn)練樣本空間與待預(yù)測(cè)的樣本空間存在較大的差異,存在嚴(yán)重的樣本選擇偏差。
粗排精排聯(lián)動(dòng):粗排處于召回和精排之間,粗排需要更多獲取和利用后續(xù)鏈路的信息來(lái)提升效果。
性能約束:線(xiàn)上粗排預(yù)測(cè)的候選集遠(yuǎn)遠(yuǎn)高于精排模型,然而實(shí)際整個(gè)搜索系統(tǒng)對(duì)性能有嚴(yán)格的要求,導(dǎo)致粗排需要重點(diǎn)關(guān)注預(yù)測(cè)性能。
本文將圍繞上述挑戰(zhàn)點(diǎn)來(lái)分享美團(tuán)搜索粗排層優(yōu)化的相關(guān)探索與實(shí)踐,其中樣本選擇偏差問(wèn)題我們放在精排聯(lián)動(dòng)問(wèn)題中一起解決。本文主要分成三個(gè)部分:第一部分會(huì)簡(jiǎn)單介紹美團(tuán)搜索排序粗排層的演進(jìn)路線(xiàn);第二部分介紹粗排優(yōu)化的相關(guān)探索與實(shí)踐,其中第一個(gè)工作是采用知識(shí)蒸餾和對(duì)比學(xué)習(xí)使精排和粗排聯(lián)動(dòng)來(lái)優(yōu)化粗排效果,第二個(gè)工作是考慮粗排性能和效果 trade-off 的粗排優(yōu)化,相關(guān)工作均已全量上線(xiàn),且效果顯著;最后是總結(jié)與展望部分,希望這些內(nèi)容對(duì)大家有所幫助和啟發(fā)。
2. 粗排演進(jìn)路線(xiàn)
美團(tuán)搜索的粗排技術(shù)演進(jìn)分為以下幾個(gè)階段:
2016 年:基于相關(guān)性、質(zhì)量度、轉(zhuǎn)化率等信息進(jìn)行線(xiàn)性加權(quán),這種方法簡(jiǎn)單但是特征的表達(dá)能力較弱,權(quán)重人工確定,排序效果存在很大的提升空間。
2017 年:采用基于機(jī)器學(xué)習(xí)的簡(jiǎn)單 LR 模型進(jìn)行 Pointwise 預(yù)估排序。
2018 年:采用基于向量?jī)?nèi)積的雙塔模型,兩側(cè)分別輸入查詢(xún)?cè)~、用戶(hù)以及上下文特征和商戶(hù)特征,經(jīng)過(guò)深度網(wǎng)絡(luò)計(jì)算后,分別產(chǎn)出用戶(hù)&查詢(xún)?cè)~向量和商戶(hù)向量,再通過(guò)內(nèi)積計(jì)算得到預(yù)估分?jǐn)?shù)進(jìn)行排序。該方法可以提前把商戶(hù)向量計(jì)算保存好,所以在線(xiàn)預(yù)測(cè)快,但是兩側(cè)信息的交叉能力有限。
2019 年:為了解決雙塔模型無(wú)法很好地建模交叉特征的問(wèn)題,將雙塔模型的輸出作為特征與其他交叉特征通過(guò) GBDT 樹(shù)模型進(jìn)行融合。
2020 年至今:由于算力的提升,開(kāi)始探索 NN 端到端粗排模型并且持續(xù)迭代 NN 模型。
現(xiàn)階段,工業(yè)界粗排模型常用的有雙塔模型,比如騰訊[3]和愛(ài)奇藝[4];交互式 NN 模型,比如阿里巴巴[1,2]。下文主要介紹美團(tuán)搜索在粗排升級(jí)為 NN 模型過(guò)程中的相關(guān)優(yōu)化工作,主要包括粗排效果優(yōu)化、效果&性能聯(lián)合優(yōu)化兩個(gè)部分。
3. 粗排優(yōu)化實(shí)踐
隨著大量的效果優(yōu)化工作[5,6]在美團(tuán)搜索精排 NN 模型落地,我們也開(kāi)始探索粗排 NN 模型的優(yōu)化。考慮到粗排有嚴(yán)格的性能約束,直接將精排優(yōu)化的工作復(fù)用到粗排是不適用的。下面會(huì)介紹關(guān)于將精排的排序能力遷移到粗排的精排聯(lián)動(dòng)效果優(yōu)化工作,以及基于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自動(dòng)搜索的效果和性能 trade-off 優(yōu)化工作。
3.1 精排聯(lián)動(dòng)效果優(yōu)化
粗排模型受限于打分性能約束,這會(huì)導(dǎo)致模型結(jié)構(gòu)相比精排模型更加簡(jiǎn)單,特征數(shù)量也比精排少很多,因此排序效果要差于精排。為了彌補(bǔ)粗排模型結(jié)構(gòu)簡(jiǎn)單、特征較少帶來(lái)的效果損失,我們嘗試知識(shí)蒸餾方法[7]來(lái)聯(lián)動(dòng)精排對(duì)粗排進(jìn)行優(yōu)化。
知識(shí)蒸餾是目前業(yè)界簡(jiǎn)化模型結(jié)構(gòu)并最小化效果損失的普遍方法,它采取一種 Teacher-Student 范式:結(jié)構(gòu)復(fù)雜、學(xué)習(xí)能力強(qiáng)的模型作為 Teacher 模型,結(jié)構(gòu)較為簡(jiǎn)單的模型作為 Student 模型,通過(guò) Teacher 模型來(lái)輔助 Student 模型訓(xùn)練,從而將 Teacher 模型的“知識(shí)”傳遞給 Student 模型,實(shí)現(xiàn) Student 模型的效果提升。精排蒸餾粗排的示意圖如下圖 2 所示,蒸餾方案分為以下三種:精排結(jié)果蒸餾、精排預(yù)測(cè)分?jǐn)?shù)蒸餾、特征表征蒸餾。下面會(huì)分別介紹這些蒸餾方案在美團(tuán)搜索粗排中的實(shí)踐經(jīng)驗(yàn)。
圖2 精排蒸餾粗排示意圖
3.1.1 精排結(jié)果列表蒸餾
粗排作為精排的前置模塊,它的目標(biāo)是初步篩選出質(zhì)量比較好的候選集合進(jìn)入精排,從訓(xùn)練樣本選取來(lái)看,除了常規(guī)的用戶(hù)發(fā)生行為(點(diǎn)擊、下單、支付)的 item 作為正樣本,曝光未發(fā)生行為的 item 作為負(fù)樣本外,還可以引入一些通過(guò)精排模型排序結(jié)果構(gòu)造的正負(fù)樣本,這樣既能一定程度緩解粗排模型的樣本選擇偏置,也能將精排的排序能力遷移到粗排。下面會(huì)介紹在美團(tuán)搜索場(chǎng)景下,使用精排排序結(jié)果蒸餾粗排模型的實(shí)踐經(jīng)驗(yàn)。
策略1:在用戶(hù)反饋的正負(fù)樣本基礎(chǔ)上,隨機(jī)選取少量精排排序靠后的未曝光樣本作為粗排負(fù)樣本的補(bǔ)充,如圖 3 所示。該項(xiàng)改動(dòng)離線(xiàn) Recall@150(指標(biāo)解釋參看附錄)+5PP,線(xiàn)上 CTR +0.1%。
圖3 補(bǔ)充排序結(jié)果靠后負(fù)例
策略2:直接在精排排序后的集合里面進(jìn)行隨機(jī)采樣得到訓(xùn)練樣本,精排排序的位置作為 label 構(gòu)造 pair 對(duì)進(jìn)行訓(xùn)練,如下圖 4 所示。離線(xiàn)效果相比策略1 Recall@150 +2PP,線(xiàn)上 CTR +0.06%。
圖4 排序靠前靠后構(gòu)成 pair 對(duì)樣本
策略3:基于策略2的樣本集選取,采用對(duì)精排排序位置進(jìn)行分檔構(gòu)造 label ,然后根據(jù)分檔 label 構(gòu)造 pair 對(duì)進(jìn)行訓(xùn)練。離線(xiàn)效果相比策略2 Recall@150 +3PP,線(xiàn)上 CTR +0.1%。
3.1.2 精排預(yù)測(cè)分?jǐn)?shù)蒸餾
前面使用排序結(jié)果蒸餾是一種比較粗糙使用精排信息的方式,我們?cè)谶@個(gè)基礎(chǔ)上進(jìn)一步添加預(yù)測(cè)分?jǐn)?shù)蒸餾[8],希望粗排模型輸出的分?jǐn)?shù)與精排模型輸出的分?jǐn)?shù)分布盡量對(duì)齊,如下圖 5 所示:
圖5 精排預(yù)測(cè)分?jǐn)?shù)構(gòu)造輔助損失
在具體實(shí)現(xiàn)上,我們采用兩階段蒸餾范式,基于預(yù)先訓(xùn)練好的精排模型來(lái)蒸餾粗排模型,蒸餾 Loss 采用的是粗排模型輸出和精排模型輸出的最小平方誤差,并且添加一個(gè)參數(shù) Lambda 來(lái)控制蒸餾 Loss 對(duì)最終 Loss 的影響,如公式(1)所示。使用精排分?jǐn)?shù)蒸餾的方法,離線(xiàn)效果 Recall@150 +5PP,線(xiàn)上效果 CTR +0.05%。
3.1.3 特征表征蒸餾
業(yè)界通過(guò)知識(shí)蒸餾實(shí)現(xiàn)精排指導(dǎo)粗排表征建模已經(jīng)被驗(yàn)證是一種有效提升模型效果的方式[7],然而直接用傳統(tǒng)的方法蒸餾表征有以下缺陷:第一是無(wú)法蒸餾粗排和精排之間的排序關(guān)系,而前文已提到,排序結(jié)果蒸餾在我們的場(chǎng)景中,線(xiàn)下、線(xiàn)上均有效果提升;第二是傳統(tǒng)采用 KL 散度作為表征度量的知識(shí)蒸餾方案,把表征的每一維獨(dú)立對(duì)待,無(wú)法有效地蒸餾高度相關(guān)的、結(jié)構(gòu)化的信息[9],而在美團(tuán)搜索場(chǎng)景下,數(shù)據(jù)是高度結(jié)構(gòu)化的,因此采用傳統(tǒng)的知識(shí)蒸餾策略來(lái)做表征蒸餾可能無(wú)法較好地捕獲這種結(jié)構(gòu)化的知識(shí)。
我們將對(duì)比學(xué)習(xí)技術(shù)應(yīng)用到粗排建模中,使得粗排模型在蒸餾精排模型的表征時(shí),也能蒸餾到序的關(guān)系。我們用
來(lái)表示粗排模型,用
來(lái)表示精排模型。假設(shè)q是數(shù)據(jù)集中的一個(gè)請(qǐng)求
是該請(qǐng)求下的一個(gè)正樣例,而
是該請(qǐng)求下對(duì)應(yīng)的k個(gè)負(fù)樣例。
我們將
分別輸入到粗排和精排網(wǎng)絡(luò)中,得到其對(duì)應(yīng)的表征
,與此同時(shí),我們將
輸入到粗排網(wǎng)絡(luò)中,得到粗排模型編碼后的表征
。對(duì)于對(duì)比學(xué)習(xí)負(fù)例對(duì)的選取,我們采用策略 3 中的方案,對(duì)精排的順序進(jìn)行分檔,同檔內(nèi)精排、粗排的表征對(duì)看成是正例,不同檔間粗排、精排的表征對(duì)看成是負(fù)例,而后用 InfoNCE Loss 來(lái)優(yōu)化這個(gè)目標(biāo):
其中 表示兩個(gè)向量的點(diǎn)積, 是溫度系數(shù)。通過(guò)對(duì) InfoNCE loss 的性質(zhì)進(jìn)行分析,不難發(fā)現(xiàn)上式本質(zhì)上等價(jià)于最大化粗排表征和精排表征互信息的一個(gè)下界。因此,該方法本質(zhì)上是在互信息層面上最大化精排表征和粗排表征之間的一致性,能夠更有效地蒸餾結(jié)構(gòu)化知識(shí)。
圖6 對(duì)比學(xué)習(xí)精排信息遷移
在上文公式 (1) 的基礎(chǔ)上,補(bǔ)充對(duì)比學(xué)習(xí)表征蒸餾 Loss,離線(xiàn)效果 Recall@150 +14PP,線(xiàn)上 CTR +0.15%。相關(guān)工作的詳細(xì)內(nèi)容可以參考我們的論文[10](正在投稿中)。
3.2 效果性能聯(lián)合優(yōu)化
前面提到線(xiàn)上預(yù)測(cè)的粗排候選集較大,考慮到系統(tǒng)全鏈路性能的約束,粗排需要考慮預(yù)測(cè)效率。前文提到的工作都是基于簡(jiǎn)單 DNN + 蒸餾的范式來(lái)進(jìn)行優(yōu)化,但是存在如下兩個(gè)問(wèn)題:
目前受限于線(xiàn)上性能而只使用了簡(jiǎn)單特征,未引入更加豐富的交叉特征,導(dǎo)致模型效果還有進(jìn)一步提升的空間。
固定粗排模型結(jié)構(gòu)的蒸餾會(huì)損失蒸餾效果,從而造成次優(yōu)解[11]。
根據(jù)我們的實(shí)踐經(jīng)驗(yàn),直接在粗排層引入交叉特征是不能滿(mǎn)足線(xiàn)上時(shí)延要求的。因此為了解決以上問(wèn)題,我們探索并實(shí)踐了基于神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索的粗排建模方案,該方案同時(shí)優(yōu)化粗排模型的效果和性能,選擇出滿(mǎn)足粗排時(shí)延要求的最佳特征組合和模型結(jié)構(gòu),整體架構(gòu)圖如下圖7所示:
圖7 基于 NAS 的特征和模型結(jié)構(gòu)
選擇下面我們對(duì)其中的神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(NAS)以及引入效率建模這兩個(gè)關(guān)鍵技術(shù)點(diǎn)進(jìn)行簡(jiǎn)單介紹:
神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索:如上圖7所示,我們采用基于 ProxylessNAS[12]的建模方式,整個(gè)模型訓(xùn)練除了網(wǎng)絡(luò)參數(shù)外增加了特征 Masks 參數(shù)和網(wǎng)絡(luò)架構(gòu)參數(shù),這些參數(shù)是可微分的,隨著模型目標(biāo)一起學(xué)習(xí)。在特征選擇部分,我們給每一個(gè)特征引入一個(gè)基于伯努利分布的 Mask 參數(shù) ,參見(jiàn)公式(4),其中伯努利分布的 θ 參數(shù)通過(guò)反向傳播進(jìn)行更新,最終獲得每個(gè)特征的重要度。在結(jié)構(gòu)選擇部分,采用了 L 層 Mixop 表示,每組 Mixop 包括 N 個(gè)可供選擇的網(wǎng)絡(luò)結(jié)構(gòu)單元,在實(shí)驗(yàn)中,我們采用了不同隱層神經(jīng)單元數(shù)的多層感知機(jī),其中 N= {1024, 512, 256, 128, 64},同時(shí)我們還增加了隱藏單元數(shù)為 0 的結(jié)構(gòu)單元,用于選擇具有不同層數(shù)的神經(jīng)網(wǎng)絡(luò)。
效率建模:為了在模型目標(biāo)中建模效率指標(biāo),我們需要采用一個(gè)可微分的學(xué)習(xí)目標(biāo)來(lái)表示模型耗時(shí),粗排模型的耗時(shí)主要分為特征耗時(shí)和模型結(jié)構(gòu)耗時(shí)。
對(duì)于特征耗時(shí)來(lái)說(shuō),每個(gè)特征 fi 的延時(shí)期望可以被建模為如公式(5)所示,其中
是服務(wù)端打點(diǎn)記錄的每個(gè)特征時(shí)延。
在實(shí)際情況中特征可以分為兩大類(lèi),一部分是上游透?jìng)黝?lèi)特征 ,其延時(shí)主要來(lái)源于上游傳輸延時(shí);另外一類(lèi)特征 來(lái)自于本地獲取(讀取 KV 或者計(jì)算),那么每個(gè)特征組合的時(shí)延可以被建模為:
其中
和
表示對(duì)應(yīng)特征集合的個(gè)數(shù),
和
建模系統(tǒng)特征拉取并發(fā)度。
對(duì)于模型結(jié)構(gòu)的延時(shí)建?蓞⒁(jiàn)上圖 7 右邊部分,由于這些 Mixop 的執(zhí)行是順序進(jìn)行的,因此我們可以采取遞歸的方式的計(jì)算模型結(jié)構(gòu)延時(shí),整個(gè)模型部分的耗時(shí)可以用最后一層的 Mixop 來(lái)表達(dá),示意圖如下圖 8 所示:
圖8 模型延時(shí)計(jì)算圖
圖8 左邊是裝配有網(wǎng)絡(luò)架構(gòu)選擇的粗排網(wǎng)絡(luò),其中 表示第 層的第 個(gè)神經(jīng)單元的權(quán)重。右邊是網(wǎng)絡(luò)延時(shí)計(jì)算示意圖。因此整個(gè)模型預(yù)測(cè)部分耗時(shí)可以用最后一層模型來(lái)表示,如公式(7)所示:
最終我們把效率指標(biāo)引入模型,最終模型訓(xùn)練的 Loss 如下面公式(8)所示,其中,f 表示精排網(wǎng)絡(luò),
表示平衡因子,
分別表示粗排和精排的打分輸出。
通過(guò)神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索的建模來(lái)聯(lián)合優(yōu)化粗排模型的效果和預(yù)測(cè)性能,離線(xiàn) Recall@150 +11PP, 最終在線(xiàn)上延時(shí)不增加的情況下,線(xiàn)上指標(biāo) CTR +0.12%;詳細(xì)工作可參考[13],已被 KDD 2022 接收。
4. 總結(jié)
從 2020 年開(kāi)始,我們通過(guò)大量的工程性能優(yōu)化使粗排層落地 MLP 模型,在2021 年我們繼續(xù)在 MLP 模型基礎(chǔ)上,持續(xù)迭代粗排模型來(lái)提升粗排效果。
首先,我們借鑒業(yè)界常用的蒸餾方案來(lái)聯(lián)動(dòng)精排優(yōu)化粗排,從精排結(jié)果蒸餾、精排預(yù)測(cè)分?jǐn)?shù)蒸餾、特征表征蒸餾三個(gè)層面分別進(jìn)行了大量實(shí)驗(yàn),在不增加線(xiàn)上延時(shí)的情況下,提升粗排模型效果。其次,考慮到傳統(tǒng)蒸餾方式無(wú)法很好處理排序場(chǎng)景中的特征結(jié)構(gòu)化信息,我們自研了一套基于對(duì)比學(xué)習(xí)的精排信息遷移粗排方案。
最后,我們進(jìn)一步考慮到粗排優(yōu)化本質(zhì)上是效果和性能的 trade-off,采用多目標(biāo)建模的思路同時(shí)優(yōu)化效果和性能,落地神經(jīng)網(wǎng)絡(luò)架構(gòu)自動(dòng)搜索技術(shù)來(lái)進(jìn)行求解,讓模型自動(dòng)選擇效率和效果最佳的特征集合和模型結(jié)構(gòu)。后續(xù)我們會(huì)從以下幾個(gè)方面繼續(xù)迭代粗排層技術(shù):
粗排多目標(biāo)建模:目前的粗排本質(zhì)上還是一個(gè)單目標(biāo)模型,目前我們正在嘗試將精排層的多目標(biāo)建模應(yīng)用于粗排。
粗排聯(lián)動(dòng)的全系統(tǒng)動(dòng)態(tài)算力分配:粗排可以控制召回的算力以及精排的算力,針對(duì)不同場(chǎng)景,模型需要的算力是不一樣的,因此動(dòng)態(tài)算力分配可以在不降低線(xiàn)上效果的情況下減小系統(tǒng)算力消耗,目前我們已經(jīng)在這個(gè)方面取得了一定的線(xiàn)上效果。
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請(qǐng)謹(jǐn)慎對(duì)待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。
2024年的Adobe MAX 2024發(fā)布會(huì)上,Adobe推出了最新版本的Adobe Creative Cloud。
奧維云網(wǎng)(AVC)推總數(shù)據(jù)顯示,2024年1-9月明火炊具線(xiàn)上零售額94.2億元,同比增加3.1%,其中抖音渠道表現(xiàn)優(yōu)異,同比有14%的漲幅,傳統(tǒng)電商略有下滑,同比降低2.3%。
“以前都要去窗口辦,一套流程下來(lái)都要半個(gè)月了,現(xiàn)在方便多了!”打開(kāi)“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶(hù)就打進(jìn)了21600元。
華碩ProArt創(chuàng)藝27 Pro PA279CRV顯示器,憑借其優(yōu)秀的性能配置和精準(zhǔn)的色彩呈現(xiàn)能力,為您的創(chuàng)作工作帶來(lái)實(shí)質(zhì)性的幫助,雙十一期間低至2799元,性?xún)r(jià)比很高,簡(jiǎn)直是創(chuàng)作者們的首選。
9月14日,2024全球工業(yè)互聯(lián)網(wǎng)大會(huì)——工業(yè)互聯(lián)網(wǎng)標(biāo)識(shí)解析專(zhuān)題論壇在沈陽(yáng)成功舉辦。