下面將圍繞四點展開:
1. 使用者增長業務背景
在使用者增長的過程中,首先需要把使用者增長劃為不同的使用者態,不同的使用者態存在不同價值。新使用者會變為低活使用者、中活使用者直至高活使用者,在整體過程中,也會隨時變成沉默使用者。對使用者增長而言,新使用者、低活使用者和沉默使用者是非常有價值的,他們的到訪能有效提高APP的活躍度。
RTB是實現使用者增長的主要方式之一。它的主要流程是:首先DSP參與廣告競價,在競價成功之後,廣告會展現在外部平臺上,使用者在點選之後會切換至優酷APP上,如果感興趣的話會有視訊消費和次日回訪。整個流程分為兩部分,前半部分歸屬於RTB競價,後半部分屬於使用者增長。
使用者增長的主要業務目標是在成本可控的條件下,最大化高價值的DAU量,即讓更多的新使用者、低活使用者以及沉默使用者來到平臺進行消費,增加平臺活躍度。
2. 廣告競價RTB概述
RTB過程如下:當用戶訪問的Web頁面或APP應用時,請求傳送至ADX,由ADX轉發至多個DSP,DSP根據從使用者需求平臺 ( DMP ) 上取得的使用者特徵進行預估,在100ms之內將廣告和出價返回至ADX,之後ADX根據多個DSP返回的結果,根據一定的排序規則和計費規則,選擇一個合適的廣告投放給使用者,之後又將使用者是否點選這條廣告的資訊返回給成功獲得了該次競價的DSP代理。
RTB中的主要關注點是成交機制和計費模式,其中成交機制包括:GFP ( 最高價格成交 ), GSP ( 第二價成交,通用的方式 ), VCG ( 通過效用計算成交價格,存在演算法上,理解上的難度,用的較少 )。計費模式主要有CPM,CPC,CPA和OCPX,其中CPM是由廣告主承擔預估風險,由DSP預估使用者對廣告主的價值,CPC和CPA是由平臺來預估使用者對於各個DSP的價值,OCPX是由平臺自動調整出價,由平臺預估價值,使用者承擔風險。
在我們的業務場景中,使用的是GSP成交機制,CPM的計費模式。並且優酷業務場景有鮮明的特點:
使用CPM計費,需要我們自身建模預估,但可利用站內資料;對於不同使用者態的拉活,引流成本是不一樣的,需要針對不同人群提供成本控制;作為只有一個使用者的DSP代理,可以接入不同的ADX平臺,需要針對多渠道多平臺做模型融合。雖然現有的ADX平臺能夠支援直接在上面投放廣告,但是存在很多問題:不支援定向使用者分層,不支援個性化,資料屬於平臺方,無法進行後續優化,接入平臺過多也會增加消耗等等,因此我們自建DSP,滿足業務場景需求。
1. 演算法流程
離線產生數百萬的廣告,第一步通過人工精選或者演算法選擇來保證廣告池的動態進出,例如刪除投放時間過長,點選率過低的廣告,通過演算法選擇高品質的廣告;第二步通過個性化多路召回適合使用者的千百個廣告;第三步將經過召回的廣告通過規則過濾,例如會過濾重複廣告,或者會根據曝光頻率來控制;第四步將這些廣告通過預估模型,選擇價值最高的廣告通過報價演算法產生報價,最後將廣告和報價結果返回至ADX。
與推薦系統相比,流程借鑑了推薦系統的多路個性化召回,區別在於推薦系統關注Rank順序,而廣告還關注CTR偏差,推薦系統一般最後的元件是重排 ( ReRank ),而廣告系統在預估之後需要進行報價計算。
2. 演算法實現方案
我們面對的業務場景的主要特點是:
RT限制比較嚴格,要在100ms內返回;存在多渠道多平臺;接入量大,機器資源比較緊張。常用的排序模型有LR,GBDT,DNN ( DCN/WDL/MMOE ) 等,LR需要大量的特徵工程工作來提高模型精度,GBDT的訓練和預估都很快,能有效緩解RT問題,但是類別特徵的處理上容易使模型過擬合,DNN的embedding技術能夠處理各種特徵,但是由於需要儲存包含每個特徵對應的embedding的大矩陣,線上記憶體消耗很大,而且DNN類的模型雖然能達到很高的精度,但訓練和預估都很耗資源並且打分時的RT很高。
在多渠道多平臺統一模型方面,主要存在兩個問題:
不同渠道之間有差異。例如汽車相關廣告,在母嬰社群和汽車之家論壇點選率之間會有不同;渠道平臺相關沒有現成的特徵。在實際中,我們以平臺本身作為特徵,通過根據歷史資料構建不同平臺的統計特徵,使模型感知到渠道平臺的差異,最後基於不同平臺不同分層的Match特徵,實現了由LR單渠道模型到GBDT統一模型的升級,帶來了業務上的明顯收益。3. 遇到的問題和思考
推薦中常用召回都是Item-based,通過使用者觀看的視訊來尋找相似的視訊,認為這些相似視訊是使用者喜歡的視訊,這導致推薦系統有以下缺陷:
使用者觀看的視訊未必是使用者喜歡;相似視訊的相似之處未必是使用者觀看視訊的真正原因;低頻使用者觀看的視訊非常少,推薦結果缺乏多樣性。從因果推斷的角度思考上述問題的話,我們認為使用者變沉默的原因是對之前推薦的內容不滿意,而使用者留存的原因是因為推薦的視訊他比較喜歡,因此,我們利用無偏資訊構建相似度量,構造低活使用者到高活使用者的匹配,找到他的反事實映象人,然後進行相關推薦,在業務上也取得了很大收益。
1. 業務背景及問題的形式化定義
不同的場景下,廣告投放的報價演算法存在不同的約束,主要場景包括日常投放和衝量投放,本質上都是多渠道多分層的投放。對於日常投放而言,會存在預算約束,首活成本約束,使用者價值約束 ( 需要去高活,要更多的高品質沉默使用者 );當運營有衝量需求時為衝量投放,這時預算充足,有首活成本約束,使用者價值約束。
2. 單PID解決衝量投放
根據衝量投放的條件:預算充足、有首活成本約束、使用者價值約束,可以解出報價公式,即報價為預估的CTR/CVR與報價係數alpha之積。我們通過單控制器的方法來控制報價係數alpha,使其再能夠滿足成本約束的同時提升轉化率。
控制器根據Feedback資料和控制函式計算公式,可以計算出一個訊號,再將其傳入執行器中通過執行器函式計算,從而給出報價。常見的控制器有PID和水波控制器,PID通過振幅,累積誤差和波動來調節,而水波控制器僅僅通過累計誤差來進行調節,能力相對弱一些。執行器是將控制訊號進行指數變換,對初始值進行放大或者縮小,實現最後的出價。
3. 日常投放解決方案
對於日常投放而言,會存在預算約束,首活成本約束,使用者價值約束 ( 需要去高活,要更多的高品質沉默使用者 ),我們採用多目標約束下的最大化問題來建模,用拉格朗日對偶法解決,能解出一個出價公式 ( 可參考KDD2018對應論文 )。計算所得的出價公式中有兩個引數p、q,我們通過兩個PID對這兩個引數進行控制來實現報價。不同於單PID的解決方案,一是在q控制器中增加了修正訊號,使其以最終CPC為控制目標,二是利用線性插值的方法建模兩個PID之間的耦合影響 ( 具體方法可以參考KDD2018 )。
4. 報價工程化
使用者的請求通過DSP接入管理後臺,請求在進入系統之後,有以下流程:
整個實踐過程中,在技術選型方面,除了理論上的支援,我們必須考慮機器資源,人力等方面的約束,並考慮到各種可用資源 ( 公司內部,開源等 ),將整個目標進行體系化,分層拆分優化,通過演算法AB系統驅動效率提升;針對業務特點建模,具體問題具體分析,技術為業務服務。
後續,我們可以在實現CTR預估的基礎上,實現使用者價值的預估,實現多目標預估;在報價演算法上,可以嘗試基於強化學習進行報價;業務上,可以由促活擴充套件至拉新,熱劇宣發,會員等方面,這些都可以依託已建立的預估系統和報價技術框架進行發展。