Bandit:一种简单而强大的在线学习算法

来源:互联网 发布:尚学堂大数据视频下载 编辑:程序博客网 时间:2024/05/16 06:52

假设我有5枚硬币,都是正反面不均匀的。我们玩一个游戏,每次你可以选择其中一枚硬币掷出,如果掷出正面,你将得到一百块奖励。掷硬币的次数有限(比如10000次),显然,如果要拿到最多的利益,你要做的就是尽快找出“正面概率最大”的硬币,然后就拿它赚钱了。

这个问题看起来很数学化,其实它在我们的生活中经常遇见。比如我们现在有很多在线场景,遇到一个相同的问题:一个平台这么多信息,该展示什么给用户,才能有最好的收益(比如点击率)?

Google作为最大的搜索广告公司,在用户搜索时该展示什么广告;Facebook作为社交平台,当用户好友过载的时候,该怎么组织好友的说说(把你最感兴趣的放前面);Taobao有海量的商品池子,该如何捞取用户最容易剁手的商品展示出来?

一切通过数据收集而得到的概率预估任务,都能通过Bandit系列算法来进行在线优化。这里的“在线”,指的不是互联网意义上的线上,而是只算法模型参数根据观察数据不断演变。

Bandit算法的创造其实来源于人类的经验,这个算法框架包含两个部分,一是探索未知(explore),二是利用已知(exploit)。一部分精力做探索(不考虑曾经的经验),一部分精力做采集(利用已知的最好策略)。

How Bandit

首先来看看Bandit的概率原理,我们希望知道每一个硬币“正面”的概率 pi 。事实上我们能观察到的,只是这个硬币正面的频率

μi=

怎么利用起观察到的频率,来最好地预估真实的概率呢?下面介绍4种策略,分别是随机(Random)、简单观察(Naive)、ε-贪心法(ε-Greedy)、置信上限法(UCB)。

Random

每次随机选择一枚硬币进行投掷。如果不能胜过这个策略,就不必玩了。

Naive

先给每个硬币一定次数的尝试,比如每个硬币掷10次,根据每个硬币正面朝上的次数,选择正面频率最高的那个硬币,作为最佳策略。这也是大多人能想到的方法。

但是这个策略有几个明显问题:

  1. 10次尝试真的靠谱吗?最差的硬币也有可能在这10次内有高于最好硬币的正面次数。
  2. 假设你选到的这个硬币在投掷次数多了后发生了问题(比如掉屑),改变了其属性,导致其正面的概率大大降低,如果你还死守着它,那不是吃大亏了?(这是对变量的考虑)
  3. 就算你给一个硬币10次机会,如果硬币真的很多,比如K>100,给每个硬币10次机会是不是也太浪费了呢?等所有硬币都尝试过,再回来“赚钱”,花儿都谢了!

ε-Greedy

有了前两个垫背,可以开始让Bandit登场了。ε-Greedy就是一种很机智的Bandit算法:它让每次机会以ε的概率去“探索”,1-ε的概率来“开发”。也即,如果一次机会落入ε中,则随机选择一个硬币来投掷,否则就选择先前探索到正面概率最大的硬币。这个策略有两个好处:

  1. 它能够应对变化,如果硬币“变质”了,它也能及时改变策略。
  2. ε-Greedy机制让玩的过程更有趣,有时“探索”,有时“赚钱”。

在此基础上,又能引申出很多值得研究的问题,比如ε应该如何设定呢?它应不应该随着时间而变?因为随着探索次数的增多,好的选择自然浮现得比较明显了。ε大则使得模型有更大的灵活性(能更快的探索到未知,适应变化),ε小则会有更好的稳定性(有更多机会去“开发”)。

UCB

