強化學習在美團「猜你喜歡」的實踐

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>:app

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

圖3 推薦系統與用戶交互示意圖
複製代碼

咱們的優化目標是使Agent在多輪交互中得到的收益最大化:框架

具體而言,咱們把交互過程當中的MDP<A,S,R,P>建模以下:dom

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特徵的部分,分別加入用戶高頻行爲、距離、行爲時間間隔、行爲次數、意圖轉移等特徵,以及加入全部顯著正向特徵的離線效果。ide

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年加入美團點評,目前負責強化學習在推薦場景的落地工做。

相關文章
相關標籤/搜索