因果推斷在微視激勵和供需場景的應(yīng)用

一、因果推斷與激勵算法
1、業(yè)務(wù)背景與業(yè)務(wù)建模
首先簡單地介紹一下騰訊微視的紅包激勵業(yè)務(wù)背景。與其他的產(chǎn)品和場景類似,在給定的預(yù)算之下,我們向騰訊微視的用戶發(fā)放一些現(xiàn)金激勵,希望通過現(xiàn)金激勵最大化用戶的次日留存和當(dāng)天使用時長?,F(xiàn)金激勵的形式主要是以不定的時間間隔為用戶發(fā)放不定數(shù)量和不定金額的現(xiàn)金紅包。以上提到的 3 個“不定”最終由算法來確定。這三個“不定”也稱紅包激勵策略的三要素。
接下來講一下不同的現(xiàn)金激勵策略的抽象形式。第一種以紅包序列的形式來表示策略,比如對紅包序列進行編號,然后用 one-hot 的形式為每個 treatment 獨立編號。它的優(yōu)點是能夠刻畫更多細節(jié),例如每一個紅包之間的金額等細致的策略,以及相對應(yīng)的效果。但是這必然會需要更多的變量來表示策略,策略的探索空間非常大,另外在進行策略的探索和擇優(yōu)時,也會需要更多的計算量。而第二種形式,也就是使用三要素的向量來表示策略,其形式更靈活,探索的效率也會更高,但是它確實會忽略了一些細節(jié)。第三種方式更數(shù)學(xué)一點,即紅包序列直接變成一個關(guān)于時間 t 的函數(shù),函數(shù)里的參數(shù)可以構(gòu)成向量,從而表示策略。因果問題的建模和策略的表示,極大程度地決定了因果效應(yīng)估計的準確性和效率。
假設(shè)我們有了一個良好的策略抽象和向量表示之后,接下來要做的就是選擇算法框架。在這里有三種框架。第一種框架在業(yè)界比較成熟,即使用因果推斷結(jié)合多目標約束優(yōu)化的方式來做策略的分配和優(yōu)化。這種框架中,因果推斷主要負責(zé)的是估計不同策略對應(yīng)的用戶核心指標,也就是我們所說的用戶次日留存和時長的收益提升。估計之后,我們利用多目標的約束優(yōu)化來做離線的預(yù)算策略分配以滿足預(yù)算約束。第二種就是離線強化學(xué)習(xí)結(jié)合多目標約束優(yōu)化方法。這個方法我個人認為是比較有前景的,主要原因有兩個。第一個原因是在實際應(yīng)用場景當(dāng)中,策略非常多,強化學(xué)習(xí)本身是可以高效地進行策略空間探索的,同時,由于我們的策略是有依賴的,而強化學(xué)習(xí)可以建模策略間的依賴;第二個原因是因為離線強化學(xué)本質(zhì)實際上是一個反事實估計(contrafactual estimation)的問題,其本身具有很強的因果屬性。然而遺憾的是,在我們的場景當(dāng)中曾經(jīng)嘗試離線強化學(xué)習(xí)的方法,但它在線上效果沒有達到理想的效果。究其原因,一方面是我們的方法問題,另外一方面主要受限于數(shù)據(jù)。要想訓(xùn)練一個好的離線強化學(xué)習(xí)模型,需要數(shù)據(jù)中的策略分布足夠廣,或者叫策略分布的足夠均勻。也就是說,我們使用的隨機數(shù)據(jù)也好,或者是觀測數(shù)據(jù)也好,希望能夠盡可能地探索到更多的這種策略,并且分布的相對來說會均勻一些,這樣才能夠減少做反事實估計的方差。最后一種算法框架在廣告場景當(dāng)中比較成熟,我們通過在線強化學(xué)習(xí)方式做流量控制和預(yù)算控制。這種方法的優(yōu)勢是可以及時地、快速地響應(yīng)線上的突發(fā)事件,同時對于預(yù)算的控制相對更加準確。在引入因果之后,我們做流量選擇或控制的指標就不再是 ECPM 指標了,可能就是我們現(xiàn)在估計的次留和時長的一個提升量。經(jīng)過我們一系列的實踐嘗試,最終選擇了第一種算法框架,也就是因果推斷結(jié)合多目標約束優(yōu)化,原因是它更穩(wěn)定且更可控,同時它對線上工程的依賴也更少。
第一種算法框架的 Pipeline 如下圖所示。首先離線計算用戶特征,然后用因果模型去預(yù)估用戶在不同策略下核心指標的提升量,也就是所謂的 uplift。基于預(yù)估的提升量,我們利用多目標優(yōu)化來求解,從而分配最優(yōu)策略。為了加速整個過程的計算,我們在結(jié)構(gòu)化時,會提前對人群進行聚類,也就是說我們認為這一簇里邊的人具有相同的因果,相應(yīng)的,我們給同一簇人分配同樣的策略。

