強化學習推薦系統的模型結構與特點總結

提到強化學習,似乎總給人一種難以訓練且難以落地的感覺。但是聽大佬說,企業裏強化學習推薦系統 (RLRS) 落地的例子其實已經有不少,不過一般都沒有公開細節。現有公開且知名的 RLRS 技術分享有:

本文希望彙總這三個工作中的模型結構,試圖從中總結出一些 RLRS 的通用性的規則或做法,並指出一些 RLRS 流程中存在的問題(個人拙見)。

強化學習的本質是讓初始化的智能體 (agent) 在環境中探索,通過環境的反饋 (reward) 來不斷糾正自己的行動策略(policy),以期得到最大的 reward。在推薦系統中,用戶的需求會隨時間動態的變化,RL agent 不斷探索的特性正好符合了推薦系統對動態性的要求,因此就把 RL agent 作爲推薦系統。而 agent 不斷探索如何滿足用戶的動態的需求,其實也是在不斷嘗試建模更長期的回報。這就引出了 RLRS 的兩大優勢:

當討論強化學習算法的應用時,首先要明確馬爾可夫決策過程 (MDP) 中的轉移元組的各個元素的含義。在 RLRS 中:

**動作 (action):**推薦內容,如商品列表或者新聞列表

**獎勵 (reward):**用戶的反饋,如用戶是否點擊,或者瀏覽時間

**狀態 (state):**RLRS 的 agent 的狀態是對環境以及自身所處情況的刻畫,可以簡單理解爲此刻的用戶歷史行爲日誌

**環境 (environment):**環境是推薦系統所面對的外部環境,可以簡單的理解爲用戶集合 + 物品集合,如果展示推薦內容的 APP 或者網頁的某些屬性 (比如說 APP 中的推薦頁面展示規則,或者頁面所包含的其他內容) 不能由推薦系統決定,那麼環境也要包括網站與 APP 本身

具體來說,在微軟的 DRN 新聞推薦系統中,MDP 可以表示爲下圖的流程:

環境被定義爲用戶與新聞的集合,狀態是用戶的特徵表示,動作是新聞的特徵表示。agent 的輸入是用戶特徵表示 (狀態) 與物品特徵表示 (待選動作),輸出一個新聞列表(動作) 並得到用戶的反饋,而用戶反饋又包含點擊率與活躍度兩部分。其他 RLRS 的 MDP 決策過程與 DRN 類似,只是大家對狀態、獎勵、環境的定義可能略有偏差。

例如,DRN 中的狀態,即用戶特徵,其每一維代表的是該用戶在最近一段時間所點擊的新聞的相關信息,用這樣一個特徵代表了用戶的新聞喜好。

在美團 “猜你喜歡” 中,狀態是由用戶實時行爲序列得到的,具體的:把用戶實時行爲序列的 Item Embedding 作爲輸入,使用一維 CNN 學習用戶實時意圖的表達;使用 Dense 和 Embedding 特徵表達用戶所處的時間、地點、場景,以及更長時間週期內用戶行爲習慣的挖掘,把這部分的輸出作爲上下文信息。最終把用戶實時意圖與上下文信息拼接,得到狀態。

在 DeepPage 的強化學習算法中,狀態也是用戶的特徵表示,不過是由 GRU 得到的。輸入給 GRU 的是用戶歷史上點擊過的物品序列,把 GRU 末端輸出作爲初始狀態。

在值函數的估計上,美團和微軟都參考了 Dueling DQN 的思想,把狀態動作值函數分解爲狀態值函數和優勢函數:

Dueling DQN 這種對 Q(s,a) 的分解有更高的更新效率,因爲更新了 V(s) 實際上就等於更新了所有 Q(s,a)。並且,微軟的 target 獎勵還考慮了 Double DQN 的小技巧,緩解選取動作時的 max 操作帶來的過估計問題:

美團則簡化了模型:由於 Actor 與 Critic 部分都包含對 state 的表達,且這部分的網絡參數佔整個網絡參數的大頭,因此直接複用這部分參數。另外,對值函數 V(s) 的估計與動作無關,動態性很小,因此可以直接離線使用歷史數據監督的訓練:

離線訓練的操作在 DeepPage 算法中也有,但是 DeepPage 又有所不同:DeepPage 認爲 RLRS 上線前需要進行線下的訓練和評估,訓練和評估主要基於用戶的歷史行爲數據,但是這部分數據對於整個動作空間來說 (也就是所有物品的可能組合) 是非常稀疏的。因此 DeepPage 希望能夠有一個模擬器來預測出從未見過的 (state,action) 的獎勵,也就是 target 值函數的估計。這裏並不是採取監督訓練的方式來計算出一個預測模型,而是根據新 (state,action) 與已有 (state,action) 的相似度來作爲獎勵的權重。這個做法看似簡介,其實背後的思想是防止外延誤差。簡單的理解外延誤差,就是說在離線情況下我根據歷史數據預測 target 值函數時,所用的 (state,action) 分佈,與真實線上的策略所能探索到的 (statce,action) 分佈,之間是在偏差的,這會使得離線算法的性能急劇下降。相關研究已經很多了,解決辦法就是遇到沒見過的策略時,給其較低的獎勵,也就是保守一些,DeepPage 這裏的離線值估計,也是採用了這個思想。離線強化學習外延誤差的問題,可以看這篇文章 [3]。

DRN 與美團和 DeepPage 的算法還有一處不同,DRN 估計 Q(s,a)時輸入了單獨的新聞特徵,新聞是檢索得來的,或許是粗排得到的,原文沒說;而美團與京東的模型則採用了 Actor-Critic 的結構,動作是由 Actor 選取的,因爲這樣做避免了對動作空間 (物品空間) 的線性操作(max),效率明顯高很多:

線上測試時,美團同時測試多個策略,每個策略就是一個優勢函數,共用同一個狀態值函數,更新細節沒有說:

DRN 在更新時,把更新分爲大更新與小更新,小更新時,模型中會對原有的推薦網絡增加一個擾動得到一個新網絡,對比兩個網絡在一個時刻的性能,並保留較好的那個。這種通過擾動得到新網絡的做法非常粗暴,王喆老師在其推薦系統課程中對這一點進行了分析,認爲這是一種工程實現時的妥協,所以大家不必過度糾結這一步的合理性了

大更新是隔一段時間 (如幾個小時) 進行一次,利用這段時間收集到的用戶行爲日誌,進行離線的更新,同時大更新還會考慮用戶的活躍度,用戶活躍度可以看作是對長期收益的建模。總結大更新與小更新的差異如下:

最後說一下 DRN 對用戶活躍度的建模:

初始活躍度 0.5,當用戶離開 APP 時這個活躍度會遞減,每當用戶返回 APP,活躍度就會增加,最大加到 1.0。所以如果 agent 推薦了某些用戶看完之後再也不想打開 APP 的東西,或者不能吸引用戶再次打開 APP 的東西,agent 就會受到懲罰。

總結一下,我認爲這三個工作有這些突出的貢獻:

參考文獻:

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

3. Off-Policy Deep Reinforcement Learning without Exploration

4. https://github.com/hongleizhang/RSPapers

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/04C7rG0P92XYnzRHNqQdxQ