MAB問題
Wiki定義
? ?-? A Problem in which a fixed limited set of resources must be allocated between competing (alternative) choices in a way that maximizes their expected gain, when each choice's properties are only partially known at the time of allocation, and may become better understood as time passes or by allocating resources to the choice.[1]
? ? - 經典的強化學習算法(Reinforcement Learning(RL)),用于處理Exploration-Exploitation(EE) trade-off dilemma。
? ? - 名字來源于casino中賭博機slot machine(or one armed bandit)
? ??一個賭徒,要去搖老虎機,走進賭場一看,一排老虎機,外表一模一樣,但是每個老虎機吐錢的概率可不一樣,他不知道每個老虎機吐錢的概率分布是什么,那么每次該選擇哪個老虎機可以做到最大化收益呢?這就是多臂賭博機問題。[2]
? ? ?- MAB問題也在stochastic?scheduling領域范疇中。Stochastic scheduling problems can be classified into three broad types: problems concerning the scheduling of a batch of stochastic jobs,?multi-armed bandit?problems, and problems concerning the scheduling of queueing systems.
基本問題
? ??1. 有K臺machine,每次選取其中一臺pull?the?lever,該machine提供一個random的reward,每一臺machine的reward服從特定的概率分布。
? ??2. 一個gambler有N次lever?pulls的機會,他的目標是使得回報reward最大化,那么他要確定這N次pull?的arm的順序。顯然,作為一個聰明的賭徒,他會記錄下每一次得到的reward,試圖找出能給出最大reward的那臺machine,盡量多次數的去pull這臺machine?的arm。
? ??3.?對于每一輪選擇,主要面對的問題是Exploitation-Exploration.
????? ? Exploitation: to pull the arm?with Highest expected payoff? ?OR?
????????Exploration: to play other machines to get more information about the expected payoffs of them.
? ??4.?得到的收益稱為reward,一般假設為伯努利分布,即0或1。得到的收益與真實的最大收益(上帝視角,假設一開始就知道哪個payoff最大,那我肯定pull那個arm)之間的差值稱為regret。
應用場景
Online service that benefits from adapting the service to the? individual sequence of requests,? Ad placement, website optimization, and packeting route.
1. 推薦系統領域,領域有兩個經典問題:EE問題和用戶冷啟動問題。[2]
? ? EE問題:上面提到過的exploit-explore問題;比如已知某用戶對A產品感興趣,那么在大多數時間要給他推送A的鏈接才能賺錢,這就是exploit;但是為了賺更多的錢,就需要知道他還對哪些產品感興趣,那么在有些時候就可以嘗試一下給他推送B,C,D,E等選擇看用戶的反應,這就是explore。
? ? 用戶冷啟動問題:面對新用戶時如何用盡量少的次數,猜出用戶的大致興趣。[2]
2.?臨床測試場景clinical?trials
? ? 假設有一批用于治療某種疾病的新藥需要進行測試,目標肯定是在盡量少的測試體上進行嘗試,找出效果最好的那一種然后應用于其他病患。由于測試需要等待并觀察,盡早找出效果最好的藥物類型也有利于救助更多的病患;同時,該方法也有助于減少承受不良藥物副作用的測試體數量/增加病患存活率。[3]
Algorithms for MAB
問題類型
在討論算法之前,首先要明確幾種bandit?model。根據對于reward過程的不同假設,主要可以分為三種類型:Stochastic?,Adversarial??and?Markovian。幾種經典的策略與之對應,?UCB?algorithm?for?the stochastic?case,? Exp3?randomized?algorithm?for?theadversarial?case,?so-called? Gittins?indices?for?the?Markovian?case.[4]
本文目前主要討論Stochastic?bandits?problem(另外兩種待以后補充),以下為[4]對其定義:
常用算法
針對MAB問題常用的基本算法有:-greedy, Boltzmann exploration(Softmax), pursuit, reinforcement comparisonm, UCB1, UCB1-Tuned, Thompson Sampling(TS) [3]
符號說明:
arm?? 共K個arm
round??共N次機會
:?The empirical mean of arm i after t rounds
: The probability of picking arm i at round t
-greedy
核心思路:以概率在所有K個arm中隨機選取一個(Explore); 以(1-
)概率選取具有highest empirical?mean的arm。
實際操作:每一輪在[0,1]生成一個隨機數,如果小于\epsilon,則在K個arm中隨機選一個;否則選平均收益最大的那個(如果多個則隨機選一個)。
-?為了不記錄n歌reward,更高效的辦法是對均值做增量式計算,每一輪只記錄兩個變量:已經嘗試的次數和最近的平均reward。
對于constant \epsilon,regret的bound是linear的。
如果\epsilon隨著時間減小,regret的bound是poly-logarithmic的。
若搖臂獎賞的不確定性較大,比如概率分布較寬,則需要更多的explore,對應較大的\epsilon。若搖臂獎賞的不確定性較小,比如概率分布集中,則少量的嘗試就能很好的近似真實獎賞,只需要較小的\epsilon。
通常讓epsilon為一個較小的數如0.1或0.01。?不過,如果嘗試次數很大,在一段時間后各個arm的獎賞都能很好近似出來,不需要再explore,這種情況下可以讓epsilon隨時間逐漸減小,例如
Boltzmann Exploration(Softmax)
核心思路:選取某個arm的概率與它的平均reward有關。Softmax方法基于Boltzmann分布選取arm。
隨機系數,稱為“溫度”。?tau越小則平均獎賞高的搖臂被選取的概況更高;趨于0的時候-〉僅利用exploit;?趨于無窮大的時候-〉僅探索explore
Pursuit Algorithms
核心思路:每次依據平均實驗回報對選取各個arm的概率獨立進行更新。
Reinforcement Comparison
與Pursuit?Algorithm類似,RC方法的行為也不是直接由empirical?means計算而來。該方法同時還保留一個平均預期回報(average?expected?reward),將平均回報和預期回報作比較。
- 如果?empirical?mean?〉average?expected?reward,選該arm的概率上升。
- 如果empirical?mean〈 average?expected?reward,選該arm的概率下降。
- 對于arm i 存在偏好(preference),?每一輪preference會根據結果進行更新:
每一輪各arm的概率計算:
Upper Confidence Bounds(UCB)
核心思路:利用目前的收益均值+置信區間來對arm進行選擇,play的次數越多,第二項置信區間就越小,目前的收益均值就越可信。最后穩定選擇的就是收益大,并且置信區間小的那個arm。
該系列中最簡單的算法UCB1:
? ? 含有參數:(The empirical mean of arm?i?after?t?rounds
? ?????????????????????the number of times that arm i has been played after t rounds
? ? 1、初始化:?所有arm都被play一次。
? ? 2、選擇arm?j(t):
? ? 3、觀察選擇結果,更新t和ni。其中加號前面是這個臂到目前的收益均值,后面的叫做bonus,本質上是均值的標準差
這個公式反映一個特點:均值越大,標準差越小,被選中的概率會越來越大。被選次數較少的臂雖然可能均值不大,但根號那一項會比較大,也會得到試驗機會。
? ? UCB1?的bound:
UCB1-Tuned
將每個arm的variance引入了考慮
Thompson Sampling(TS)
核心思想:[2]
? ? 1. 假設每個arm產生收益的概率p符合?Beta(wins,lose)分布,兩個參數wins和lose。
? ? 2.?每個arm?維護(maintain)一對beta分布的參數。每次實驗選一個arm搖一下,有收益該arm的wins+=1 ,?否則?lose+=1
? ? 3.?每次選arm的方式:用每個arm的beta分布產生一個隨機數b,選擇所有arm產生的隨機書最大的那個arm去搖。
import numpy as np
import? pymc
#wins 和 trials 是一個N維向量,N是賭博機的臂的個數
choice = np.argmax(pymc.rbeta(1 + wins, 1 + trials - wins))
wins[choice] += 1
trials += 1
Beta分布:[5]
beta(a,b)有a和b兩個參數,兩個參數決定了分布形狀。
a+b的值越大,分布曲線就越集中,反之則越疏遠(兩邊大中間?。?/p>
當a/(a+b)的值越大,分布集中位置的中心越靠近1,反之越靠近0,這樣產生的隨機數位置也相應更容易靠近1或0
因此,Beta分布總體有三種情況,曲線很窄靠近1、曲線很窄靠近0、曲線很寬
由此,若把Beta分布的參數a看做推薦后得到用戶點擊的次數,把b看做未得到用戶點擊的次數,如下:
取出每一個候選對應的a和b
為每個候選用a和b作為參數,用Beta分布產生一個隨機數
按照隨機數排序,輸出最大值對應的候選
觀察用戶反饋,如果用戶點擊則將對應候選的a增加1,反之b增加1
因此在推薦系統中,為每個用戶都保存一套參數,每個用戶對應每個物品都保存一份a和b
- 為什么有效?
如果候選被選中次數很多,那么a+b分布變窄,換句話說這個候選的收益已經確定,用它產生隨機數,基本就在分布的中心位置附近,接近這個分布的平均收益
如果一個候選不但a+b很大,且a/(a+b)也很大,那么就是一個好的候選項,平均收益很好,每次選擇占據優勢,就進入利用階段,反之則幾乎再無出頭之日
如果一個候選項的a+b很小,分布很寬,就是沒有給充分的探索次數,此時不能確定好壞,那么這個較寬的分布有可能得到一個較大的隨機數,在排序時被優先輸出,給予次數做探索
關于Regret,Expected regret,Pseudo-regret:
[Notes]Regret Analysis of Stochastic and Nonsto... - 簡書
拓展加深-?值得一讀的相關資源:
騰訊QQ大數據:神盾推薦——MAB算法應用總結 | 互聯網數據資訊中心-199IT | 中文互聯網數據研究資訊中心-199IT
小白都能看懂的softmax詳解 - bitcarmanlee的博客 - CSDN博客
bandit算法原理及Python實現 - 新顏_USTC - CSDN博客
Contextual Bandit算法在推薦系統中的實現及應用 - 知乎(比較詳細介紹了LinUCB的思想和實現)
在線學習(MAB)與強化學習(RL)[1]:引言 - 知乎
????這個系列太值得讀了!從整體框架到細節,還有各種資源!?比之前看到的都好多了!? ??
Reference
[1] https://en.wikipedia.org/wiki/Multi-armed_bandit
[2] Bandit算法與推薦系統:?https://blog.csdn.net/heyc861221/article/details/80129310
[3]?Kuleshov,Precup. Algorithms for the multi-armed bandit problem. Journal of Machine Learning Research.
[4]?Regret Analysis of Stochastic and Nonstochastic Multi-armed Bandit
[5]?https://blog.csdn.net/lyx_yuxiong/article/details/81237416