2、策略假設(shè)與因果圖
基于上述討論,接下來重點討論一下怎么做策略的抽象。首先來看我們?nèi)绾纬橄笠蚬麍D。在紅包激勵場景中需要建模的因果,體現(xiàn)在多天與多個紅包之間。因為前一個紅包肯定會影響下一個紅包是否要領(lǐng)取,因此它本質(zhì)上就是一個 Time-Varying Treatment Effect 問題,抽象成時序因果圖由如右圖所示。
以一天內(nèi)多個紅包為例,T 所有下標都代表的是紅包的一個序號。此時的 T 代表的是當(dāng)前紅包的金額,以及距離上一個紅包發(fā)放的時間間隔所組成的向量。Y 是用戶的紅包下發(fā)之后的當(dāng)次使用時長,和次日留存的提升量。X 是截止到當(dāng)前時刻觀察到的混淆變量,例如用戶的觀看行為或人口屬性等。當(dāng)然還會有很多未觀測的混淆變量,用 U 來表示,例如用戶偶發(fā)的停留,或是偶發(fā)的停止領(lǐng)。一個重要的未觀測混淆變量是用戶的心智,主要包括用戶對紅包激勵的金額的價值評估。而這些所謂的心智,是很難通過系統(tǒng)內(nèi)的一些統(tǒng)計量或統(tǒng)計特征來表示的。
如果以時間序列的形式去做建模紅包策略會非常復(fù)雜,因此我們做了一些合理的簡化。比如假設(shè) U 只影響當(dāng)前時刻的 T,X 和 Y,并且它只影響下一時刻的 U,即用戶心智。也就是說它只會通過影響下一刻的價值評估或者心智來影響未來的 Y。但是即使做了一系列簡化,我們也會發(fā)現(xiàn)整個時序因果圖依然很稠密,從而很難做合理的估計。并且當(dāng)使用 G-methods 的方法解決 time Varying Trend Effect 時,需要大量數(shù)據(jù)去訓(xùn)練,然而現(xiàn)實中我們得到的數(shù)據(jù)非常稀疏,所以很難在線上取得一個很好的效果。因此最終我們做了大量簡化,得到右下圖這樣的叉狀結(jié)構(gòu)(Fork)。我們把所有當(dāng)天的紅包的策略做了一個聚合,它是由策略三要素(紅包激勵總金額、總時間、總個數(shù))所構(gòu)成的向量,用 T 來表示。X 是 T-1 時刻的一個混淆變量,也就截止到當(dāng)天之前用戶的歷史行為和人口屬性。Y 代表的是當(dāng)天用戶的使用時長,就是用戶的次日留存或當(dāng)次使用時長指標。雖然這種方法看起來忽略了很多細節(jié),例如紅包之間的相互影響。但從宏觀的角度來說,這個策略更穩(wěn)定也能更好衡量其效果。

3、策略表示與因果模型
基于上面討論,接下來就是核心問題,也就是如何表示策略(treatment)。之前我們嘗試了使用 One-Hot 對三要素向量獨立編號,以及將三要素分開,用時間函數(shù)構(gòu)造 multi-variable treatment。前面這兩種策略表示方法比較好理解,接下來介紹最后一種方法。大家看上面這張圖。我們分別構(gòu)造了三要素關(guān)于 t 的正弦函數(shù),也就是給定一個時刻 T,我們能分別得到金額、時間間隔和個數(shù)。我們用這些函數(shù)對應(yīng)的參數(shù)作為新向量的元素,類似于策略三要素的表示。我們用函數(shù)的方式來表示策略的目的是期望保留更多的細節(jié),因為前兩種方法只能通過策略組合知道紅包金額、發(fā)放間隔的平均值,而用函數(shù)可能表示得更細致。但是這種方式有可能引入更多的變量,使計算更加復(fù)雜。
有了策略表示之后,就可以針對性地去選擇因果模型來去估計因果效應(yīng)。在用 One-Hot 表示 T 的三要素的形式下,我們采用 x-Learner 的模型對每個策略建模,并將總金額最小的策略作為基準策略,從而計算和評估所有策略的 treatment effect。在這種情況下,大家可能感覺到它的效率是非常低的,而且模型缺乏泛化性。因此我們進一步采用剛才提到的第三種策略表示,即用正弦函數(shù)要素的向量去構(gòu)成一個 treatment。接下來用單個 DML 模型來估計所有策略相對于基準策略的效果。此外,我們還做了一個優(yōu)化 DML,假設(shè) y 是混淆變量和因果效應(yīng)的線性加權(quán),也就是 y 等于 treatment effect 加上混淆變量。這樣就人工構(gòu)造了向量要素之間的交叉項和高階項。相當(dāng)于構(gòu)造了 polynomial kernel function 來引入非線性函數(shù)。在這個基礎(chǔ)上 DML 相對于基準策略有了很大的提升。由右下圖的分析可以發(fā)現(xiàn),DML 模型花了更少的錢并且提高了 ROI,這意味著我們能夠更高效地去利用資源。
前面我們主要討論了一些方法上的抽象和模型的選擇,在實踐過程當(dāng)中,還會發(fā)現(xiàn)一些比較偏業(yè)務(wù)方面的問題,比如做 One-Hot 時 treatment 怎么辦?這時候,我們做了一個逐批擴量的策略。首先通過策略三要素做種子策略,然后人工篩選和保留優(yōu)質(zhì)的種子之后,對它進行一個擴展。在擴展之后,我們會基于一段時間,比如先在上線的前兩周分批地上線新的策略,并且保證每個策略的隨機流量大小是一致的,或是可比的。在這個過程當(dāng)中,確實會忽略時間因素的影響,并且不斷替換效果較差的策略,從而把策略的集合豐富起來。另外,由于時間因素一定會影響隨機流量的策略是否可比。因此我們構(gòu)建了類似于時間片輪轉(zhuǎn)的方法,保證其覆蓋的時間片是一致的,從而消除時間因素對策略的影響,這樣得到的隨機流量就可以用來訓(xùn)練模型了。
還有就是新的策略大概如何生成?一種簡單的方法是用 grade search,或者做遺傳算法,這些是比較常見的搜索的通用算法。另外我們可以結(jié)合了人工剪枝,比如剪去一些不可取的紅包序列類型。還有一種方法是使用 BanditNet,也就是一種離線強化學(xué)習(xí)的方法去計算沒見過的策略,即估計反事實(counterfactual)的效果的估計,然后用估計的值來做策略的選擇。當(dāng)然我們最終也需要用線上隨機流量去驗證的,原因是這種離線強化學(xué)習(xí)的方法,其方差大概率會非常的大。

