基于动态背包的多场景广告序列投放算法
1.背景
在電商平臺中,在預算約束下優化一段時間的GMV是廣告主的核心訴求之一。作為電商平臺,從廣告主視角如何幫助其實現該訴求是非常重要的問題。
總之,在預算約束下優化一段時間的GMV能夠帶來三方共贏,其重要性不言而喻。
為了解決該問題,絕大多數出價策略將一段時間的GMV優化問題拆解為:對每次用戶請求進行獨立優化,并簡單地認為這些獨立優化的匯總結果可以實現一段時間整體GMV的最優化。事實上,這類策略得到的是次優解,因為它們以孤立的視角把消費者和廣告限定在了單次交互中,而忽略了一段時間內的多次交互可能產生的其它影響。
為什么孤立的單次交互視角優化會導致次優解?我們從實際情況出發,首先,同一個消費者在一段時間內(例如3-7天)會多次訪問淘寶,并且隨機地在淘寶不同的場景出現(例如首頁猜你喜歡、支付成功等),這為同一個廣告和同一個消費者在不同場景多次接觸創造了機會;其次,大量的成交并非發生在消費者和廣告的首次接觸中,而是發生在第二次或之后的多次接觸中。通過AB實驗,我們發現廣告和消費者的前序接觸會影響消費者對該廣告在后續接觸中的點擊率和轉化率,說明多次的接觸對消費者的心智有累積影響的效應。在這樣的背景下,單次請求優化結果的累積很容易導致次優解。
舉個常見的例子,假設消費者和廣告存在兩次接觸,第一次接觸時,其轉化的期望低于其它流量轉化的平均期望,而如果在接觸一次后再發生第二次接觸,由于消費者心智累積效應,其第二次接觸后轉化的期望顯著升高,使得兩次接觸的整體轉化期望高于其它流量轉化的平均期望。在這種的設定下,單次貪心的優化策略在第一次接觸時由于其轉化期望較低,所以不會選擇去競得流量;而由于第一次的未接觸導致了心智并沒有產生積累效應,因此第二次接觸的轉化期望依然較低,也不會去競得流量。然而,如果在第一次接觸時就能預估到兩次接觸的整體轉化期望較大,那么第一次接觸就會做出競得的決策,并順理成章地競得第二次高價值接觸,我們稱這種策略為序列投放算法,顯而易見,其在整體上比單次請求優化策略(下文統一稱為“單次投放算法”)實現了更好的效果。
這個例子中,序列投放算法和單次投放算法做出不同決策的核心原因在于:第一次接觸前,單次投放算法只評估了單次請求的價值,即短期價值,而序列投放算法評估了未來多次請求的整體價值,我們稱為長期價值。我們定義同一個消費者和同一個廣告的多次接觸構成了一個廣告投放序列,并定義長期價值為從此刻起剩余序列的總價值??梢钥闯?#xff0c;當序列長度為1時,短期價值是長期價值的一種特殊情況。因此,基于長期價值的序列投放策略能夠兼容并優于基于短期價值的單次投放策略。基于這個理念,我們提出了基于長期價值的多場景序列投放算法。
然而,基于長期價值的序列投放算法在解決預算約束下GMV的優化問題時存在諸多挑戰:
針對這些挑戰,我們逐一給出了相應的解決方案。首先,我們將預算約束問題建模為背包問題:背包中物品的價值為<用戶,ad>形成的序列價值(長期成交、收藏加購等),物品的重量為此序列中發生的成本(消耗);我們按照性價比(序列價值/成本)由高到低逐個選擇物品,直到選出的物品總消耗剛好不超過預算約束。這里,由于物品重量遠小于背包容量,按性價比排序的貪心算法能夠接近最優解。然而,每個序列的價值和成本與運營該序列的廣告策略有關,因此這是一個動態背包問題。為求解此動態背包,我們采用雙層優化問題的解法來迭代求解:1)物品的貪心挑選,2)物品價值/成本以及對應策略的優化。在此框架下,我們提出了一種近似最優的運營策略,該策略滿足強化學習中Policy Iteration算法的性質,能夠保證其學習的收斂性。此外,為了使策略在實際場景中落地,我們提出了一種將連續出價轉換為離散動作的方法,能夠在不丟失出價精度的情況下,大幅度減少動作的探索空間,提高學習效率。綜上,我們將整個算法稱之為MSBCB(Multi-channel Sequential Budget Constrained Bidding),大量的離線和在線實驗驗證了我們算法的有效性。下面我們詳細介紹問題的定義、解決方案和實驗結果。
該工作已被ICML-2020接收,論文原文《Dynamic Knapsack Optimization Towards Efficient Multi-Channel Sequential Advertising》地址:https://arxiv.org/abs/2006.16312
2.建模方案
3.3 預估模型
上面主要介紹了如何根據長期價值來做相應的決策,在本小節,我們介紹長期價值該如何預估。首先,模型的預估對象分成交和消耗兩種,因此我們這是一個多任務學習,需要同時學習回歸和分類。為應對多任務學習,我們將模型結構進行拆分,底層共享embedding,頂層網絡參數解耦,以降低多任務學習互相不利干擾,而且通過validation的方式優化各個loss之間的權重。其次,對于回歸任務,由于其存在大量的零樣本,導致模型成為一個零膨脹模型(Zero-inflated models),其輸出基本上全為0,無法用MSE loss來正常學習網絡參數。為解決此問題,我們提出兩種解決辦法:
另外,對于偏長期預估的模型,由于歷次大促活動會對樣本分布有較大影響,造成模型嚴重高估問題。為了解決這些問題,我們通過穩定的樣本分布調整,保障訓練樣本與預測樣本分布近似一致。此外,我們還在樣本特征上也有一些嘗試,在用戶歷史行為基礎上新增了一些實時行為特征,帶了來一些效果提升。
3.4 整體框架
我們對整個流程進行梳理:
步驟一描述了我們基于長期價值對每個廣告進行投放/不投放的動作決策,但無論哪個動作都會獲得一個最終出價,即使是不投策略也會產生一個出價,因為此出價會保證此廣告最終不會贏得競價;步驟二描述了我們通過對比當前用戶最高性價比與廣告主設定的閾值,來判斷此廣告背包中是否還有多余的空間能裝下當前用戶;前兩個步驟需要進行在線打分和決策,實時地與用戶交互,而第三個步驟則是根據其反饋離線更新閾值CPRthr和模型參數,具體來說,閾值CPRthr的預設初始值一般較高,這樣可以保證背包中都是優質的流量(性價比),但此時消耗較少,然后逐步下調閾值導致消耗增加,直到消耗滿足預算。
4.離線實驗
為了對比我們算法最優性質,我們在離線對比了我們方法MSBCB與多種強化學習baseline以及其他理論最優方法,具體如下:
- Greedy + DDPG:動態背包下使用DDPG求解動作策略,沒有使用動作約減。
- Greedy + DQN: 動態背包下使用DQN求解動作策略,出價被手動離散至11維。
- Greedy + PPO: 動態背包下使用PPO求解動作策略,出價被手動離散至11維。
- MSBCB: 這是我們基于RL的方法,動態背包下使用DQN求解動作策略,并使用了動作約減。
- Myopic Greedy: 靜態背包下使用短視預估值(CVR)來構造動作策略。
- Greedy with maximized CPR (enumeration):動態背包下使用枚舉方法求解動作策略,枚舉選擇的是性價比CPR最大的策略。
- MSBCB (enumeration):這是我們理論最優解,動態背包下使用枚舉方法求解動作策略,枚舉選擇的是最大reward的策略(不通過RL求解)。
- Offline Optimal (dynamic programming): 這是離線的全局最優解,使用動態規劃方法,此方法不能用于在線實驗,只能應用于非常小規模的離線實驗 。
離線數據中包含了10000個用戶和500個廣告,每個廣告有4000元的預算,我們用真實的數據對線上的用戶心智進行了分析和擬合,并將上面算法與擬合后的模擬器進行交互,畫出各個算法的學習曲線在GMV上的表現,其結果如下:
從上面的學習曲線,我們能獲得以下結論:MSBCB優于DDPG, DQN, PPO說明我們提出的動作約減比直接使用RL更有效;MSBCB優于Myopic說明基于長期價值的決策優于基于短期價值的決策;MSBCB(枚舉)約等于Offline Optima說明我們方法理論最優解與全局最優解完全一致;而Greedy maxCPR(枚舉)小于MSBCB(枚舉)說明最大化CPR的理論最優解并不是全局最最優,對應章節3.2證明部分,同時也說明我們算法的理論天花板優勢;而MSBCB和MSBCB(枚舉)的對比說明了我們算法在實際學習過程中能快速收斂并逼近理論天花板。
5.在線實驗
為了驗證算法在實際落地中的效果,我們在淘寶線上首猜、購后等9個場景部署了MSBCB算法以及Myopic Greedy。我們考慮以下幾個實驗對象:
我們通過用戶尾號進行分桶。
長期總體效果:首先,為了驗證其長期的優化效果,我們將當天展現廣告的成交、消耗等指標窗口拉到7天,以觀察廣告展現后的7天長期效果;我們統計了2019.12.13-2019.12.19這七天內展現的廣告的長期效果如下,從表中可以看出,我們的實驗桶test2能夠在cost基本持平的情況下(<1%),提升+10%的GMV,使廣告主的ROI提升近10%。
長期天級效果: 為了更清晰展現我們的方法在天級上的表現,下圖給出2019.12.13-2019.12.19七天內每天ROI和消耗的情況;其中,左坐標軸表示cost的增減情況,由折線表示,右坐標軸表示ROI的增減,由條形柱表示。從圖中我們可以看出,我們實驗桶在ROI指標每天基本上都正向,最高能達到+19.07%(test2,20191218),最低在+0.58%(test2,20191214),波動還是存在的;消耗大部分都控制在5%以內。
ROI正負向店鋪占比: 我們統計這段時間內各個店鋪的ROI正負向占比如下圖(a),85.1%的店鋪有ROI的正向效果,其中,7.4%的店鋪ROI能優化至+30%以上,51.1%的店鋪ROI能提升至+10-30%,26.6%的店鋪能提升+0-10%左右。這些結果說明了我們算法對于絕大多數店鋪都有較好的正向效果。
序列長度變化:為了凸顯我們的方法在長期價值上的優化,我們對比了用戶在不同實驗方法下對于一個廣告接觸的平均次數(我們稱為序列長度),上圖(b)給出了我們的方法在用戶序列長度占比上相對于整合營銷提升的幅度。結果發現,我們方法能提升序列長度的占比,特別是當序列長度為7的case占比能提高30%,這說明了我們方法能夠促成更長的用戶行為序列,而更長的用戶行為序列意味著更多的機會去影響用戶對某個廣告的心智,從而優化用戶對于廣告的在長期上的成交。
分場景的優化情況:進一步,我們還可以分析實驗算法在各個場景上的表現情況,下圖畫出了各個實驗桶在9個場景的預算分布以及對應ROI的情況。左坐標軸為ROI,對應條形圖,給出了各個算法在這些場景上的ROI表現;右坐標軸為各實驗桶相對于base在各個場景上消耗的增減,對應折線圖。從圖中我們能觀察出一些現象:
這些現象說明了我們算法能夠在場景間對流量進行合理分配,把預算盡可能畫在高ROI的場景,另外,長期價值模型相對于短期cvr模型更加看好購中、購后等場景,說明了它對用戶的運營偏向使用較長的交互序列去優化長期價值,間接證明了我們算法的有效性。
更多實驗結果請參考論文原文:https://arxiv.org/abs/2006.16312
6.總結展望
在機制策略層面,我們首次采用了基于長期價值的動態背包問題來建模和求解序列廣告投放問題,整個建模不僅貼切問題本質,還具有非常漂亮和簡潔的理論支持,而且建模方案易于實現和應用。在落地方面,我們進行了大量的離線和在線實驗,不僅證明了我們算法的收斂性和最優性,而且在線上幫助廣告主在相同的預算下提升了10%的ROI,表明了我們算法對長期價值/短期價值的優化能力。我們建立了一套基于長期價值的背包序列化投放理論和技術,并在機制策略層面取得了一定的成果和進展,在未來,不只針對長期成交,我們會將長期價值橫向擴展到其他指標,如收藏、加購、消耗、多目標融合等,最終滿足廣告主在長期價值上的各種訴求優化。
原文鏈接:https://developer.aliyun.com/article/770135?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的基于动态背包的多场景广告序列投放算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试面试题集锦(五)| 自动化测试与性能
- 下一篇: 开源 | 如何实现一个iOS AOP框架