第一篇工作是快手自研的,主要針對的是帶約束的多任務場景。
#這篇工作主要針對的是短影片的一個比較專業化的場景,多任務的使用者回饋分為觀看時間長度和互動,比較常見的互動包括按讚、收藏、追蹤還有評論,這些回饋各有特色。我們透過線上系統觀察發現,時長訊號其實非常稀疏,而且因為它是連續值,難以精確度量使用者的興趣程度。相較之下,互動訊號更加豐富,包括讚、藏、關注以及評論,這些回饋可以分為觀眾的喜好和行為回饋兩類。我們在優化過程中,把這個訊號當作主要目標,互動作為輔助優化,盡量確保互動的訊號不會損失,作為優化的整體目標。相較之下,互動號碼更加稀疏,同時因為沒有統一的標準,難以精確度量使用者的興趣程度。為了提高效果,我們需要進行一定的最佳化,使得在我們的系統中將其作為主要目標來進行最佳化,同時確保互動資料的完整性,作為整體目標的輔助。
這樣就可以非常直觀地將問題描述成一個帶有約束的最佳化問題,有一個主目標標utility的最佳化,輔助目標是滿足一個下界即可。有別於常見的Pareto優化問題,這裡是需要分主次的。
解決這個問題的一個常用手段,就是把它轉換成拉格朗日對偶問題,這樣就可以直接合到一個最佳化的目標函數裡面,無論是整體最佳化或交替最佳化,可以成一個整體目標來進行最佳化。當然,需要控制不同目標的相關性以及影響因子。
這種觀察的發展仍存在一些問題,因為使用者狀態動態變化,使得它在短影片場景下,變化速度非常快。另外因為訊號不統一,尤其是主要目標最佳化和紺疏的輔助目標最佳化有非常不一致的分佈問題,現有的解決方案很難處理。如果把它統一到一個目標function,其中一個訊號就可能dominate另外一個訊號。
基於第一點,考慮使用者的動態變化問題常被描述成MDP,也就是使用者與系統的交替互動的sequence,而這個sequence 描述成Markov Decision Process 之後就可以使用強化學習的手段來求解。具體地,在描述成 Markov Decision Process 之後,因為同時還需要區分主要目標和輔助目標,所以需要額外聲明一下,在用戶反饋時,要區分兩種不同目標,此外輔助目標也可能有多個。強化學習在定義長期最佳化目標時,會將要最佳化的主目標定義成長期價值函數,稱為 value function。同樣對於輔助目標,也會有對應的 value function。相當於每個使用者的回饋,都會有長期價值評估,比起之前做 utility function,現在變成了一個長期價值的 value function。
同樣地,結合強化學習時會產生一些新的問題,例如強化學習如何區分不同的折扣係數。另外,因為引入了更多的 constraints,參數的搜尋空間也變得更大,強化學習將變得更困難。
這篇工作的解決方案是把整個最佳化分成兩個階段,第一個階段優化輔助目標,第二個階段優化主要目標。
在第一階段輔助目標最佳化時,採取了典型的actor critic 最佳化方式,針對例如按讚和關注等輔助目標的最佳化,分別優化一個critic,用來預估目前state 的優劣。長期價值預估準確之後,再去優化 actor 時就可以使用 value function 來引導它的學習。公式(2)是 critic 的最佳化,公式(3)是 actor 的最佳化,針對 critic 的最佳化,在訓練時會用到目前的 state 和下一步的 state 以及目前 action 的取樣。根據 Bellman equation 可以得到 action,再加上未來的 state 的 value 預估,應該趨近於當前 state 的預估,這樣去優化就可以逐漸逼近準確的長期價值預估。在引導 actor 學習,也就是推薦策略學習時,會採用一個 advantage function。 Advantage function 就是當採用某個 action 之後,其效果是否比平均預估更強,這個平均預估叫做 baseline。 Advantage 越大,表示 action 越好,採用這個推薦策略的機率就會越大。這是第一階段,輔助目標的最佳化。
第二階段是最佳化主要目標,我們採用的是長度。輔助目標在約束主要目標時,採用了近似的策略,我們希望主要目標輸出的 action 分佈盡可能接近不同的輔助目標,只要不斷接近輔助目標,輔助目標的結果應該就不會太差。在得到近似的 formulation 之後,透過 completion of square 可以得到一個閉式解,即加權的方式。整個主要目標的 actor critic 的最佳化方式,在 critic 層面和 value function 估計層面上,其實也沒有太大差別。但在 actor 時,我們引入了透過閉式解得到的權重。此權重的意義是,某個輔助策略 I 對應的影響因子越大,它對整體權重的影響也越大。我們希望策略輸出的分佈盡可能接近所有輔助目標策略的平均值,而得出來的閉式解的 behavior 時會有這樣的現象。
#我們在offline 的資料集上測試了多目標最佳化的效果,這裡的主要目標是watch time 即觀看時長,輔助目標是click、like、comment 和hate 等互動指標。可以看到我們提出的 two-stage 的 actor-critic 能夠得到最佳效果。
同樣我們也在線上系統做了相應的對比實驗,線上系統的設定採用了actor 加ranking 的推薦模式,這裡的action 是權重,最終的ranking 是由每一個item 和權重做內積所得的結果。線上實驗也可以看到,watch time 能夠在提升的同時對其它互動有約束效果,相較於先前的最佳化策略,它能夠更好地約束互動指標。
以上就是第一篇工作的介紹。
第二個工作同樣也是強化學習在多任務優化的應用,只不過這是比較傳統的優化。這篇工作是快手和港城大的合作項目,一作是 Liu Ziru。
#這篇工作主要討論的問題是典型的多任務聯合訓練,其挑戰是需要平衡不同任務之間的係數,傳統的MTL 的解決方案一般會考慮線性組合方式,且會忽略session 維度,即長期的動態變化。這篇工作提出的 RMTL 透過長期的預估來改變加權方式。
問題設定是定義 CTR 和 CVR 的預估的聯合最佳化。同樣我們也有一個 MDP(Markov Decision Process)的定義,但這裡 action 不再是推薦列表,而是對應的 CTR 和 CVR 預估。如果要預估準確,reward 就應該定義為 BCE 或對應的任何一個合理的 loss。在整體的目標定義上,一般情況下會定義成不同的任務加權之後再對整個 session 以及所有的 data sample 進行求和。
可以看到,它的權重係數除了 Gamma 的 discount 之外,還會受到一個需要調整的係數的影響。
#我們的解決方案是讓這個係數的調整和 session 維度的預估相關。這裡給了一個 ESMM 的 backbone,當然其它 baseline 的使用也是通用的,都可以用我們的方法來改進。
下面詳細介紹ESMM,首先有一個task specific 的actor,對每個任務都會有一個target 和current actor 的優化,優化時用到了類似之前提到的actor critic 的framework。在優化過程中,BCE loss 在引導 actor 學習時,需要對 task specific 的權重進行調整。在我們的解決方案裡,這個權重需要根據未來的價值評估進行相應的更改。該設定的意思是,如果未來的評估價值較高,說明當前 state 和當前 action 是比較準確的,對它的學習就可以放慢。相反,如果對未來的預估較差,說明該模型對 state 和 action 的未來並不看好,就應該增加它的學習,weight 採用這種方式進行了調整。這裡的未來評估同樣採用前文提到的 critic network 進行學習。
critic 的學習也同樣採用未來state 和目前state 的差異,但區別於value function,這裡差值的學習採用的是Q function,需要用到state 和action 的聯合評估。在做 actor 更新時,也要同時使用不同 task 對應的 actor 的學習。這裡 soft update 是一個通用的 trick,在增加 RL 學習穩定性的時候比較有用,一般會同時優化 target 和目前的 critic。
#透過兩個公開資料集的比較實驗,可以看出,我們的方法可以結合現有的最佳化方式包括ESMM、MMoE 以及PLE,得到的效果都能夠對先前的baseline 有所提升。
PLE 在我們的觀測中是最好的baseline,我們根據觀測現象的歸因是在學習不同task 時,PLE 能夠更好地學習到shared embedding。
相比之下,ESMM 在 Kuairand task 上面可以達到更好的 CVR 的評估。我們推測這與 click 和 conversion 在這個 dataset 裡更強的相關性有關。
#除此之外我們也做了transferability 的test,因為我們的critic 是可以直接嫁接到其他模型上的。例如可以透過最基本的 RMTL 學習 actor critic,然後用 critic 直接去提升其他模型的效果。我們發現,嫁接時都能夠穩定提升效果。
最後我們做了 ablation study,對不同的加權方式進行了對比,目前最好的效果都是由我們的 RMTL 得出來的。
最後總結 RL 和 MTL 的一些經驗。
我們發現推薦系統在長期最佳化時,尤其是在長期優化複雜指標時,是非常典型的強化學習和多任務最佳化的場景。如果是主副目標聯合最佳化,可以透過 soft regularization 去約束主要目標學習。多目標聯合優化時,如果考慮不同目標的動態變化,也能夠提升其最佳化效果。
除此之外也存在一些挑戰,例如在強化學習不同模組結合時,會對系統的穩定性帶來許多挑戰。我們的經驗是,對資料品質的把控、label 的準確性的把控和模型預估準確率的監督是非常重要的途徑。除此之外,由於推薦系統和使用者是直接互動的,不同目標僅能片面反映使用者體驗,所以得到的推薦策略也會非常不同。如何在不斷變化的使用者狀態下,聯合優化全面提升使用者體驗,未來將會是一個非常重要的課題。
A1:時長指標是典型的迴歸任務。但我們同樣也注意到,時長預估是和影片本身的長度強相關的,例如短影片和長影片的分佈會非常不一樣,所以在預估時會先對它做分類處理,然後再做regression 。最近我們在 KDD 也有工作,講用樹方法分割時長訊號預估的方法,如果大家有興趣可以關注。大概意思是,例如把時長分成長視頻和短視頻,長視頻預估會有一個預估的範圍,短視頻會有一個短視頻的預估範圍。也可以用樹方法進行更細緻的下分,長視頻可以分成中視頻和長視頻,短視頻也可以分成超短視頻和短視頻。當然也有純用分類方法解決時長預估的,我們也有做測試。整體效果上來看,目前還是在分類的框架下,再做 regression,效果會稍微好一點。其他的互動的指標預估,一般和現有的預估方法差不多。離線評估時,一般 AUC 和 GAUC 是比較強的訊號,目前看這兩個訊號還是比較準確的。
A2:我們的系統主要看的是 online 的指標,離線一般是用 MAE 和 RMSE。但我們同樣看到離線和線上的評估也存在差異,如果離線評估沒有比較明顯的提升,那線上也不一定能看到對應的提升效果,它的實際對應關係在沒有達到一定顯著性的時候,差別不會太大。
A3:使用者轉送的理由分析,做一些觀測等可能會有比較好的成效。目前我們在做轉送預估的時候,在我們的連結下做和其他的互動目標的預估方式差距不太大。有個比較通用的思路,就是 label 的定義尤其是負回饋訊號的定義,會非常大程度上影響模型訓練準確度。除此之外就是資料來源的最佳化,資料和線上的分佈是否有偏,也會影響到預估準確率,所以我們很多工作也在做消偏。因為在推薦場景下,許多預估的指標其實是間接的訊號,它在下一步才會影響到推薦效果。所以以推薦效果為主導去優化指標,就是我們這邊的應用程式場景。
A4:在多目標融合時,一開始有一些 heuristic 的方法,一些手調的參數平衡的方法。後面逐漸開始使用調參方式,強化學習調參也嘗試過。目前的經驗是自動化調參比手調好一些,它的上限稍微高一些。
A5:我們最近也有一些工作討論極度稀疏、甚至幾天才有回饋的這種訊號。其中最典型的一個訊號就是使用者的留存,因為使用者可能離開之後幾天才會回來,這樣我們拿到訊號時,模型已經更新好幾天了。解決這些問題有一些折中方案,一個解決方案是可以去分析即時的回饋訊號有哪些和這種極為稀疏的訊號有一定的相關性。透過優化這些即時的訊號採用組合方式去間接優化長期訊號。以剛才的留存作為例子,在我們的系統中,我們發現用戶的留存和用戶實時的觀看時長存在非常強的正相關,用戶觀看時長就代表用戶對系統的粘度,這樣基本上能夠保證用戶留存的下界。我們優化留存時,一般會使用優化時長組合一些其他相關指標去優化留存。只要是我們分析發現和留存有一定相關性的,都可以引入進來。
A6:Actor critic 是我們迭代了幾次之後的結果,之前也試過DQN 和Reinforce 等稍微直觀的方法,有的在一些場景下確實會有效果,但目前actor critic 是一個相對穩定且好調試的方法。舉個例子,例如用 Reinforce 需要用到長期訊號,而長期的 trajectory 訊號波動性比較大,想提升它的穩定性會是比較困難的問題。但 actor critic 的一個優點是可以根據單步驟訊號進行最佳化,這是非常符合推薦系統的一個特性。我們希望每個使用者的回饋都能作為一個 training sample 去學習,對應的 actor critic 和 DDPG 方法會非常符合我們系統的設定。
A7:user id 其實還好,因為我們 user 側的特徵還是會用到各種各樣的特徵的。 user 除了有 id 特徵以外,還會有一些統計特徵。除此之外在推薦鏈路上,因為RL 在我們應用的模組處於比較靠後的階段,例如精排和重排,在前面的一些階段也會給出預估還有模型的排序訊號,這些實際上都有用戶的訊號在裡面。所以強化學習在建議的場景下拿到的 user 側的訊號還是很多的,基本上不會出現只用一個 user id 的情況。
A8:對的,而且我們發現如果不用 user id,對個人化影響還挺大的。如果只用一些使用者的統計特徵,有的時候不如一個 user id 的提升效果大。確實 user id 的影響比較大,但如果讓它的影響佔比太大,會有波動性的問題。
A9:這個問題偏向user cold start,偏cold start 場景下在推薦鏈路一般會用補全或自動化feature 填充,先把它假設成一個默認user,可能會在一定程度上解決這個問題。後面隨著 user 和系統不斷互動、session 不斷充實,實際上可以拿到一定的使用者回饋,會逐漸訓的越來越準。確保穩定性方面,基本上只要控制好不讓一個 user id 去 dominate 訓練,還是能很好地提升系統效果的。
A10:那篇工作是直接去做分桶,然後用每一個分桶到達的機率去聯合評估時長,不是分桶之後再做 regression。它只用分桶的機率,再加上分桶的值去做整體的帶機率的評估。分桶之後再 regression 應該確實不再是無偏的,畢竟每一個分桶還是有它自己的分佈規律的。
A11:這其實已經不再是多目標優化了,CTR 的指標甚至都可以直接作為一個輸入去優化 CPR,因為 CTR 不再是優化目標了。但這樣可能對使用者不太好,因為使用者的 CTR 更大程度上代表了對系統的喜好程度和黏性。不過不同系統可能也有所差別,這取決於推薦系統是以賣商品還是以流量為主。由於快手短影片這種是以流量為主的,所以說用戶 CTR 是一個更直覺、更主要的指標,CVR 只是流量引流之後的一個效果。
以上是快手強化學習與多工推薦的詳細內容。更多資訊請關注PHP中文網其他相關文章!