4、策略問題與迭代
除了以上提到的問題,我們也還會遇到一些偏業(yè)務(wù)的問題。第一個問題是用戶策略的更新周期是怎樣的?是不是所有的用戶策略都是頻繁地更新會更好?對此,我們實踐的經(jīng)驗是因人而異。例如高頻用戶的策略變化應(yīng)該更緩慢一些。一方面是因為高頻用戶已經(jīng)很熟悉我們的形態(tài)了,包括激勵金額,如果紅包金額劇烈的變化,一定會影響相應(yīng)的指標。所以我們對高頻用戶其實是保持一個周更新的策略,一周更新一次;但是對于新用戶來講,更新周期是更短的。原因是我們對新用戶了解很少,我們希望能夠更快速地去探索合適的策略,并且根據(jù)用戶交互情況快速響應(yīng)做出策略變化。由于新用戶的行為也很稀疏,所以在這種情況下,我們就會用天級別對新用戶或者一些低頻用戶去做更新。另外,我們也需要對策略的穩(wěn)定性做監(jiān)控,從而避免特征噪聲造成的影響,我們搭建的 Pipeline 如右圖所示。這里我們會監(jiān)控 treatment effect 是否穩(wěn)定,同時也會對用戶最終分配的策略進行天級別的監(jiān)控,比如今天的策略和昨天策略差異有多大,包括金額和個數(shù)。我們也會對線上的策略定期的做快照,主要是為了去做 debug,同時也能夠快速回放,從而保證策略的穩(wěn)定。另外我們還會對小流量做實驗,監(jiān)控其穩(wěn)定性,只有達到穩(wěn)定性要求的小流量實驗,才會被用于替換現(xiàn)成的策略。
第二個問題是針對新用戶以及一些特殊用戶的策略是否為獨立的?答案是確定的,比如新用戶,我們會先對他進行一個較強的激勵,而后激勵強度隨時間衰減。當(dāng)用戶進入正常的生命周期之后,我們才會對他進行常規(guī)的激勵策略。同時,對于特殊的敏感人群,他們金額上會有限制策略,對此我們也會訓(xùn)練獨立的模型去適應(yīng)這類人群。
第三個問題大家可能會問到,也就是因果推斷在整個算法框架當(dāng)中到底有多重要?從理論角度,我們認為因果推斷是核心,因為它在激勵算法中是帶來很大的收益。相對于回歸與分類模型來說,因果推斷與業(yè)務(wù)目標一致,它天生就是面向 ROI 的,所以它會帶來關(guān)于提升量的優(yōu)化目標。但是要提醒大家的是,我們在做預(yù)算分配的時候,不能夠為每一個用戶都選擇最優(yōu)的策略,而且因果效應(yīng)相對于個人來說是相對較小的。當(dāng)我們做預(yù)算分配的時候,很有可能會把一些用戶因果效應(yīng)的差異消除了。在這種時候,我們約束優(yōu)化會極大地影響策略效果。因此,在做聚類的時候,我們也嘗試了更多的聚類方法,例如深度聚類 SCCL 方法獲得了更好的聚類結(jié)果。我們也進行了一些深度因果模型的迭代,比如像 BNN 或 Dragonnet 等等。
我們發(fā)現(xiàn)在實踐的過程中,深度因果模型的離線指標確實有不錯的提升,但是其在線上的效果還不夠穩(wěn)定,主要的原因是有缺失值的出現(xiàn)。同時我們也發(fā)現(xiàn),特征的規(guī)劃方法很影響深度學(xué)習(xí)線上模型的穩(wěn)定性,所以最終我們還是會傾向于穩(wěn)定的去使用 DML 方法。
在激勵場景的分享就這么多,接下來也請我們團隊的另外兩位同學(xué)和大家分享一下在供需調(diào)優(yōu)場景的一些實踐和理論的探索。

