1. 程式人生 > >【雙11背後的技術】基於深度強化學習與自適應線上學習的搜尋和推薦演算法研究

【雙11背後的技術】基於深度強化學習與自適應線上學習的搜尋和推薦演算法研究

1. 搜尋演算法研究與實踐

1.1 背景

淘寶的搜尋引擎涉及對上億商品的毫秒級處理響應,而淘寶的使用者不僅數量巨大,其行為特點以及對商品的偏好也具有豐富性和多樣性。因此,要讓搜尋引擎對不同特點的使用者作出針對性的排序,並以此帶動搜尋引導的成交提升,是一個極具挑戰性的問題。傳統的Learning to Rank(LTR)方法主要是在商品維度進行學習,根據商品的點選、成交資料構造學習樣本,迴歸出排序權重。LTR學習的是當前線上已經展示出來商品排序的現象,對已出現的結果集合最好的排序效果,受到了本身排序策略的影響,我們有大量的樣本是不可見的,所以LTR模型從某種意義上說是解釋了過去現象,並不一定真正全域性最優的。針對這個問題,有兩類的方法,其中一類嘗試在離線訓練中解決online和offline不一致的問題,衍生出Counterfactural Machine Learning的領域。另外一類就是線上trial-and-error進行學習,如Bandit Learning和Reinforcement Learning。

在之前我們嘗試了用多臂老虎機模型(Multi-Armed Bandit,MAB)來根據使用者反饋學習排序策略,結合exploration與exploitation,收到了較好的效果。

後來更進一步,在原來的基礎上引入狀態的概念,用馬爾可夫決策過程對商品搜尋排序問題進行建模,並嘗試用深度強化學習的方法來對搜尋引擎的排序策略進行實時調控。

實際上,如果把搜尋引擎看作智慧體(Agent)、把使用者看做環境(Environment),則商品的搜尋問題可以被視為典型的順序決策問題。Agent每一次排序策略的選擇可以看成一次試錯(Trial-and-Error),把使用者的反饋,點選成交等作為從環境獲得的獎賞。在這種反覆不斷地試錯過程中,Agent將逐步學習到最優的排序策略,最大化累計獎賞。而這種在與環境互動的過程中進行試錯的學習,正是強化學習(Reinforcement Learning,RL)的根本思想。

本文接下來的內容將對具體的方案進行詳細介紹。

1.2 問題建模

馬爾可夫決策過程(Markov Decision Process,MDP)是強化學習的最基本理論模型。一般地,MDP可以由一個四元組<S, A,R, T>表示:(1)S為狀態空間(State Space);(2)A為動作空間(Action Space);(3)為獎賞函式;(4)為環境狀態轉移函式(State Transition Function)。

我們的最終目標是用強化學習進行商品搜尋排序策略的學習,在實現的過程中,我們一步一步完成了從簡單問題到複雜問題的過渡,包括:

基於值表(Tabular)強化學習方法的商品價格檔T變換控制(離散狀態、離散動作問題);

基於值表(Tabular)強化學習方法的商品展示比例控制(離散狀態、離散動作問題);

基於強化學習值函式估計(Value Function Approximation)的商品排序策略調控(連續狀態、離散動作問題);

基於強化學習策略估計(Policy Approximation)的商品排序策略調控(連續狀態、連續動作問題)。

1.2.1 狀態定義

假設使用者在搜尋的過程中傾向於點選他感興趣的商品,並且較少點選他不感興趣的商品。基於這個假設,我們將使用者的歷史點選行為作為抽取狀態特徵的資料來源。具體地,在每一個PV請求發生時,我們把使用者在最近一段時間內點選的商品的特徵作為當前Agent感知到的狀態。當然,在不同的問題中,狀態的表示方法會有所不同。例如,在值表強化學習方法中,狀態為可列舉的離散變數;在值函式估計和策略估計方法中,狀態則表示為特徵向量。

1.2.2 獎賞函式定義

Agent給出商品排序,使用者根據排序的結果進行的瀏覽、商品點選或購買等行為都可以看成對Agent的排序策略的直接反饋。在第四章中,我們將利用獎賞塑形(Reward Shaping)方法對獎賞函式的表達進行豐富,提高不同排序策略在反饋訊號上的區分度。

1.3 演算法設計

由於篇幅有限,我們僅對強化學習在搜尋中的使用給出2個例項。

(1)Tabular方法

我們在排序中要引入價格的因素來影響最終展示的價格,若以GMV為目標,則簡單可以表示為cvr*price,同時我們又想控制價格的作用程度,所以目標稍作修改:,加入一個變數t來控制價格的影響。這個t值的範圍很有限,可以用MAB或CMAB來找到最優解。

我們用強化學習的視角來對這個問題進行抽象,把使用者前2次點選的商品價格檔位(0~7,從低到高)作為狀態。這個狀態表示的是使用者之前點選商品的價格偏好,如果兩次都點選1檔商品,說明使用者偏好低價商品,很有可能接下來使用者只對低價商品感興趣,如果這個狀態轉移分佈是穩定的(stationary),那麼一個統計模型可以就可以描述這種規律。而實際上,使用者的行為是受我們排序模型的影響的,使用者點選1檔商品也可能是因為當前的排序策略只給使用者展示了1檔商品,並不一定是使用者的本質需求。在接下來使用者的搜尋過程中,我們可以有的選擇1是隻出1檔商品讓使用者的需求快速收斂,選擇2是投放一些附近檔位的商品供使用者選擇,如果使用者選擇了其他檔位的商品,進行了狀態的轉移,就可能找到一個更好的路徑,最終的收益和我們所有的過程中的投放策略都相關。從每個時間點上看,策略可能不是最優的,但全域性上可能是最優的。

具體地,當用戶進行了搜尋後,根據使用者的狀態s,和Q表(下圖)進行一個epsilon-greedy的投放,選擇一個動作a(上文中的價格指數t),執行這個a的排序結果展示給使用者,並記錄下這次的狀態s與動作a,以及使用者對這次搜尋結果的反饋r,從使用者的點選與否的反饋,再對Q表進行更新。