強化學習在錦囊位置調控上的探索和實踐
一、背景
在手淘的搜索中,當用戶輸入query進行搜索之後,一方面有適合他的商品展現出來,另一方面,如何更好地理解用戶意圖,為其推薦更合適的關鍵詞進行細分查找,從而更高效的引導用戶到他想找的商品,也是一件非常重要的事情。
因此在手淘搜索場景下,我們以「錦囊」這種產品形態來承載對用戶意圖的理解和細分,關於錦囊更完整的介紹請見:https://www.atatech.org/articles/80706
同時錦囊的內容也分了不同的類型,比如從標題抽取出來的tag標籤,相關搜索,以及和query相關的品牌和其它的各種屬性值,如裙長,袖長等。如下圖所示:
在這裡,我們主要解決的問題是如何根據用戶的歷史以及實時行為,在當前query下,為他推薦更合適的錦囊類型,比如有的用戶對品牌感興趣,有的用戶對風格感興趣,那麼就會根據實時的信息,在合適的頁面展現合適的錦囊類型。以提高用戶對錦囊的點擊率,進而提升引導效率。
二、系統框架
整個強化學習位置調控是一個在線實時訓練的過程,其框架圖如下所示:
porsche:Porsche,是一個強大的機器學習平台,更多介紹可參考:http://porsche.alibaba-inc.com ,我們的實時日誌處理,以及強化學習的實時訓練均跑在porsche平台上,通過porsche平台,輸出兩個數據,一是強化學習的模型參數,直接寫入dii引擎內存中,二是用戶的實時行為序列,寫入igraph中
錦囊模塊:在判斷具體出什麼類型的錦囊時,需要的數據有用戶的實時行為序列,從igraph中獲取,同時還要從dii內存中獲取強化學習的模型參數,然後綜合判斷當前需要出的錦囊類型。同時在當前session下,還需要實時的將已經出現過的類型寫入igraph中,當用戶再次翻頁的時候,不會出現重複的錦囊類型。
三、基於強化學習的建模
3.1 強化學習簡介
強化學習主要是通過與環境交互中的trail-and-error,來不斷找到能使得累計獎賞最大的策略一種學習方法。
在Model-Free的強化學習中,主要有兩類方法,一類是Value-Based的方法,即利用值函數估計來選擇最優的動作(比如Q(s,a)),也相應得到了更優的策略,比如Q-learning,SASAR,DQN等,另一類是Policy-Based的方法,採用直接優化策略的方法,比如TRPO,A3C等。 我們在錦囊調控的任務中主要使用過A3C,DQN兩種方法。
1. DQN
DQN是DeepMind在用DRL探索Atari遊戲時提出的,其主要框架就是在傳統的Q-learning方法中引入了DNN(CNN)來進行學習,並在此基礎上加入了Experience Replay,Targrt Network等技巧,並在很多遊戲上達到甚至超過人類玩家水平。在之後的幾個工作里,也進行了進一步的完善和提高(Prioritised Replay, Double DQN,Duelling Network等等)。其中Nature版本的DQN偽代碼如下所示:
2. A3C
A3C演算法的全稱是asynchronous advantage actor-critic,其中actor-critic是在一般的policy-based方法中,也引入了值函數估計的方法來減少方差,如下圖:
而在利用bias term技術來減小方差時,採用了Advantage function來作為bias:
演算法基本邏輯如下圖:
3.2 問題建模及實現
當用戶在搜索中發出一個query,看到頁面,把當前頁面下用戶的一些特徵作為此時的狀態,我們要學習的策略就是在這種狀態下應該給出什麼類型錦囊,從而轉移到下一個頁面下,reward也應該根據目標進行設定。
1. state
我們設計State能包含用戶在當前query下的特徵以及此時的實時特徵,主要有:
1.1長期特徵
User 特徵:性別,年齡,購買力等
User 歷史上對錦囊綜合的以及各類型錦囊的展現點擊等情況;
Query的特徵;
當前Query下錦囊綜合的以及各類型錦囊的展現點擊等點擊情況;
……
1.2實時特徵
當前所在Page;
當前頁之前用戶最近100次 PV中對各類型的點擊情況;
用戶最近五個動作類型(點擊,瀏覽,購買等);
用戶最近點擊的五個商品的特徵;
……
2.動作
我們學習的目標就是在當前頁,對於特定用戶狀態,出什麼類型的錦囊,因此這裡我們直接把要出的錦囊類型作為動作。如下圖:
3. 獎賞函數
Reward Function決定了我們想要引導錦囊agent去優化的方向,也即是優化目標。當我們設定了不同的目標時,reward應該做出相應的調整: 單純最大化錦囊的CTR時,可以有類似下面的設定(其中,x表示當前query下點擊的錦囊的頁碼)
再結合引導成交等需求,可以有類似如下的設定:(其中,y, z, I代表翻頁頁數,點擊次數,是否購買)
3.3 學習演算法
1. A3C
錦囊候選類型,一開始沒有引入屬性pid類型,錦囊類型只有有限的幾種,如相關搜索、選購熱點、細選等,因此我們採取了A3C演算法,直接把類型當做動作,用critic網路來學習值函數,用Actor網路來學習policy,actor網路最後輸出的值經過softmax可以認為是採取各個動作的概率值,Actor網路形式如下所示:
2. DQN
當我們把屬性pid引入到錦囊中後,候選的錦囊類型(即動作)一下子增加到兩萬多種。如果我們還是採用之前的A3C方法,網路的輸出需要有兩萬多個節點,顯然是不適用的。因此,我們採取了用DQN+類型ID Embedding的形式來進行學習。也就是說,對每一個候選動作a,先進行embedding,再和s過來的節點進行concat,之後學習的就是他們的Q值,然後再每一個具體query下進行選擇的時候,計算每一個可選的ID的Q value,從而進行決策,這裡只用到了一個網路。如下圖:
四、演算法改進
4.1 Stratified Sampling Replay
由於我們獲取的是實時數據,這就可能導致不同的時間段獲取到的用戶分布差異較大,從而實時學習的模型對受到數據的影響,導致學習方差加大。
為了減弱這一影響,可以利用Stratified Sampling技術。比如,可以對用戶的年齡分布,性別分布,購買力分布進行統計,獲取一個較為穩定的比例。之後,在一般的random replay的基礎上做一些改變,每次的採樣遵循此比例進行分層的採樣方法,使得樣本更加的穩定,學習的方差也會更小。
4.2 基準桶實時CTR修正
除了用戶群體分布變化之外,每一天不同時間段的用戶總數,用戶使用習慣也會發生變化,從而導致了非模型引發的reward變化(模型沒有變化,整體CTR發生提高,reward提高,而誤認為是模型的正向作用),這就使得學習的評價指標不穩定,可能產生波動的情況。
因此,我們加上了一個比較基準,利用kmonitor實時的統計基準桶裡面的用戶行為,CTR等信息,利用此來修正reward,比如可以設置為: reward=原始reward-基準桶reward(強迫模型朝著比基準桶更好的方向發展,而不是受一天中不同時間段的影響)。
4.3 引入Thompson Sampling
在採樣方法上,在傳統強化學習的方法之外,也嘗試了Thompson Sampling的方法,該方法主要是去維持每一個類型beta分布來進行學習。
5. 效果與展望
5.1 效果
在採取了上述方法後,與基準桶相比,線上的CTR和使用UV得到了一定程度的提升(10個點左右)。
5.2 思考
這是一次RL在此類任務上的探索,應該說至少證明了RL是可以勝任這類問題的,不過由於目前每一個query下候選的錦囊類型過少,直接採用一般的監督學習方法,CTR預估等應該就可以達到比較好的結果。
另外,綜合考慮,直接決定與用戶交互的詞語,內容,可能是更好的選擇,更加能給用戶提供幫助。後續錦囊這個產品可以考慮引入更多的交互,這一塊用DL+RL也能很自然的得到一定的結果。
end
TAG:雲棲社區 |