1. 程式人生 > >強化學習在美團“猜你喜歡”的實踐

強化學習在美團“猜你喜歡”的實踐

1 概述

“猜你喜歡”是美團流量最大的推薦展位,位於首頁最下方,產品形態為資訊流,承擔了幫助使用者完成意圖轉化、發現興趣、並向美團點評各個業務方導流的責任。經過多年迭代,目前“猜你喜歡”基線策略的排序模型是業界領先的流式更新的Wide&Deep模型[1]。考慮Point-Wise模型缺少對候選集Item之間的相關性刻畫,產品體驗中也存在對使用者意圖捕捉不充分的問題,從模型、特徵入手,更深入地理解時間,仍有推薦體驗和效果的提升空間。近年來,強化學習在遊戲、控制等領域取得了令人矚目的成果,我們嘗試利用強化學習針對以上問題進行優化,優化目標是在推薦系統與使用者的多輪互動過程中的長期收益。

在過去的工作中,我們從基本的Q-Learning著手,沿著狀態從低維到高維,動作從離散到連續,更新方式從離線到實時的路徑進行了一些技術嘗試。本文將介紹美團“猜你喜歡”展位應用強化學習的演算法和工程經驗。第2節介紹基於多輪互動的MDP建模,這部分和業務場景強相關,我們在使用者意圖建模的部分做了較多工作,初步奠定了強化學習取得正向收益的基礎。第3節介紹網路結構上的優化,針對強化學習訓練不穩定、難以收斂、學習效率低、要求海量訓練資料的問題,我們結合線上A/B Test的線上場景改進了DDPG模型,取得了穩定的正向收益。第4節介紹輕量級實時DRL框架的工作,其中針對TensorFlow對Online Learning支援不夠好和TF serving更新模型時平響驟升的問題做了一些優化。

圖1 美團首頁“猜你喜歡”場景

2 MDP建模

在“猜你喜歡“展位中,使用者可以通過翻頁來實現與推薦系統的多輪互動,此過程中推薦系統能夠感知使用者的實時行為,從而更加理解使用者,在接下來的互動中提供更好的體驗。“猜你喜歡”使用者-翻頁次數的分佈是一個長尾的分佈,在圖2中我們把使用者數取了對數。可知多輪互動確實天然存在於推薦場景中。

圖2 “猜你喜歡”展位使用者翻頁情況統計
複製程式碼

在這樣的多輪互動中,我們把推薦系統看作智慧體(Agent),使用者看作環境(Environment),推薦系統與使用者的多輪互動過程可以建模為MDP<S,A,R,P>:

  • State:Agent對Environment的觀測,即使用者的意圖和所處場景。
  • Action:以List-Wise粒度對推薦列表做調整,考慮長期收益對當前決策的影響。
  • Reward:根據使用者反饋給予Agent相應的獎勵,為業務目標直接負責。
  • P(s,a):Agent在當前State s下采取Action a的狀態轉移概率。

圖3 推薦系統與使用者互動示意圖
複製程式碼

我們的優化目標是使Agent在多輪互動中獲得的收益最大化:

具體而言,我們把互動過程中的MDP<A,S,R,P>建模如下:

2.1 狀態建模

狀態來自於Agent對Environment的觀察,在推薦場景下即使用者的意圖和所處場景,我們設計瞭如圖4所示的網路結構來提取狀態的表達。網路主要分為兩個部分:把使用者實時行為序列的Item Embedding作為輸入,使用一維CNN學習使用者實時意圖的表達;推薦場景其實仍然相當依賴傳統特徵工程,因此我們使用Dense和Embedding特徵表達使用者所處的時間、地點、場景,以及更長時間週期內使用者行為習慣的挖掘。

圖4 狀態建模網路結構
複製程式碼

