<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>

          三大視角,聊聊我眼中的廣告系統(tǒng)

          共 17425字,需瀏覽 35分鐘

           ·

          2021-09-30 02:14

          作者 | wulc 

          整理 | NewBeeNLP

          從實習(xí)到工作,接觸過一些大大小小的廣告系統(tǒng),有麻雀雖小但五臟俱全的小 dsp,也有把 ssp、adx、dsp 都打包了的大媒體 ,算是對業(yè)界的廣告系統(tǒng)有了一個初步的了解。趁著放假這幾天,簡單地梳理一下當前了解到的廣告系統(tǒng)知識,主要是想對零散的知識做個整理。

          由于廣告系統(tǒng)這個概念非常的大,涉及到的部分非常的多,無法面面俱到,所以本文主要是從幾個視角(技術(shù)、業(yè)務(wù)、產(chǎn)品)言簡意賅的描述一下筆者比較關(guān)心的幾個部分,中間內(nèi)容可能不全,歡迎交流指正。

          特意聲明,本文內(nèi)容與筆者雇主無關(guān),主要是基于筆者當前的認知梳理的內(nèi)容;在撰寫過程中只會引用公開的內(nèi)容,不會涉及到筆者雇主內(nèi)部未公開的信息;如相關(guān)同學(xué)覺得有敏感內(nèi)容,可聯(lián)系刪除。而其實在崇尚開源、paper 漫天飛、人員流動越來越快的如今,筆者覺得這些通用技術(shù)并不是最核心的地方,數(shù)據(jù)+對業(yè)務(wù)的理解+靈活組裝這些通用的技術(shù)才是。

          一、技術(shù)視角

          這里的技術(shù)視角主要是技術(shù)同學(xué)日常迭代較多的模塊,總體的架構(gòu)上可將其劃分為「召回+精排」,而在這個結(jié)構(gòu)里的兩個主要關(guān)注的地方是「出價和模型」

          召回與精排

          基本有規(guī)模的的推薦或廣告系統(tǒng),每次請求中選出 topk 個候選的過程都是 “召回+精排”,中間還可能會插入一個粗排,其原因都是候選集過于龐大,需要在工程與效果的 trade-off,而如果候選不多,延遲允許的情況下,對全量候選直接做精排,效果上無疑是最好的。

          關(guān)于召回和排序,這篇文章講得比較全面,推薦讀一下, 推薦系統(tǒng)技術(shù)演進趨勢:從召回到排序再到重排[1]

          召回

          當前的召回基本都是采用多路召回的模式,每一路的召回都有其存在的業(yè)務(wù)意義和目標,且往往各路之間是互補關(guān)系,有點類似 ensemble 里的 bagging 的思想。且考慮到效率,當前采用的基本都是 ANN 召回,其基本思想就是先把全量的候選劃分在 個子空間中,召回時通過特定方式選出 )子空間,然后將 query 與這 個子空間的候選的相似性最高的 topk 個候選進入精排。關(guān)于 ANN 召回可參考這篇文章 圖像檢索:再敘ANN Search[2],其中的 IVF-PQ 是業(yè)界比較常用的一種召回方式。另外,F(xiàn)aceBook發(fā)表的 Embedding-based Retrieval in Facebook Search 也值得一讀,整篇文章讀下來就像一個奮戰(zhàn)在一線的工程師向你娓娓道來他們是怎么從 0 到 1 構(gòu)建一個召回系統(tǒng),筆者也針對這篇 paper 寫了Embedding-based Retrieval in Facebook Search 閱讀筆記,供參考。

          精排

          召回的目標是盡可能快地選出較好的候選,往往采用的特征和模型都會比較簡單;而精排相對于召回,在特征和模型上可以做得更為復(fù)雜,因為精排面臨的候選相對于召回少了非常多,各種交叉特征、復(fù)雜的結(jié)構(gòu)都可以精排中嘗試,精排基本上就是在根據(jù)業(yè)務(wù)去挖特征。

          而這里面筆者認為比較值得學(xué)習(xí)的是 Airbnb 的這篇文章 Real-time Personalization using Embeddings for Search Ranking at Airbnb,里面沒有涉及到比較玄學(xué)的模型結(jié)構(gòu)、超參等;而是看到了作者對業(yè)務(wù)有較為深刻的理解,同時通過各種方式將這些理解融入到模型中,筆者也針對這篇 paper 寫了 Real-time Personalization using Embeddings for Search Ranking at Airbnb 閱讀筆記,供參考。

          此外,這里需要注意的是,「將一個排序的過程拆成了多個階段來選擇 topk 個候選,帶來的問題是每個階段的排序優(yōu)化目標可能會有割裂」,而這在上面的文章《推薦系統(tǒng)技術(shù)演進趨勢:從召回到排序再到重排》中也有提出

          如果在召回階段使用模型召回,理論上也應(yīng)該同步采用和排序模型相同的優(yōu)化目標,尤其是如果排序階段采用多目標優(yōu)化的情況下,召回模型也應(yīng)該對應(yīng)采取相同的多目標優(yōu)化。

          同理,如果整個流程中包含粗排模塊,粗排也應(yīng)該采用和精排相同的多目標優(yōu)化,幾個環(huán)節(jié)優(yōu)化目標應(yīng)保持一致。因為召回和粗排是精排的前置環(huán)節(jié),否則,「如果優(yōu)化目標不一致,很可能會出現(xiàn)高質(zhì)量精排目標,在前置環(huán)節(jié)就被過濾掉的可能,影響整體效果」

          如果說上面的觀點是「召回應(yīng)該去適配精排」,則 FaceBook 在 Embedding-based Retrieval in Facebook Search 中提出的是讓「精排適配新的召回」,paper 中指出新的 ANN 召回的結(jié)果可能并不會被精排認可,paper 中描述如下,也提出了一些解決方法

          since the current ranking stages are designed for existing retrieval scenarios, this could result in new results returned from embedding based retrieval to be ranked sub-optimally by the existing rankers

          模型

          模型的重要性無需強調(diào)了,往往離線指標的幾個千分點的提升,就能帶來線上比較顯著的收益,而且?guī)缀跸到y(tǒng)的規(guī)則約束的東西都可以被模型取代。這里主要講一些筆者認為對模型效果比較重要的幾部分:「數(shù)據(jù)、訓(xùn)練、預(yù)估糾偏」

          數(shù)據(jù)

          數(shù)據(jù)是可以說是對模型效果影響最大的因素,這里可將其分為「數(shù)據(jù)流和特征工程」兩部分

          「數(shù)據(jù)流比較核心的目標是及時且準確地獲取各種事件(click,convert)的 ground truth」;“及時”指的是發(fā)生的事件需要盡可能快地喂給模型,“準確”指的是這些事件需要被正確打上label。

          數(shù)據(jù)流與轉(zhuǎn)化歸因(conversion attribution)這個領(lǐng)域密切相關(guān),歸因可以理解為 label 的獲取與拼接, 當前最常見的是 last touch 方式的歸因,也有一些其他的歸因方式如 multi-touch 歸因等, 通常涉及到廣告主的上報和實際的拼接兩部分,這里就不詳細展開講了,詳細可參考這個 rtb-papers[3] 里相關(guān)的 paper。這里主要講幾個筆者認為比較值得關(guān)注的問題:「delayed feedback、bias、全渠道數(shù)據(jù)」

          delayed feedback

          在廣告場景下,cvr 模型是這個問題的典型例子,因為轉(zhuǎn)化是有延遲的,即在點擊發(fā)生后過一段時間用戶可能才會發(fā)生轉(zhuǎn)化,且往往轉(zhuǎn)化漏斗越深,延遲的時間越長

          這時候有兩種選擇,一種是等待事件的 label 完全回流再進行訓(xùn)練,比如說事件的真實 label 能在一天內(nèi)完全回流,做天級訓(xùn)練即可,但是這不符合上面提到的“及時”的原則;另一種則是實時把數(shù)據(jù)送入模型做 online training,但是這不符合上面提到的“準確”的原則,因為有些 label 可能還沒回流。而實際上,實時性和準確性也是一個 trade-off 的關(guān)系。

          這個問題也被歸納為一個 delayed feedback 的問題,這部分內(nèi)容可以參考 Delayed FeedBack In Computational Advertising,里面介紹了一些paper 里的解決方法,基本都是解決在 online-training 模式下如何解決 label 回傳不及時的問題,如利用 importance sampling 等方法對樣本做加權(quán),或者讓樣本多次進模型,然后從統(tǒng)計意義推導(dǎo)出新的概率表達,從而保證樣本是無偏的。

          bias

          訓(xùn)練數(shù)據(jù)可能存在各種 bias,常見的有 exposure bias 和 position bias

          1. exposure bias:針對的問題是只有被曝光的樣本才能進入訓(xùn)練集,導(dǎo)致 training 階段能獲取到的樣本只是 serving 時很小的一部分
          2. position bias:針對的問題是位置越顯眼的廣告位被點擊的概率越高

          關(guān)于 exposure bias 可參考文章 Exposure Bias In Machine Learning,里面介紹了一些 paper 的解決方法,筆者將其總結(jié)為 Data Augmentation、IPS 和 Domain Adaption 三大類的方法

          exposure bias 在召回上往往也會被簡化成一個「負例選擇的問題」,這篇文章 SENet雙塔模型:在推薦領(lǐng)域召回粗排的應(yīng)用及其它[4] 最后一部分列了一些可能的負例選擇方法,也具備一定的實踐指導(dǎo)意義

          選擇1:「曝光未點擊數(shù)據(jù)」

          這就是上面說的導(dǎo)致 Sample Selection Bias問題的原因。我們的經(jīng)驗是,這個數(shù)據(jù)還是需要的,只是要和其它類型的負例選擇方法,按照一定比例進行混合,來緩解Sample Selection Bias問題。當然,有些結(jié)論貌似是不用這個數(shù)據(jù),所以用還是不用,可能跟應(yīng)用場景有關(guān)。

          選擇2:「全局隨機選擇負例」

          就是說在原始的全局物料庫里,隨機抽取做為召回或者粗排的負例。這也是一種做法,Youtube DNN雙塔模型就是這么做的。從道理上講,這個肯定是完全符合輸入數(shù)據(jù)的分布一致性的,但是,一般這么選擇的負例,因為和正例差異太大,導(dǎo)致模型太好區(qū)分正例和負例,所以模型能學(xué)到多少知識是成問題的。

          選擇3:「Batch內(nèi)隨機選擇負例」

          就是說只包含正例,訓(xùn)練的時候,在Batch內(nèi),選擇除了正例之外的其它Item,做為負例。這個本質(zhì)上是:給定用戶,在所有其它用戶的正例里進行隨機選擇,構(gòu)造負例。它在一定程度上,也可以解決Sample Selection Bias問題。比如Google的雙塔召回模型,就是用的這種負例方法。

          選擇4:「曝光數(shù)據(jù)隨機選擇負例」

          就是說,在給所有用戶曝光的數(shù)據(jù)里,隨機選擇做為負例。這個我們測試過,在某些場景下是有效的。

          選擇5:「基于Popularity隨機選擇負例」

          這種方法的做法是:全局隨機選擇,但是越是流行的Item,越大概率會被選擇作為負例。目前不少研究證明了,負例采取Popularity-based方法,對于效果有明顯的正面影響。它隱含的假設(shè)是:如果一個例子越流行,那么它沒有被用戶點過看過,說明更大概率,對當前的用戶來說,它是一個真實的負例。同時,這種方法還會打壓流行Item,增加模型個性化程度。

          選擇6:「基于Hard選擇負例」

          它是選擇那些比較難的例子,做為負例。因為難區(qū)分的例子,很明顯給模型帶來的loss和信息含量比價多,所以從道理上講是很合理的。但是怎樣算是難的例子,可能有不同的做法,有些還跟應(yīng)用有關(guān)。比如Airbnb,還有不少工作,都是在想辦法篩選Hard負例上。

          以上是幾種常見的在召回和粗排階段選擇負例的做法。我們在模型召回階段的經(jīng)驗是:比如在19年年中左右,我們嘗試過選擇1+選擇3的混合方法,就是一定比例的“曝光未點擊”和一定比例的類似Batch內(nèi)隨機的方法構(gòu)造負例,當時在FM召回取得了明顯的效果提升。但是在后面做雙塔模型的時候,貌似這種方法又未能做出明顯效果。全局隨機,則無論是FM召回還是后來的雙塔,都沒做出效果,有時甚至負向明顯。但是你又能看到一些報道采用的是全局隨機做為負例。所以,我目前的感覺,負例這塊是個寶藏,值得深入探索下,包括不同方法的混合,但是到底哪種方法是有效的,貌似很難有統(tǒng)一的定論,帶有一定藝術(shù)性。

          全渠道數(shù)據(jù)

          除了自身的數(shù)據(jù)外,還需要關(guān)注如何利用全渠道的數(shù)據(jù)提升的效果,其核心是「將被 cvr 被低估的用戶通過全渠道數(shù)據(jù)撈回來」。提到全渠道的數(shù)據(jù)的概念,不得不說一下廣告的模式,傳統(tǒng)的廣告模式將廣告的競價劃分為 ssp <-> adx <-> dsp 三大塊,而當前的一些大媒體基本上都包含這三大模塊,如微信、抖音等,自身是媒體(ssp),也是拍賣平臺(adx), 同時也承擔著廣告主投放的任務(wù)(dsp)。基本上面說的相關(guān)模型都數(shù)據(jù)媒體側(cè)自身的 dsp 這一部分

          媒體利用的數(shù)據(jù)往往只是用戶在其自身產(chǎn)生的數(shù)據(jù),如微信只能拿到用戶在微信上的行為數(shù)據(jù),拿不到用戶在抖音上的相關(guān)數(shù)據(jù);但廣告主往往會在多個媒體上投放,可能用戶在媒體 A 點擊了某個廣告,最終轉(zhuǎn)化是在媒體 B 上,如果媒體 A 只用其自身的數(shù)據(jù),會把 A 當做一個負例,cvr 會被低估,相當于放棄了這個轉(zhuǎn)化高潛用戶,而利用媒體 B 的數(shù)據(jù)則能讓模型學(xué)習(xí)到這個用戶真實的 cvr 情況;

          怎么拿到這部分數(shù)據(jù)呢?一種是廣告主將媒體 A 的數(shù)據(jù)歸因后直接回傳給媒體 B,另一種則是媒體之間相互合作,如筆者做過的聯(lián)邦學(xué)習(xí)在廣告的落地應(yīng)用就是屬于這部分。

          拿到這部分數(shù)據(jù)后便可進行建模,最簡單就是加到原來的模型中,除此之外,還可以獨立建模,然后作用到出價或原始 cvr 上。

          特征工程

          如果說數(shù)據(jù)流決定用哪部分數(shù)據(jù),特征工程則是決定了是否能夠完全挖掘這部分數(shù)據(jù)的價值,即常說的“數(shù)據(jù)和特征決定了機器學(xué)習(xí)的上限,而模型和算法只是逼近這個上限而已”。

          特征工程基本上做的就是根據(jù)業(yè)務(wù)特點去挖掘可能有用的特征,然后開 ab 實驗驗證效果;雖然說特征跟業(yè)務(wù)強相關(guān),但是具體的挖掘也有一些套路,常用的有「屬性特征、計數(shù)特征、序列特征」

          1. 屬性特征:用戶/廣告本身的一些屬性,如用戶的年齡、性別;廣告的類別、樣式等
          2. 計數(shù)特征:用戶在特定時間范圍(如過去 7d、 3d、 12h、1h 等)對當前廣告的特定的維度(如特定類別、特定位置、特定廣告主等)的廣告進行了特定操作(如點擊、瀏覽等)的次數(shù);
          3. 序列特征:即用戶在一段時間內(nèi)的行為序列,如最近 30 個點擊過的廣告/商品;典型的應(yīng)用可參考阿里的 DIN

          特征工程另一重要部分是特征篩選,特征篩選最簡單的做法是刪除指定特征,然后重新訓(xùn)練模型并評估,但是這種做法在訓(xùn)練時長較長時開銷是比較大的;因此更合理的做法是「在訓(xùn)練過程中便能得到每個特征的重要性」,對于 logistics regression、tree-model 這種解釋性較好的模型能夠做到這點,但是在 embedding-based 的 dnn 中,每個特征都只能拿到一個 embedding,怎么能做較好的特征選擇的?比較常見的方法有

          • attention unit:為每個 feature 增加一個 attention unit(如 DIN 中的 activation unit),訓(xùn)練過程中通過這個 attention unit 輸出的值來衡量每個特征重要性;其假設(shè)是對于重要特征,模型能夠自動學(xué)習(xí)出其權(quán)重情況
          • embedding weight:根據(jù)每個 feature 對應(yīng)的 embedding 的值大小來判斷重要性, 常見的有基于 embedding 的 L1 norm,L2 norm 等;其假設(shè)是對于重要特征,其對應(yīng)的 embedding 的值越大,類比 lr,其實 nn 可以近似認為是多個 lr 組成的

          上面的兩種方法都存在著較強的假設(shè),有沒有更直接一點的方法呢?回到最開始的想法,即刪除指定特征,然后重新訓(xùn)練模型并評估,能否在訓(xùn)練過程中便達到這一目的呢?其實是可以的,在訓(xùn)練過程中通過 mask 的方式近似將 embedding 全置為 0,近似當做 drop 掉這個特征,然后通過 multi-head 的方式計算這部分 auc 即可。

          另外,在召回階段,出于效率的考慮,線上往往只會抽取 user/ad 的單側(cè)特征,一些交叉特征雖然效果好,但是無法直接在線上抽取,這時可以考慮一些其他方法,如蒸餾,可參考阿里的 Privileged Features Distillation for E-Commerce Recommendations 或 Distillation 簡介

          訓(xùn)練

          在數(shù)據(jù)決定上限后,怎么通過模型逼近這個上限呢? 以下幾部分或許值得關(guān)注一下:模型結(jié)構(gòu),初始化,優(yōu)化器和損失函數(shù);這里說的模型主要還是針對 DeepLearning 中的 NN 模型,在算力和數(shù)據(jù)量都達到一定標準后,NN 的確能夠取得 sota 的效果,

          模型結(jié)構(gòu)

          這里的模型結(jié)構(gòu)針對是 NN 這一類模型,NN 里的各種結(jié)構(gòu)可以說是百花齊放,如推薦領(lǐng)域的 Wide&Deep、DeepFM、DIN、DCN等,CV 領(lǐng)域的 AlexNet、VGG、Inception、ResNet等,NLP 領(lǐng)域 transformer、Bert等;這些還是筆者讀書那會就已經(jīng)發(fā)表的paper 里的結(jié)構(gòu),如果算上近年發(fā)表的相關(guān)結(jié)構(gòu)等,那就更多了

          而由于深度學(xué)習(xí)的不可解釋性,使得模型的構(gòu)建這一過程基本沒有什么理論基礎(chǔ),基本上只能嘗試,然后根據(jù)效果推測有效的原因,所以也出現(xiàn)了 autoML 這種自動化去搜尋結(jié)構(gòu)和參數(shù)的方法。但是拋開那些玄學(xué)的部分,在實際應(yīng)用中模型結(jié)構(gòu)還是有一些可以借鑒的經(jīng)驗,

          1. VC Dimension[5]: VC Dimension 本質(zhì)上是在描述數(shù)據(jù)量大小和模型大小的關(guān)系,即模型參數(shù)量應(yīng)該與數(shù)據(jù)量大小成正比關(guān)系,否則容易出現(xiàn)過擬合或欠擬合的問題
          2. attention: attention 用最直白的話來說就是動態(tài)加權(quán),而這也很符合直覺,如每個特征的重要性不一樣,應(yīng)該對重要性高的給予更高的權(quán)重;在 NN 模型中,attention 常用在兩個地方: embedding 和 hidden unit;embedding 的 attention 策略可參考這篇文章 SENet雙塔模型:在推薦領(lǐng)域召回粗排的應(yīng)用及其它[6];而針對 hidden unit 的 attention 則可參考這篇 paper,Learning Hidden Unit Contributions for Unsupervised Acoustic Model Adaptation[7]
          3. multitask: multitask 結(jié)構(gòu)有兩個常見的用處, 第一種認為多個 task 之間有關(guān)聯(lián),聯(lián)合訓(xùn)練能增加數(shù)據(jù)量,同時提升效果;第二種則是對于預(yù)估值的準確性有要求的場景,如果廣告的 ctr、cvr 的預(yù)估,往往數(shù)據(jù)流中混合了多個場景的數(shù)據(jù),且每個場景對應(yīng)的數(shù)據(jù)的后驗不同的,為了保值預(yù)估值的準確性,需要將后驗值不同的數(shù)據(jù)分到不同的 head 中
          模型訓(xùn)練

          模型訓(xùn)練的過程,筆者認為可分為三大部分:初始化,優(yōu)化器和損失函數(shù)

          初始化對效果有影響,而這個問題可以從幾個角度去理解,從最優(yōu)化的角度理解,是因為 NN 的優(yōu)化往往是一個 non-convex 的問題, 如果初始化不好,一開始可能就處于一個不好的位置;從 bp 的角度理解,初始化的值過小或過大,容易導(dǎo)致梯度消失會梯度爆炸,關(guān)于這部分,deeplearning.ai 上的 Initializing neural networks[8] 講得比較好了,還輔以實踐,推薦讀一下。

          訓(xùn)練過程本質(zhì)上就是個優(yōu)化問題,通過 bp 過程不斷修正初始化的 parameter,從而達到損失函數(shù)最小的目標,更詳細的描述可以參考 Parameter optimization in neural networks[9];中間涉及到了各種超參數(shù)的選擇:如 learning rate、batch size、optimizer 等;其中 optimizer 也有非常多的選擇,其中 optimizer 的選擇往往又是一個值得考量的地方,關(guān)于各類 optimizer 的區(qū)別可以參考這篇文章,一個框架看懂優(yōu)化算法之異同 SGD/AdaGrad/Adam[10]

          損失函數(shù)基本都是通過 MLE 或 MAP[11] 推導(dǎo)出來的,其思想都是假設(shè)訓(xùn)練樣本都是服從某些分布生成的,而訓(xùn)練的目標是讓這些樣本的聯(lián)合概率最大;如 mse 的 assumption 是模型預(yù)估值與 ground truth 的誤差服從正態(tài)分布,cross entropy 的 assumption 是預(yù)估值服從伯努利分布;而這兩個其實也能被統(tǒng)一到 GLM 這個框架下。

          目前在業(yè)界更常見的做法是把問題轉(zhuǎn)為分類問題,對應(yīng)的 loss 即為 cross entropy,而其實一些回歸的 loss 也能通過 weighted logistics regression 轉(zhuǎn)化為分類的問題,比較經(jīng)典的就是 youtube 的 Deep Neural Networks for YouTube Recommendations[12] 中 Modeling Expected Watch Time 部分;基于最原始 cross entropy 衍生出來的 loss 主要有兩種形式

          1. reweight, 即對樣本進行各種加權(quán), 包括但不限于根據(jù)物理含義直接加權(quán)(如觀看時長)、通過 importance sampling 等方式推導(dǎo)出來的 loss,其最終形式也是 reweight 的模式
          2. auxiliary/regularization, 即在原始的 task 上增加一些輔助任務(wù)或正則項,如 center loss等

          預(yù)估糾偏

          在推薦場景下,往往只要序準確就可以了,而總體高估或低估理論上不會影響總體的排序;但是廣告場景下涉及到計費環(huán)節(jié),需要保證計費時的準確性,因此在廣告場景下還需要關(guān)注模型預(yù)估準確性的問題,假設(shè)模型高估了,相當于多收了廣告主的錢,廣告主吃虧,反之平臺吃虧。

          因此,在廣告場景下,模型需要關(guān)注的指標不僅僅是 auc,還需要關(guān)注預(yù)估偏差;為了保證糾偏后不影響總體的排序即 auc 指標,預(yù)估糾偏往往采用的是保序回歸,關(guān)于預(yù)估糾偏可參考這篇文章:使用 Isotonic Regression 校準分類器[13]

          另外,上面在 loss 中對樣本進行 reweight 的方式,會影響正負樣本的分布,導(dǎo)致統(tǒng)計意義上預(yù)估值的就是有偏的,應(yīng)對的策略可以在訓(xùn)練階段就進行糾偏,或者在預(yù)估值上直接做一個轉(zhuǎn)換,這部分內(nèi)容可參考這篇文章 Delayed FeedBack In Computational Advertising 的 Fake negative calibration

          出價

          上面的無論是召回+精排的架構(gòu),還是模型相關(guān)的部分,在推薦和廣告基本都是通用的;而出價(bidding)這個領(lǐng)域, 則是筆者認為是廣告相對于推薦的最大的不同;因為在廣告場景中引入了廣告主(advertiser)這一角色, 出價則是提供了一種方式供廣告主表達其對付費訴求,即對一次曝光/點擊/轉(zhuǎn)化愿意付多少錢。

          其次,廣告平臺往往需要提供多種產(chǎn)品形態(tài)來滿足廣告主的各種需求,如最常見的是保成本類產(chǎn)品、還有一些更追求跑量、品牌廣告則是對保量有嚴格的要求;針對這些不同的產(chǎn)品形態(tài),基本上最終的策略都落在了出價上。因為在基于 ecpm 排序的廣告系統(tǒng)中,基本上能比較靈活地改動的就是 bid 這個因素了

          而針對上面各種產(chǎn)品需求,其實都是可以通過相同的最優(yōu)化建模的方式來解決的,阿里之前發(fā)表過一篇 paper 來描述這個問題,對于出價公式的推導(dǎo)和控制器的構(gòu)建都有較好的指導(dǎo)意義;筆者針對這篇 paper 也寫了一篇文章 《Bid Optimization by Multivariable Control in Display Advertising》閱讀筆記,供參考。

          二、業(yè)務(wù)視角

          這里的業(yè)務(wù)視角,其實就是在實際迭代中直接面臨的幾個問題,也是會直接影響到客戶體驗與平臺收入的幾個問題;上面提到的技術(shù)可以說都是為了這些業(yè)務(wù)服務(wù)的。筆者將其總結(jié)為: 「起量、成本、持續(xù)跑量和冷啟動」四大塊。

          起量

          起量可以說是投放面臨的第一個難題,素材過審了、計劃建好了、預(yù)算也準備好,計劃是不是就能夠如期地起量呢?答案肯定不是的

          信息流廣告起量真的要靠大量堆賬戶堆計劃嗎?[14] 和 廣告投放不起量都是怎么解決的?[15] 就從優(yōu)化師的角度,描述了為了讓計劃起量而想出的各種“奇技淫巧”,總的來說,有以下幾個方向:優(yōu)化素材、放開定向、提高出價&預(yù)算、堆計劃等。

          那么從媒體/平臺側(cè)的角度來說,有什么手段去緩解廣告主起量難的問題么?

          一般來說,起量難的問題會隨著廣告候選變多而愈發(fā)嚴峻,而這也可以從 E&E 的角度去解讀,因為在 dau 基本穩(wěn)定的情況下,媒體展示廣告的次數(shù)是有限的,如果讓更多的新計劃得到展示機會,勢必會擠壓老計劃,而且新計劃起量后,后續(xù)能否持續(xù)跑量也是個問題,屬于 explore 的部分。

          因此,一個樸素的思想是固定一些 explore 的 quota,專門用于處于起量階段的計劃,相當于給這些起量階段的計劃開的綠色通道;有了綠色通道后,需要考慮的第二個問題是:哪些計劃能通過這些綠色通道?每個計劃都給同等的機會顯然不是最優(yōu)的,因為不同計劃起量后的表現(xiàn)不一樣,因此一種更合理的做法是建模判斷這些計劃在起量后的表現(xiàn)能力,然后根據(jù)表現(xiàn)能力決定計劃是否能進綠色通道,同時還需要考慮那些堆計劃的 case,避免對相同或只做了微小改動的計劃重復(fù)進入綠色通道,給更多廣告主以探索的機會。

          成本

          大部分客戶投放廣告關(guān)注的是其 roi(品牌廣告其實也可以認為追求的是長期的 roi),而近年各個媒體平臺上也出現(xiàn)了各種 roi 類的產(chǎn)品,但是 roi 類的產(chǎn)品要求廣告主把付費金額等敏感數(shù)據(jù)回傳,因此大范圍推廣還需要時間;當前使用更多的是成本類產(chǎn)品,即認為廣告主出價是 truthful bidding 的,可以將廣告主的出價作為成本,投放過程中盡量讓實際成本貼近廣告主填的出價。

          由于當前的廣告系統(tǒng)都是基于 ecpm 排序和扣費的,因此構(gòu)成 ecpm 的幾個元素(bid, ctr, cvr)的值必須要準確,才能保證成本不會過高(廣告主虧)或過低(媒體虧)

          首先需要重點關(guān)注的是 「ctr、cvr 預(yù)估的準確性,而這個問題的難點在于能拿到的訓(xùn)練數(shù)據(jù)的 label 是 0和1(代表是否點擊/轉(zhuǎn)化),但是實際中需要預(yù)估的是一個 rate,而這導(dǎo)致了沒有一個絕對準確的 ground truth,退化成只能通過訓(xùn)練來逼近訓(xùn)練樣本中的正負樣本的比例」,這也是為什么改變了訓(xùn)練樣本的分布需要在 loss function 或預(yù)估值上做糾偏。另外,從概率論出發(fā),大數(shù)定律告訴我們:當樣本數(shù)量越多,則其算術(shù)平均值就有越高的概率接近期望值,但問題是很多計劃的的 click、convert 數(shù)量非常少,所以訓(xùn)練也沒法很好的學(xué)習(xí)出各個計劃的期望cvr。

          因此,面對這么一個沒有絕對 ground truth,同時大數(shù)定律也不完全適用的而帶來的預(yù)估偏差的問題,需要有額外的策略來應(yīng)對,最常見的就是上面提到的保序回歸,這個也是基于后驗數(shù)據(jù)的統(tǒng)計對預(yù)估值做 calibration,因此也需要考慮糾偏粒度上的后驗數(shù)據(jù)是否過少的問題。

          另一個關(guān)鍵因素就是出價了,如果預(yù)估完全準確的情況下,按照廣告主給定的出價來投放是最優(yōu)的,但這顯然是不太可能,因此,才有了控制器不斷地調(diào)價來控制成本,滿足保成本的訴求,可以認為出價是預(yù)估不準的兜底策略。

          冷啟動

          無論是在廣告還是推薦,冷啟動都是一個長期存在的問題,其原因是新用戶/計劃缺少歷史數(shù)據(jù),模型/策略對其學(xué)習(xí)不夠充分,從而效果表現(xiàn)得很差;而在廣告場景中,新計劃比起新用戶的冷啟動往往是更常見且嚴峻的,因為對于成熟的媒體而言,dau/mau 等基本都是穩(wěn)定的,但廣告主會不斷地新建計劃。

          冷啟動往往會加劇上面提到的各類問題,如在模型上,預(yù)估值的準確性更難保證;在出價上,成本更難控制等;而針對冷啟動的問題,往往也會從兩個方面去優(yōu)化,即模型和策略。

          在模型上,有不少針對冷啟動的paper,且基本都是針對 nn 這一類 embedding-based 的模型,其基本思路都是讓冷啟動 item 的 embedding 貼近 warm-up 階段的狀態(tài),筆者將這類方法歸納成兩類

          1. 利用 meta-network 為冷啟動的 item 生成一個 id embedding 2. 基于 MAML 的方法訓(xùn)練模型,讓 embedding 更快收斂

          第一種方法的基本思想是「利用 item 的 meta 信息(即使冷啟動 item 也有)通過一個小網(wǎng)絡(luò)(即 mata-network)生成 embeddding,然后增加一些 auxiliary task 來訓(xùn)練這個小網(wǎng)絡(luò)」,這些 task 就有很多選擇了,更多是對業(yè)務(wù)的理解,如可以讓 meta-network 吐出來的 embedding 與item 在成熟期的 embedding 誤差盡量小(針對已經(jīng)步入成熟期的item 的樣本),也可以利用冷啟動 item 對網(wǎng)絡(luò)進行二次的訓(xùn)練等

          這種方法的兩篇比較典型的 paper 可參考

          • Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to Learn ID Embeddings[16]
          • Learning to Warm Up Cold Item Embeddings for Cold-start Recommendation with Meta Scaling and Shifting Networks[17]

          第二中方法基本上就是基于 meta learning 的思想,讓模型能夠更好的 learn to learn,即使對于樣本量很少的 item 也能較快學(xué)習(xí)到,代表方法就是 MAML,可以參考下面兩篇 paper,另外,關(guān)于 MAML 更通俗的介紹可參考知乎上這篇文章[18]

          • Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks[19]
          • MeLU- Meta-Learned User Preference Estimator for Cold-Start Recommendation[20]

          上面的方法基本都是讓冷啟動 item 的 id embedding 能更快收斂,還有另一種方法是「將冷啟動的 item 的一些更泛化的特征直接加入到模型中,如圖像、文本等描述性特征」,通過一些 pretrained model (如 VGG、Bert 等)將其轉(zhuǎn)為 embedding 的模型加入模型中,也是一種常見的套路。

          除了模型,策略上往往也需要對冷啟動的計劃有額外的舉措;如在冷啟動階段,可以給計劃”綠色通道”, 即一定 explore 的 quota,如同上面提到的起量問題一樣(起量其實也可以算是一個冷啟動問題),而這也涉及到老生常談的 E&E 問題了,一個跟 deep learning 的玄學(xué)程度不相上下的領(lǐng)域,這部分內(nèi)容介紹可參考 EE 問題概述。同樣地,這些 explore quota 也應(yīng)該根據(jù)每個計劃的預(yù)期表現(xiàn)給予個性化的分配;即需要識別計劃未來的表現(xiàn),畢竟往往個性化分別比起均分都是最優(yōu)的。此外,這些 quota 必然會對成熟期的計劃造成一定的積壓,所以也需要考慮冷啟動和成熟期的 trade-off。

          除了額外的扶持,冷啟動的出價方法也需要額外考慮,因為此時計劃的后驗數(shù)據(jù)基本是空的,那怎么才能獲取出價調(diào)控需要的這些數(shù)據(jù)呢?這里也有一些思路,比如可不可以利用相似計劃的后驗數(shù)據(jù)?或者信任預(yù)估,直接對預(yù)估值取 sum?或者產(chǎn)品層面就不對冷啟動計劃做苛刻的成本要求?

          同時,在實際產(chǎn)品中,往往也需要聯(lián)合產(chǎn)品教育廣告主,冷啟動期間就是會存在不穩(wěn)定性,更容易出現(xiàn)超成本等問題,而如果客戶對平臺粘性不高或者整個市場有其他更有競爭力的競品,這些超成本所帶來的損失往往也是需要有平臺來承擔。

          持續(xù)跑量

          持續(xù)跑量可以認為是計劃渡過冷啟動后,亦即計劃進入了成熟期需要面臨的問題,因為廣告主在投放追求的往往是兩個東西:「成本和跑量」,在成本能控住的前提下,跑量一般是越多越好的,但現(xiàn)狀是在不少的媒體上,計劃在進入成熟期不久就會掉量,而且往往是掉了之后就再也起不來了,也就是說計劃的生命周期較短。

          造成這個問題原因有很多,包括但不限于

          1. 廣告主頻繁地修改出價、定向、預(yù)算等有可能改變計劃的穩(wěn)態(tài)
          2. 模型預(yù)估的不準確、出價調(diào)控不夠穩(wěn)定,可能導(dǎo)致計劃突然爆量或掉量
          3. 如果競價環(huán)境比價激烈,那么對于有限的展示機會和不斷增加的計劃數(shù),部分老計劃掉量也是不可避免的
          4. 自然衰減,如計劃圈定的人群基本都曝光了,或者創(chuàng)意的自然衰減

          這個問題會往往會導(dǎo)致「廣告主為了跑量而不斷復(fù)制新建計劃」,進一步加劇起量、冷啟動等問題,也直接導(dǎo)致競爭環(huán)境變得更激烈,系統(tǒng)的機器負載更大,因此,保證計劃的持續(xù)跑量是所有廣告系統(tǒng)都需要解決的重要問題。

          拋開第三個比較難改變的因素,針對其他幾個原因,有一些思路也許值得借鑒

          • 廣告主要減少頻繁修改計劃的定向、出價等操作,這些需要平臺教育廣告主,至于頻率多大算頻繁,定向又應(yīng)該放開到何種程度,需要平臺同時實驗等手段測試出來,最好能給廣告主提供一個參考值
          • 要盡量減少系統(tǒng)波動等因素對計劃的影響,即要減少各中工程和算法的事故的影響,如盡量保證各種 infra 服務(wù)的高可用性,AB 實驗要更加謹慎,因為這些操作都是有可能影響計劃的穩(wěn)態(tài)
          • 對于要掉量的計劃生效額外策略;這里面又可分為兩個問題,如識別掉量計劃以及對計劃做何種策略,這個問題跟冷啟動的扶持也很相似

          總的來說,從業(yè)務(wù)視角來看的幾個問題:起量、冷啟動、成本、持續(xù)跑量,都是廣告主非常關(guān)心的幾個問題,也是直接衡量平臺給廣告主帶來的價值的幾個方面,值得重點關(guān)注;而且這里面也不像第一部分那么偏技術(shù)導(dǎo)向了,需要更多地考慮產(chǎn)品形態(tài)、如何更好地服務(wù)客戶等。

          三、產(chǎn)品視角

          這里的產(chǎn)品視角也可以理解為廣告主的視角,亦即平臺披露給廣告主的產(chǎn)品形態(tài);一般可將其分為劃分為品牌廣告、效果廣告兩大類,而這兩大類下面又有很多細分;這里就簡單概述一下這兩大類廣告的一些基本知識。

          品牌廣告

          品牌廣告往往是一個廣告系統(tǒng)發(fā)展初期的廣告模式,基本流程是廣告主先付錢,平臺保證曝光,如 cpt,gd 就是典型的品牌廣告,前者沒什么好說的,固定的廣告位在特定位置強出就好了;后者則一般會涉及到庫存預(yù)估和庫存分配兩個問題

          • 庫存預(yù)估:gd 承諾的是未來的曝光量,因此需要保證當前售賣的庫存不能超過未來的曝光量;一般可以通過時序預(yù)估模型來進行預(yù)估
          • 庫存分配:將庫存和 gd 計劃作為 supply side 和 demand side 構(gòu)造二部圖,然后通過分配算法進行分配,常見的分配算法有 HWM 和 SHALE[21]

          上面的做法只是在解決 gd 廣告的保量問題,但是隨著優(yōu)化的精細化,除了保量,還需要考慮一些其他問題,如

          • gd 廣告和效果廣告往往存在競爭關(guān)系(因為曝光的機會是共享且數(shù)量是基本固定的), 需要聯(lián)合效果廣告建模使得利益最大化
          • gd 廣告除了保量,往往客戶也會提出效果的要求,否則平臺可以把低質(zhì)流量直接給到 gd 計劃;因此,從建模上這成了一個多約束的優(yōu)化問題

          如果額外考慮以上這兩點,上面?zhèn)鹘y(tǒng)的分配算法就有點問題了,首先庫存預(yù)估出來的量往往是總體的曝光量,gd 能占用其中多少的量需要拍一個數(shù),或者根據(jù) cpm 分配;其次,上面分配算法是直接把這個曝光給這個gd 廣告的,不會判斷質(zhì)量的好壞,但我們實際是不希望把太差的量給廣告主的,同時也不能對競價有過多的擠壓,因此需要判斷流量對于 gd 計劃的質(zhì)量,需要為 gd 計劃考慮一種更加靈活的拿量方法。

          綜上,gd 廣告需要考慮保量、效果、溢價率以及對效果廣告的擠壓,因此建模時也需要把這些因素考慮進去。

          效果廣告

          效果廣告占了廣告市場的大部分的份額,因為絕大部分廣告主關(guān)心的是投放的 roi;而上面提到的各種技術(shù),很大一部分都是為效果廣告服務(wù)的,如保成本、跑量等;這里就不贅述了。

          深度轉(zhuǎn)化產(chǎn)品

          隨著優(yōu)化的深入,常見的效果廣告的優(yōu)化目標已經(jīng)不能滿足所有廣告主的需求了,比如部分行業(yè)廣告主會希望直接優(yōu)化到 roi 而不僅僅是成本,同時也能提供相應(yīng)的數(shù)據(jù)

          這個時候就需要考慮為這個廣告主進行額外建模了,這里又有兩種選擇,一種是廣告主直接把數(shù)據(jù)回傳到平臺進行常規(guī)的模型訓(xùn)練,另一種則是廣告主不愿意把 label 直接回傳到平臺,這中情況下可以通過 Federated Learning 的方法對其進行優(yōu)化,筆者在實際中對這部分也有一定實踐經(jīng)驗,詳細可參考 字節(jié)跳動聯(lián)邦學(xué)習(xí)平臺Fedlearner:4個月落地開源,投放增效200%+

          建模后往往會通過出價的方式應(yīng)用模型,除非廣告主能夠提供直投深度目標的 bid;而這往往又是一個多目標約束的優(yōu)化問題,具體的策略可以看上面出價部分

          小結(jié)

          綜上,本文主要從技術(shù)視角、業(yè)務(wù)視角和產(chǎn)品視角總結(jié)了一些筆者比較關(guān)注的計算廣告領(lǐng)域的知識

          • 技術(shù)視角:基本是 “召回+精排” 的結(jié)構(gòu),里面兩個值得關(guān)注的部分是模型和出價
          • 業(yè)務(wù)視角:主要面臨4個問題:起量、成本、持續(xù)跑量、冷啟動
          • 產(chǎn)品視角:主要可分為品牌廣告、效果廣告和深度轉(zhuǎn)化廣告三大類

          內(nèi)容很多也很亂>_<, 但在整個廣告系統(tǒng)下也只是冰山一角;同時因為保密性原因,很多具體方法沒有在文中提及,但是相信提及的思想都是普適的,歡迎交流指導(dǎo)。

          一起交流

          想和你一起學(xué)習(xí)進步!『NewBeeNLP』目前已經(jīng)建立了多個不同方向交流群(機器學(xué)習(xí) / 深度學(xué)習(xí) / 自然語言處理 / 搜索推薦 / 圖網(wǎng)絡(luò) / 面試交流 / 等),名額有限,趕緊添加下方微信加入一起討論交流吧!(注意一定要備注信息才能通過)

          本文參考資料

          [1]

          推薦系統(tǒng)技術(shù)演進趨勢:從召回到排序再到重排: https://zhuanlan.zhihu.com/p/100019681

          [2]

          圖像檢索:再敘ANN Search: https://yongyuan.name/blog/ann-search.html

          [3]

          rtb-papers: https://github.com/wnzhang/rtb-papers#conversion-attribution

          [4]

          SENet雙塔模型:在推薦領(lǐng)域召回粗排的應(yīng)用及其它: https://zhuanlan.zhihu.com/p/358779957

          [5]

          VC Dimension: https://en.wikipedia.org/wiki/Vapnik%E2%80%93Chervonenkis_dimension

          [6]

          SENet雙塔模型:在推薦領(lǐng)域召回粗排的應(yīng)用及其它: https://zhuanlan.zhihu.com/p/358779957

          [7]

          Learning Hidden Unit Contributions for Unsupervised Acoustic Model Adaptation: https://arxiv.org/abs/1601.02828

          [8]

          Initializing neural networks: https://www.deeplearning.ai/ai-notes/initialization/

          [9]

          Parameter optimization in neural networks: https://www.deeplearning.ai/ai-notes/optimization/

          [10]

          一個框架看懂優(yōu)化算法之異同 SGD/AdaGrad/Adam: https://zhuanlan.zhihu.com/p/32230623

          [11]

          MLE 或 MAP: https://zhuanlan.zhihu.com/p/32480810

          [12]

          Deep Neural Networks for YouTube Recommendations: https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf

          [13]

          使用 Isotonic Regression 校準分類器: http://vividfree.github.io/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/2015/12/21/classifier-calibration-with-isotonic-regression

          [14]

          信息流廣告起量真的要靠大量堆賬戶堆計劃嗎?: https://www.cnwebe.com/articles/187702.html

          [15]

          廣告投放不起量都是怎么解決的?: https://www.zhihu.com/question/438326415

          [16]

          Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to Learn ID Embeddings: https://arxiv.org/pdf/1904.11547.pdf

          [17]

          Learning to Warm Up Cold Item Embeddings for Cold-start Recommendation with Meta Scaling and Shifting Networks: https://arxiv.org/pdf/2105.04790.pdf

          [18]

          這篇文章: https://zhuanlan.zhihu.com/p/136975128

          [19]

          Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks: https://arxiv.org/pdf/1703.03400.pdf

          [20]

          MeLU- Meta-Learned User Preference Estimator for Cold-Start Recommendation: https://arxiv.org/pdf/1908.00413.pdf

          [21]

          HWM 和 SHALE: https://zhuanlan.zhihu.com/p/123187987


          - END -




          2021 年各家大廠的 AI Lab 現(xiàn)狀如何?

          2021-09-01

          [舊文新讀] 深度學(xué)習(xí)在Airbnb搜索的應(yīng)用實踐

          2021-08-02

          Focal Loss --- 從直覺到實現(xiàn)

          2021-07-28

          聊一聊北美算法工程師日常

          2021-07-15



          瀏覽 133
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  人人爱人人操五月天 | 亚洲精品国产AV婷婷 | 日本内射黄页 | 色亚洲婷婷 | www.黄色亚洲 |