召回粗排精排-级联漏斗(上)
文 | 水哥
源 | 知乎
saying
1. 把點(diǎn)擊多的item曝光提升是推薦模型的基本能力,也是基本要求。后驗(yàn)不好的曝光提高也可能是好模型,后驗(yàn)好的曝光不提高,可以開(kāi)除推薦模型了
2. 在起量階段,各路item需要爭(zhēng)寵,誰(shuí)能最快博取精排的歡心,誰(shuí)就有可能在冷啟動(dòng)階段占據(jù)壓倒性?xún)?yōu)勢(shì)
3. 廣告主很像dota教練,他們深信一個(gè)原則:陣容(素材)沒(méi)問(wèn)題,下把干(投放)回來(lái)
4. 粗排沒(méi)別的任務(wù),就是向上管理
上一講我們提到,整個(gè)鏈路是一個(gè)大漏斗,前面召回入口最多,最后精排僅僅輸出一點(diǎn)點(diǎn),在這一講中我們會(huì)對(duì)漏斗的連接部分做更多的分析。包括上一講中很多同學(xué)都想問(wèn)的粗排,召回的學(xué)習(xí)目標(biāo),評(píng)價(jià)標(biāo)準(zhǔn)分別是什么,也會(huì)在這一講和下一講中詳細(xì)講解。
首先我們要分析漏斗的各個(gè)環(huán)節(jié),學(xué)習(xí)的目標(biāo)是什么。雖然整個(gè)鏈路正著往后推理,但是改進(jìn)的時(shí)候往往是倒著往前的,原因我們?cè)谏弦恢v提到過(guò)。假如想加某種特征,那么先是精排驗(yàn)證有效,然后粗排。召回可以不按照這個(gè)規(guī)則走,因?yàn)檎倩睾芏鄷r(shí)候是覺(jué)得上面的隊(duì)列里缺少哪一方面的東西,才多一路的。
各個(gè)環(huán)節(jié)的學(xué)習(xí)目標(biāo)及問(wèn)題
精排的學(xué)習(xí)目標(biāo):后驗(yàn)
以點(diǎn)擊率(CTR)預(yù)估為例,精排學(xué)習(xí)的目標(biāo)的范圍一般是所有存在曝光的樣本。有曝光但沒(méi)有點(diǎn)擊的是負(fù)樣本,有曝光也有點(diǎn)擊的就是正樣本。在其他目標(biāo)中可以以此類(lèi)推:比如轉(zhuǎn)化率(CVR)預(yù)估,點(diǎn)擊了沒(méi)轉(zhuǎn)化的是負(fù)樣本,點(diǎn)擊了,也轉(zhuǎn)化了就是正樣本。
精排的評(píng)估方式:AUC/GAUC
說(shuō)白了,精排還是一個(gè)排序模型,排序模型輸出的結(jié)果,線(xiàn)下都可以由AUC來(lái)進(jìn)行評(píng)估。在[1]這篇論文中,阿里的工程師們提出了另一個(gè)評(píng)價(jià)指標(biāo):Group AUC(GAUC),如下:
在這個(gè)指標(biāo)中,w代表的是曝光數(shù)或者點(diǎn)擊數(shù)。這個(gè)指標(biāo)是對(duì)用戶(hù)的行為做了加權(quán),比較偏向高活躍的用戶(hù)。
線(xiàn)上指標(biāo)則根據(jù)業(yè)務(wù)各有不同,比如在短視頻平臺(tái)上,推薦看的就是觀(guān)看時(shí)長(zhǎng),而廣告看的則是eCPM(出價(jià)乘以CTR乘以CVR)。在電商平臺(tái)上看的是GMV(Gross Merchandise Volume,商品交易總額)。線(xiàn)上提升是由線(xiàn)下的一個(gè)一個(gè)模型提升帶來(lái)的。比如在廣告場(chǎng)景下,既要提升CTR,也要提升CVR,也要改善出價(jià)機(jī)制。推薦場(chǎng)景下,既要提升對(duì)于觀(guān)看時(shí)長(zhǎng)的預(yù)估,也要提升用戶(hù)正負(fù)反饋(比如點(diǎn)贊關(guān)注這些)的預(yù)估。
精排的樣本組成
在精排中,每次行為都是一條樣本,最后實(shí)際上是一個(gè)分類(lèi)任務(wù),分為“點(diǎn)擊”或者“不點(diǎn)擊”的二分類(lèi)。在一個(gè)點(diǎn)擊率預(yù)估模型中,正樣本是非常稀疏的。對(duì)于模型來(lái)說(shuō),當(dāng)他遇到正樣本的時(shí)候,它必須把這個(gè)結(jié)果反映到當(dāng)前的用戶(hù)和item上。也就是說(shuō),相比于沒(méi)有點(diǎn)擊的樣本,這個(gè)item會(huì)得到模型的認(rèn)可。那么在接下來(lái)的預(yù)估中,這個(gè)item自然會(huì)被更加青睞,排序更加靠前。這樣就使得item的曝光能力提升。這樣我們就歸納出了推薦系統(tǒng)的一個(gè)基本性質(zhì):正反饋的能力。指的是對(duì)于一開(kāi)始后驗(yàn)較好的item,他們的排序更靠前,曝光會(huì)進(jìn)一步提升。如果去掉一開(kāi)始這三個(gè)字,這句話(huà)就是一句廢話(huà)。但是所謂“一開(kāi)始”就表明該item不一定是一個(gè)真正好的素材,而這會(huì)引發(fā)下面的問(wèn)題。
(這里留一個(gè)思考題,這個(gè)正反饋會(huì)無(wú)限地持續(xù)下去嗎?答案我們?cè)谖磥?lái)專(zhuān)門(mén)講item的生命周期中來(lái)揭曉)
精排的問(wèn)題1:ground truth不夠置信
我們想評(píng)價(jià)一個(gè)item的質(zhì)量是否好,其實(shí)是需要一定量的曝光量才能說(shuō)明。但是系統(tǒng)整體的曝光機(jī)會(huì)往往是有限的。給你的曝光多了必然意味著對(duì)他的曝光機(jī)會(huì)少了。因此有很多item在沒(méi)有得到充分曝光的情況下就被判了死刑。有的item可能不錯(cuò),但是在一開(kāi)始因?yàn)橛悬c(diǎn)隨機(jī)性,或者精排沒(méi)預(yù)估的比較準(zhǔn),導(dǎo)致最初的量沒(méi)起來(lái)。當(dāng)最初的量沒(méi)起來(lái)的時(shí)候,別的起來(lái)了的item迅速博取了精排的歡心,這個(gè)不幸運(yùn)的item就只能被打入冷宮了。如下圖
這個(gè)問(wèn)題不僅我們知道,廣告主們也知道。他們不僅知道,他們還會(huì)不服。他們當(dāng)然會(huì)優(yōu)化素材,但同時(shí)也會(huì)進(jìn)行大量的“重開(kāi)”,即同樣的素材內(nèi)容,換一個(gè)id再來(lái)一遍(當(dāng)id變成新的,系統(tǒng)就會(huì)把它當(dāng)做新的重新開(kāi)始,這涉及到后面要講的冷啟動(dòng)問(wèn)題)。這就是所謂的“陣容沒(méi)問(wèn)題,下把干回來(lái)”。當(dāng)大量的廣告主這樣做了之后,平臺(tái)資源就會(huì)被極大的浪費(fèi),因此平臺(tái)也會(huì)做各種方法來(lái)阻止這件事情。所以我們也能看到,平臺(tái)和金主爸爸有時(shí)候也存在一種博弈。
精排的問(wèn)題2:自嗨
從上面的敘述中,可以看出精排學(xué)習(xí)的目標(biāo)往往有一個(gè)共同的特點(diǎn),就是正負(fù)樣本都來(lái)自于已經(jīng)曝光的樣本,而曝光與否是誰(shuí)決定的呢?是精排自己決定的。這就造成了“自己學(xué)自己”的問(wèn)題,學(xué)習(xí)的目標(biāo)本來(lái)就是自己產(chǎn)生的,在自己原本的大方向上有可能一條路走到黑。設(shè)想有AB兩個(gè)item,實(shí)際上B是一個(gè)更優(yōu)秀的素材,因?yàn)橄到y(tǒng)隨機(jī)性或者精排的缺陷,A獲得了更多的曝光量,而B(niǎo)只獲得了很少的曝光量。而B(niǎo)恰好在這幾個(gè)曝光量中都沒(méi)獲得什么正向反饋。那接下來(lái)B就慘了,根據(jù)我們上面說(shuō)的正反饋特性,A的曝光會(huì)越來(lái)越高,正向的點(diǎn)擊數(shù)據(jù)越來(lái)越多,而B(niǎo)可能就暴斃了。這個(gè)情況如果不斷惡化,推薦系統(tǒng)可能會(huì)陷入局部最優(yōu)中出不來(lái),也就是我們說(shuō)的“自嗨”:它認(rèn)為A好,所以給了A更好的條件,而A自然獲得了更好的反饋,又再一次驗(yàn)證了系統(tǒng)的“正確性”。最終在A比B好的錯(cuò)誤路線(xiàn)上越走越遠(yuǎn)。
那么有什么辦法可以防止這個(gè)情況?一般來(lái)說(shuō)有兩種方法。第一種是策略的干涉。有的策略會(huì)強(qiáng)制一定的探索量,比如上面的B曝光不能低于100,這樣會(huì)緩解一些學(xué)習(xí)錯(cuò)誤的問(wèn)題。可能還是有個(gè)別item的序會(huì)不符合,但是整體上發(fā)生錯(cuò)誤的概率會(huì)變低。另一種做法是開(kāi)辟“隨機(jī)流量”,即有一定比例的請(qǐng)求不通過(guò)任何模型預(yù)估,直接隨機(jī)展示看看點(diǎn)擊率。隨機(jī)流量的結(jié)果一方面可以認(rèn)為是完全真實(shí)的訓(xùn)練樣本,另一方面也可以對(duì)照當(dāng)前模型的效果。
講完了精排部分,我們?cè)賮?lái)講講粗排部分
粗排的學(xué)習(xí)目標(biāo):精排
naive的方案中,粗排也可以直接學(xué)習(xí)后驗(yàn)數(shù)據(jù)。但這不是一個(gè)好主意,你又決定不了輸出,學(xué)精排(領(lǐng)導(dǎo))的做事方法,你優(yōu)化的目標(biāo)精排(領(lǐng)導(dǎo))不認(rèn),還沒(méi)干好自己的本職工作(向上管理)。畢竟后驗(yàn)是精排控制的,粗排只能優(yōu)化級(jí)聯(lián)的下一端。
粗排的學(xué)習(xí)目標(biāo)應(yīng)該是精排的輸出。說(shuō)白了,粗排只是一個(gè)精排的影子,就像上一講提到的,要不是精排吃不下,也不會(huì)需要粗排。因此粗排就是跟精排保持步調(diào)一致。如果粗排排序高的,精排排序也高,那么粗排就很好的完成了“幫助精排緩沖”的目的。反之,如果你排序低的,精排反而排的高了,那你不就是跟領(lǐng)導(dǎo)對(duì)著干嘛。
粗排的樣本組成+學(xué)習(xí)方法:Learning to Rank
對(duì)于粗排,我們需要兩個(gè),或者一組樣本。假如精排的隊(duì)列有100個(gè)排好序的樣本,我們可以在前10里面取出一個(gè)A,作為好樣本。再?gòu)暮?0個(gè)取出一個(gè)B當(dāng)做壞樣本。粗排的目標(biāo),就是要讓自己也認(rèn)為A好于B。越是這樣,它就和精排越像,就越能幫精排分擔(dān)壓力。
此時(shí)不是一個(gè)分類(lèi)任務(wù)了,而是learning to rank的一種方法,pairwise的學(xué)習(xí)。目標(biāo)是讓上面的A和B之間差距盡可能大(還可以更徹底的拿出更多樣本,比如精排輸出每10個(gè)里面取一個(gè),得到一個(gè)長(zhǎng)度為10的list,按照l(shuí)ist-wise的方式去學(xué)習(xí)。list-wise比較復(fù)雜,后面再講)。這里先提一下pairwise如何實(shí)現(xiàn)。我們把兩個(gè)樣本記為 和,做差之后帶入一個(gè)binary cross entropy的loss:
其中 代表sigmoid。假如第一個(gè)樣本更好, ,只有前半部分被激活。此時(shí)loss最小就要求 比 大的越多越好。反之亦然。
注意在這樣的設(shè)計(jì)下,我們就把沒(méi)有曝光的樣本納入訓(xùn)練范圍了。粗排入口比精排大,訓(xùn)練樣本也比它多,這就很合理。
最后用一張圖來(lái)總結(jié)下:
粗排的評(píng)估標(biāo)準(zhǔn):精排
既然粗排學(xué)習(xí)的目標(biāo)是精排的輸出,那么粗排的評(píng)估自然也就是學(xué)精排學(xué)得像不像。在線(xiàn)下可以有兩種指標(biāo)來(lái)評(píng)估。一種是NDCG,它是一種評(píng)價(jià)兩個(gè)排序相似度的指標(biāo),就是把精排輸出的樣本讓粗排過(guò)一遍,看看粗排輸出的排序結(jié)果和精排有多像。
NDCG的具體計(jì)算方式:yone:NDCG及實(shí)現(xiàn)[1]
第二種評(píng)估方式是召回率,或者重疊度(也可以用IOU啥的)。即精排輸出的前K,有多少在粗排輸出的前K里面。這個(gè)也是用來(lái)評(píng)價(jià)兩個(gè)模型輸出像不像。
相比之下,NDCG是一種更細(xì)致的指標(biāo)。我們可以認(rèn)為NDCG不僅僅刻畫(huà)了topK的召回,也刻畫(huà)了top K-1,K-2……等等情況。
講完粗排之后發(fā)現(xiàn)要講的東西太多了,寫(xiě)不下了,我們留(鴿)到下一講吧
下期預(yù)告
推薦系統(tǒng)全鏈路(3):召回粗排精排-級(jí)聯(lián)漏斗(下)
往期回顧
1.召回 粗排 精排,如何各司其職?
2.拍不完的腦袋:推薦系統(tǒng)打壓保送重排策略
3.簡(jiǎn)單復(fù)讀機(jī)LR如何成為推薦系統(tǒng)精排之鋒?
后臺(tái)回復(fù)關(guān)鍵詞【入群】
加入賣(mài)萌屋NLP/IR/Rec與求職討論群
后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)】
獲取ACL、CIKM等各大頂會(huì)論文集!
?
[1]. yone:NDCG及實(shí)現(xiàn) https://zhuanlan.zhihu.com/p/84206752
[2]. Optimized Cost per Click in Taobao Display Advertising
總結(jié)
以上是生活随笔為你收集整理的召回粗排精排-级联漏斗(上)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 搞不懂,为啥现在什么公司都在考算法???
- 下一篇: CV和NLP中的无监督预训练(生成式BE