論文:

論文地址:https://dl.acm.org/doi/pdf/10.1145/3340531.3412162
論文題目:《Sample Optimization For Display Advertising》
這篇論文是百度發(fā)表在CIKM上面的一篇關(guān)于召回模型如何選取訓(xùn)練樣本的佳作,主要圍繞著怎么在召回任務(wù)中構(gòu)建負(fù)樣本展開(kāi),通過(guò)幾種方式來(lái)確定訓(xùn)練的負(fù)樣本。在我看來(lái),如果排序階段是模型的藝術(shù),那么召回階段就是樣本選擇的藝術(shù),這篇論文跟我們前面提到的FB的EBR論文的負(fù)樣本選擇有著異曲同工之妙,對(duì)于做排序算法的人來(lái)看也可以受益匪淺。
一 、背景
一段小故事,之前我問(wèn)過(guò)我們公司做排序算法的一個(gè)員工,我問(wèn)他“排序算法中的負(fù)樣本怎么選取”,他回答的是“曝光未點(diǎn)擊”,我又問(wèn)他“那么召回模型中的負(fù)樣本該怎么選呢”,他思考了下“也是曝光未點(diǎn)擊”。
這是真真切切我身邊發(fā)生的事情,在整個(gè)推薦系統(tǒng)的全鏈路中,每個(gè)人都會(huì)負(fù)責(zé)自己的模塊,有專門做排序算法的,有專門做召回的,雖然都是鏈路中的一環(huán),但是還是大相徑庭的。比如,排序算法中的模型往往更復(fù)雜,特征更多,召回中模型會(huì)更加簡(jiǎn)單,特征用的也比較少。當(dāng)然,除了在模型和特征方面的不同外,兩個(gè)任務(wù)在訓(xùn)練樣本的選擇上也是有很大的不同的。
在排序算法中,負(fù)樣本一般情況是選擇曝光未點(diǎn)擊,雖然曝光未點(diǎn)擊不一定是用戶不喜歡,但是總體上也較為符合負(fù)樣本的特質(zhì)的,而且這部分的樣本也很容易獲取到。
在召回算法中,我們的負(fù)樣本該如何選取呢?可以跟排序模型一樣選擇曝光未點(diǎn)擊嘛?
答案是不可以。
有人這時(shí)候可能就會(huì)問(wèn)為什么排序模型可以選取曝光未點(diǎn)擊,召回就不行呢,未點(diǎn)擊的樣本不就是天生的負(fù)樣本嗎?
這里給出幾個(gè)解釋:
1.排序算法是優(yōu)中選優(yōu),曝光未點(diǎn)擊天生就是負(fù)樣本,召回算法面對(duì)的候選樣本太多,魚(yú)龍混雜,更需要具備在更大的數(shù)據(jù)集中增加自己的“見(jiàn)識(shí)”,也就是更需要見(jiàn)見(jiàn)那些曝光沒(méi)那么高的樣本
2.曝光未點(diǎn)擊的樣本已經(jīng)是經(jīng)過(guò)召回,排序選出來(lái)的系統(tǒng)認(rèn)為的用戶喜歡的物品,也就是說(shuō)這些樣本已經(jīng)是上一個(gè)版本召回模型選出來(lái)正樣本了,如果我們把這些樣本當(dāng)作新召回模型的負(fù)樣本,就有矛盾了
3.如果選擇曝光未點(diǎn)擊的樣本作為負(fù)樣本,那么召回模型就會(huì)陷入“一葉障目,不見(jiàn)泰山”的困境,也就是說(shuō)模型只會(huì)鑒別那些高曝光的樣本了,對(duì)于那些沒(méi)出現(xiàn)過(guò),少出現(xiàn)的樣本,它根本區(qū)分不出來(lái)這是正樣本還是負(fù)樣本
4.最重要的還是因?yàn)閷?shí)驗(yàn)中,這么做的話效果很差
這里給出的四個(gè)原因都是一些經(jīng)驗(yàn)之談和看各個(gè)博客知道的結(jié)論,現(xiàn)在你應(yīng)該有了一點(diǎn)對(duì)于召回模型應(yīng)該如何選取負(fù)樣本的猜想了,沒(méi)錯(cuò),一般我們對(duì)于召回的負(fù)樣本,都是用隨機(jī)負(fù)采樣的方式,這也是大多數(shù)做召回算法的人會(huì)選擇的辦法。在fb的ebr論文中還加入了hard sample作為負(fù)樣本,也就是那些跟正樣本比較相近的樣本作為負(fù)樣本,用以增加模型對(duì)于正負(fù)樣本的區(qū)分能力。
回過(guò)來(lái)說(shuō)一下我們今天要介紹的這篇論文,論文的題目也通過(guò)兩個(gè)單詞來(lái)告知了這篇論文的主要工作就是:樣本的優(yōu)化,所以我們待著剛剛對(duì)于召回樣本選取的理解來(lái)看看百度是如何進(jìn)行樣本優(yōu)化的。
二 、廣告系統(tǒng)中的一些挑戰(zhàn)
首先,我們來(lái)看一下整個(gè)廣告系統(tǒng)的架構(gòu)圖:

總體還是分成召回跟排序兩部分,召回會(huì)使用itemcf,usercf以及神經(jīng)網(wǎng)絡(luò)等多種方式。我們?cè)诘谝徽碌臅r(shí)候已經(jīng)提到了在召回模型是本論文的重點(diǎn),訓(xùn)練好一個(gè)召回模型面臨著一下幾個(gè)挑戰(zhàn):
1.訓(xùn)練數(shù)據(jù)跟線上數(shù)據(jù)的分布不一致,也可以稱為樣本選擇偏差問(wèn)題。由于用戶點(diǎn)擊的廣告只占總廣告的一小部分,也就是我們訓(xùn)練只用到的一小部分?jǐn)?shù)據(jù)集,但是我們?cè)诰€上預(yù)測(cè)的時(shí)候是在整個(gè)數(shù)據(jù)集上預(yù)測(cè),所以就有了樣本選擇偏差問(wèn)題。
2.長(zhǎng)尾分布問(wèn)題。這個(gè)問(wèn)題不管是在推薦系統(tǒng)還是廣告系統(tǒng)中都是存在的,在廣告系統(tǒng)中bid price高的廣告會(huì)占據(jù)很大的曝光,有一些bid price很高的物品也會(huì)被標(biāo)記為負(fù)樣本,這就會(huì)導(dǎo)致這些原本定義上是正樣本的廣告被當(dāng)成了負(fù)樣本,這樣這些廣告的曝光點(diǎn)擊自然就降低了,平臺(tái)賺的錢也就少了。
3.曝光未點(diǎn)擊的廣告不一定是用戶不喜歡的。
4.數(shù)據(jù)稀疏問(wèn)題。正負(fù)樣本比例太大
針對(duì)這些問(wèn)題,百度提出了幾種樣本優(yōu)化的方法。
三、樣本優(yōu)化的方法
3.1?Weighted Random Negative Sampling
一般可以對(duì)一個(gè)正樣本通過(guò)隨機(jī)負(fù)采樣的方法選取k個(gè)負(fù)樣本,但是由于數(shù)據(jù)呈長(zhǎng)尾分布,所以百度采用的是加權(quán)的隨機(jī)負(fù)采樣,也叫做分片加權(quán)負(fù)采樣:a piece-wise weighted negative sampling method,具體而言:
我們根據(jù)廣告的曝光頻率,以為分解點(diǎn),把廣告分成兩部分
,然后我們隨機(jī)生成一個(gè)0到1之間的隨機(jī)數(shù)p,如果p <?
,我們就從
中隨機(jī)選取一個(gè)廣告作為負(fù)樣本,其中

如果p >?,從
中基于一元模型分布(unigram distribution)采樣一個(gè)負(fù)樣本廣告,具體的采樣概率如下:

跟word2vec中的采樣一樣。
由于Al的數(shù)量遠(yuǎn)大于Ah的數(shù)量,與原始的負(fù)采樣方法相比,我們的策略在保留原始屬性的同時(shí)顯著減少了內(nèi)存使用。
3.2? Real-Negative Subsampling
在百度的鳳巢系統(tǒng)統(tǒng)計(jì)中,總的ctr值大概只有0.03%,少數(shù)的頭部廣告會(huì)占據(jù)很大的曝光,它們可能同時(shí)出現(xiàn)在正樣本(曝光并點(diǎn)擊)和真實(shí)負(fù)樣本(曝光但未點(diǎn)擊)中。 我們不希望這些頭部廣告過(guò)多出現(xiàn)在負(fù)樣本中,因?yàn)樗鼈兺ǔ>哂泻芨叩纳虡I(yè)價(jià)值,所以會(huì)對(duì)這些頭部廣告的負(fù)樣本進(jìn)行降采樣,具有高曝光的廣告的負(fù)樣本,基于以下的概率進(jìn)行拋棄:

f是曝光的頻率,也就是說(shuō)曝光越多的廣告的p就越大,那么它從負(fù)樣本集合中被拋棄的概率就越大。
實(shí)驗(yàn)中也證明了,這種樣本優(yōu)化方法可以顯著改善離線召回率和在線CPM指標(biāo)。
3.3?Sample refinement with PU Learning
對(duì)于曝光為點(diǎn)擊的樣本,我們之前在第一章中已經(jīng)說(shuō)了,是不能直接拿來(lái)作為召回的負(fù)樣本的,那么如果這真的要使用這些樣本,應(yīng)該怎么做呢,來(lái)看看百度的處理方式吧。
由于曝光未點(diǎn)擊的廣告我們并不能直接的定性為真正的負(fù)樣本,所以百度將樣本劃分為了標(biāo)記的樣本 (點(diǎn)擊的廣告,這部分已經(jīng)完全的確定了是正樣本),另一部分為未標(biāo)記樣本,這部分由可靠的負(fù)樣本和有可能是正樣本的廣告組成。百度要做的就是針對(duì)未標(biāo)記的樣本,將真正的負(fù)樣本從中劃分出來(lái)。
使用的方法是"spy technique":

具體而言:
1.從正樣本集合P中選取spy set:S,然后把S加入到為標(biāo)記的集合U中
2.正樣本集合P剔除S后的樣本作為正樣本,的樣本作為負(fù)樣本,然后訓(xùn)練一個(gè)SVM分類模型
3.用訓(xùn)練好的SVM分類器給U中的樣本打分,看看這些樣本有多大的概率稱為正樣本
4. 計(jì)算spy set中樣本的平均點(diǎn)擊率
5.將U中點(diǎn)擊率小于spy set平均點(diǎn)擊率的樣本的作為真正的負(fù)樣本RN
最后即用RN和P來(lái)訓(xùn)練召回模型。
可以看到百度針對(duì)我們?cè)谇懊嬲f(shuō)的不能把曝光未點(diǎn)擊的廣告直接作為負(fù)樣本的改進(jìn)方法是:選取那些真正的負(fù)樣本。
3.4??Fuzzy Positive Sample Augmentation
為了緩解數(shù)據(jù)稀缺問(wèn)題,百度引入了模糊邏輯來(lái)增加正樣本。 在最終廣告列表中,僅向用戶顯示前幾個(gè)廣告,而其余的則可能不會(huì)顯示。 盡管這些隱藏的廣告不能直接用作訓(xùn)練樣本,但它們已經(jīng)通過(guò)了候選集生成和排序階段,并且更有可能滿足用戶的興趣。
為了增加正樣本,我們解析未顯示的事件日志,并在最終列表中收集所有三元組(用戶,廣告,CPM),并且CPM高于預(yù)定義的閾值。 我們將這些三元組(用戶,廣告,每千次展示費(fèi)用/出價(jià))稱為“模糊的正樣本”,并將其添加到正樣本的訓(xùn)練集中。 值得注意的是,由于模糊正樣本的標(biāo)簽不是單擊記錄,因此其標(biāo)簽小于1。
這個(gè)做法跟FB在ebr中的做法一樣,通過(guò)把曝光的物品也作為正樣本太擴(kuò)大正樣本集。
3.5?Sampling with Noise Contrastive Estimation (NCE)
NCE論文中詳細(xì)的描述了如何構(gòu)建生成模型來(lái)生成負(fù)樣本,感興趣的可以自己去看看這論文,這里簡(jiǎn)單的說(shuō)一下百度的做法,針對(duì)每個(gè)正樣本,我們生成k=5的負(fù)樣本來(lái)擴(kuò)大訓(xùn)練集。
關(guān)于這種方法,本人覺(jué)得還是不太靠譜,因?yàn)樨?fù)樣本的選取在廣告或者推薦中都有很大的選擇空間,還不至于用到NCE來(lái)人工生成負(fù)樣本。
四、實(shí)驗(yàn)結(jié)果

評(píng)價(jià)標(biāo)準(zhǔn)是:


可以看到如果用上所有的方法后,auc是不斷減少,CPM是增加的,這也說(shuō)明了這些樣本方法的疊加可以帶來(lái)收益上的提升。