這裡我們介紹一下使用Embedding特徵表達使用者行為習慣挖掘的Binary Sequence[2] 方法。我們通過特徵工程對使用者行為序列做各種維度的抽象,做成一些列離散的N進位制編碼,表示每一位有N種狀態。例如統計使用者在1H/6H/1D/3D/1W不同時間視窗內是否有點選行為編碼成5位2進位制數,把這些數字作為離散特徵學習Embedding表達,作為一類特徵處理方法。除此之外,還有點選品類是否發生轉移、點選間隔的gap等等,在“猜你喜歡”場景的排序模型和強化學習狀態建模中都取得了很不錯的效果。原因是在行為資料非常豐富的情況下,序列模型受限於複雜度和效率,不足以充分利用這些資訊,Binary Sequence可以作為一個很好的補充。

圖5 序列模型和特徵工程效果對照

圖5左側是序列模型的部分,分別使用不同的Pooling方式和一維CNN離線效果的對比,右側是Dense和Embedding特徵的部分,分別加入使用者高頻行為、距離、行為時間間隔、行為次數、意圖轉移等特徵,以及加入所有顯著正向特徵的離線效果。

2.2 動作設計

“猜你喜歡”目前使用的排序模型由兩個同構的Wide&Deep模型組成,分別以點選和支付作為目標訓練,最後把兩個模型的輸出做融合。融合方法如下圖所示:

圖6 排序模型示意圖
複製程式碼

超引數 θ的物理意義是調整全量資料集中點選和下單模型的Trade Off,通過綜合考慮點選和下單兩個任務的AUC確定,沒有個性化的因素。我們以此為切入點,使用Agent的動作調整融合超引數,令:

a是由Agent的策略生成Action,這樣做有兩個好處:其一,我們知道一個較優解是a=1,這種情況下強化學習策略和基線的排序策略保持一致,由於強化學習是個不斷試錯的過程,我們可以很方便地初始化Agent的策略為a=1,從而避免在實驗初期傷害線上效果。其二,允許我們根據物理意義對Action做Clip,從而減輕強化學習更新過程不穩定造成的實際影響。

2.3 獎勵塑形

“猜你喜歡”展位的優化核心指標是點選率和下單率,在每個實驗分桶中分母是基本相同的,因此業務目標可以看成優化點選次數和下單次數,我們嘗試將獎勵塑形如下:

相對於關注每個Item轉化效率的Point Wise粒度的排序模型,強化學習的目標是最大化多輪互動中的獎勵收益,為業務目標直接負責。

圖7 加入懲罰項前後的相對效果變化
複製程式碼

在實驗過程中我們發現,強化學習的策略可能上線初期效果很好,在點選和下單指標上都取得了一定的提升,但在後續會逐漸下降,如圖7前半段所示。在逐層轉化效率的分析中,我們發現強化學習分桶的裝置曝光率和UV維度點選率有所降低,而使用者停留時長和瀏覽深度穩定提升,這說明Agent學習到了讓使用者與推薦系統更多互動,從而獲取更多曝光和轉化機會的策略,但這種策略對於部分強烈下單意圖使用者的體驗是有傷害的,因為這部分使用者意圖轉化的代價變高了,因而對展位的期望變低。針對這種情況,我們在獎勵塑形中加入兩個懲罰項:

  1. 懲罰沒有發生任何轉化(點選/下單)行為的中間互動頁面(penalty1),從而讓模型學習使用者意圖轉化的最短路;
  2. 懲罰沒有發生任何轉化且使用者離開的頁面(penalty2),從而保護使用者體驗。

修正後的獎勵為:

由於使用者體驗是時間連續的,UV維度的效果在報表上有一定的滯後性,約一週後點擊率和萬訂單恢復到正向水平,同時使用者停留時長和瀏覽深度有進一步提升,說明Agent確實學到了在避免傷害使用者的前提下,從多輪互動中獲取更多轉化的策略,如圖7後半段所示。

