「猜你喜歡」是美團流量最大的推薦展位,位於首頁最下方,產品形態爲信息流,承擔了幫助用戶完成意圖轉化、發現興趣、並向美團點評各個業務方導流的責任。通過多年迭代,目前「猜你喜歡」基線策略的排序模型是業界領先的流式更新的Wide&Deep模型[1]。考慮Point-Wise模型缺乏對候選集Item之間的相關性刻畫,產品體驗中也存在對用戶意圖捕捉不充分的問題,從模型、特徵入手,更深刻地理解時間,仍有推薦體驗和效果的提高空間。近年來,強化學習在遊戲、控制等領域取得了使人矚目的成果,咱們嘗試利用強化學習針對以上問題進行優化,優化目標是在推薦系統與用戶的多輪交互過程當中的長期收益。算法
在過去的工做中,咱們從基本的Q-Learning着手,沿着狀態從低維到高維,動做從離散到連續,更新方式從離線到實時的路徑進行了一些技術嘗試。本文將介紹美團「猜你喜歡」展位應用強化學習的算法和工程經驗。第2節介紹基於多輪交互的MDP建模,這部分和業務場景強相關,咱們在用戶意圖建模的部分作了較多工做,初步奠基了強化學習取得正向收益的基礎。第3節介紹網絡結構上的優化,針對強化學習訓練不穩定、難以收斂、學習效率低、要求海量訓練數據的問題,咱們結合線上A/B Test的線上場景改進了DDPG模型,取得了穩定的正向收益。第4節介紹輕量級實時DRL框架的工做,其中針對TensorFlow對Online Learning支持不夠好和TF serving更新模型時平響驟升的問題作了一些優化。網絡
在「猜你喜歡「展位中,用戶能夠經過翻頁來實現與推薦系統的多輪交互,此過程當中推薦系統可以感知用戶的實時行爲,從而更加理解用戶,在接下來的交互中提供更好的體驗。「猜你喜歡」用戶-翻頁次數的分佈是一個長尾的分佈,在圖2中咱們把用戶數取了對數。可知多輪交互確實自然存在於推薦場景中。架構
圖2 「猜你喜歡」展位用戶翻頁狀況統計
複製代碼
在這樣的多輪交互中,咱們把推薦系統看做智能體(Agent),用戶看做環境(Environment),推薦系統與用戶的多輪交互過程能夠建模爲MDP<S,A,R,P>:app
圖3 推薦系統與用戶交互示意圖
複製代碼
咱們的優化目標是使Agent在多輪交互中得到的收益最大化:框架
具體而言,咱們把交互過程當中的MDP<A,S,R,P>建模以下:dom
狀態來自於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左側是序列模型的部分,分別使用不一樣的Pooling方式和一維CNN離線效果的對比,右側是Dense和Embedding特徵的部分,分別加入用戶高頻行爲、距離、行爲時間間隔、行爲次數、意圖轉移等特徵,以及加入全部顯著正向特徵的離線效果。ide
「猜你喜歡」目前使用的排序模型由兩個同構的Wide&Deep模型組成,分別以點擊和支付做爲目標訓練,最後把兩個模型的輸出作融合。融合方法以下圖所示:函數
圖6 排序模型示意圖
複製代碼
超參數 θ的物理意義是調整全量數據集中點擊和下單模型的Trade Off,經過綜合考慮點擊和下單兩個任務的AUC肯定,沒有個性化的因素。咱們以此爲切入點,使用Agent的動做調整融合超參數,令:
a是由Agent的策略生成Action,這樣作有兩個好處:其一,咱們知道一個較優解是a=1,這種狀況下強化學習策略和基線的排序策略保持一致,因爲強化學習是個不斷試錯的過程,咱們能夠很方便地初始化Agent的策略爲a=1,從而避免在實驗初期傷害線上效果。其二,容許咱們根據物理意義對Action作Clip,從而減輕強化學習更新過程不穩定形成的實際影響。
「猜你喜歡」展位的優化核心指標是點擊率和下單率,在每一個實驗分桶中分母是基本相同的,所以業務目標能夠當作優化點擊次數和下單次數,咱們嘗試將獎勵塑形以下:
相對於關注每一個Item轉化效率的Point Wise粒度的排序模型,強化學習的目標是最大化多輪交互中的獎勵收益,爲業務目標直接負責。
圖7 加入懲罰項先後的相對效果變化
複製代碼
在實驗過程當中咱們發現,強化學習的策略可能上線初期效果很好,在點擊和下單指標上都取得了必定的提高,但在後續會逐漸降低,如圖7前半段所示。在逐層轉化效率的分析中,咱們發現強化學習分桶的設備曝光率和UV維度點擊率有所下降,而用戶停留時長和瀏覽深度穩定提高,這說明Agent學習到了讓用戶與推薦系統更多交互,從而獲取更多曝光和轉化機會的策略,但這種策略對於部分強烈下單意圖用戶的體驗是有傷害的,由於這部分用戶意圖轉化的代價變高了,於是對展位的指望變低。針對這種狀況,咱們在獎勵塑形中加入兩個懲罰項:
修正後的獎勵爲:
因爲用戶體驗是時間連續的,UV維度的效果在報表上有必定的滯後性,約一週後點擊率和萬訂單恢復到正向水平,同時用戶停留時長和瀏覽深度有進一步提高,說明Agent確實學到了在避免傷害用戶的前提下,從多輪交互中獲取更多轉化的策略,如圖7後半段所示。
這一節咱們介紹了MDP建模相關的工做。MDP跟業務場景是強相關的,經驗不是很容易遷移。就本文的場景而言,咱們花了較多精力作狀態表達的特徵,這部分工做使強化學習獲得了在本身的目標上取得正向收益的能力,所以對這部分介紹比較細緻。動做設計是針對多目標模型融合的場景,是個業界廣泛存在而且監督學習不太適用的場景,也能體現強化學習的能力。獎勵塑形是爲了縮小強化學習的目標和業務目標之間的Gap,須要在數據洞察和業務理解上作一些工做。完成上述工做後強化學習在本身的目標和業務指標上已經能取得了一些正向效果,但不夠穩定。另外因爲策略迭代是個Online Learning的過程,實驗上線後須要實時訓練一週才能收斂並觀察效果,這也嚴重影響了咱們的迭代效率。針對這些狀況咱們針對模型作了一些改進。
在模型方面,咱們在不斷改進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模型改進的工做。
借鑑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,能夠認爲強化學習在本身的目標上取得了穩定的正向收益。
受A3C[6]網絡的啓發,咱們觀察到DDPG的網絡中Actor和Critic網絡中都有State的表達,而在咱們的場景中大部分參數都集中在State的部分,在十萬量級,其餘參數只有數千,所以咱們嘗試把State部分的權重作共享,這樣能夠減小約一半的訓練參數。
圖10 使用advantage函數並作state權值共享
複製代碼
改進後的網絡結構如圖10所示。對於這個網絡結構,咱們注意到有V(s)的分支和動做不相關,意即咱們不須要具體的Action也能夠學習該State下Q的指望,這就容許咱們在線下使用基線策略千萬級的數據量作預訓練,線上也同時使用基線和實驗流量作實時更新,從而提高訓練的效果和穩定性。又由於這條更新路徑包含了全部State的參數,模型的大部分參數均可以獲得充分的預訓練,只有Action相關的參數必須依賴Online Learning的部分,這就大幅提升了咱們的實驗迭代效率。原來咱們須要上線後等待一週訓練再觀察效果,改進後上線次日就能夠開始觀察效果。
在A2C[7]的論文裏做者論述了他們的看法:同步A2C實現比異步實現的A3C表現要好。目前還沒有看到任何證據證實異步引入的噪聲可以提供任何性能收益,所以爲了提高訓練效率,咱們採起了這個作法,使用同一套參數估計Q_{t+1}和更新Q_t,從而使模型參數再次減半。
考慮多組強化學習實驗同時在線的狀況,結合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模型,咱們認爲這個提高是較爲顯著的。
強化學習一般是在一次次試錯(Trial-and-Error)中學習,實時地改進策略並得到反饋能大幅提高學習效率,尤爲在連續策略中。這一點在遊戲場景下很容易理解,相應地,咱們也在推薦系統中構建了實時深度學習系統,讓策略更新更加高效。爲了支持實時更新的DRL模型和高效實驗,咱們針對Online Learning的需求,基於TensorFlow及TF Serving作了一些改進和優化,設計並實現了一套特徵配置化的實時更新的DRL框架,在實驗迭代過程當中沉澱了DQN、DDQN、DDPG、A3C、A2C、PPO[8]等模型。系統架構如圖13所示:
圖13 實時更新的強化學習框架
複製代碼
訓練部分工做流以下:
線上預測部分,推薦系統的Agent從Tair獲取預處理參數,並將處理後的特徵餵給TF Serving作前向傳播,獲得Action並對展示給用戶的排序結果作相應的干預。
針對TensorFLow對Online Learning支持比較弱,Serving對千萬級Embedding處理效率不高的問題,咱們作了一些改進:
強化學習是目前深度學習領域發展最快的方向之一,其與推薦系統和排序模型的結合也有更多價值等待發掘。本文介紹了強化學習在美團「猜你喜歡」排序場景落地的工做,包括根據業務場景不斷調整的MDP建模,使強化學習可以取得必定的正向收益;經過改進DDPG作數據加強,提高模型的魯棒性和實驗效率,從而取得穩定的正向收益;以及基於TensorFlow的實時DRL框架,爲高效並行策略迭代提供了基礎。
通過一段時間的迭代優化,咱們在強化學習方面也積累了一些經驗,與傳統的監督學習相比,強化學習的價值主要體如今:
同時強化學習做爲機器學習的一個分支,不少機器學習的經驗仍然適用於此。好比數據和特徵決定效果的上限,模型和算法只是不斷逼近它。對於強化學習而言特徵空間主要包含在狀態的建模中,咱們強烈建議在狀態建模上多作一些嘗試,並信任模型有能力從中作出判斷。再如,使用更多的訓練數據下降經驗風險,更少的參數下降結構風險的思路對強化學習仍然適用,所以咱們認爲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年加入美團點評,目前負責強化學習在推薦場景的落地工做。