二、因果推斷與供需調(diào)節(jié)
1、業(yè)務(wù)背景與業(yè)務(wù)建模
接下來介紹一下騰訊微視在供需方面的一個業(yè)務(wù)背景。作為一個短視頻平臺,微視有許多個不同品類的視頻。對于有時候不同觀看興趣的用戶群體,我們需要根據(jù)不同的用戶特征去合適地分配各個品類的曝光占比或者是庫存占比,目標則是為了提升用戶的體驗和用戶的觀看時長,其中用戶的體驗可以根據(jù) 3 秒快劃率指標來進行衡量,觀看時長主要根據(jù)總的播放時長來去衡量。如何去調(diào)節(jié)視頻品類的曝光占比或者庫存占比?我們主要考慮的方式按比例去對一些品類進行增加或者減少。增減的比例是一個預(yù)設(shè)的數(shù)值。
接下來我們需要通過算法解決如何決定哪些品類增,哪些品類減,去使得用戶體驗和觀看時長可以最大化,同時還需要滿足比如總曝光有限制的一些約束條件。這個地方總結(jié)了三個主要的建模思路。第一個是比較直接的想法,就是我們直接把增和減作為一個 0 和 1 的 treatment 變量,我們?nèi)ス烙嬎囊蚬?yīng),隨后再進行一個多目標的約束優(yōu)化,去得到一個最終的策略。第二種思路就對 treatment 建模得更精細一些。我們把 treatment 當(dāng)作一個連續(xù)的變量,比如品類的曝光占比,就是一個 0 到 1 之間連續(xù)變化的變量。然后去擬合一個相應(yīng)的因果效應(yīng)的曲線或者因果效應(yīng)函數(shù),接下來再進行多目標的約束優(yōu)化,最后得到最終的策略??梢宰⒁獾?,剛剛提到的兩種方法都是兩階段的方法。第三種思路,我們將約束條件帶入到因果效應(yīng)的估計當(dāng)中,從而得到一個滿足約束條件的最優(yōu)策略。這也是稍后希望和大家分享的研究內(nèi)容。
首先還是先關(guān)注前兩種建模的思路,有幾個建模的要點需要注意一下。第一個點是,為了保證因果效應(yīng)估計的準確性,我們需要劃分人群,在每個人群上做二值 Treatment 或是連續(xù) Treatment 的因果效應(yīng)估計。剛剛鄭老師也有提過分人群的方法,比如用 Kmeans 聚類,或者是一些深度聚類。第二點則是如何在非隨機實驗數(shù)據(jù)上評估模型效果。比如我們需要在不做 AB test 的情況下,離線評估一下模型的效果。關(guān)于這個問題,可以參考 PPT 上面索引的這篇論文中提到的一些指標,用來做離線的評估。第三點需要注意的是,我們應(yīng)該盡可能考慮品類之間的關(guān)聯(lián)和相互影響,比如相似品類之間的一些擠占的問題等等。如果能把這些因素納入到因果效應(yīng)的估計當(dāng)中,應(yīng)該可以取得更好的效果。