這一節我們介紹了MDP建模相關的工作。MDP跟業務場景是強相關的,經驗不是很容易遷移。就本文的場景而言,我們花了較多精力做狀態表達的特徵,這部分工作使強化學習得到了在自己的目標上取得正向收益的能力,因此對這部分介紹比較細緻。動作設計是針對多目標模型融合的場景,是個業界普遍存在並且監督學習不太適用的場景,也能體現強化學習的能力。獎勵塑形是為了縮小強化學習的目標和業務目標之間的Gap,需要在資料洞察和業務理解上做一些工作。完成上述工作後強化學習在自己的目標和業務指標上已經能取得了一些正向效果,但不夠穩定。另外由於策略迭代是個Online Learning的過程,實驗上線後需要實時訓練一週才能收斂並觀察效果,這也嚴重影響了我們的迭代效率。針對這些情況我們針對模型做了一些改進。

3 改進的DDPG模型

在模型方面,我們在不斷改進MDP建模的過程中先後嘗試了Q-Learning、DQN[3]和DDPG[4]模型,也面臨著強化學習中普遍存在更新不夠穩定、訓練過程容易不收斂、學習效率較低(這裡指樣本利用效率低,因此需要海量樣本)的問題。具體到推薦場景中,由於List-Wise維度的樣本比Point-Wise少得多,以及需要真實的動作和反饋作為訓練樣本,因此我們只能用實驗組的小流量做實時訓練。這樣一來訓練資料量相對就比較少,每天僅有幾十萬,迭代效率較低。為此我們對網路結構做了一些改進,包括引入具體的Advantage函式、State權值共享、On-Policy策略的優化,結合線上A/B Test框架做了十數倍的資料增強,以及對預訓練的支援。接下來我們以DDPG為基石,介紹模型改進的工作。

圖8 DDPG模型
複製程式碼

如圖8所示,基本的DDPG是Actor-Critic架構。線上使用Actor網路,預測當前State下最好的動作a,並通過Ornstein-Uhlenbeck過程對預測的Action加一個隨機噪聲得到a',從而達到在最優策略附近探索的目的。將a' 作用於線上,並從使用者(Environment)獲得相應的收益。訓練過程中,Critic學習估計當前狀態s下采取動作a獲得的收益,使用MSE作為Loss Function:

對引數求導:

Actor使用Critic反向傳播的策略梯度,使用梯度上升的方法最大化Q估計,從而不斷優化策略:

在確定性策略梯度的公式中,θ是策略的引數,Agent將使用策略μθ(s)在狀態s 生成動作a,ρμ(指數關係)表示該策略下的狀態轉移概率。在整個學習過程中,我們不需要真的估計策略的價值,只需要根據Critic返回的策略梯度最大化Q估計。Critic不斷優化自己對Q(s,a)的估計,Actor通過Critic的判斷的梯度,求解更好的策略函式。如此往復,直到Actor收斂到最優策略的同時,Critic收斂到最準確的Q(s,a)估計。

接下來基於這些我們介紹的DDPG模型改進的工作。

3.1 Advantage函式

借鑑DDQN[5]的優勢函式Advantage的思路,我們把critic估計的Q(s,a)拆分成兩個部分:只與狀態相關的V(s),與狀態、動作都相關的Advantage函式A(s,a),有Q(s,a) = V(s) + A(s,a),這樣能夠緩解critic對Q過高估計的問題。具體到推薦環境中,我們的策略只是對排序模型的融合引數做調整,收益主要是由狀態決定的。

圖9 實驗組與基線的Q值對比
複製程式碼

如圖9所示,在實際實驗中觀察V(s)和A(s,a)均值的比值大約為97:3,可以驗證我們的這一判斷。在實際訓練過程中,我們先根據狀態和收益訓練V(s),再使用Q(s,a)-V(s)的殘差訓練A(s,a),很大程度上提升了訓練穩定性,並且我們可以通過殘差較為直觀地觀測到到當前策略是否優於基線。圖8中A(s,a)穩定大於0,可以認為強化學習在自己的目標上取得了穩定的正向收益。

