mab演算法
A. 關於Multi-Armed Bandit(MAB)問題及演算法
地址: Multi-armed bandit
- 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 scheling 領域范疇中。Stochastic scheling problems can be classified into three broad types: problems concerning the scheling of a batch of stochastic jobs , multi-armed bandit problems , and problems concerning the scheling 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 indivial 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]
在討論演算法之前,首先要明確幾種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
實際操作:每一輪在[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隨時間逐漸減小,例如
隨機系數 ,稱為「溫度」。 tau越小則平均獎賞高的搖臂被選取的概況更高;趨於0的時候-〉僅利用exploit; 趨於無窮大的時候-〉僅探索explore
與Pursuit Algorithm類似,RC方法的行為也不是直接由empirical means計算而來。該方法同時還保留一個平均預期回報(average expected reward) ,將平均回報和預期回報作比較。
- 如果 empirical mean 〉average expected reward,選該arm的概率上升。
- 如果empirical mean〈 average expected reward,選該arm的概率下降。
- 對於arm i 存在偏好(preference) , 每一輪preference會根據結果進行更新:
含有參數: ( 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,本質上是均值的標准差
這個公式反映一個特點:均值越大,標准差越小,被選中的概率會越來越大。被選次數較少的臂雖然可能均值不大,但根號那一項會比較大,也會得到試驗機會。
將每個arm的variance引入了考慮
核心思想:[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去搖。
beta(a,b)有a和b兩個參數,兩個參數決定了分布形狀。
a+b的值越大,分布曲線就越集中,反之則越疏遠(兩邊大中間小)
當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很小,分布很寬,就是沒有給充分的探索次數,此時不能確定好壞,那麼這個較寬的分布有可能得到一個較大的隨機數,在排序時被優先輸出,給予次數做探索
[Notes]Regret Analysis of Stochastic and Nonsto... -
騰訊QQ大數據:神盾推薦——MAB演算法應用總結 | 互聯網數據資訊中心-199IT | 中文互聯網數據研究資訊中心-199IT
小白都能看懂的softmax詳解 - bitcarmanlee的博客 - CSDN博客
bandit演算法原理及Python實現 - 新顏_USTC - CSDN博客
Contextual Bandit演算法在推薦系統中的實現及應用 - 知乎 (比較詳細介紹了LinUCB的思想和實現)
這個系列太值得讀了!從整體框架到細節,還有各種資源! 比之前看到的都好多了!
[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
B. 【高分】無線感測器網路S-MAC協議的原理及演算法
S-MAC很簡單 再往上學就是802.15.4
我做過S-MAC方面的編程,可以說S-MAC沒有協議可說,不像802。15.4
不過S-MAC有她的特點
由於感測器網路節點能量有限,所以S-MAC協議要做到減少節點能量消耗。S-MAC主要採用以下機制:
1 周期性偵聽、睡眠的低占空比工作方式,控制節點盡量處於睡眠狀態來降低節點能量的消耗
2鄰居節點通過協商的一致性睡眠調度機制形成虛擬簇,減少節點的空閑偵聽時間
3流量自適應偵聽機制
4串音避免
5通過消息分割和突發傳遞機制來減少控制消息得開銷和消息的傳遞延遲
打字太累了,不多說了,有啥問題,發郵件吧。我還有S-MAC的代碼,15.4的代碼,EMG-SMAC代碼,要看可以發給你
C. MAC演算法的簡介
簡介
MAC演算法原理(以直聯銀聯pos和POS中心通訊為例)。
a) 將欲發送給POS中心的消息中,從消息類型(MTI)到63域之間的部分構成MAC
ELEMEMENT BLOCK (MAB)。
b) 對MAB,按每8個位元組做異或(不管信息中的字元格式),如果最後不滿8個字
節,則添加「0X00」。