概述
这篇文章主要的参考文献是:
Russo D J, Van Roy B, Kazerouni A, et al. A tutorial on thompson sampling[J]. Foundations and Trends® in Machine Learning, 2018, 11(1): 1-96.
Slivkins教科书第三章。
一、贪心算法回顾
我们首先回顾一下贪心算法的思想,并引入TS算法的基本思想。基本的思想其实在非贝叶斯的情况下已经有比较详细的讨论,见:
覃含章:在线学习(MAB)与强化学习(RL)[2]:IID Bandit的一些算法zhuanlan.zhihu.com这边我们就再重新简单总结一下。
贪心算法(greedy algorithm)的思路非常直接,就是:
- 使用过去的数据去估计(estimate)一个模型(model)
- 选择能够optimize所估计模型的动作(action)
图例的话其实就是题图的这么一个流程,再贴一遍:
那么在非贝叶斯的情形下我们已经指出过贪心算法的不足之处,也就是主动的探索(active exploration)不足。我们这边再用一个直观的例子来说明这一点。
我们考虑贝叶斯情形下的Bernoulli Bandit的一个例子。在这个例子中,一共有3个action(arm)可以选择,对应的mean reward
假设我们的belief如上图所示,对action 1和action 2可以认为我们已经有比较多的data,然后对
一种简单粗暴的解决方案就是所谓的
二、Thompson Sampling
回顾完了贪心算法,我们还是沿用上面的例子,谈一谈TS算法,以及为什么实际中它往往会比贪心算法好。具体来说,我们就考虑Beta-Bernoulli Bandit,也就是说,对于
这里只用到了最基本的概率论和统计的知识,以防大家有些失忆,我写一些关键的公式出来。假设现在我们有
除此之外,我们假设了一开始对
容易知道,根据Baye's rule,后验分布也是Beta分布。具体来说,在time step
也就是说,如果我们选择了 arm
对Beta分布不熟悉的同学,其实在贝叶斯框架下理解起来也是比较直观的。注意到Beta(1,1)分布就等于[0,1]区间上的均匀分布(uniform distribution)。如果我们把这个当成prior distribution,那么我们可以把后验分布里的参数
Algorithm 1:
- for
do
- //estimate model
- for
-
- end for
- //select and apply action:
-
- Apply
and observe
- //update distribution:
-
- end for
Algorithm 2:
- for
- //sample model
- for
- Sample
- end for
- //select and apply action:
-
- Apply
and observe
- //update distribution:
-
- end for
那么这边我们给出(见上)在Beta Bernoulli Bandit情形下的,之前贪心算法,和TS算法的伪代码,这样可以比较直接地进行比较。具体来说,主要的区别在于两个算法中贪心算法每个time step第一步是estimate model,而TS算法中第一步则是sample model。也就是说,
乍看起来复杂度其实差不多:在Beta Bernoulli Bandit的情形下TS算法的复杂度看起来其实跟贪心算法差不多。那么TS算法的优势是什么呢?个人理解,TS算法是更自然的,也是天然randomized的,我们对于
三、TS算法的一些分析,和UCB算法的联系
本篇文章的最后,我们在bandit情形下给出分析TS算法的一般思路,以及这个思路与之前分析UCB算法的联系。我们首先注意到,在贝叶斯bandit的情形下,我们一般考虑的目标是Bayesian regret,具体来说,我们定义
为我们贝叶斯情形下的regret。和非贝叶斯情况的区别,主要就在内层的期望外层又套了一个对于
注意这里,我们认为
当
至于这是为什么?注意到TS算法实质上就是从基于历史的
当然,前面也提到了,Bayesian regret这个目标可能蕴含的假设太强,那么自然也有人去考虑不在最外面加上对prior的期望的分析,不过这里为了简单起见,就不讨论这种情况了。有兴趣的同学,可以参看Slivkins教科书第三章3.7节和一些相关的references。
我们这边就继续照着Bayesian regret这个目标说。注意到有了
也就是说,我们把上式关于
也就是说其实我们的Bayesian regret有如上式这样非常简介的分解(decomposition)。这个简洁的decomposition式就是贝叶斯bandit regret的分析核心。不知道看过之前系列文章的你到这里会不会有点想法呢?嗯,我这边就直接往下讲了,这里注意我们
其实到这边难度就不太大了。为了完整性,这边还是把对
我们如果令
注意和之前一样,
我们就分别有:
也就是说我们就能有
利用系列文章[2]里对UCB算法分析的基本技巧,我们容易证明 可以取
我们这里可以稍微看到一点TS算法和UCB算法之间的联系。简单来说,UCB算法中,UCB和LCB都是显式的出现在regret的项里面,包括算法要直接用到UCB的值。而在TS算法中,算法并不需要直接地使用UCB和LCB的值,但在分析中人为地引入UCB和LCB作为Bayesian regret的decomposition,会让我们的分析事半功倍。那么这两个看起来很迥异,且一般用在两个截然不同情景的算法,其之间的这些联系,就希望大家可以再好好体会了!
本次文章就到这里结束,下次我们讲讲在一般的RL情境中TS算法的仍然有的广泛应用,敬请期待。
最后
以上就是大力野狼为你收集整理的一个算法对于某个输入的循环次数是可以事先估计出来的_在线学习(MAB)与强化学习(RL)[4]:贝叶斯Bandit算法...的全部内容,希望文章能够帮你解决一个算法对于某个输入的循环次数是可以事先估计出来的_在线学习(MAB)与强化学习(RL)[4]:贝叶斯Bandit算法...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复