強化學習與多任務推薦
一、短視頻推薦兩階段約束強化學習算法
首先介紹的一項快手自研的 WWW 2023 Research Track 工作,主要解決短視頻推薦場景下的帶約束多目標優化問題。
在短視頻推薦單列場景中,用戶通過上下滑形式和系統進行交互,觀看多個視頻。用戶對每個視頻反饋 2 種信號,播放時長以及互動(關注、點贊、評論、收藏、分享等)。由于播放時長稠密與留存和 DAU 相關度高,短視頻推薦系統主優化目標是提升總觀看視頻時長,這一問題可以由強化學習方法有效解決;另一方面,由于互動指標能一定程度地反應用戶滿意度,和留存有相關性,我們希望算法也能夠滿足互動指標約束,
因此本文將短視頻推薦建模成一個約束強化學習問題(CMDP),目標是在滿足互動指標約束情況下最大化視頻播放時長。然而現有約束強化學習算法由于以下原因并不適用:第一單一 Critic 模型聯合預估時長將會主導互動;第二短視頻推薦系統存在多個約束目標,直接優化約束強化學習對偶問題需要對拉格朗日超參進行搜索,這會帶來極大的搜索成本。
我們提出 Two-Stage Constrained Actor-Critic(TSCAC)算法:
- 第一階段:對于每個互動輔助信號,學習不同 policy 優化對應的信號;
- 第二階段,學習 policy 優化播放時長目標,同時滿足和第一階段學習到的 policy 的距離約束。我們在理論上得到了第二階段問題的最優解并提出新的優化 loss。通過在 KuaiRand 數據集的離線評估和快手 App 在線 A/B 測試,我們證明 TSCAC 顯著優于 Pareto 優化以及 State of the Art 約束強化學習算法。TSCAC 算法已經在快手 App 全量。
1、問題建模
我們把短視頻推薦系統看作 agent,用戶視為環境,每當用戶打開 App,開啟一個 session,一個 session 包括多次請求。每次請求是一個 step,推薦系統(agent)根據當前用戶的 state,返回一個 action(視頻)給用戶。用戶看到視頻后反饋多個 reward 信號(觀看時長,點贊、關注、評論、轉發等互動信號)。用戶離開 App 這個 session 結束。推薦系統目標為最大化 session 累計觀看時長,同時滿足互動約束。推薦系統的優化目標為學習一個推薦策略(policy), 求解以下 program。
2、TWO-STAGE CONSTRAINED ACTOR-CRITIC 算法
為了解決上述挑戰,我們提出兩階段約束強化學習算法(Two-stage constrained actor-critic, TSCAC),我們針對不同的反饋信號,采取不同的 Critic 模型進行預估。策略優化方面,第一階段分別學習策略優化相應的輔助目標,第二階段我們最大化主目標時長,并且增加第一階段預訓練得到策略的距離約束。
- Stage One: Policy Learning for Auxiliary Response
我們對于每個目標分別用不同的策略進行學習,用 Temporal Difference(TD) loss 的形式來訓練 Critic:
我們采用 Actor-Critic 算法常用的 advantage-based loss 來訓練 Actor:
- Stage Two: Softly Constrained Optimization of the Main Response
第二階段我們需要最大化主目標時長收益,但是也需要兼顧輔助目標。基于第一階段學習到的輔助策略隱含了輔助目標信息的假設,我們學習策略最大化主目標,同時約束主策略和其他輔助策略不會距離太遠,即:
然而這個問題需要加很多 KL 約束不好直接優化策略,我們可以證明(5)對偶問題存在以下最優解形式:
因此我們學習策略最小化和最優解的 KL 距離:
這個 loss 的動機在于輔助策略 \pi_{\theta_i}提供了 action 的重要性,如果輔助策略覺得這個 action 很差,那么這個 action 的樣本重要性會很低。\lambda_i 代表了約束強弱,值越大提供約束越強,極端情況為 0 時意味著不加任何約束,公式(7)和直接優化主目標等價。實際應用時候我們設置所有輔助目標都采用的超參值,有效地縮減搜索空間。
3、離線實驗
我們將 TSCAC 算法在 KuaiRand 公開數據集進行驗證,對比了 BC(Behavior Cloning)Wide&Deep、DeepFM 監督學習算法,State of the Art 約束強化學習方法 RCPO,以及 Pareto 優化推薦算法。
表 2 結果證明,TSCAC 方法不僅在主目標 WatchTime 顯著優于其他算法,并且在Click,Like,Comment 等指標也取得了最好的效果。注意到 Pareto 優化方法沒有主次之分,學到降低 Hate 的一個 pareto 最優點,但是主目標相比 BC 算法負向。
4、在線實驗
我們在快手短視頻推薦系統進行在線 A/B 實驗,基線為 Learning to Rank 算法,實驗組為 TSCAC、RCPO 以及只學習互動的 Actor-Critic 算法(Interaction-AC)。
表 3 展示了算法收斂后,不同指標的百分比提升對比。可以發現 TSCAC 算法相比 RCPO 不僅主目標更好(0.1% 的 watchtime 就視為統計顯著),并且輔助目標也是全面正向,對比 Interaction-AC 算法的互動指標也非常接近。下圖展示了 TSCAC 算法訓練到收斂每天的效果變化。
二、基于強化學習的多任務推薦框架
下面介紹第二個工作,同樣也是強化學習在多任務優化上的應用。這篇工作是快手和香港城市大學的合作項目,是一個典型的多任務優化問題。
1、摘要
近年來,多任務學習(MTL)在推薦系統(RS)應用中取得了巨大的成功。然而,目前大部分基于 MTL 的推薦模型往往忽略了用戶與推薦系統互動的會話(session)模式,因為它們主要是依據基于單個 item 的數據集而構建。平衡多個輸出目標一直是該領域的一個挑戰。為了解決這個問題,我們提出了一個基于強化學習(RL)的 MTL 框架,即 RMTL 。該框架使用動態權重來平衡不同推薦任務的損失函數。具體來說,RMTL 結構可以通過以下方式解決上述兩個問題:
- 從 session 尺度構建 MTL 環境。
- 訓練多任務 actor-critic 網絡結構,并能與現有的基于 MTL 的推薦模型兼容。
- 使用 critic 網絡生成的權重來優化和微調 MTL 損失函數。
在基于 KuaiRand 等多個公開數據集的實驗證明了 RMTL 的有效性,其 AUC 顯著高于 SOTA 基于 MTL 的推薦模型。我們還驗證 RMTL 在各種 MTL 模型中的表現,證明其具有良好的兼容性和可轉移性。
2、問題建模
我們構建基于 session 的 MDP 用于 RL 訓練,以此來提高 MTL 模型的性能。經典的 MTL 方法通常面臨將序列性的用戶行為引入建模的困難,因為用戶行為的時間戳高度相關,而建立在 MDP 序列之上的強化學習可以解決這個問題。對于每個會話 session,狀態轉移記錄是由原始數據集中存儲的時間戳分隔的。這種構造可以生成按順序組織的 session MDP 序列,具有整體損失權重更新的優點。馬爾科夫過程由狀態(state),動作(action),獎勵函數(reward function),轉移函數(transition function)組成。狀態空間 S 是狀態的集合,其中包含 user-item 組合特征。行動空間 A 是連續動作的集合,其中每個元素在 A 中表示 CTR 和 CTCVR 的預測值。為了與 BCE 損失的定義保持一致,我們使用負 BCE 值定義每個步驟的獎勵函數。
3、算法
我們提出 RMTL 框架:使用狀態表示網絡將數據特征轉換為狀態信息。Actor 網絡可以是任何基本的 MTL 模型,輸出特定的動作向量。Critic 網絡用來提高 Actor 網絡的性能,并為特定任務生成自適應調整的損失權重。
其中狀態表示網絡是由嵌入層和多層感知機組成的,以提取 user-item 特征。分類特征首先被轉換為二進制向量,然后輸入到嵌入層中。此外,數值特征通過線性變換轉換為相同的維度。以上過程轉化得到的特征將被合并并進一步作為另一個 MLP 網絡的輸入。
在強化學習的框架下,Actor 網絡可以被稱為策略代理。以 ESMM 為例:共享底層被移除,我們使用兩個平行的神經網絡,由 ??1 和 ??2 進行參數化,分別表示兩個任務的 Tower 層。每個 Tower 層的輸出是確定性的動作值,代表特定任務的預測值。在 MDP 序列的訓練過程完成后,本文基于加權 BCE loss 計算總體的損失函數,以解決收斂問題。
本文提出了一種 Multi-critic 結構,其中有兩個并行的 MLP 網絡共享一個底層網絡。Critic 網絡的第一部分是一個共享的底層網絡,它同時轉換 user-item 特征和 Action 信息。然后將用戶 item 特征和 Action 信息組合為兩個可微的行動價值網絡的輸入,這些網絡由????參數化并輸出估計的 Q 值,并且本文計算平均 Temporal Difference(TD)誤差 ??以更新 critic 網絡。目標損失函數的權重沿著 Q 值方向反向調整,以此來改善 actor 網絡的優化過程。
整體算法過程如下:給定 user-item 組合特征,狀態表示網絡生成基于輸入特征的狀態。然后,我們從 Actor 網絡中提取狀態信息獲取動作。動作值和 user-item 組合特征經過 MLP 層和嵌入層進一步處理,作為 Critic 網絡的輸入,計算每個任務 ??的 Critic 網絡 ?? 值。最后,可以根據每個任務的 BCE 損失和適應權重估計多任務的整體損失函數 L。
4、實驗
本文主要在兩個基準數據集,RetailRocket 和 Kuairand 上進行實驗。評估指標是 AUC 分數,logloss 和 s-logloss(定義為所有會話的平均 Logloss)。由于本文的 RMTL 結構修改了 MTL 目標損失函數,因此選擇了具有其默認損失函數和一個基于 RL 的模型作為基線。本文總共進行了3 個實驗:整體效果、可轉移性研究和消融實驗,以說明該方法的有效性。
在整體性能和比較方面,本文比較了五個基準多任務學習模型和 RMTL 模型在兩個不同數據集上 CTR/CTCVR 預測任務的性能。在大多數情況下,PLE 模型在所有多任務學習基準模型中表現最好,這證明 PLE 基準模型可以提高任務之間信息共享的效率,以實現更好的預測性能。本文提出的 RMTL 模型的每個版本都在兩個數據集上表現出優于相應的非 RL 版本基準模型的結果。特別是在 RetialRocket 數據集上,RMTL 模型的 AUC 增益約為 0.003-0.005,比相應的基準模型高。通過利用強化學習框架的序列特性,RMTL 能夠處理基于會話的推薦數據,并通過自適應調整損失函數權重在 CTR/CTCVR 預測任務中取得顯著改進。
RMTL 方法在 RetialRocket 數據集上的轉移性研究中,本文試圖弄清楚從不同的策略學習到的 critic 網絡是否可以應用于同一 MTL 基準模型并提高預測性能。例如,“mmoe-ESMM”表示應用從 MMoE 結構訓練的 critic 網絡的 ESMM 模型。可以看出:
- 三個 MTL 模型的預訓練 critic 網絡可以顯著提高每個基準模型的 AUC。
- 三個 MTL 模型的預訓練 critic 網絡可以顯著降低每個基準模型的 Logloss。
總的來說,預訓練的 ciritc 網絡能夠提高大多數 MTL 模型的預測性能。
實驗的最后一部分是對于 RetailRocket 數據集上 PLE 模型的剖析研究,本文改變了原有設定中的一些部分,并定義了以下三個變體:
- CW: 表示對整體損失函數應用恒定權重,并且不對 actor 網絡進行梯度策略更新,從而消除了 critic 網絡的貢獻。
- WL: 表示損失權重受到 session 行為標簽的控制。
- NLC: 不對損失權重執行線性變換,而是直接將負 Q 值分配給損失權重。
可以觀察到:
- CW 在兩個預測任務的 AUC 和 logloss 指標上表現最差。
- WL 和 NLC 在本研究中的表現幾乎相同,優于 CW 變體,AUC 提高了 0.002-0.003。
使用本文提出的總損失設置的 RMTL-PLE 在兩個任務上均取得了最佳表現,說明了該線性組合權重設計的有效性。
最后總結一下 RMTL 和 MTL 的一些經驗。
推薦系統在長期優化的時候,尤其是在長期優化復雜指標的時候,是非常典型的強化學習和多任務優化場景。如果是主副目標聯合優化,可以通過 soft-regularization 去約束目標學習。多目標聯合優化時,考慮到不同目標的動態變化,也能夠提升它的優化效果。除此之外也有一些挑戰,比如在強化學習不同模塊結合時,會對系統的穩定性帶來很多挑戰。這時對數據質量的把控以及 label 的準確性的把控,和模型預估的準確率的監督是非常重要的途徑。另外,推薦系統和用戶因為是直接交互,不同目標在反映用戶體驗的時候,僅僅是片面的反應,所以得到的推薦策略也會非常的不同。在不斷變化的用戶狀態下,還要聯合優化,提升用戶的全面體驗,這在未來肯定是非常重要的課題。
三、問答環節
Q1:快手的時長信號和互動信號一般用的是什么 loss?是分類還是回歸?互動目標和觀看目標離線評估一般看哪些指標?
A1:時長指標是最典型的回歸任務。但是我們同樣也注意到,時長的預估是和視頻本身的長度強相關的。比如短視頻和長視頻的分布就會非常不一樣。所以在預估時要先對其做分類處理,然后再做 regression。
最近在 KDD 也有一篇文章,用樹方法去拆分時長信號預估。可以把時長分成長視頻和短視頻,各有各自的預估范圍,然后可以用樹的方法進行更細致的劃分。長視頻可以分成中視頻和長視頻,短視頻也可以分成超短視頻和短視頻。整體效果上來看,目前還是在分類的框架下,然后再做 regression,效果會稍微好一點。其他的互動指標預估,和現有的預估方法類似。
離線評估一般會同時關注 AUC 和 GAUC。時長我們主要看的是 online 的指標。離線和線上的評估也存在差異。如果離線的評估沒有 significant 的 improvement 的話,那線上一般也不一定能看到對應的提升效果。
Q2:是否遇到過數據特別稀疏,或者要調的某個目標本身特別稀疏的情況?如果基于線上數據調參,那反饋周期可能較長,這樣調參效率會不會比較低?這種情況下有什么解決辦法?
A2:我們最近也有一些工作去討論這種極其稀疏的情況,甚至是幾天才會有反饋信號。其中最典型的就是用戶的留存。因為用戶可能離開之后,過幾天才會回來。拿到信號的時候,模型已經更新過好幾天了。解決這類問題有一些折中的方案,可以去分析一下實時的指標,或者實時的反饋信號有哪些和這種極其稀疏的信號有相關性。然后可以通過優化這些實時的信號去間接地優化長期信號。
以留存為例。我們發現它和用戶的實時觀看時長是強正相關的。一般用戶觀看時長增長,就代表了用戶對系統的粘度提高。這樣基本上能夠保證用戶留存的下界。我們去優化留存的時候,一般會使用一些其他相關的指標去優化留存。
Q3:快手的多目標融合用強化學習這種方式的時候,一般會使用哪些優化特征?是不是會存在一些很精細的特征,比如用戶的 ID?會不會導致模型收斂非常困難?
A3:User ID 其實還好,我們的 User 特征,除了有 ID 特征以外,還會有一些統計特征。除此之外在推薦鏈路上,RL 在我們的應用模塊是處于比較靠后的階段,比如精排和重排階段。在前面的一些階段也會給出一些預估和模型的排序信號。這些都有一些用戶的信號在里面。所以目前推薦的強化學習,在推薦的場景下拿到的User 側的信號還是很多的,基本上不會出現只用 User ID 的這種情況。
我們發現如果不用 User ID 的話,對個性化影響比較大。如果只用一些用戶的統計特征,有的時候不如 User ID 的提升效果那么大。如果讓 User ID 的影響占比太大的話,會有波動性的問題。