2、單人群 × 品類曝光占比調(diào)節(jié)策略
接下來我們就具體展開這幾種建模思路。首先第一種建模方式就是定義一個 0 和 1 的 treatment,用來代表增加或者減少這兩種干預(yù)的手段,可以參考左側(cè)的簡要因果圖,這里 x 代表用戶的一些特征,比如歷史操作行為相關(guān)的統(tǒng)計特征,以及其他的用戶屬性等等。y 就是我們所關(guān)心的目標,也就是 3 秒快化率或者播放總時長。除此之外,還需要注意的是一些未觀測的混淆變量,比如用戶的偶發(fā)、快滑和退出,以及同一個用戶可能實際上會有多個人在使用,這也是用戶多重身份的一個問題。另外就是推薦策略的不斷迭代和更新也會對觀測數(shù)據(jù)構(gòu)成影響,還有另外用戶興趣的遷移也是觀測之外的。這些未觀測的混淆變量,可能會對因果效應(yīng)的估計造成一定程度上的影響。
對于這樣的建模方式,常見的因果效應(yīng)估計方法都可以解決。比如可以考慮 T-Learner 或者是 X-Learner,或者是 DML,這些都可以進行因果效應(yīng)估計。當(dāng)然,這種簡單的建模方式也存在一些問題,比如我們用二值 treatment 進行建模會太過于簡化。另外,在這種方式之下,每一個品類是單獨進行考慮的,沒有考慮品類之間的相關(guān)性。最后一個問題就是我們整個問題里邊沒有考慮到曝光的順序,以及內(nèi)容的質(zhì)量這些具體的因素。
接下來再介紹一下第二種建模的思路。我們把所有品類放在一起考慮,比如我們有 k 個視頻品類,令 treatment 是一個 k 維的原因向量。向量的每一個位置就代表一個品類,比如影視綜藝或者 MOBA 賽事等,0 和 1 仍然是代表增加或者減少。這時候多維向量的 treatment 的因果效應(yīng)估計可以通過 DML 算法來解決。我們通常是把全為 0 的 treatment 向量作為 control。這種方式雖然解決了各品類沒有被單獨考慮的問題,但是它依然存在一些潛在的問題。首先是品類過多時所帶來的維度爆炸的問題,并且隨著維度的增加,由于每個位置上都有 0 和 1 兩種情況,所以潛在的排列組合數(shù)量會指數(shù)級增加,這些都會對因果效應(yīng)估計的準確性造成干擾。另外,前面所提到的曝光順序和內(nèi)容等等這些因素也沒有考慮到。

分享完二值變量 treatment 的建模思路之后,接下來可以對 treatment 進行更精細,也更符合其本身特點的建模。我們注意到,曝光占比本身是一個連續(xù)的變量,因此我們用連續(xù)的 treatment 去進行建模會更加的合理。在這種建模思路之下,我們首先還是需要劃分人群。對每個人群,我們對每個品類進行單獨地建模,得到一個單人群*單品類的因果效應(yīng)曲線。就像左圖顯示的這樣,因果效應(yīng)曲線代表的是不同品類占比對我們所關(guān)心的目標產(chǎn)生的影響。為了估計這樣的因果效應(yīng)曲線,我主要分享兩種可行的算法,一個是 DR-Net,一個是 VC-Net,這兩種算法都屬于深度學(xué)習(xí)的范疇。模型的結(jié)構(gòu)就像右圖展示的這樣。
首先介紹一下 DR-Net。模型的輸入 x 首先會經(jīng)過幾個全連接層,從而得到一個隱含的表示,叫做 z。DR-Net 采取了一種離散化的策略,它將連續(xù)的 treatment 離散成多個 block,然后每個 block 分別訓(xùn)練一個子網(wǎng)絡(luò)來進行目標變量的預(yù)測。由于 DR-Net 采用了離散化的策略,所以它最終得到的因果效應(yīng)曲線并不是嚴格連續(xù)的,但隨著離散化的分段越細,最終的估計會越接近于連續(xù)的曲線。當(dāng)然,隨著理想化的分段越細,由此帶來的就是更多的參數(shù)量以及更高的過擬合的風(fēng)險。
接下來再分享一下 VC-Net。VC-Net 一定程度上改進了 DR-Net 的缺點。首先 VC-Net 模型的輸入還是 X,也是用戶的特征。它首先也是經(jīng)過幾個全連接層之后得到一個隱含的表示 Z。但是在 Z 這個地方,首先會接一個預(yù)測 Propensity Score 的一個模塊。在連續(xù)的 Treatment 條件下, Propensity 就是給定 X 條件下 Treatment t 的一個概率密度,也是圖上所表示的 π。接下來我們看一下 Z 之后的網(wǎng)絡(luò)結(jié)構(gòu),不同于 DR-Net 進行離散化的操作,VC-Net 采用的是一個變系數(shù)的網(wǎng)絡(luò)結(jié)構(gòu),也就是 Z 之后的每一個模型參數(shù),都是一個關(guān)于 t 的函數(shù)。我們這里提到的文獻作者采用了基函數(shù)的手段,把每個函數(shù)表示成一個基函數(shù)的線性組合,也就這寫的 θ(t)。這樣一來,函數(shù)的估計也就變?yōu)榱藢瘮?shù)線性組合的參數(shù)估計。所以這樣一來,模型的參數(shù)優(yōu)化就不成問題了,同時VC-Net 所得到的因果效應(yīng)曲線也是一條連續(xù)的曲線。關(guān)于 VC-Net 要求解的目標函數(shù)由幾部分組成。一方面,它是由最后對目標的預(yù)測的平方損失構(gòu)成,也就是圖中的 μ。另一方面,它也由 propensity 的概率密度的對數(shù)損失來構(gòu)成。除了這兩部分之外,作者在目標函數(shù)里邊還加入了一個叫做 targeted regularization 的懲罰項,由此可以得到雙重穩(wěn)健的估計性質(zhì)。具體細節(jié),感興趣的朋友可以參見一下上面索引的 2 篇原論文,去獲得更多的細節(jié)。

