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”。