3.2 State權值共享

受A3C[6]網路的啟發,我們觀察到DDPG的網路中Actor和Critic網路中都有State的表達,而在我們的場景中大部分引數都集中在State的部分,在十萬量級,其他引數只有數千,因此我們嘗試把State部分的權重做共享,這樣可以減少約一半的訓練引數。

圖10 使用advantage函式並做state權值共享
複製程式碼

改進後的網路結構如圖10所示。對於這個網路結構,我們注意到有V(s)的分支和動作不相關,意即我們不需要具體的Action也可以學習該State下Q的期望,這就允許我們線上下使用基線策略千萬級的資料量做預訓練,線上也同時使用基線和實驗流量做實時更新,從而提升訓練的效果和穩定性。又因為這條更新路徑包含了所有State的引數,模型的大部分引數都可以得到充分的預訓練,只有Action相關的引數必須依賴Online Learning的部分,這就大幅提高了我們的實驗迭代效率。原來我們需要上線後等待一週訓練再觀察效果,改進後上線第二天就可以開始觀察效果。

3.3 On-policy

在A2C[7]的論文裡作者論述了他們的見解:同步A2C實現比非同步實現的A3C表現要好。目前尚未看到任何證據證明非同步引入的噪聲能夠提供任何效能收益,因此為了提升訓練效率,我們採取了這個做法,使用同一套引數估計Q_{t+1}和更新Q_t,從而使模型引數再次減半。

3.4 擴充套件到多組並行策略

考慮多組強化學習實驗同時線上的情況,結合A/B Test環境特點,我們把以上網路框架擴充套件到多Agent的情況。

圖11 支援多組線上實驗DDPG模型
複製程式碼

如圖11所示,線上多組實驗共享State表達和V(s)的估計,每個策略訓練自己的A(s,a)網路且能快速收斂,這樣的結構一方面使訓練過程更加穩定,另一方面為強化學習策略全量提供了可能性。

圖12 點選率分天實驗效果
複製程式碼

在DDPG的改造工作中,我們使用Advantage函式獲得更穩定的訓練過程和策略梯度。State權值共享和On-Policy方法使我們的模型引數減少75%。Advantage函式和State權值共享結合,允許我們使用基線策略樣本做資料增強,使每天的訓練樣本從十萬量級擴充套件到百萬量級,同時充分的預訓練保證策略上線後能迅速收斂。經過這些努力,強化學習線上實驗取得了穩定的正向效果,在下單率效果持平的情況下,周效果點選率相對提升0.5%,平均停留時長相對提升0.3%,瀏覽深度相對提升0.3%。修改過的模型與A2C的主要區別是我們仍然使用確定性策略梯度,這樣我們可以少估計一個動作的分佈,即隨機策略方差降至0的特例。圖12表明強化實習的效果是穩定的,由於“猜你喜歡”的排序模型已經是業界領先的流式DNN模型,我們認為這個提升是較為顯著的。

4 基於TF的輕量級實時DRL系統

強化學習通常是在一次次試錯(Trial-and-Error)中學習,實時地改進策略並獲得反饋能大幅提升學習效率,尤其在連續策略中。這一點在遊戲場景下很容易理解,相應地,我們也在推薦系統中構建了實時深度學習系統,讓策略更新更加高效。為了支援實時更新的DRL模型和高效實驗,我們針對Online Learning的需求,基於TensorFlow及TF Serving做了一些改進和優化,設計並實現了一套特徵配置化的實時更新的DRL框架,在實驗迭代過程中沉澱了DQN、DDQN、DDPG、A3C、A2C、PPO[8]等模型。系統架構如圖13所示:

圖13 實時更新的強化學習框架
複製程式碼

