本文將分享百度在推薦排序方面的思考與實(shí)踐。在整個(gè)工業(yè)界的推廣搜場(chǎng)景上,特征設(shè)計(jì)通常都是采用離散化的設(shè)計(jì),需要保證兩方面的效果,一方面是記憶,另一方面是泛化。特征都是通過(guò)哈希的方式做成 one hot 的離散化。
一、背景
首先來(lái)介紹一下百度綜合信息流推薦的業(yè)務(wù)背景、數(shù)據(jù)背景,以及基本的算法策略。
1、百度綜合信息流推薦
百度的綜合信息流包括手百 App 中搜索框的列表頁(yè)以及沉浸頁(yè)的形態(tài),有著非常多的產(chǎn)品類(lèi)型。從上圖中可以看到,有類(lèi)似于抖音的沉浸態(tài)的推薦,也有單列的推薦,以及類(lèi)似于小紅書(shū)筆記的雙列推薦。交互形態(tài)也是多種多樣的,可以在落地頁(yè)上進(jìn)行評(píng)論、點(diǎn)贊、收藏,也可以點(diǎn)進(jìn)作者頁(yè)中查看作者的相關(guān)信息并進(jìn)行交互,當(dāng)然也可以有負(fù)向的 feedback 等等。
2、數(shù)據(jù)背景
從建模的角度上看,主要面對(duì)三方面的挑戰(zhàn):
- 大規(guī)模。每天的展現(xiàn)量級(jí)超過(guò)了百億級(jí)別,因此模型需要有天級(jí)別百億的吞吐能力。每天的 DAU 過(guò)億,這也決定了整個(gè)模型需要有高吞吐、高可擴(kuò)展性的設(shè)計(jì)。對(duì)于排序模型來(lái)說(shuō),在線每秒鐘有數(shù)億次的計(jì)算,因此模型設(shè)計(jì)時(shí)不僅要考慮效果,同時(shí)也要考慮性能,需要做到很好的性能和效果的折中。用戶(hù)交互形態(tài)以及場(chǎng)景的多樣化,還要求模型可以預(yù)估多類(lèi)型任務(wù)。
- 高要求。整個(gè)系統(tǒng)的響應(yīng)時(shí)間要求非常高,端到端都是毫秒級(jí)的計(jì)算,超過(guò)了預(yù)定的時(shí)間,就會(huì)返回失敗。這也造成了另一個(gè)問(wèn)題,就是復(fù)雜結(jié)構(gòu)上線困難。
- 馬太效應(yīng)強(qiáng)。從數(shù)據(jù)樣本角度上來(lái)看,馬太效應(yīng)非常強(qiáng),少量的頭部活躍用戶(hù)貢獻(xiàn)了大多數(shù)的分發(fā)量,頭部的熱門(mén)資源也覆蓋到了大多數(shù)的展現(xiàn)量。無(wú)論是用戶(hù)側(cè)還是資源側(cè),馬太效應(yīng)都是非常強(qiáng)的。因此,系統(tǒng)設(shè)計(jì)時(shí)就需要弱化馬太效應(yīng),使得推薦更加公平。
3、基本算法策略
在整個(gè)工業(yè)界的推廣搜場(chǎng)景上,特征設(shè)計(jì)通常都是采用離散化的設(shè)計(jì),需要保證兩方面的效果,一方面是記憶,另一方面是泛化。特征都是通過(guò)哈希的方式做成 one hot 的離散化。對(duì)于頭部用戶(hù)需要有精細(xì)刻畫(huà),準(zhǔn)確記憶。而對(duì)于占比更大的稀疏長(zhǎng)尾,則需要很好地泛化。另外,對(duì)于用戶(hù)的點(diǎn)擊以及消費(fèi)決策序列,session 是非常重要的。
模型設(shè)計(jì)需要平衡很大的頭部,使整個(gè)數(shù)據(jù)呈現(xiàn)出 Beta distribution 的分布,需要平衡頭部的準(zhǔn)確以及長(zhǎng)尾的泛化。由于特征設(shè)計(jì)已經(jīng)做了這方面的考量,模型的設(shè)計(jì)也需要同時(shí)兼顧泛化以及準(zhǔn)確。百度整個(gè)的推薦漏斗對(duì)性能要求是非常極致的,所以要考慮到架構(gòu)跟策略的聯(lián)合設(shè)計(jì),需要考慮性能與效果的折中,另外也需要考慮平衡模型的高吞吐性以及精度。
架構(gòu)的設(shè)計(jì)也要從性能和效果這兩個(gè)維度來(lái)綜合考量。一個(gè)模型算不動(dòng)所有數(shù)千萬(wàn)的資源庫(kù),所以必須要做分層的設(shè)計(jì),核心思想是分治法。當(dāng)然各層之間是有關(guān)聯(lián)的,所以會(huì)做多階段的聯(lián)訓(xùn),來(lái)提升多階段漏斗之間的效率。另外,還有彈性計(jì)算法,保證在資源幾乎不變的情況下,上線非常復(fù)雜的模型。
上圖中右側(cè)的漢諾塔項(xiàng)目,在粗排這一層非常巧妙地實(shí)現(xiàn)了用戶(hù)與資源的分離建模。還有 CTR3.0 聯(lián)合訓(xùn)練,實(shí)現(xiàn)了多層多階段的聯(lián)訓(xùn),比如精排,是整個(gè)系統(tǒng)中最復(fù)雜、最精致的模型,精度是相當(dāng)高的,重排是在精排之上做 list wise 的建模,精排跟重排的關(guān)系是很緊密的,我們提出的基于這兩個(gè)模型聯(lián)訓(xùn)的方式,取得了非常好的線上效果。
接下來(lái),將分別從特征、算法和架構(gòu)三個(gè)角度進(jìn)一步展開(kāi)介紹。
二、特征
1、用戶(hù)-系統(tǒng)交互決策過(guò)程
特征描述了用戶(hù)與系統(tǒng)之間的交互決策過(guò)程。
下圖中展示了用戶(hù)-資源-場(chǎng)景-狀態(tài)時(shí)空關(guān)系交互矩陣圖。
首先將所有信號(hào)切分為用戶(hù)、資源、場(chǎng)景和狀態(tài)這四個(gè)維度,因?yàn)楸举|(zhì)上是要建模用戶(hù)與資源之間的關(guān)系。在每個(gè)維度上,可以做各種各樣的畫(huà)像數(shù)據(jù)。
用戶(hù)維度上,最基礎(chǔ)的年齡、性別、興趣點(diǎn)畫(huà)像。在此基礎(chǔ)上還會(huì)有一些細(xì)粒度的特征,比如相似用戶(hù),以及用戶(hù)歷史上對(duì)不同資源類(lèi)型的偏好行為等。session 特征,主要是長(zhǎng)短期行為序列。業(yè)界有很多做序列的模型,在此不作贅述。但無(wú)論做何種類(lèi)型的序列模型,都缺少不了特征層面的離散 session 特征。在百度的搜索廣告上,從 10 多年前就已經(jīng)引入了這一種細(xì)粒度的序列特征,對(duì)用戶(hù)在不同的時(shí)間窗口上,對(duì)不同資源類(lèi)型的點(diǎn)擊行為、消費(fèi)行為等等都細(xì)致地刻畫(huà)了多組序列特征。
資源維度上,也會(huì)有 ID 類(lèi)特征來(lái)記錄資源本身的情況,主導(dǎo)的是記憶。還有明文畫(huà)像特征來(lái)實(shí)現(xiàn)基礎(chǔ)的泛化能力。除了粗粒度的特征以外,也會(huì)有更為細(xì)致的資源特征,比如 Embedding 畫(huà)像特征,是基于多模態(tài)等預(yù)訓(xùn)練模型產(chǎn)出的,更細(xì)致地建模離散 embedding 空間中資源之間的關(guān)系。還有統(tǒng)計(jì)畫(huà)像類(lèi)的特征,描述資源各種情況下的后驗(yàn)如何。以及 lookalike 特征,通過(guò)用戶(hù)來(lái)反向表征資源進(jìn)而提升精度。
在場(chǎng)景維度上,有單列、沉浸式、雙列等不同的場(chǎng)景特征。
用戶(hù)在不同的狀態(tài)下,對(duì)于 feed 信息的消費(fèi)也是不同的。比如刷新?tīng)顟B(tài)是如何的,是從什么樣的網(wǎng)絡(luò)過(guò)來(lái)的,以及落地頁(yè)上的交互形態(tài)是怎樣的,都會(huì)影響到用戶(hù)未來(lái)的決策,所以也會(huì)從狀態(tài)維度來(lái)描述特征。
通過(guò)用戶(hù)、資源、狀態(tài)、場(chǎng)景四個(gè)維度,全面刻畫(huà)用戶(hù)與系統(tǒng)交互的決策過(guò)程。很多時(shí)候也會(huì)做多個(gè)維度之間的組合。
2、離散特征設(shè)計(jì)原理
接下來(lái)介紹離散特征設(shè)計(jì)原理。
優(yōu)質(zhì)的特征通常具有三個(gè)特點(diǎn):區(qū)分度高、覆蓋率高、魯棒性強(qiáng)。
- 區(qū)分度高:加入特征后,后驗(yàn)有著很大差異。比如加入 a 特征的樣本,后驗(yàn)點(diǎn)擊率跟沒(méi)有命中 a 特征的后驗(yàn)點(diǎn)擊率差距是非常大的。
- 覆蓋率高:如果加入的特征在整個(gè)樣本中的覆蓋率只有萬(wàn)分之幾、十萬(wàn)分之幾,那么即使特征很有區(qū)分度,但大概率也是沒(méi)有效果的。
- 魯棒性強(qiáng):特征本身的分布要是相對(duì)穩(wěn)定的,不能隨著時(shí)間發(fā)生非常劇烈的變化。
除了上述三個(gè)標(biāo)準(zhǔn),還可以做單特征的 AUC 判斷。比如只用某一特征來(lái)訓(xùn)練模型,看特征跟目標(biāo)之間的關(guān)系。也可以去掉某特征,看少了特征之后的 AUC 變化情況。
基于上述設(shè)計(jì)原則,我們來(lái)重點(diǎn)討論三類(lèi)重要特征:即交叉、偏置和序列特征。
- 交叉特征方面,業(yè)界有數(shù)百篇的相關(guān)工作,實(shí)踐中發(fā)現(xiàn)無(wú)論任何類(lèi)型的隱式特征交叉都無(wú)法完全替代顯示特征交叉,也不可能把所有的交叉特征全部刪掉,只用隱式表征來(lái)做。顯示特征交叉能夠刻畫(huà)出隱式特征交叉所無(wú)法表達(dá)的相關(guān)信息。當(dāng)然如果做得更深,可以用 AutoML 來(lái)進(jìn)行自動(dòng)搜索可能的特征組合空間。因此在實(shí)踐中,以顯式特征交叉為主,隱式特征交叉為輔的方式來(lái)做特征之間的 cross。
- 偏置類(lèi)特征指的是,用戶(hù)的點(diǎn)擊不等于用戶(hù)滿(mǎn)意,因?yàn)橘Y源的展示有各種各樣的偏置,比如最普遍的就是 position bias,展現(xiàn)在頭部的資源天然更容易被點(diǎn)擊。還有 system bias,系統(tǒng)優(yōu)先展現(xiàn)出認(rèn)為最優(yōu)的,但不一定是真的最優(yōu),比如新發(fā)布的資源,可能會(huì)因?yàn)槿鄙俸篁?yàn)信息而處于劣勢(shì)。
對(duì)于偏置特征有一個(gè)很經(jīng)典的結(jié)構(gòu),就是谷歌提出的 Wide&Deep 結(jié)構(gòu),Wide 側(cè)通常會(huì)放各種偏置的特征,線上直接可以裁剪掉,通過(guò)這種偏序排序的方式來(lái)達(dá)到無(wú)偏估計(jì)的效果。 - 最后是序列特征,是非常重要的一類(lèi)用戶(hù)個(gè)性化特征。業(yè)界現(xiàn)在主流的都是做超長(zhǎng)序列的建模,具體的實(shí)驗(yàn)中會(huì)發(fā)現(xiàn),通常長(zhǎng)序列的存儲(chǔ)開(kāi)銷(xiāo)是非常大的。前文中提到我們要達(dá)到性能與效果的折中。長(zhǎng)序列可以通過(guò)離線預(yù)計(jì)算好,短序列可以在線實(shí)時(shí)計(jì)算,所以我們往往會(huì)結(jié)合兩種方式。通過(guò)門(mén)控網(wǎng)絡(luò)來(lái)決策用戶(hù)當(dāng)前更偏向于短序列還是長(zhǎng)序列的方式,來(lái) balance 長(zhǎng)期興趣以及短期興趣。同時(shí)需要注意,隨著序列拉長(zhǎng)其邊際收益是遞減的。
3、推薦漏斗最優(yōu)化的特征體系
整個(gè)推薦漏斗是分層設(shè)計(jì)的,每一層都做了過(guò)濾與截?cái)唷H绾卧谶^(guò)濾截?cái)嗟姆謱釉O(shè)計(jì)中達(dá)到效率最高呢?前面也提到會(huì)做模型的聯(lián)合訓(xùn)練。另外,特征設(shè)計(jì)的維度上也可以做相關(guān)的設(shè)計(jì)。這里也存在一些問(wèn)題:
- 首先,為了提升漏斗通過(guò)率,召回和粗排直接擬合精排打分或者精排序,會(huì)導(dǎo)致馬太效應(yīng)進(jìn)一步加強(qiáng),此時(shí),召回/粗排模型并非用戶(hù)行為驅(qū)動(dòng)學(xué)習(xí)過(guò)程,而是擬合漏斗。這不是我們希望看到的結(jié)果。正確的做法是推薦漏斗各層模型解耦合設(shè)計(jì),而不是直接擬合下層的漏斗。
- 第二是粗排方面,理論上與召回靠得更近,本質(zhì)上相當(dāng)于是統(tǒng)一召回的出口。所以粗排這一層,可以引入更多召回的信號(hào),例如協(xié)同推薦的人群投票信號(hào),圖索引的路徑等等,以便粗排能夠與召回隊(duì)列聯(lián)合優(yōu)化,使得進(jìn)入精排的資源的召回效率能夠最優(yōu)化。
- 第三是計(jì)算復(fù)用,在降低計(jì)算量的同時(shí)又能夠提升模型的魯棒性。此處要注意的是,常有級(jí)聯(lián)類(lèi)的模型,第二級(jí)模型使用第一級(jí)模型的打分作為特征,這種做法的風(fēng)險(xiǎn)很大,因?yàn)槟P妥罱K的預(yù)估值是不穩(wěn)定的分布,如果直接使用第一級(jí)模型的預(yù)估值當(dāng)做特征,會(huì)使得下層模型有非常嚴(yán)重的耦合,造成系統(tǒng)的不穩(wěn)定。
三、算法
接下來(lái)介紹核心算法的設(shè)計(jì)。
1、系統(tǒng)視角下的排序模型
首先來(lái)看推薦排序模型。一般認(rèn)為,精排是推薦系統(tǒng)中精度最高的模型。業(yè)界有一種觀點(diǎn)認(rèn)為粗排附屬于精排,對(duì)著精排學(xué)就可以了,但具體實(shí)踐中發(fā)現(xiàn)粗排并不能直接對(duì)著精排來(lái)學(xué),可能會(huì)帶來(lái)很多問(wèn)題。
從上圖可以看出,粗排與精排的定位不同。一般來(lái)說(shuō),粗排的訓(xùn)練樣本與精排一樣,也是展現(xiàn)樣本。每次召回候選供粗排打分的結(jié)果有數(shù)萬(wàn)條之多,這里面 99% 以上的資源是沒(méi)有被展現(xiàn)的,而模型僅使用最終展現(xiàn)的十幾條資源來(lái)做訓(xùn)練,這就打破了獨(dú)立同分布的假設(shè),在離線模型分布差異極大。這種情況在召回是最為嚴(yán)重的,因?yàn)檎倩氐暮蜻x集都是數(shù)百萬(wàn)、數(shù)千萬(wàn)甚至數(shù)億,最終返回的結(jié)果大多數(shù)也都是沒(méi)有被展現(xiàn)的,粗排一樣相對(duì)也比較嚴(yán)重,因?yàn)楹蜻x集通常也在數(shù)萬(wàn)級(jí)別。而精排就相對(duì)好很多,通過(guò)了召回與粗排兩層漏斗后,資源的基礎(chǔ)質(zhì)量是有保證的,它主要做優(yōu)中選優(yōu)的工作。因此,精排在離線分布不一致問(wèn)題不是那么嚴(yán)重,不需要過(guò)多地考慮樣本選擇偏差(SSB)的問(wèn)題,同時(shí)由于候選集合小,可以做重計(jì)算,精排重點(diǎn)在于特征交叉,序列建模等。
但是粗排這一層,并不能直接對(duì)著精排學(xué),也不能直接做類(lèi)似于精排的重計(jì)算,因?yàn)槠溆?jì)算量是精排的數(shù)十倍,如果直接用精排的設(shè)計(jì)思路,線上的機(jī)器是完全不可承受的,所以粗排需要高度的技巧平衡性能與效果,它是一個(gè)輕量級(jí)模塊。粗排迭代的重點(diǎn)與精排不同,主要解決樣本選擇偏差,召回隊(duì)列優(yōu)化等問(wèn)題。由于粗排與召回關(guān)系緊密,更關(guān)注的是返回精排的數(shù)千資源的平均質(zhì)量,而不是精確的排序關(guān)系。精排則是與重排關(guān)系更緊密,更關(guān)注的是單點(diǎn)的 AUC 精度。
因此在粗排的設(shè)計(jì)上,更多的是做樣本的選擇與生成,和泛化特征與網(wǎng)絡(luò)的設(shè)計(jì)。而精排的設(shè)計(jì)可以做復(fù)雜的多階交叉特征、超長(zhǎng)序列建模等等。
2、超大規(guī)模離散 DNN 的泛化
前面介紹的是宏觀層面的,下面來(lái)看一下微觀層面。
具體到模型的訓(xùn)練過(guò)程,目前業(yè)界主流的是使用超大規(guī)模的離散 DNN,泛化問(wèn)題會(huì)是比較嚴(yán)重的。因?yàn)槌笠?guī)模離散 DNN,通過(guò) embedding 層,主要做的是記憶的功能。參見(jiàn)上圖,整個(gè) embedding 空間是非常龐大的矩陣,通常都是千億或者萬(wàn)億行,1000 列。所以模型訓(xùn)練都是全分布式,數(shù)十乃至上百臺(tái) GPU 做分布式訓(xùn)練。
理論上,對(duì)于這么大的矩陣,并不會(huì)直接做暴力計(jì)算,而是采用類(lèi)似矩陣分解的操作。當(dāng)然這個(gè)矩陣分解和標(biāo)準(zhǔn)的 SVD 矩陣分解并不一樣,這里的矩陣分解是先學(xué)到低維的表征,通過(guò) slot 之間的 parameter 的 share 來(lái)降低計(jì)算跟存儲(chǔ)量,也就是分解成兩個(gè)矩陣的 learning 的過(guò)程。首先是特征、表征矩陣,會(huì)學(xué)習(xí)特征跟低維嵌入的關(guān)系,這個(gè)嵌入很低,通常會(huì)選擇十維左右的嵌入。另外一個(gè)是嵌入和神經(jīng)元矩陣,每個(gè)槽位之間的權(quán)重是共享的。通過(guò)這種方式既降低了存儲(chǔ)量,又能夠提升效果。
低維的嵌入學(xué)習(xí)是離線 DNN 優(yōu)化泛化能力的關(guān)鍵,它等價(jià)于做稀疏矩陣分解,因此,整個(gè)模型泛化能力提升的關(guān)鍵就在于如何使得參數(shù)規(guī)模與樣本數(shù)能夠更好地匹配。
從多個(gè)方面來(lái)進(jìn)行優(yōu)化:
- 首先是從嵌入維度方面,因?yàn)椴煌卣鞯恼宫F(xiàn)量差異是很大的,有些特征的展現(xiàn)量非常高,比如頭部的資源、頭部的用戶(hù),可以使用更長(zhǎng)的嵌入維度,這就是常見(jiàn)的動(dòng)態(tài)嵌入維度的思想,即展現(xiàn)越充分嵌入維度越長(zhǎng)。當(dāng)然如果要做得更 fancy,可以用 autoML 等方式做強(qiáng)化學(xué)習(xí),自動(dòng)搜索最優(yōu)嵌入長(zhǎng)度。
- 第二個(gè)方面是創(chuàng)建閾值,由于不同資源展現(xiàn)量不同,因此,何時(shí)為特征創(chuàng)建嵌入表征也是需要考量的。
3、過(guò)擬合問(wèn)題
業(yè)界通常是采用兩階段訓(xùn)練抗過(guò)擬合的方式。整個(gè)模型由兩層組成,一個(gè)是很大的離散矩陣層,另一個(gè)是很小的稠密參數(shù)層。離散矩陣層是非常容易過(guò)擬合的,所以業(yè)界實(shí)踐通常都是采用 One Pass TrAIning,即 online learning,所有的數(shù)據(jù)都過(guò)一遍,并不會(huì)像學(xué)術(shù)界一樣的做 batch training。
另外,業(yè)界通常會(huì)利用時(shí)序 Validation Set 來(lái)解決稀疏層的 overfitting 問(wèn)題。把整個(gè)訓(xùn)練數(shù)據(jù)集按時(shí)間維度切分成很多個(gè) Delta,T0,T1,T2,T3 不同的 Delta。每次訓(xùn)練是用前幾小時(shí)訓(xùn)練好的離散參數(shù)層固定住,再用下一個(gè) Delta 的數(shù)據(jù) f.NETune dense 網(wǎng)絡(luò)。也就是通過(guò)固定稀疏層、重訓(xùn)其它參數(shù)的方式來(lái)緩解模型的過(guò)擬和問(wèn)題。
這種做法也會(huì)帶來(lái)另外一個(gè)問(wèn)題,因?yàn)橛?xùn)練是切分開(kāi)的,并且每次都需要固定 T0 時(shí)刻的離散參數(shù),再用 t+1 時(shí)刻重訓(xùn) join 階段,這樣會(huì)拖累整個(gè)訓(xùn)練速度,帶來(lái)擴(kuò)展性方面的挑戰(zhàn)。所以近年來(lái)都是采用單階段訓(xùn)練,即將離散表征層與稠密網(wǎng)絡(luò)層在一個(gè) Delta 中同時(shí)更新。而單階段訓(xùn)練也存在一個(gè)問(wèn)題,因?yàn)檎麄€(gè)模型除了 embedding 特征之外,還有很多連續(xù)值特征,這些連續(xù)值特征會(huì)統(tǒng)計(jì)每個(gè)離散特征的展現(xiàn)點(diǎn)擊情況,因此,可能帶來(lái)數(shù)據(jù)穿越的風(fēng)險(xiǎn)。所以在具體實(shí)踐時(shí),第一步會(huì)先除掉統(tǒng)計(jì)量的特征,第二步使得稠密網(wǎng)絡(luò)與離散表征一起訓(xùn)練,使用單階段的方式訓(xùn)練。另外整個(gè)嵌入的長(zhǎng)度,都是自動(dòng)可伸縮的方式。通過(guò)這一系列方法,可以使得模型訓(xùn)練提速 30% 左右。實(shí)踐表明,該方法過(guò)擬合程度很輕微,訓(xùn)練跟測(cè)試的 AUC 的差距也都是 1/ 1000 或者更低的程度。
四、架構(gòu)
接下來(lái)介紹架構(gòu)設(shè)計(jì)上的思考和經(jīng)驗(yàn)。
1、系統(tǒng)分層設(shè)計(jì)原理
系統(tǒng)設(shè)計(jì)的核心原則是分治法。召回需要有多個(gè)通道,核心的目標(biāo)是要提升召回率,以及召回資源的豐富程度。同時(shí)召回也要考慮探索跟利用的問(wèn)題,是推薦效果的基礎(chǔ)保證。粗排做第一層的過(guò)濾,主要做輕量級(jí)點(diǎn)預(yù)估,承上啟下。精排通常是做重計(jì)算,也是做點(diǎn)預(yù)估,跟重排之間的關(guān)系非常緊密,通常會(huì)使用非常復(fù)雜的結(jié)構(gòu),也是業(yè)界研究的重點(diǎn)。重排是最后一層,重排是具體面對(duì)用戶(hù)的,決定了最終的展現(xiàn)序列,基于精排的結(jié)果考慮上下文然后來(lái)做復(fù)雜的序列預(yù)估,即 list wise 的排序。重排序需要考慮很多業(yè)務(wù)的約束,里面有很多規(guī)則,包括打散、LCN、退場(chǎng)等等,是規(guī)則與模型雙重驅(qū)動(dòng)的模塊。
推薦系統(tǒng)各層的目標(biāo)基本一致,但是各層側(cè)重不太一樣。召回和粗排側(cè)重的是泛化以及召回率,精排側(cè)重的是單點(diǎn) AUC 的精度,重排側(cè)重的是整體序列最優(yōu)。從數(shù)據(jù)上來(lái)看,越靠近召回粗排,越泛化,越靠近精排重排,越要求精度。越靠近召回源,性能受限越嚴(yán)重,因?yàn)楹蜻x資源越多計(jì)算量越大。粗排只需要對(duì)齊精排是一個(gè)誤區(qū),粗排需要考慮與精排的一致性,但是并不能只對(duì)齊精排。如果粗排什么都不做,只是做對(duì)齊精排,會(huì)帶來(lái)非常嚴(yán)重的馬太效應(yīng)。因?yàn)榫挪皇?ground truth,用戶(hù)的行為才是,需要學(xué)習(xí)好用戶(hù)行為,而不是學(xué)習(xí)精排,這是很重要的一點(diǎn)提示。
2、多階段模型聯(lián)合訓(xùn)練
精排跟重排之間的關(guān)系是非常緊密的,早年重排是直接用精排的打分來(lái)做訓(xùn)練的,一方面耦合很?chē)?yán)重,另一方面直接使用精排打分來(lái)做訓(xùn)練,很容易產(chǎn)生線上的波動(dòng)。
百度鳳巢 CTR 3.0 精排跟重排聯(lián)合訓(xùn)練項(xiàng)目,就非常巧妙地利用模型同時(shí)訓(xùn)練避免打分耦合的問(wèn)題。該項(xiàng)目將精排子網(wǎng)絡(luò)的隱層及內(nèi)部打分,都作為重排子網(wǎng)絡(luò)的特征,然后,將精排與重排子網(wǎng)絡(luò)拆開(kāi),分別部署于各自模塊。一方面可以很好地復(fù)用中間結(jié)果,不會(huì)出現(xiàn)打分耦合帶來(lái)的波動(dòng)問(wèn)題,同時(shí)對(duì)于重排的精度又會(huì)有百分位的提升。這也是當(dāng)年百度最高獎(jiǎng)的子項(xiàng)目之一。
另外,注意該項(xiàng)目并不是 ESSM,ESSM 是 CTCVR 建模,是多目標(biāo)建模,而 CTR3.0 聯(lián)合訓(xùn)練主要解決打分耦合和重排模型精度的問(wèn)題。
此外,要對(duì)召回和粗排做解耦合,因?yàn)樾玛?duì)列加入進(jìn)來(lái),對(duì)于新隊(duì)列可能會(huì)不太公平。因此,提出了隨機(jī)掩碼的方式,即隨機(jī) mask 掉一部分特征,使得耦合度不會(huì)那么強(qiáng)。
3、稀疏路由網(wǎng)絡(luò)
最后再來(lái)看一下部署在線上的過(guò)程。模型參數(shù)規(guī)模都是千億到萬(wàn)億量級(jí),目標(biāo)也非常多,直接進(jìn)行線上部署開(kāi)銷(xiāo)是非常大的,不能只考慮效果,不考慮性能。有一種比較好的方式就是彈性計(jì)算,類(lèi)似于 Sparse MOE 的思想。
粗排接入了非常多的隊(duì)列,有數(shù)十個(gè)甚至數(shù)百個(gè)隊(duì)列。這些隊(duì)列對(duì)線上的價(jià)值(LTV)是不一樣的,由流量?jī)r(jià)值層來(lái)計(jì)算不同召回隊(duì)列對(duì)線上點(diǎn)擊時(shí)長(zhǎng)的價(jià)值。其核心思想是召回隊(duì)列整體的貢獻(xiàn)度越大,越可以享受更復(fù)雜的計(jì)算。從而使得有限的算力能夠服務(wù)于更高價(jià)值的流量。所以我們也沒(méi)有采用傳統(tǒng)的蒸餾的方式,而是采用類(lèi)似 Sparse MOE 的思想來(lái)做彈性計(jì)算,即策略跟架構(gòu) co-design 的設(shè)計(jì),使得不同的召回隊(duì)列能夠使用最適合的資源網(wǎng)絡(luò)進(jìn)行計(jì)算。
五、未來(lái)計(jì)劃
眾所周知,現(xiàn)在已經(jīng)進(jìn)入 LLM 大模型時(shí)代。百度對(duì)下一代基于 LLM 大語(yǔ)言模型的推薦系統(tǒng)的探索將會(huì)從三個(gè)方面來(lái)展開(kāi)。
第一方面是希望模型從基礎(chǔ)的預(yù)測(cè)升級(jí)到能夠做決策。比如經(jīng)典的冷啟資源高效率探索,沉浸式序列推薦反饋,以及從搜索到推薦的決策鏈等等重要的問(wèn)題,都可以借助大模型來(lái)進(jìn)行決策。
第二方面是從判別到生成,現(xiàn)在整個(gè)模型都是判別式的,未來(lái)會(huì)探索生成式推薦的方式,比如自動(dòng)生成推薦理由,對(duì)長(zhǎng)尾數(shù)據(jù)基于 prompt 來(lái)做數(shù)據(jù)自動(dòng)增強(qiáng),以及生成式的檢索模型。
第三方面是從黑盒到白盒,傳統(tǒng)做推薦系統(tǒng),大家常說(shuō)神經(jīng)網(wǎng)絡(luò)是煉丹術(shù),是黑盒的,是否有可能向白盒化方向探索,也是未來(lái)的重要工作之一。比如基于因果,探究用戶(hù)行為狀態(tài)遷移背后的原因,推薦公平性方面做更好的無(wú)偏估計(jì),以及 Multi Task machine Learning 的場(chǎng)景上能夠做更好的場(chǎng)景自適應(yīng)。