关于EE的multi-arm-bandit学习记录

最近遇到了EE的相关任务,先记录一下最基础的一些概念,慢慢扩充、填坑…

文章目录

多臂老虎机 multi-arm-bandit

有k个选择(action),每个选择对应了一个{0,1}的结果,1这个结果出现的概率对应为这个选择的回报率r(这个回报率是一个总体参数,需要进行估计)。在多臂老虎机中就是要在T次游戏中不断在这k个选择中进行选择来最大化自己的回报。
=> 转换成广告投放策略 =>
一共有k个广告,每个广告有两个结果{“被点击”,“没被点击”},其中“被点击”就对应为这个广告的点击率。现在要在给T个用户的投放广告,就需要不断调整策略,以达到最终的点击率最大化。

自己的理解:需要知道如何选择推荐哪个广告,首先需要去估计所有广告的点击率。因为这个点击率是根据样本进行经验分布来直接估计的,所以需要在样本量不断增加的过程中来更新这些点击率。在下一个推荐的时候就选择点击率最高的那个广告进行推荐。

Thompson sampling

将每个action的回报率当作一个服从于beta分布的随机变量。当不断获取新的样本的时候,所估计到的回报率是在变化的(每次样本的情况会更新所有广告所服从的beta分布的参数α和β,然后计算每个beta分布的均值作为这个广告的回报率),然后再在所有的回报率中选择最大的回报率。
当初始的α=1,β=1时,T次实验之后,某一个action中共观测到m次正回报,n次负回报,此时该action对应的分布就会变成beta(1+m, 1+n)。
随着实验次数的增多,beta分布的回报率的置信区间会越来越窄。也就是说,当选择这个action,得到的回报率更可能会偏向于落入这个置信区间。
采用Thompson sample的特点:当初始实验次数比较少的时候,系统会偏向于多尝试,所以刚开始的时候regret分数可能会比较高,但是次数越来越多之后,Thompson sampling就开始收敛了,所以总的累计regret分数就会趋于不变。

Thompson sampling的变形:
1、基于先验信息,现对初始的beta分布进行一个估计,也就是现对α、β进行一个设定。因为其实对广告点击率的估计就是beta分布的均值,所以先验估计就是看α和β之间的一个比例。当然一开始α都应该从α=1开始,因为α和β取值越大,意味着计算过程中的计算量越大,所花费的时间也就越多。
2、当数据不平稳的时候。有些数据可能会呈现比较明显的季节效应,这就说明,每个action的回报率并不是一个固定的总体参数,而是一个变动的值,这个时候就可以考虑只参照比较近的一段时间的数据来进行建模。或者另外一种解决办法就是采用time decay的方式。根据时间来调整应该如何对α和β进行更新。

》》》》插入一个关于Thompson sampling的基础知识《《《《《

beta分布

beta分布是多臂老虎机理论里面比较基础的一个分布,这里先进行介绍
《关于EE的multi-arm-bandit学习记录》
期望=α/(α+β)
方差=αβ/((α+β)^2(α+β+1))
beta分布的特征就是当α和β的指越大的时候,期望的置信区间也就越小
当α=1,β=1的时候,beta(1,1)就是一个在[0,1]上的均匀分布

贪心算法 greedy Algorithm

贪心算法会偏向于不去explore,而是每次都选择当前最优的那个action。
当一些action的数据不多的时候,对于这些action的了解不多,所以对beta分布中的α和β的估计都不准确,且α和β还处于初始状态(很可能就还是1),所以认为已经又很多数据支持的一些action的回报率会更高一些,就会选择当前最优的那个action,但可能其实这些没有什么数据的action对应的期望更高,但是因为一直没有来explore所以就没有办法实现更新这些action的分布。
所以采用贪心算法很可能会错过最优解。

ε-greedy algorithm

在贪心算法的基础上加入一个均匀分布来进行exploration。但这个算法的缺点就是当数据量足够支撑所有的action的估计收敛之后,还进行这样的exploration,就是浪费资源了。

uniform exploration algorithm

这个方法就是对所有的action都先进行N次explore,然后就能够得到对每个action的回报率的估计,最后就每一次都选择其中回报率最大的那个action就好了。
这个算法相当于就是把explore和exploit分来了。先explore然后在exploit。
这也是一种贪心算法。

softmax greedy algorithm

同ε-greedy algorithm一样,也是在选择action的时候采用一定的概率来实现explore。只是在ε-greedy中,每个action被选到的概率是一样的,但是在softmax中,由于已经有一定的历史信息了,因此通过softmax函数来确定具体是哪个action被选中。

贪心算法和Thompson sampling之间的关系

贪心算法:
《关于EE的multi-arm-bandit学习记录》
Thompson sampling:
《关于EE的multi-arm-bandit学习记录》

  • 相似点:
    可以看到其实整体流程是差不多的,因此算法复杂度也都是相近的,对α、β的更新也是一样的。
  • 不同点:
    贪心算法中的explore阶段,每次选择的action的概率并没有因为之前所做的explore得到的回报来进行调整。
    因为估计θ的时候,一个是直接将该action之前数据的回报率均值当作θ的估计,但是Thompson sampling是从beta分布中随机采样来得到θ的估计,这个估计会随着数据量的增多越来越逼近于beta分布的均值,但是这个θ仍然蕴含了一些随机性,所以就有explore的存在。

UCB(upper confidence bound)算法

贪心算法都没有考虑到已经实验的轮数。但实际上,已经进行的试验次数对整体的收益也有很重要的影响。UCB就能够即综合每个action的回报率也考虑已经实验了的次数。
UCB采用统计的思想,计算已经实验过的所有数据中每个action对应的平均收益,以及他们的标准差,以此计算得到一个置信区间,然后置信界限的上界限就是选择这个action能够收获的最大的收益了。以这个置信上界作为每个action的汇报的预估值。

因为置信上界中nj和lnn的增长速率是不一样的,分母的增长速率高于分子(当这个action以正反馈实现的时候)。随着试验次数增加,置信区间会不断收紧,置信上界会越来越接近于均值,此时UCB策略就接近于真实值了。
因为均值也是根据nj/n来计算的,所以实际上决定一个action是否被选择还是取决于均值。
Thompson sampling假设了每个action的汇报服从一个二项分布,UCB并没有这样的先验假设。

bandit算法的评估

使用regret进行评估
第t轮的累计regret为:
《关于EE的multi-arm-bandit学习记录》
其中μ*是实际情况下所有action中最佳的选择,μ(as)是第s轮实际的选择(因为所有的策略就是要来选择最佳的as,但是并不是每轮都能够选到这个最佳的选择,所以最佳和实际之间是有一个差距的,因此而计算这个差距,就是regret)
所以一个策略是否好,就计算累计的regret就可以了。

点赞