訓練部分工作流如下:

  1. Online Joiner從Kafka中實時收集特徵和使用者反饋,拼接成Point-Wise粒度的Label-Feature樣本,並把樣本輸出到Kafka和HDFS,分別支援線上和離線更新。
  2. Experience Collector收集上述樣本,合併為List-Wise的請求粒度,並根據請求時間戳拼接成[<State, Action, Reward>]列表形式的MC Episode,再經過狀態轉移計算拆分成 <s_t, a_t, r_t, s_{t+1}> 形式的TD Instance,輸出MC或TD格式的樣本支援RL訓練。
  3. Trainer做輸入特徵的預處理,使用TensorFlow訓練DRL模型。
  4. Version Controller負責排程任務保證實效性和質量,並把訓練完成且指標符合預期模型推送到TF Serving和Tair中,這部分只需要Actor相關的引數。Tair作為彌補TF在Online Learning短板輔助的PS,後面會具體介紹。
  5. Monitor監控和記錄整個訓練流程中的資料量和訓練指標,對不符合預期的情況發出線上告警。
  6. 新模型上線前會先做離線的Pre-Train,使用基線策略的資料學習State的表達和Value net。上線後實時同時更新Actor,Advantage和Value的引數。

線上預測部分,推薦系統的Agent從Tair獲取預處理引數,並將處理後的特徵餵給TF Serving做前向傳播,得到Action並對展現給使用者的排序結果做相應的干預。

針對TensorFLow對Online Learning支援比較弱,Serving對千萬級Embedding處理效率不高的問題,我們做了一些改進:

  • 在線上特徵的分佈會隨時間而改變,針對Dense特徵我們自己維護增量的Z-Score演算法對特徵做預處理。
  • Embedding特徵的輸入維度也經常發生變化,而TF不支援變長的Input Dimention,為此我們維護了全量的ID-Embedding對映,每次訓練讓模型載入當前樣本集合中的高頻Embedding。
  • 千萬級Item Embedding會大幅降低訓練和預測的效率,為此我們把這部分對映在預處理中,把對映後的矩陣直接作為CNN的輸入。
  • 為了提升特徵工程的實驗效率,支援特徵配置化生成模型結構。
  • 此外,TF serving在更新模型一兩分鐘內響應時間會驟然升高,導致很多請求超時,原因有二,其一,serving的模型載入和請求共用一個執行緒池,導致切換模型使阻塞處理請求;其二,計算圖初始化是lazy的,這樣新模型後的第一次請求需要等待計算圖初始化。這個問題在更新模型頻Low對online learning支援比較弱繁的Online Learning場景影響較大,我們採用切分執行緒池和warm up初始化的方式解決。更具體的方案和效果可以參考美團另一篇技術部落格[9]

5 總結和展望

強化學習是目前深度學習領域發展最快的方向之一,其與推薦系統和排序模型的結合也有更多價值等待發掘。本文介紹了強化學習在美團“猜你喜歡”排序場景落地的工作,包括根據業務場景不斷調整的MDP建模,使強化學習能夠取得一定的正向收益;通過改進DDPG做資料增強,提升模型的魯棒性和實驗效率,從而取得穩定的正向收益;以及基於TensorFlow的實時DRL框架,為高效並行策略迭代提供了基礎。

經過一段時間的迭代優化,我們在強化學習方面也積累了一些經驗,與傳統的監督學習相比,強化學習的價值主要體現在:

  1. 靈活的獎勵塑形,能支援各種業務目標建模,包括不限於點選率、轉化率、GMV、停留時長、瀏覽深度等,支援多目標融合,為業務目標直接負責。
  2. 充滿想象空間的動作設計,不需要直接的Label,而是通過網路來生成和評價策略,適合作為監督學習的補充。這點和GAN有相通之處。
  3. 考慮優化長期收益對當前決策造成的影響,Agent與Environment互動頻繁的場景更加能體現強化學習的價值。

