單步強化學習在糖豆推薦系統的應用

1.強化學習基礎

1.1 強化學習概念

強化學習通常用馬爾科夫決策過程(Markov Desicision Process)來描述:機器(agent)在環境(environment)中,狀態空間為S,其中每個狀態s∈S是機器所處于的環境的描述;機器所能采取動作(Action),其空間為A;若機器采取動作a∈A作用于當前狀態s,潛在的轉移概率p會使得環境當前狀態s按某種概率轉移到另一狀態s',同時環境會根據潛在的獎賞函數(Reward)給機器反饋一個獎賞。因而,強化學習可以用四元組E=<S,A,P,R> 來表達。其圖示如下:

強化學習圖示

以下舉例說明:
不同的state采取不同的action,會有一定概率發生狀態轉移,最后得到不同的reward。


MDP

機器要做的是在環境中不斷嘗試學習到一個最優的策略π,根據該策略,能知道狀態s下需要執行的動作a=π(x)。策略優劣取決于長期執行該策略的累計獎賞,它有多種計算方法,包括T步累計獎賞、γ折扣累計獎賞等。其中γ累計折扣獎賞公式如下:

γ累計折扣獎賞

可以看到強化學習與監督學習不同的是,最終獎賞一般會體現在 多步 動作之后,從某種意義上來說,可以看作具有“延遲標記信息”的監督學習問題。而強化學習的最簡單形態,最大化單步獎賞,對應的正是多臂老虎機理論。

1.2 多臂老虎機(MAB)

一個賭徒,要去搖老虎機,走進賭場一看,一排老虎機,外表一模一樣,但是每個老虎機吐錢的概率可不一樣,他不知道每個老虎機吐錢的概率分布是什么,那么想最大化收益該怎么整?這就是多臂賭博機問題(Multi-armed bandit problem, K-armed bandit problem, MAB)。


拉加維加斯老虎機

如果賭徒知道每個搖臂的期望獎賞,那么他只需要“僅利用(exploitation-only),即只要一直按下最大獎賞的搖臂。如果僅為獲知每個搖臂的期望獎賞,則采用“僅探索(exploration-only)”,即輪流按下每個搖臂。事實上,“僅利用”和“僅探索”都難以實現累計獎賞最大化。事實上,“探索”和“利用”是矛盾的,欲使累計獎賞最大化,那就需要折中兩者。

1.3 Bandit算法

Bandit算法有非常多種,我們采用累積遺憾(regret)來評估一個算法好壞。
MAB的每個臂的收益非0即1,也就是伯努利收益。算法每次選擇后,計算和最佳的選擇差了多少,然后把差距累加起來就是總的遺憾。

累積regret

ε-Greedy

選一個(0,1)之間較小的數ε,每次決策以概率ε去勘探Exploration,1-ε的概率來開發Exploitation,基于選擇的item及回報,更新item的回報期望,不斷循環下去。

SoftMax

SoftMax利用softmax函數來確定各item的回報的期望概率排序,進而在選擇item時考慮該信息,減少exploration過程中低回報率item的選擇機會,同時收斂速度也會較ε-Greedy更快。

UCB

Upper Confidence Bound,步驟如下: 初始化:先對每一個臂都試一遍; 按照如下公式計算每個臂的分數,然后選擇分數最大的臂作為選擇:


item期望

其中,x_j是item_j的平均回報,n_j是item_j截至當前被選擇的次數,n為當前選擇所有item的次數。上式反映了,均值越大,標準差越小,被選中的概率會越來越大,起到了exploit的作用;同時哪些被選次數較少的item也會得到試驗機會,起到了explore的作用。

LinUCB

UCB沒用充分利用上下文信息Contextual,而LinUCB的基本思想是對每個item的回報估計及其置信區間同時建模,然后每次選擇回報的估計值與其標準差的和最大的那個item,因此LinUCB在推薦系統中,能夠較好地平衡顯示用戶已經喜歡的某類文章和對其他沒怎么看過的類別的文章,從而引導用戶對未知類別的探索。

Thompson sampling

假設每個item有一個產生回報的概率p,我們通過不斷試驗來估計一個置信度較高的概率p的概率分布。如何估計概率p的概率分布呢? 假設概率p的概率分布符合beta(wins, lose)分布,它有兩個參數: wins, lose, 每個item都維護一個beta分布的參數。每次試驗選中一個item,有回報則該item的wins增加1,否則lose增加1。每次選擇item的方式是:用每個item現有的beta分布產生一個隨機數b,選擇所有item產生的隨機數中最大的那個item。


Thompson sampling

以上各種算法在不同的性能:

bandit算法對比

2. 多臂老虎機的推薦應用

2.1 冷啟動

計算機廣告和推薦系統中,有很多問題可以抽象為E&E問題:

  • user冷啟動:假設一個用戶對不同類別的內容感興趣程度不同,那么我們的推薦系統初次見到這個用戶時,怎么快速地知道他對每類內容的感興趣程度?
  • item冷啟動:假設資源池有若干新item,怎么知道該給每個用戶展示哪個,從而獲得最大的點擊,同時還能保證每個item得到一定的曝光?

這些都是糖豆在實際線上業務遇到的問題,我們采用 Thompson sampling算法來解決推薦過程遇到的E&E問題。

public class BandItTask {
    public void editorLiteVideo(){
            // 獲得beta 分布
            Random r = new Random();
            Map<String, Double> map = new TreeMap<String, Double>();
            for (Iterator<String> iterator = videos.keySet().iterator(); iterator.hasNext();) {
                String vid = iterator.next();
                Map<String,String> mab = null;
                try{
                    mab = predis.hgetAll("mab_"+vid);
                }catch(Exception e){
                    mab = new HashMap<>();
                    logger.error("",e);
                }
                double win=1.00, lose = 1.00;
                if (null == mab || mab.isEmpty()){// 如果還沒有lose,win
                    if (null == items || !items.contains(vid)){ //并且沒有給過初始化的sample值,給個初始化值
                        win = Convert.toDouble(mab.get("win"),(double)r.nextInt(100));
                        lose = Convert.toDouble(mab.get("lose"),(double)r.nextInt(100));
                    }
                }else{
                    win = Convert.toDouble(mab.get("win"),win);
                    lose = Convert.toDouble(mab.get("lose"),lose);
                }
                BetaDistribution beta = new BetaDistribution(win, lose);
                double p = beta.sample();
                map.put(vid, p);
                logger.debug("editorLiteVideo - for sample, vid :"+vid+", mab :"+mab+", win :"+win+", lose :"+lose+", p :"+p);
            }
    
    Logger logger = Logger.getLogger(BandItTask.class);
}

2.2 效果評估

MAB的應用在糖豆不同的推薦數據集和不同用戶群體上多次AB測試結果顯示,相較僅探索、加權平均分配、階梯分配等方法,MAB算法的CTR提升了20%~50%。尤其是item和user都是冷啟動的場景,能夠帶來非常顯著的提升。

3. 不足與改進

不足:

  • 目前我們實現的MAB是batch形式,會帶來不必要的累積regret。
  • 另外bandit實驗數據未能和內容分類結合,形成推薦知識累積閉環。

改進:

  • 研究MAB的收斂界,增量更新分布,減少regret
  • 研究對比其他contextual bandit

參考文獻

推薦系統的EE問題及Bandit算法
Bandit算法與推薦系統
專治選擇困難癥——bandit算法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容