在统计学中,对于一个未知量的估计,总能找到一种量化其置信度的方法。最普遍的分布正态分布(或曰高斯分布)N(μ,δ),其中的E就是估计量的期望,而δ则表示其不确定性(δ越大则表示越不可信)。比如你掷一个标准的6面色子,它的平均值是3.5,而如果你只掷一次,比如说到2,那你对平均值的估计只能是2,但是这个置信度应该很低,我们可以知道,这个色子的预估平均值是2,而以95%的置信区间在[1.4,5.2]。

UCB(Upper Confidence Bound - 置信上限)就是以均值的置信上限为来代表它的预估值:

μi^=μi^+21ni

上面是一个例子,其中μi是对期望的预估,ni是尝试次数,可以看到对i的尝试越多,其预估值与置信上限的差值就越小。也就是越有置信度。

这个策略的好处是,能让没有机会尝试的硬币得到更多尝试的机会,是骡子是马拉出来溜溜!将整个探索+开发的过程融合到一个公式里面,很完美!

模拟结果

将这几个策略做一下模拟,取K=5个硬币,每次10000轮投掷机会,跑100次取平均。得到结果如下:

  1. 随机:每次随机取一枚硬币投掷
  2. 简单观察:先给每个硬币100次机会,然后以正面概率最大的硬币为策略。
  3. ε-Greedy:取ϵ=0.01进行探索,1ε进行开发。
  4. UCB1:以(11/t)的上限进行探索
  5. UCB-95%:取95%的置信区间进行探索

bandit_simulation

上图以累积后悔(Cumulative Expected Regret)来作为评估指标,横坐标是投掷次序,纵坐标是累积后悔(取对数)。后悔最小的算法最好。Regret定义如下:

RT=_i=1T(w_optwB(i))

可以看出,随机的效果最烂,Naive算法在前K*100轮跟随机效果一样烂(因为在收集数据,没有开始利用)。ε-Greedy的收敛效果好,但因为有那ε的浪费,到最后还是跟Naive一样浪费了很多机会。UCB的表现最好,收敛快、花费小!

这里只是模拟了固定概率下这些算法的表现,如果预估量(正面概率)是一个会变的量,这些算法的表现会重新洗牌吗?后续可以探索下!

Bandit application

说了这么多掷硬币,这个算法在真实世界有什么大展身手的地方呢?小列一些:

  • 在线排序(Online Ranking)
    • CTR预估
  • Stock Option
    • 选择最好的股票进行投资
  • A/B test
    • 快速选择好的AB版本,快速淘汰差的

附1:参考链接

  • Bandits for Recommendation Systems
  • Bayesian Methods for Hackers - Chapter6

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在小区车被砸了怎么办 甲米天气下雨怎么办 电影院不开空调怎么办 电脑总弹广告怎么办 下雨天了怎么办神接 天下雨了怎么办套路 下雨天了怎么办 新套路 万达兑换券过期怎么办 直播间没一个人怎么办 快手直播人少怎么办 快手直播人气少怎么办 被火山主播踢出房间怎么办 遇到同事的排挤怎么办 交警处理事故不公平怎么办 派出所处理事情不公平怎么办 淘宝号不健康了怎么办 作业盒子忘记密码怎么办 一起作业忘记密码怎么办 手机不能录视频怎么办 网络机顶盒连不上wifi怎么办 obs游戏源黑屏怎么办 微信视频打不开怎么办? xp关闭hdmi声音怎么办 大锅天线无信号怎么办 人喝酒喝醉了怎么办 电信网络电视不清楚怎么办 饭店老板拖欠员工工资怎么办 出国旅游不会英语怎么办 香港转机21小时怎么办 动车坐过站了怎么办 在美国开车超速怎么办? 办出国旅游护照怎么办 中关村三小午饭怎么办 电视不能看直播怎么办 电视系统无信号怎么办 电视视频无信号怎么办 大锅盖没有信号怎么办 锅盖天线没信号怎么办 锅盖天线信号低怎么办 小米盒子没信号怎么办 有线电视没台了怎么办