最后,再為即將與大家分享的一篇我們的研究做個鋪墊。我們注意到,各個視頻品類的曝光占比是一個多維連續(xù)的向量。它之所以多維,是在于我們有多個視頻品類,每個維度就代表一個視頻品類。它之所以是連續(xù)的,主要就在于每個視頻品類的曝光占比都是連續(xù)的,其取值都在 0 和 1 之間。同時還有一個很自然的約束條件,就是我們所有的視頻品類的曝光占比加起來一定是等于 1。所以我們可以考慮這樣一個多維連續(xù)的向量去作為 treatment。
右圖展示的向量就是這樣的例子。我們的目標是找到最優(yōu)的曝光占比,使得我們總播放時長最大化。在傳統(tǒng)的因果框架上,算法很難解決這樣一個多維連續(xù)并且待約束的問題。接下來分享一下我們對這樣的問題做的研究。

三、帶約束的連續(xù)多變量因果模型分享
MDPP Forest 這項工作是團隊在研究供需問題的時候做的一個方法探索和問題的創(chuàng)新解決。我們團隊當(dāng)時發(fā)現(xiàn),在面對如何解決為每個用戶去分配最佳的視頻類目曝光比的問題上,其他現(xiàn)有的常用方法都沒有辦法得到一個比較符合預(yù)期的結(jié)果。因此經(jīng)過一段時間的嘗試與改進,我們團隊設(shè)計的方法能在離線上取得了不錯的效果,然后與推薦進行合作,最后也取得了一定的策略收益。隨后我們把這項工作整理成了論文,也有幸發(fā)表在了 KDD 2022 上。

1、背景與挑戰(zhàn)
首先介紹問題背景。在供需問題中,我們將短視頻根據(jù)內(nèi)容劃分為不同類目,比如科普、影視、戶外美食等。視頻類目曝光比即指這些不同類目的視頻各自所占一位用戶觀看的所有視頻的比例。用戶對不同類目的偏好有很大的差別,平臺也往往需要因人而異地去確定每個類目的最優(yōu)曝光比例。在重排序階段,對各類視頻的推薦加以控制。公司面臨的一大挑戰(zhàn)是如何分配最佳的視頻曝光比,從而最大限度地延長每個用戶在平臺上的使用時長。

這樣一個問題的主要難點在于以下的三點。第一個就是短視頻的推薦系統(tǒng)中,每個用戶看到的視頻和他自身的特征會有非常強的相關(guān)關(guān)系,這就是一個存在的選擇性偏差。因此我們需要用因果推斷相關(guān)的算法來消除偏差。第二個是視頻類目曝光比是一種連續(xù)、多維并且?guī)Ъs束的 treatment。這樣的復(fù)雜問題在因果推斷和策略優(yōu)化領(lǐng)域目前是沒有非常成熟的方法的。第三是在離線數(shù)據(jù)上,我們并不能先驗地知道每個人的真實最優(yōu)曝光比,因此很難去評估這個方法。在真實環(huán)境下,它只是推薦中的一個子環(huán)節(jié)。最終實驗結(jié)果也不能判斷這個方法對它本身的計算目標的準確度。因此,這個場景的問題我們很難去準確地評估它。我們會在后續(xù)介紹我們是如何進行效果評估的。

2、問題定義
我們先把數(shù)據(jù)抽象成一個統(tǒng)計學(xué)中的因果圖。其中 X 是用戶特征,包含了許多同時影響當(dāng)前視頻曝光以及用戶時長的混淆變量;T 是視頻類目曝光比,它也是 treatment,在這個問題中具有比較高的維度,例如它是一個 20 維的向量。Y 是用戶的觀看時長,也就是任務(wù)目標的響應(yīng)。我們建模的目標就是在特定的用戶特征 X 下,給一個高維的最優(yōu)視頻類目曝光比,從而使用戶的觀看時長期望達到最大。這個問題看似可以簡單地用一個因果三元圖來表示它,但有一個很大的問題,也就是前面提到的,我們的 treatment 是多個類目的曝光比,它是由品類曝光占比構(gòu)建的多維連續(xù)取值且向量和為 1 的向量。這樣的問題就比較復(fù)雜了。

3、方法簡介 —— Maximum Difference Point of Preference (MDP2) Forest
對此,我們的方法也是基于因果決策森林(causal forest)的。一般的因果決策樹只能解決具有一維離散值的 treatment 問題。而我們通過改進中間分裂準則函數(shù)的計算,在分裂的時候增加一些高維連續(xù)的信息,使它可以解決高維連續(xù)值并且?guī)Ъs束 treatment 的問題。

