OPPO 廣告召回算法實踐與探索
一、背景介紹
1、舊召回架構(gòu)
上圖左上側(cè)部分是一般推薦系統(tǒng)流程,即先進(jìn)行召回,再進(jìn)行排序。左下側(cè)部分是 OPPO 舊的召回架構(gòu),即先進(jìn)行定向過濾,再經(jīng)過截斷策略,最后進(jìn)行個性化召回。這里有兩個問題,第一個是由于性能問題,不能做全量廣告的個性化召回;第二個是由于個性化召回在截斷策略的后面,這會導(dǎo)致個性化召回的效果受到影響。因此我們想通過工程和算法的改造,做到全量廣告的個性化召回,提升平臺整體的指標(biāo)。另外,也希望能通過一個更好的多路召回機(jī)制,來提升整個廣告播放的體驗和生態(tài)。
2、新召回架構(gòu)
上圖左上側(cè)部分是新的召回架構(gòu),最重要的變化是引入了 ANN,也就是近鄰檢索的能力。通過這個工程改造,支持了全量廣告的個性化召回。
同時,我們重新設(shè)計了多路召回機(jī)制,即“單主路加多輔路”召回機(jī)制。單主路指的是主路用“面向最終目標(biāo)的一致性召回”,這是一種 LTR 的方式。多輔路包括 ECPM 支路、冷啟支路和一些其他支路。
ECPM 支路主要是為了彌補(bǔ)主路 LTR 不足。冷啟動支路主要是對新廣告進(jìn)行冷啟的扶持。
OPPO 通過“公平”和“效率”兩方面進(jìn)行冷啟的扶持。“公平”方面,對于一些新廣告,會有獨(dú)立的流量供新廣告進(jìn)行隨機(jī)的探索,這是一個公平的策略?!靶省狈矫妫瑒t通過算法找出未來有潛力的新廣告,每一次請求都會有專門針對這些新廣告的召回配額。通過這兩種方式,提升新廣告冷啟的效果。
還有一些其他支路,主要是面向某一類特定的問題,或者是作為運(yùn)營同學(xué)的中短期運(yùn)營手段而存在的。通過切換架構(gòu)及持續(xù)迭代,新召回架構(gòu)帶來了累積 15% 的 ARPU 提升,效果還是相當(dāng)可觀的。
接下來分享一下 OPPO 在主路召回模型上的一些業(yè)務(wù)實踐和探索,主要從四個方面講解:主路召回模型選型、離線評估指標(biāo)建設(shè)、樣本優(yōu)化實踐、模型優(yōu)化探索。
二、主路召回模型選型
1、主路召回模型目標(biāo)
首先介紹一下主路召回模型目標(biāo),我們將其拆解為三個方向:
- 一致性:首先,召回側(cè)的打分標(biāo)準(zhǔn)要和下游保持一致(一致不等于一樣)。同時,應(yīng)滿足激勵相容的邏輯,即要與整個廣告系統(tǒng)匹配,比如調(diào)價敏感性。
- 泛化性:指模型在未見過或者很少見過的數(shù)據(jù)上的效果。我們將其拆解為“共性”和“個性”?!肮残浴笔侵改P湍懿荒軐W(xué)到普遍規(guī)律,以便推廣到?jīng)]有見過的數(shù)據(jù)上,比如推廣到新廣告、新用戶上;“個性”是指模型能不能重視個體差異,尤其是數(shù)據(jù)很少的情況,比如長尾的廣告和用戶。
- 多樣性:指降低召回的寡頭效應(yīng),讓下游鏈路見世面。大家可能在廣告系統(tǒng)里面很少聽到“信息繭房”的說法,但其實廣告系統(tǒng)里也是存在“信息繭房”的。比如,如果精排見到的廣告過于單一,那么精排可能對中長尾廣告的預(yù)估偏差比較大。
2、從 Youtube 論文看召回選型
上面三個方向確定之后,接下來看一下有哪些可能的召回選型。
我們從 2016 年 Youtube 的經(jīng)典論文看起,他們將推薦系統(tǒng)分成兩個階段,召回和排序。對于召回,他們以“點擊且完播的概率”作為目標(biāo)進(jìn)行建模;對于排序,他們以“播放時長加權(quán)的點擊率”為目標(biāo)進(jìn)行建模。
基于以上內(nèi)容,可以推導(dǎo)出召回的三種可能選型:
- 精準(zhǔn)值預(yù)估:召回和排序邏輯完全一樣。比如,如果排序做回歸,那召回也做回歸。
- 排序?qū)W習(xí):召回學(xué)習(xí)的是排序打分的分布。
- 分類學(xué)習(xí):召回學(xué)習(xí)的是排序的競得,或者用戶的交互,比如用戶點擊的視頻、廣告等。
這三種選型本質(zhì)上對應(yīng)著兩種方案,第一種叫做“精準(zhǔn)值預(yù)估”,對應(yīng)上面第一個選型;第二種叫做“集合選擇”,對應(yīng)上面的第二、三個選型。我們應(yīng)該選擇哪種方案呢?
3、精準(zhǔn)值預(yù)估 vs 集合選擇
首先明確我們對召回選型的訴求:第一,我們希望能夠滿足一段時期的快速迭代;第二,我們希望它的起點足夠高。我們首先對這兩種方案做了一些優(yōu)缺點分析。
“精準(zhǔn)值預(yù)估”建模的目標(biāo)是 ECPM。其優(yōu)勢是可解釋性很強(qiáng),同時還天然具有調(diào)價敏感性。但是其缺點也很明顯:首先,召回既要與精排保持一致,又面臨大量未曝光的候選集,任務(wù)比較困難;其次,不同的 OCPC 類型分布差異巨大,雙塔模型學(xué)習(xí)難度很大;最后,召回階段對于精準(zhǔn) ECPM 的訴求不夠強(qiáng)烈,因此任務(wù)的難度可能會超過實際的需求。
“集合選擇”建模的目標(biāo)是精排頭部的廣告。由于直接面向后鏈路建模,其一致性會很強(qiáng)。同時還天然具有自動合并下游優(yōu)化項的能力。當(dāng)然,它也有缺點:首先,預(yù)估值的可解釋性比較弱;其次,為了和 ECPM 打分性質(zhì)保持一致,還需要單獨(dú)做一些優(yōu)化(如調(diào)價敏感性)。
我們通過在線效果和優(yōu)缺點對比,選擇“集合選擇”技術(shù)作為最終選型。
4、LTR 原型模型
上圖左側(cè)就是 LTR 原型模型。結(jié)構(gòu)比較簡單,就是典型的雙塔模型。只是它的樣本稍微特殊一點,一條 pairwise 樣本由多條樣本組成。其中正樣本指的是精排頭部的廣告,負(fù)樣本是由大盤曝光的廣告里隨機(jī)采樣得到的。Loss 采用 Ranking Loss,這里就不細(xì)講了。
三、離線評估指標(biāo)建設(shè)
通過原型模型和一些特征層面的優(yōu)化,第一版上線就取得了 6% 的 ARPU 提升。在第一版之后進(jìn)一步做迭代,就需要離線評估指標(biāo)來指導(dǎo)優(yōu)化。
1、離線評估建設(shè)-整體
離線評估建設(shè)主要分了三個階段。在第一階段,為了快速上線,我們并沒有專門去定制一個評估集,只是簡單地將樣本根據(jù)時間劃分成訓(xùn)練集和測試集。這種方式的存在的問題是 AUC 太高了,達(dá)到了 0.98,很難進(jìn)一步指導(dǎo)迭代。另外,由于召回是樣本的藝術(shù),當(dāng)樣本改變之后,實驗之間的 AUC 是不可比的??偟膩碚f,這個評估集難以指導(dǎo)我們持續(xù)優(yōu)化,因此需要一個更一致、更穩(wěn)定的評估集,就引出了第二階段的方案。
2、離線評估建設(shè)-全庫評估
第二階段,是離線 Faiss 全庫檢索。此時,正樣本是精排 Top K 的廣告,負(fù)樣本是大盤曝光的廣告,指標(biāo)是 GAUC 和 Recall。Recall 指的是精排頭部的 Top K 跟實際打分的 Top N 的交集數(shù)量,然后除以 K 求平均,這其實衡量的是對精排 Top K 的召回效果。其中有兩個超參,第一個是 K,一般需要根據(jù)業(yè)務(wù)實際情況去選擇;第二個是 N,指的是模型的容錯程度,理論上 N 越大,這個任務(wù)會越簡單。我們離線發(fā)現(xiàn) N 的選擇需要與模型能力匹配,過于困難或過于簡單都不利于模型的迭代。
第二階段方案還存在一些小問題。首先是 Faiss 在保證精度的前提下,全庫檢索的效率還是比較低的。另外,由于當(dāng)前方案只用到了隨機(jī)的負(fù)樣本,難以做更精細(xì)的效果分析。接下來介紹第三階段的評估方案,分段采樣評估。
3、離線評估建設(shè)-分段采樣評估
分段采樣評估與之前方案最大的區(qū)別是負(fù)樣本做了拆分,拆成了 Easy、Medium 和 Hard 三部分。Easy 負(fù)樣本是從大盤曝光廣告中采樣得到的;Medium 負(fù)樣本是從當(dāng)次請求進(jìn)入粗排但沒進(jìn)入精排的廣告中采樣得到的;Hard 負(fù)樣本是從精排尾部的廣告中采樣得到的。Positive 還是由精排的 Top K 廣告組成。數(shù)量上我們要確保 Easy 遠(yuǎn)大于 Medium 遠(yuǎn)大于 Hard 遠(yuǎn)大于 Positive。評估指標(biāo)沒有變,還是 GAUC 和 Recall。由于拆分了負(fù)樣本,更利于我們做一些精細(xì)化的分析。
四、樣本優(yōu)化實踐
確定了評估方式之后,接下來就要去做一些樣本的優(yōu)化。
1、調(diào)價敏感模型
上文提到召回模型一定要具有調(diào)價敏感性,這里展開介紹一下什么叫調(diào)價敏感性。對于整個廣告系統(tǒng)來說,廣告的出價是廣告主投放廣告的一個很重要的抓手,會影響廣告的競爭力。我們期望廣告系統(tǒng)全鏈路對廣告主的出價都應(yīng)該敏感。這個敏感是指:如果廣告主的出價提高了,那么所有環(huán)節(jié)對這個廣告的打分都應(yīng)該提高。之前我們的處理方式是直接把這個廣告出價的分桶特征作為底層特征輸入模型。但我們發(fā)現(xiàn)隨著廣告主出價的提升,它的打分只有 5% 是提升的,這種敏感性是遠(yuǎn)遠(yuǎn)不夠的,因此我們構(gòu)建了調(diào)價敏感性模型。
模型結(jié)構(gòu)如上圖左側(cè)所示。整體看,其實就是在雙塔模型的右側(cè),加了一個 bid_part 結(jié)構(gòu)。這個結(jié)構(gòu)本質(zhì)上是由廣告的出價 CPA 乘以個性化的權(quán)重得到 bid_logits。通過這種優(yōu)化,廣告的調(diào)價敏感性從原來的 5% 提升到了 90%,比較符合預(yù)期,同時在線 ARPU 也有 1% 左右的提升。
2、精排負(fù)反饋-Hard Negative
在調(diào)價敏感性問題解決后,接下來我們要做效果的優(yōu)化。其實 Easy Negative 區(qū)分度已經(jīng)比較好了,想要去提升效果,最簡單的方法就是引入后鏈路的數(shù)據(jù),比如加入 Medium Negative 和 Hard Negative 作為反饋機(jī)制。
前期系統(tǒng)數(shù)據(jù)上報只有 Hard 數(shù)據(jù),所以就先加入 Hard Negative。加入 Hard Negative 之前我們的預(yù)期是離線效果肯定會有提升,另外召回的多樣性也會有提升。這是因為以前樣本只關(guān)注精排的頭部數(shù)據(jù),模型很有可能已經(jīng)記憶住了,不需要很強(qiáng)的個性化就能夠解決這個問題。而引入了 Hard Negative 之后,它就需要對不同的請求做一些個性化的理解。從上圖右側(cè)的離線指標(biāo)上也可以看到,Recall 和在線效果都有所提升。其中廣告多樣性有巨幅提升,約 8%,這是我們非常想要看到的結(jié)果。
3、人工規(guī)則挖掘 Negative
通過加入 Hard Negative 整體取得了很大提升之后,加入 Medium Negative 應(yīng)該是順理成章的事情。因為這塊數(shù)據(jù)系統(tǒng)還沒上報,所以我們想通過人工規(guī)則挖掘一些 Medium Negative。通過分析,我們發(fā)現(xiàn)召回和精排的整體打分是一致的,但是存在兩種極端的 case。第一種是召回很多,但是幾乎從不競得的廣告。這些廣告存在的原因是因為它們沒有曝光,甚至沒有進(jìn)入到精排,因此他們很難成為負(fù)樣本,模型就感知不到。第二種情況是召回的很少,但競得率奇高無比,當(dāng)然這種情況實在太少了,所以我們忽略了這種情況。
對于第一種情況,如上圖左邊這個熱力圖,橫軸是競得次數(shù)的分桶,縱軸是召回次數(shù)的分桶,都是從小到大。左下角圈起來的部分是召回很多,但是競得很少的廣告,占比不是很多,但值得試一試。實踐發(fā)現(xiàn)離線在線效果只有微弱提升,并且人工挖掘樣本的效率實在太低了。因此,我們考慮能否通過模型自發(fā)現(xiàn)去解決這個問題。
4、模型自發(fā)現(xiàn) Medium Negative
之所以會想到這一點,是因為雖然 Easy Negative 整體區(qū)分度很好,但是里面還是存在一些比較難區(qū)分的樣本,只是這些樣本的占比比較低而已。因此,如果我們讓每個正樣本都采樣海量的 Easy Negative 樣本,模型是不是就能夠自發(fā)性地學(xué)習(xí)到那些比較困難的負(fù)樣本呢?是不是就類似于 Medium Negative 呢?從這一個角度看,這類似于對比學(xué)習(xí)。
為了達(dá)到這個目的,我們有兩個方法。第一個方法就是直接往樣本里加 Easy Negative,但問題是計算跟存儲的成本都會線性增長;第二個方法就是直接在模型里做 in batch 負(fù)采樣,這種方案沒有計算和存儲的成本,因此我們優(yōu)先考慮這個方案。
Loss 也有兩種方法,第一種是用 LTR Loss。但在我們的實現(xiàn)中,隨著每條 pairwise 樣本中樣本數(shù)的增加,LTR Loss 的計算量會呈指數(shù)級增長,所以我們想優(yōu)先考慮第二種方法:Pointwise Loss。這個 Loss 的計算量隨著樣本數(shù)的增加呈線性增長。同時,由于 Loss 計算量整體在模型訓(xùn)練時占比較小,對整體耗時影響不大。所以我們最終選擇了 Pointwise Loss。
5、大規(guī)模多分類解決選型簡介
確定了 Loss 的方案,具體應(yīng)該用哪種 Loss 呢?在繼續(xù)介紹之前,需要先講解一下大規(guī)模多分類的背景知識。
召回可以定義成一個超大規(guī)模多分類的問題。它的負(fù)樣本就是成千上萬的廣告,正樣本就是精排 Top K 的廣告。普通的多分類,其實就是做一個 softmax,其分母就是所有負(fù)樣本的打分的累加。但對于大規(guī)模多分類來說,這樣做會使分母的計算量過大,幾乎是不可行的。針對此問題,業(yè)界有兩種方法。
第一種方法是將多分類轉(zhuǎn)化成二分類,如上圖左側(cè)部分。轉(zhuǎn)化成二分類之后,其實是轉(zhuǎn)化成了 NCE 問題。本質(zhì)上是把以前模型的預(yù)估值 F(x,y) 修正成 G(x,y),中間多了一個 Log Q 的采樣概率修正系數(shù)。但這個值不好求,比較偷懶的方式,是直接讓 G(x,y) 近似等于 F(x,y),然后直接放到二分類 BCE Loss 里,這叫做 NEG,也就是 Negative Sampling。NCE 的好處是隨著負(fù)樣本的增加,從理論上能夠逼近大規(guī)模多分類的效果。而這個 NEG 理論上是有偏差的。
第二種方法就是繼續(xù)保持多分類的方式。和第一種方法很相似,區(qū)別是要把 G(x,y) 放到 softmax 的 Loss 里,同時負(fù)樣本直接采樣。與 NCE 一樣,修正的 Sample Softmax 理論上能夠逼近大規(guī)模多分類的效果,而不修正 Sample Softmax 則是有偏的。但是,由于其操作簡單,未修正的 Sample Softmax 類方法也會有一些公司使用并取得收益。
6、模型自發(fā)現(xiàn) Medium Negative
在確定使用 Pointwise Loss 方法后,我們先嘗試了比較簡單的 Negative Sampling。樣本是 in batch 負(fù)采樣,Loss 是 BCE Loss,最后將原來的 BPR Loss 加上這個 BCE Loss 做融合。通過離線實驗發(fā)現(xiàn),如果只使用 In Batch Negative Sampling,效果是明顯下降的。但是如果融合 LTR 和 In Batch Negative Sampling,效果則有微弱提升。
我們覺得很疑惑,加了幾百個樣本,效果居然只是微弱提升,這是不符合預(yù)期的。因此我們繼續(xù)采用了剛剛提到的 Sample Softmax 方法,還是在 In Batch 內(nèi)負(fù)采樣,Loss 是不修正的 Sample Softmax Loss,如上圖右側(cè)公式所示,這有點像 infoNCE,因此我們也參考 infoNCE 引入了溫度系數(shù)的概念。效果如上圖左下側(cè)所示,如果只使用 In Batch Sample Softmax,那么效果跟舊的 LTR 基本持平。如果融合 LTR 和 In Batch Sample Softmax,效果則有大幅度的提升。進(jìn)一步調(diào)整溫度系數(shù),提升則更加明顯。使用調(diào)整過溫度系數(shù)的版本后,ARPU 提升了將近 2%,符合預(yù)期。不過這里要稍微注意下,隨著 In Batch 數(shù)量的增加,Medium 和 Hard 的效果會有一個 Trade Off。
對于 Sample Softmax 效果優(yōu)于 NEG,我們是疑惑的,于是進(jìn)行了一些搜索,發(fā)現(xiàn)在不少論文和文章里,也都有提到這個現(xiàn)象,看起來并非個例。因此大家后續(xù)對大規(guī)模分類問題,或許可以優(yōu)先考慮 Sample Softmax 類方法。
7、場景聯(lián)合訓(xùn)練獨(dú)立服務(wù)
最后講下聯(lián)合訓(xùn)練,這本質(zhì)上是個多場景的問題。
在 OPPO 場景,由于媒體屬性、廣告主意愿等原因,廣告在不同媒體上的分布是有較大差異的。對此,我們有以下幾種方案選型。
第一種方法是完全獨(dú)立。每個媒體單獨(dú)建模、訓(xùn)練、預(yù)估。但是多個模型優(yōu)化和運(yùn)維的成本比較高,另外也沒辦法學(xué)習(xí)媒體之間的共性。
第二種方法是完全統(tǒng)一。主要是負(fù)樣本共用,聯(lián)合訓(xùn)練,在服務(wù)的時候保持只用一個模型,但是媒體之間的差異性很難被體現(xiàn)出來。
還有一種方法是聯(lián)合訓(xùn)練和獨(dú)立建模。不同媒體的樣本是獨(dú)立的,但訓(xùn)練時還是聯(lián)合訓(xùn)練。模型結(jié)構(gòu)如上圖左側(cè)所示,不同的媒體都有一個屬于自己的 ad tower,所有媒體共享 user tower,此時不同媒體的 ad embedding 是獨(dú)立的。這種方式既能保持媒體的共性,也能學(xué)到媒體的個性,并且也能夠統(tǒng)一地優(yōu)化和迭代。這種方式在我們的一些小場景上取得了收益,目前正計劃在大場景中推進(jìn)。
上面是關(guān)于樣本優(yōu)化的簡單介紹??梢钥闯?,召回確實是樣本的藝術(shù),更具體的說,是負(fù)樣本的藝術(shù),我們很多工作都是圍繞著負(fù)樣本優(yōu)化來做的。但是樣本只能決定模型的上限,具體怎樣去逼近這個上限,還需要做一些模型的優(yōu)化。
五、模型優(yōu)化探索
下面來到模型優(yōu)化探索部分。主要包括兩部分,第一部分是關(guān)于雙塔交互的優(yōu)化,第二部分是關(guān)于泛化性的優(yōu)化。
1、雙塔交互優(yōu)化-整體
受計算復(fù)雜度約束,召回普遍使用雙塔結(jié)構(gòu)。但是雙塔結(jié)構(gòu)的缺點就是 user 和 item 交互太晚,導(dǎo)致信息損失比較大。針對此問題,業(yè)界有一些探索工作,簡單歸類如下。
第一類是雙塔的交互時刻不變,提升交互向量的信息量,比如 SENet 或者并聯(lián)雙塔。另外一個是將雙塔交互的時刻提前,比如 DAT、IntTower 和 MVKE。還有一種是模型不變,通過特征去交互,比如物理含義相同的特征,讓其共享 embedding,這也是一種隱式的交互。接下來我們會從這三類里面分別挑一個我們在實踐中取得收益的模型來具體介紹。
2、提升交互向量有效信息量-SENet
第一個是 SENet。SENet 最開始主要應(yīng)用在圖像領(lǐng)域,它是通過對特征做一些個性化的加權(quán)(有點類似于特征 attention),突出重要特征壓制不重要特征,來緩解前文中提到的“交互向量信息損失過大”的問題。其結(jié)果如上圖左側(cè)所示,SENet 在我們的場景中取得了明顯的收益。
更重要的是,我們發(fā)現(xiàn) SENet 的特征權(quán)重和特征重要性高度正相關(guān)。后續(xù)我們很多特征效果或者重要性的分析,都直接將 SENet 的特征權(quán)重作為參考。
3、雙塔交互時刻提前-DAT
第二個是美團(tuán)的 DAT,中文名為對偶增強(qiáng)的雙塔模型。它主要的優(yōu)化點是把向量交互的時刻提前。優(yōu)化內(nèi)容主要包含兩部分,第一個部分叫做 AMM,第二部分叫 CAL。
這里主要講下 AMM。美團(tuán)的雙塔由 query 塔和 item 塔組成。在 query 塔新增一個增強(qiáng)向量,即上圖綠色部分,期望跟 item 塔最后一層 embedding 盡可能相似。同理,在 item 塔也有一個增強(qiáng)向量,跟 query 塔最后一個輸出 embedding 盡可能相似。通過這種方式,讓雙塔交互增強(qiáng)。
實驗發(fā)現(xiàn),加入 AMM 特征后,效果有明顯的提升。同時,如果在 AMM 特征輸入時,優(yōu)選下特征,其提升將更加明顯。這個優(yōu)選特征的規(guī)則是:用戶側(cè)用相對泛化的特征,而 item 側(cè)用更稀疏更具體的特征。我們猜測優(yōu)選特征效果更好的原因是用戶側(cè)的增強(qiáng)向量其實不需要那么強(qiáng)的個性化。
4、底層特征隱式交互
最后一個就是特征的隱式交互。在雙塔模型里的 user 塔和 item 塔往往存在一些物理含義相同的特征,共享這些特征的 embedding 比直接訓(xùn)練效果更好。在我們的場景里面也有這種特征,叫做語義標(biāo)簽特征。這種特征的挖掘方式如上圖左側(cè)所示,我們會提取廣告的語義信息,并且輸入到大模型里,打上一些標(biāo)簽。而這些廣告的標(biāo)簽會根據(jù)廣告與用戶的交互行為被賦予用戶,所以用戶和廣告身上都會有這些標(biāo)簽。我們在模型訓(xùn)練的時候,通過上圖左下側(cè)所示的方式,使 user 塔和 item 塔的語義標(biāo)簽共享 embedding table。實驗發(fā)現(xiàn),這種方案的離線指標(biāo)有微弱提升。
5、泛化性優(yōu)化
主路召回作為召回的核心組成部分,承擔(dān)著解決“大部分問題”的任務(wù)。但由于廣告、媒體、用戶、時間上的一些細(xì)分粒度往往有差異,導(dǎo)致學(xué)習(xí)這些差異的共性和個性比較困難。具體來說,從廣告的視角有新老廣告;從媒體的視角有不同類型的媒體;從用戶的視角有高活用戶和低活用戶;從時間的視角有日常、周末、節(jié)假日、雙十一。本質(zhì)上來說,這里需要解決的問題是“混合分布下的差異化精準(zhǔn)建?!钡膯栴}。
關(guān)于這個問題,業(yè)界也有一些探索。有的是直接加強(qiáng)個性化的特征,比如 Youtube 的 BiasNet,就是直接用一個 Bias Tower 穿透到最底層;還有多專家方案,比如騰訊的 MVKE 和 Google 的 CDN;還有動態(tài)權(quán)重,比如快手的 POSO 和 PPNet;還有一些融合類的方法。接下來介紹我們在實踐中取得了一定收益的兩個方法,分別是 CDN 和 PPNet。
6、冷啟動優(yōu)化-CDN
首先介紹一下使用 CDN 的背景。最開始為了加速迭代,主路模型除了在主路召回上用,也在新廣告召回支路去做冷啟。這就要求主模型兼顧新廣告的排序效果。但是在主路模型的訓(xùn)練集里,新廣告的占比肯定是比較少的,同時新廣告的特征跟老廣告有明顯的差異,所以新廣告的一些信息和特征會被淹沒,新廣告的效果得不到保證。因此我們參考了 2023 年 Google 提出的 CDN 模型,期望優(yōu)化新廣告效果。
CDN 結(jié)構(gòu)如上圖左側(cè)紅框所示,本質(zhì)上是把 item 特征拆成了記憶類特征和泛化類特征,然后通過兩個 expert 去學(xué)習(xí),最后通過一個 Gate 門控對這兩個 expert 做加權(quán)融合。記憶類特征主要包括 item 的稀疏類特征,泛化類特征主要包括統(tǒng)計類特征。線上實驗證明,新廣告冷啟效率有 10% 的增長,非常可觀。
7、多場景優(yōu)化-PPNet
下面介紹多場景優(yōu)化,除了上文提到的樣本層面的優(yōu)化,還有模型層面的優(yōu)化。
首先講下背景。OPPO 有很多場景類型,比如文字信息流、視頻流等等。在將這些場景聯(lián)合訓(xùn)練的時候,如何兼顧其共性和個性呢?
我們參考了快手的 PPNet,實現(xiàn)方式如上圖左側(cè)紅框所示。本質(zhì)是通過個性化門控網(wǎng)絡(luò),對原始的模型,做一個動態(tài)的個性化加權(quán),得到一個千媒千面的模型。通過這種方式,我們發(fā)現(xiàn)效果是有提升的。
但是有一點需要注意,如果直接將媒體的 ID 輸入到 Gate 門控,提升是比較微弱的。如果通過專家知識對這些門控的輸入做一些聚合,那么 PPNet 就開始顯現(xiàn)它的威力了。聚合的方法是把屬性相似,或用戶行為相似的媒體聚合。最后,如果對不同的媒體采用不同的 batch norm(即 DBN),模型的性能會進(jìn)一步提升。
六、展望
前文中介紹了今年 OPPO 召回的主要相關(guān)工作,接下來分享一些我們的展望。
首先,雖然當(dāng)前 ECPM 支路比較簡單,但是 ECPM 支路還是能夠?qū)?LTR 主路起到補(bǔ)充作用,因此我們后續(xù)還會在 ECPM 支路上做一些工作。
其次,現(xiàn)在廣告推薦整體已經(jīng)走向了廣告商品化、創(chuàng)意智能化。在這個趨勢下,召回和排序的分工也會發(fā)生一些變化。當(dāng)然,召回輔助下游找到價值最高的廣告,這一個定位是不變的。
以上就是本次分享的全部內(nèi)容,謝謝。
七、問答環(huán)節(jié)
Q1:如果召回的算法太復(fù)雜的話,你們是怎么考慮的?
A1:我們不能要求召回算法復(fù)不復(fù)雜,因為這取決于你想解決的是什么類型的問題。舉個例子,現(xiàn)在 OPPO 召回的定位是“單主路加多輔路”,主路要解決大部分的問題,那主路算法可能就復(fù)雜些。有些傳統(tǒng)公司的召回是“多主路召回”,比如熱度召回、統(tǒng)計召回、興趣召回等等疊加,那每一個路召回可能都比較簡單,算法也不需要太復(fù)雜。
Q2:讓召回去學(xué)精排,會不會導(dǎo)致召回更加局限性呢?
A2:如果把局限理解為 SSB 問題,其實召回一直存在這個問題。之前的 gap 是從召回的全量候選到曝光候選?,F(xiàn)在如果讓召回去學(xué)精排,那現(xiàn)在的 gap 就是從全量候選到精排的 Top 部分廣告。這種方式的 SSB 會緩解一些,SSB 問題是要長期去探索解決的。
Q3:離線評估指標(biāo) Recall 公式里的 N 和 K 是如何確定的?
A3:不同的場景中,N 和 K 的取值是不一樣的。
K 得根據(jù)具體的業(yè)務(wù)場景來定。比如在信息流,一般我們就看幾個廣告,那 K 可能取 1-3;在下載商店,一次性會展示很多 APP,那 K 就會很大,甚至取上百個。
N 的取值則與模型效果和 K 有關(guān),N 越大任務(wù)越簡單。如果任務(wù)太簡單,Recall 非常高,比如 0.99,那么任何優(yōu)化都很難離線體現(xiàn)出效果;任務(wù)太難,Recall 非常小,那很多優(yōu)化也可能無法體現(xiàn)出來,就像讓小學(xué)生去參加高考,大家都 0 分。具體的 N 和 K 的組合,需要自行根據(jù)場景和模型調(diào)節(jié)。
Q4:在召回階段樣本設(shè)計時,簡單和困難樣本比例是怎么調(diào)控的?
A4:召回是在全量候選集里面找出用戶可能感興趣的廣告,這就決定了在樣本設(shè)計時,簡單樣本數(shù)量要遠(yuǎn)遠(yuǎn)大于困難樣本數(shù)量。
簡單和困難樣本的比例,是通過實踐去確定的。比如 Facebook 的論文中提到,簡單和困難樣本的比例值是 100 比 1。我們的場景沒有那么懸殊,但也差不多。
Q5:召回離線評估為什么用 AUC?你們的召回離線評估和線上效果是一致的嗎?
A5:在召回階段,AUC 類似一個護(hù)欄指標(biāo),是為了確保召回里的排序整體沒有大的分布問題。在此基礎(chǔ)上,我們盡量提升 Recall。另外,我們大部分的離線指標(biāo)和在線指標(biāo)整體的趨勢是一致的。當(dāng)然,我們無法保證離線和在線提升的百分比是完全相同的。