<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          召回模型中的負樣本構(gòu)造

          共 2870字,需瀏覽 6分鐘

           ·

          2021-12-23 18:42


          最近工作在集中做召回模型,對整個數(shù)據(jù)流、業(yè)務(wù)、模型都有了一些新的認識,打算慢慢整理一下,本文先聊聊召回中負樣本選取的問題。

          1. 簡述召回

          1.1 召回負樣本和精排有什么區(qū)別

          召回/粗排/精排我就不多介紹了,但是可能很多人并不知道不同階段訓(xùn)練樣本有什么差別。對于CTR目標(biāo)最通用的做法:

          • 精排:正樣本-真實點擊 ? 負樣本-真實未點擊

          • 粗排:根據(jù)模型不同有不同的方法,比如使用蒸餾的話和精排樣本一致,非蒸餾也可以用級聯(lián)樣本等,不作此文重點。

          • 召回:正樣本-真實點擊 ?負樣本-真實未點擊+負采樣

          可以看到召回是要做采樣的,其原因是:離線訓(xùn)練數(shù)據(jù)要和線上分布盡可能一致,雖然曝光未點擊肯定是負樣本,但是還有很多視頻未曝光,同時因為推薦系統(tǒng)bias的存在可能某些樣本你永遠學(xué)不到,負采樣的目的就是盡量符合線上真實分布,要讓模型“見見世面“。

          1.2 召回怎么traning和serving

          一般來說工業(yè)界都是多路召回,現(xiàn)在主流比較偏好向量化召回。至于怎么生成向量有很多種方法,比如FM/雙塔等,本質(zhì)都是線上做近鄰索引,因為也不是本文的重點,直接甩幾個鏈接簡單說下

          • 遍歷計算相似度太慢,所以會使用近鄰查找算法,彼此之間各有優(yōu)劣向量召回—近鄰快速查找算法總結(jié)

          • FM/FFM公式里有bias項,在serving的時候也不是單純的 uemb * g_emb,serving時可以做一些簡化聊聊向量化召回的一些工程經(jīng)驗

          • NN雙塔召回和FM相比有優(yōu)勢和劣勢,主要優(yōu)勢在于更容易添加特征和修改模型結(jié)構(gòu),泛化更好,但是可解釋性和資源占用會差一些,對架構(gòu)有要求。

          • 因為做了負采樣,所以預(yù)估的auc會偏高,負采樣的正負例先驗概率之比多了一個r因子,根據(jù)數(shù)據(jù)流正負例拼接的方法是窗口or其他,訓(xùn)練時sample_logit需要做一些改改動,可以自己推一下公式。

          1.3 如何評估召回的效果

          最好肯定是線上ab,但是ps資源和線上流量都有限,最近我也一直在思考怎么離線評估召回,提一些我的想法:

          • 首先auc高并不代表召回的好,實際上好的召回可能auc低一些,但是會召回出更符合真實分布的內(nèi)容,實際工作中auc當(dāng)作參考就好。

          • 拿Top K召回結(jié)果與用戶實際點擊做交集并計算precision/recall,感覺現(xiàn)在大多都是用的這個方法,但是我總感覺極端條件下N路召回全都100%準(zhǔn)確率召回率,那其實5路變成1路就好了,而且完全在擬合精排,又陷入了無探索的困境,因為召回的結(jié)果未被用戶點擊,未必說明用戶不喜歡,而可能是由于該召回結(jié)果壓根沒有給用戶曝光過。

          • 召回diff率。其實我現(xiàn)在還比較喜歡拿這個來預(yù)估要不要上線,因為diff高才有bagging一路召回的價值(當(dāng)然還有是否保送,精排是否能排出來的問題)

          • 人肉debug:最近搞了一個模型,自己經(jīng)常會拿組里同學(xué)的uid來打印召回結(jié)果,然后人肉評估一下靠不靠譜。雖然有點蠢,但是確實能幫我驗證模型/機制做沒做對,也能有個摸底的效果。

          1.4 一些工程上的東西

          • 一般打正label會有回流延遲,所有非正標(biāo)簽要等待一個時間窗口,由此會出現(xiàn)兩個問題,一是可能窗口外正例損失掉了,二是實時性有損,所以有時候正樣本也會發(fā)一次負例。

          • 負樣本應(yīng)該選客戶端負例,而不是服務(wù)端負例,比如服務(wù)端返回了5條視頻但是可能只有2條被看到,則剩下三條實際上沒曝光

          • 用戶最后一次點擊位置之后的展現(xiàn)可以考慮去掉,因為用戶可能壓根沒看

          • 盡量使用線上模型預(yù)測時的特征,而不是離線回溯,因為可能導(dǎo)致某些實時特征和統(tǒng)計特征出現(xiàn)偏差

          2. 一些常用的采樣方法

          其實總結(jié)下來還是提高負例難度,在網(wǎng)上簡單搜了下沒找到比較通用的學(xué)術(shù)落地paper(如果有的話可以留言一下)。隨后看了看公司其他產(chǎn)品線的工作,感覺有一些業(yè)務(wù)邏輯采樣的方式還挺有效的,以及一些樣本拼接和模型traing/ANN的改造也能解決特定的召回問題,不過這部分就不能放外網(wǎng)了,以下是能在公網(wǎng)搜到且我覺得靠譜的三種方法。

          2.1 隨機負采樣

          應(yīng)該是最簡單的一種實現(xiàn)方式,當(dāng)然工程中實現(xiàn)起來也有一些要注意的地方,比如之前mentor讓我看采樣代碼我才發(fā)現(xiàn)一些小細節(jié)。

          但整體來說,隨機負采樣能夠解決本文最開始提到的“開開眼”,但是由于高熱/人群偏差等,純隨機還是不太好,有較大的bias,且負例不夠難,只能學(xué)到粗粒度上差異,對小眾不友好。

          理想情況下,比較強的正/負例讓模型學(xué)到正向特殊性,菜一些的正/負例讓模型見見世面,菜的容易搞,強的怎么弄呢?可以有一些易實現(xiàn)的采樣思路:

          • 熱門物料做正樣本時,要降采樣,防止所有人的召回結(jié)果都集中于少數(shù)熱門物料

          • 當(dāng)熱門物料做負樣本時,要適當(dāng)過采樣,增加負樣本難度

          2.2 業(yè)務(wù)邏輯選取負樣本

          Airbnb在《Real-time Personalization using Embeddings for Search Ranking at Airbnb》一文中的做法。

          • 增加與正樣本同城的房間作為負樣本,增強了正負樣本在地域上的相似性,加大了模型的學(xué)習(xí)難度

          • 增加“被房主拒絕”作為負樣本,增強了正負樣本在“匹配用戶興趣愛好”上的相似性,加大了模型的學(xué)習(xí)難度

          2.3 用上一版召回中后段的樣本作為額外負樣本

          來源是百度Mobius和facebook的[Embedding-based Retrieval in Facebook Search],我感覺make sense,畢竟粗排也有級聯(lián)樣本訓(xùn)得,有沒有效可以之后試試。

          3. 召回搞完后,后續(xù)鏈路要做什么

          新的召回即使效果不錯,但也未必能排出來,主要原因是排序模型是在已有召回算法篩選過的數(shù)據(jù)的基礎(chǔ)上訓(xùn)練出來的。我在實際工作中也遇到了類似情況,明明召回很準(zhǔn),但是排出來的都是靠后比較菜的,所以優(yōu)化召回后,也要對排序、融合公式等進行調(diào)整才能最大化召回的收益,但是每上一個召回都再調(diào)精排和融合公式,還要大流量看AA才能生效,感覺周期太長成本太高。

          我比較粗淺的想法是:

          • 粗排保送一下看看線上消費核心指標(biāo)和其他路召回的對比,如果核心不錯可以放流量看aa是否有放大

          • 先強插或者定坑看一下效果,與保送目的一致,區(qū)別在于粗排保送不能保證精排一定可排出,強插是一定保證可展現(xiàn)的。

          • 如果排序模型本身就可以引入召回的信息,比如DMR模型把match和rank融合到一起,可能會效果不錯。因為我也發(fā)現(xiàn)了一些case讓我覺得引入召回還是比較有必要的,之前在阿里實習(xí)的組里這樣的模型也確實有收益——阿里1688的論文中把排序引入到精排的一個特征中,以輔助網(wǎng)絡(luò)的形式訓(xùn)練【Deep Match to Rank Model for Personalized Click-Through Rate Prediction】,而在淘寶直播中則是最后在loss疊加深度排序模型在淘寶直播的演進與應(yīng)用

          瀏覽 155
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲男女操逼 | 麻豆成人国产网 | 欧美骚逼网 | 福利导航二三区 | 日本黄色电影网 |