① 方法簡介——連續(xù)問題
首先,我們解決的是連續(xù) treatment 問題。如圖中所示,T 對 Y 的影響是一條連續(xù)的曲線。我們先假設(shè)這是一條單調(diào)遞增的曲線。對于數(shù)據(jù)中所有的 Treatment 取值,我們?nèi)ケ闅v它,計算左右樣本的 Y 均值,從而找到左邊 Y 均值和右邊 Y 均值差異最大的點,也就是平均因果效益最大的點。我們把這個點稱為 Maximum Difference Point,也就是連續(xù) Treatment 空間上效率最高的點,代表了 Treatment 能夠顯著地讓 Y 發(fā)生改變。Maximum Difference Point 就是我們在單維度上想去得到的點。

然而,我們剛才提到的方法只適用于單調(diào)遞增的曲線。但事實上,大部分問題都沒有那么美好,特別是曝光比的問題。在這個問題上,效應(yīng)曲線一般來說是山形的,即先增后減。因為多推薦用戶喜愛的視頻,可以使得用戶增加觀看時長,但是這個類型推得過多了,整個視頻的推薦就會變得非常單調(diào)乏味,并且還會擠占其他用戶喜歡的視頻類型的曝光空間。所以曲線一般來說是山形的,也有可能是其他形狀的。為了適應(yīng)任意形狀的T 曲線,我們需要進行積分的操作,也就是找值域區(qū)間進行累加。在累加后的曲線上,我們同樣計算左右兩邊均值,以及兩邊均值之差最大的點,比如圖里的五角星。這個點就可以稱我們稱為 maximum difference point of preference,也就是我們的 MDPP。

② 方法簡介——高維問題
上面我們介紹了如何解決連續(xù)問題,而剛才所說的曲線只是一維的,對應(yīng)單一的視頻類目。接下來我們采用啟發(fā)式維度遍歷的思想去解決多維的問題。在計算分類得分的時候,我們采用啟發(fā)式的思想,將 K 個維度隨機排序,在每個維度上去計算一個 D 指標的聚合,也就是進行求和的操作。得到 D* 作為一個高維信息熵,再來考慮約束,約束是所有的 MDPP 之和為1。這里我們要考慮下面兩種情況,一種是如果 K 維度遍歷完以后,它 MDPP 之和也沒有達到 1。針對這個情況,我們會把所有的 MDPP 之和加起來對它們?nèi)プ鰵w一化,拉到 1。第二個情況是,如果我們只遍歷了 K’ 維小于 K 維,但MDPP 之和就已經(jīng)達到 1。對此,我們將停止遍歷,并且把 MDPP 設(shè)置為剩余的“資源量”,即 1 減之前已經(jīng)算出來 MDPP 值之和,這樣就可以去考慮到約束。

另外,我們也會在上述的樹結(jié)構(gòu)上引入 forest,因為它主要有兩大意義。第一個是我們傳統(tǒng)的 bagging 集成思想,它可以用多個學(xué)習(xí)器增強模型的魯棒性。第二個是在維度遍歷中,每次節(jié)點分裂只會計算到 K’ 個維度,有些維度沒有被算進去。為了使每個維度都能以平等的機會參與到分裂中,我們需要建立多棵樹。

③ 方法簡介——算法加速
另外還有一個問題,由于算法包含了三層的遍歷,所有樹模型都需要特征值的遍歷,還有額外引入的維度遍歷以及搜尋 MDPP 的遍歷。這樣的三層遍歷使得效率非常低下。因此我們對特征值的遍歷和 MDPP 遍歷用了加權(quán)分位數(shù)圖的方法,只在分位數(shù)點去計算相應(yīng)的結(jié)果,這樣就可以大大地降低算法復(fù)雜度。同時,我們也找到了這些分位點作為“累加值域”的邊界點,這樣可以大大減小計算量和儲存量。假設(shè)有 q 個分位點,我們只需要計算 q 次得出每段分位區(qū)間內(nèi)的樣本數(shù)量和 y 的均值,這樣每次計算兩邊均值之差 d 的時候,只需要把 q 值分為左邊和右邊兩部分,分別把每一個區(qū)間里的均值做一個加權(quán)求和就可以了。我們不需要再重新計算分位點左右兩邊所有樣本的均值。我們下面進入實驗部分。

4、實驗設(shè)計
① 實驗設(shè)計-Metric
我們實驗評估本質(zhì)上就是一個策略評估問題,因此我們引入了策略評估相關(guān)的指標。第一個是 Main Regret,它用于衡量整體策略的收益和理論最優(yōu)收益之間的差距。另一個是 Main Treatment Square Error,用于衡量多維 Treatment 下每一個 Treatment 維度的預(yù)估值和最優(yōu)值之間的差距。這兩個指標都是越小越好的。然而,定下這兩個評估指標帶來的最大問題就是我們怎么去確定最優(yōu)值。