同時強化學習作為機器學習的一個分支,很多機器學習的經驗仍然適用於此。比如資料和特徵決定效果的上限,模型和演算法只是不斷逼近它。對於強化學習而言特徵空間主要包含在狀態的建模中,我們強烈建議在狀態建模上多做一些嘗試,並信任模型有能力從中做出判斷。再如,使用更多的訓練資料降低經驗風險,更少的引數降低結構風險的思路對強化學習仍然適用,因此我們認為DDPG的改進工作能夠推廣到不同業務的線上A/B Test場景中。此外,我們在訓練過程中也遇到了強化學習對隨機性敏感的問題[10],為此我們線上使用了多組隨機種子同時訓練,選擇表現最好的一組引數用於實際引數更新。

在目前的方案中,我們嘗試的Action是調整模型融合引數,主要考慮這是個排序問題中比較通用的場景,也適合體現強化學習的能力,而實際上對排序結果的干預能力是比較有限的。未來我們會探索不同品類、位置、價格區間等跟使用者意圖場景強相關屬性的召回個數,調整排序模型隱層引數等方向。另外在解決學習效率低下的問題上,還將嘗試Priority Sampling 提高樣本利用效率,Curious Networks提升探索效率等方法。也歡迎對強化學習感興趣的朋友們與我們聯絡,一起交流探索強化學習在工業界的應用與發展,同時對文章的錯漏之處也歡迎大家批評指正。

參考文獻

[1] Heng-Tze Cheng, Levent Koc, Jeremiah Harmsen, Tal Shaked, Tushar Chandra, Hrishi Aradhye, Glen Anderson, Greg Corrado, Wei Chai, Mustafa Ispir, Rohan Anil, Zakaria Haque, Lichan Hong, Vihan Jain, Xiaobing Liu, and Hemal Shah. Wide & deep learning for recommender systems. CoRR, 2016. [2] Yan, P., Zhou, X., Duan, Y. E-commerce item recommendation based on field-aware Factorization Machine. In: Proceedings of the 2015 International ACM Recommender Systems Challenge, 2015. [3] Mnih, Volodymyr, Kavukcuoglu, Koray, Silver, David, Rusu, Andrei A, Veness, Joel, Bellemare, Marc G, Graves, Alex, Riedmiller, Martin, Fidjeland, Andreas K, Ostrovski, Georg, et al. Humanlevel control through deep reinforcement learning. Nature, 2015. [4] Lillicrap, T., Hunt, J., Pritzel, A., Heess, N., Erez, T., Tassa, Y., Silver, D., and Wierstra, D. Continuous control with deep reinforcement learning. In International Conference, 2015 on Learning Representations, 2016. [5] Wang, Z., de Freitas, N., and Lanctot, M. Dueling network architectures for deep reinforcementlearning. Technical report, 2015. [6] Volodymyr Mnih, Adri`a Puigdom`enech Badia, Mehdi Mirza, Alex Graves, Tim-othy P. Lillicrap, Tim Harley, David Silver, and Koray Kavukcuoglu. Asyn-chronous methods for deep reinforcement learning. ICML, 2016 [7] Y. Wu, E. Mansimov, S. Liao, R. Grosse, and J. Ba. Scalable trust-region method for deep reinforcementlearning using kronecker-factored approximation. arXiv preprint arXiv:1708.05144, 2017. [8] Schulman, J.; Wolski, F.; Dhariwal, P.; Radford, A.; and Klimov,O. Proximal policy optimization algorithms. arXiv preprintarXiv:1707.06347, 2017 [9] 仲達, 鴻傑, 廷穩. 基於TensorFlow Serving的深度學習線上預估. MT Bolg, 2018 [10] P. Henderson, R. Islam, P. Bachman, J. Pineau, D. Precup, and D. Meger. Deep reinforcement learningthat matters. arXiv:1709.06560, 2017.

作者簡介

段瑾,2015年加入美團點評,目前負責強化學習在推薦場景的落地工作。