② 實驗設(shè)計-對比方法
介紹一下我們的對比方法。首先是因果推斷中的兩種常用方法,一個是具有完備統(tǒng)計學(xué)理論的 DML,還有另外是網(wǎng)絡(luò)模型 DR-Net 和 VC-Net。這些方法只能處理一維的問題,但在本文的問題上,我們進行了一些調(diào)整去應(yīng)對多維問題,也就是先計算每一維的絕對值,再去做歸一化。還有下面兩篇論文中策略優(yōu)化的方法,我們稱之為 OPE 和OCMD。這兩篇文章中有陳述其方法適用于多維問題,但是同時也指出,當(dāng)維度過多時,這些方法就很難生效了。

③ 實驗設(shè)計-模擬數(shù)據(jù)集
為了簡單直接地去比較模型效果,我們模擬了真實世界的問題,生成了一個簡化版的模擬數(shù)據(jù)集。特征空間 x 表示 6 個維度的用戶特征和 2 個行為特征。還有對于不同特征的樣本,我們先假定它的最優(yōu)策略。如圖所示,比如一個年齡小于 45 歲,教育程度大于 2,有一個行為特征大于 0.5 的用戶,他在 6 個視頻類目上最優(yōu)。借助左邊公式,先隨機生成一個對用戶的曝光策略,接下來算出曝光策略和真實最優(yōu)策略之間的一個差距,以及模擬用戶時長是多少。如果策略越貼近用戶的最優(yōu)策略,用戶的時長 y 就會越長。這樣我們就生成了這么一個數(shù)據(jù)集。這個模擬數(shù)據(jù)集的好處就是我們直接假設(shè)了最優(yōu)值,非常方便評估,另外一個是數(shù)據(jù)比較簡單,可以方便我們分析算法的結(jié)果。

來看看模擬數(shù)據(jù)集上的實驗結(jié)果,對于剛才我們提到的那類人群,提供了各種方法計算出對應(yīng)的 treatment 的均值。第一行是理論最優(yōu),第二行是我們 MDPP forest,第三行基于 MDPP forest 在分裂準則里面又加了一些懲罰項的方法??梢钥吹轿覀兎椒ê屠碚撟顑?yōu)的差距都會非常小。另外的其他幾種方法就不是特別極端,而是比較均勻。另外,從右圖 MR 和 MTSE 來看,我們的兩種方法也具有非常明顯的優(yōu)勢。

④ 實驗設(shè)計-半合成數(shù)據(jù)集
除了模擬數(shù)據(jù)集之外,我們也根據(jù)真實的業(yè)務(wù)數(shù)據(jù)構(gòu)造了一個半合成數(shù)據(jù)。數(shù)據(jù)來自騰訊微視平臺。Xi 表示用戶的 20 維特征,treatment ti 表示多維的視頻類目曝光比構(gòu)成了10 維向量, yi(ti)表示第 i 個用戶的使用時長。實際場景的一個特點是,我們并不能知道用戶真實的最優(yōu)視頻曝光比。所以我們根據(jù)聚類中心規(guī)則去構(gòu)造函數(shù),生成虛擬的 y 來代替真實的 y,從而使得樣本的 y 具有更好的規(guī)律性。這里具體公式我就不再贅述了,有興趣的同學(xué)可以看一下原文。為什么可以這樣做呢?因為我們算法的關(guān)鍵是它要能夠解決 x 和 t 之間的一些混雜的影響,也就是線上用戶受到有偏策略的影響。為了去評估策略的效果,我們只保留了 x 和 t 而改變了 y,從而更好地對問題進行評估。

在半合成數(shù)據(jù)上,我們的算法效果也明顯更好,并且比模擬數(shù)據(jù)集上的優(yōu)勢會更加的大。由此說明了在數(shù)據(jù)復(fù)雜的情況下,我們 MDPP forests 算法是更加的穩(wěn)定的。另外,我們在合成數(shù)據(jù)上看一下超參數(shù),也就是森林的規(guī)模。在右下圖我們可以看到,隨著森林規(guī)模的增加,兩種分裂準則處理下指標收斂的都比較好,帶懲罰項的一個始終會更好一些,它在 100 棵樹的時候達到比較好的效果,250 棵樹的時候達到最優(yōu)效果,再之后會有一些過擬合。

四、問答環(huán)節(jié)
Q:為什么遍歷曝光度超過 1 的時候,歸一化是可以 work 的?
A:我的理解是這樣,因為我們做的是一個曝光占比約束的優(yōu)化,在這個過程當(dāng)中,我們是一個相對值。我們在遍歷的過程當(dāng)中,是尋找最優(yōu)的一個分裂點,找到應(yīng)該優(yōu)先給哪個品類曝光更多的比例。在這個過程當(dāng)中,我們只要能夠保證它是等比縮放的,就是可以的。
我也是同樣觀點,是等比縮放就可以。因為 1 是一個強的約束限制,我們一開始算出來的肯定不完全為 1,會低一些或者高一些。如果多了很多,沒有辦法去讓它達到強約束唯一的條件,也是比較自然地用到一個歸一化的思考。因為我們考慮到各個類目之間相對大小關(guān)系。我覺得相對大小關(guān)系是比較重要的,而不是一個絕對值的問題。



































