我是靠谱客的博主 眯眯眼书本,最近开发中收集的这篇文章主要介绍汤普森采样(Thompson sampling),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、Beta分布

  • 定义域:[0,1]
  • 参数: α , β alpha,beta α,β,均为正值参数,又称为形状参数

1.1 Beta分布的概率密度函数

f ( x , α , β ) = c o n s t a n t ⋅ x α − 1 ⋅ ( 1 − x ) β − 1 = x α − 1 ( 1 − x ) β − 1 ∫ 0 1 u α − 1 ( 1 − u ) β − 1   d u = Γ ( α + β ) Γ ( α ) Γ ( β ) x α − 1 ( 1 − x ) β − 1 = 1 B ( α , β ) x α − 1 ( 1 − x ) β − 1 f(x,alpha,beta) =constant cdot x^{alpha-1} cdot (1-x)^{beta-1} \[2ex] qquad =frac{x^{alpha-1}(1-x)^{beta-1}}{int_0^1 {u^{alpha-1}(1-u)^{beta-1}} ,{rm d}u}\[2ex] qquad =frac{Gamma(alpha+beta)}{Gamma(alpha)Gamma(beta)}x^{alpha-1}(1-x)^{beta-1}\[2ex] qquad = frac{1}{B(alpha,beta)}x^{alpha-1}(1-x)^{beta-1} f(x,α,β)=constantxα1(1x)β1=01uα1(1u)β1duxα1(1x)β1=Γ(α)Γ(β)Γ(α+β)xα1(1x)β1=B(α,β)1xα1(1x)β1

quad 其中, Γ Gamma Γ 为 Gamma 函数,是阶乘的扩展:

  • 当n为正整数时,n的阶乘定义如下: n ! = n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ … ∗ 2 ∗ 1 n! = n * (n - 1) * (n - 2) * … * 2 * 1 n!=n(n1)(n2)21
  • 当n不是整数时,n!为:在这里插入图片描述
    Beta分布的均值是:
    α α + β frac{alpha}{alpha+beta} α+βα
    Beta分布的方差是:
    α β ( α + β ) 2 ( α + β + 1 ) frac{alphabeta}{(alpha+beta)^2(alpha+beta+1)} (α+β)2(α+β+1)αβ
    Beta分布的图形:
    在这里插入图片描述
    quad 从Beta分布的概率密度函数的图形我们可以看出,Beta分布有很多种形状,但都是在0-1区间内,因此Beta分布可以描述各种0-1区间内的形状(事件)。因此,它特别适合为某件事发生或者成功的概率建模。同时,当α=1,β=1的时候,它就是一个均匀分布。
    quad 贝塔分布主要有 α和 β两个参数,这两个参数决定了分布的形状,从上图及其均值和方差的公式可以看出:
    1)α/(α+β)也就是均值,其越大,概率密度分布的中心位置越靠近1,依据此概率分布产生的随机数也多说都靠近1,反之则都靠近0。
    2)α+β越大,则分布越窄,也就是集中度越高,这样产生的随机数更接近中心位置,从方差公式上也能看出来。

1.2 棒球运动员击球率的例子

quad 为了衡量一个棒球运动员的击球率。
quad 首先在运动员打球之前,我们就先对他的击球率有一个预测值(先验概率)。假设我们预计运动员整个赛季的击球率平均值大概是0.27左右,范围大概是在0.21到0.35之间(根据历史运动员的击球率)。那么用贝塔分布来表示,我们可以取参数 α=81,β=219,因为α/(α+β)=0.27,图形分布也主要集中在0.21~0.35之间,非常符合经验值,也就是我们在不知道这个运动员真正击球水平的情况下,我们先给一个平均的击球率的分布。
在这里插入图片描述
quad 假设运动员一次击中,那么现在他本赛季的记录是“1次打中;1次打击”。那么我们更新我们的概率分布,让概率曲线做一些移动来反应我们的新信息。
B e t a ( α 0 + h i t s , β 0 + m i s s e s ) Beta(alpha_0+hits,beta_0+misses) Beta(α0+hits,β0+misses)
quad 其中, α 0 = 81 、 β 0 = 219 alpha_0=81、beta_0=219 α0=81β0=219是初始参数。hits表示击中的次数,misses表示未击中的次数。假设赛季过半时,运动员一共打了300次,其中击中100次。那么新的贝塔分布是Beta(81+100,219+200),如下图:
在这里插入图片描述
quad 可以看出,曲线更窄而且往右移动了(击球率更高),由此我们对于运动员的击球率有了更好的了解。新的贝塔分布的期望值为0.303,比直接计算100/(100+200)=0.333要低,是比赛季开始时的预计0.27要高,所以贝塔分布能够抛出掉一些偶然因素,比直接计算击球率更能客观反映球员的击球水平。

总结:

quad 这个公式就相当于给运动员的击中次数添加了“初始值”,相当于在赛季开始前,运动员已经有81次击中219次不中的记录。 因此,在我们事先不知道概率是什么但又有一些合理的猜测时,贝塔分布能够很好地表示为一个概率的分布

参考:
推荐算法之Thompson(汤普森)采样 - 光彩照人 - 博客园
贝塔分布(Beta Distribution)简介及其应用 | 数据学习者官方网站(Datalearner)

2、Multi-Armed Bandit

2.1 简介

在这里插入图片描述
quad 我们有 k 个Bandit,每个Bandit都有获得收益的概率,但是未知,所以我们只能通过实验来计算这个概率。根据大数定律,随着我们在一个 Bandit 上试验次数越来越多,频率=概率,我们就可以得到该 Bandit 收益率 的“真实值”。
quad 但是每次实验需要投1币,在每一个Bandit上做大量试验代价太大。
quad 所以我们需要在 向当前已知的收益率最大的Bandit投币(利用) 和 向没怎么探索的Bandit投币(探索) 两个选择之间进行权衡。

2.2 问题定义

quad Bernoulli multi-armed bandit 问题可以用一个 二元组 < A , R > <mathcal{A},mathcal{R}> <A,R>来描述:

  • 我们有 K K K 个Bandits,获得收益的概率为 { θ 1 , . . . , θ K } {theta_1,...,theta_K} {θ1,...,θK}
  • 在每一个时间步 t t t,我们都会在一台 Bandit 上采取一个 action a a a,并且获得 reward r r r
  • A mathcal{A} A 是动作集合,每一个动作表示与一台Bandit进行交互。动作 a a a 的价值是 expected reward Q ( a ) = E [ r ∣ a ] = θ Q(a)=mathbb{E}[r|a]=theta Q(a)=E[ra]=θ。如果在时间步 t t t 做出的 action a t a_t at 是与 Bandit i i i 进行交互,那么 Q ( a t ) = θ i Q(a_t) = theta_i Q(at)=θi
  • R mathcal{R} R 是 reward function。在 Bernoulli bandit 例子中,我们得到的 reward 是具有随机性的。在一个时间步 t t t r t = R ( a t ) r_t=mathcal{R}(a_t) rt=R(at) 会以 Q ( a t ) Q(a_t) Q(at) 的概率为1,其他情况下为0。

在这里插入图片描述
在这里插入图片描述

2.3 Bandit Strategies

quad 基于如何进行探索,有多种方式解决 the multi-armed bandit:

  • No exploration:最差的方式,例如: G r e e d y A l g o r i t h m Greedy Algorithm GreedyAlgorithm
  • Exploration at random: ϵ − G r e e d y A l g o r i t h m epsilon-Greedy Algorithm ϵGreedyAlgorithm
  • Exploration smartly with preference to uncertainty:UCB、Thompson Sampling
    在这里插入图片描述

3 ε-Greedy Algorithm

在这里插入图片描述

4 Upper Confidence Bounds

quad 完全随机的探索 可能会选择到已经被证实了的收益率低的 Bandit,所以这种方法是低效的。有两种方法解决:1)降低 ϵ epsilon ϵ 的值;2)探索具有高价值 潜力 的action(直观上理解就是没咋探索过的,而且根据历史经验收益率不是很低的)。
quad 如何衡量这种 高价值潜力?
quad The Upper Confidence Bounds (UCB) algorithm 计算了 reward value 的置信上界 U ^ t ( a ) hat{U}_t(a) U^t(a):
在这里插入图片描述

4.1 Hoeffding’s Inequality

在这里插入图片描述

4.2 UCB1

quad 自适应的 p p p。设置 p = t − 4 p=t^{-4} p=t4
在这里插入图片描述

4.3 Bayesian UCB

quad 在 UCB 和 UCB1 算法中,我们没有对奖励的先验分布进行假设,所以根据 Hoeffding 不等式得到的各个 Bandit 的 reward 的分布 是很相似的。
quad 如果我们能提前知道 先验分布 ,就能更好地估计 reward 的 上界。

quad 我们希望每个 Bandit 的 平均reward Q ( a ) Q(a) Q(a) 都服从下图的高斯分布 p ( Q ) p(Q) p(Q),我们希望 Q ( a ) < = Q ^ t ( a ) + U t ( a ) Q(a) <= hat{Q}_t(a) + U_t(a) Q(a)<=Q^t(a)+Ut(a) 以 95% 的概率成立(即,置信率95%),所以置信区间需要为 [ μ − 2 δ , μ + 2 δ ] [mu-2delta,mu+2delta] [μ2δ,μ+2δ]。所以需要 Q ^ t ( a ) + U t ( a ) = μ + 2 δ hat{Q}_t(a) + U_t(a) = mu + 2 delta Q^t(a)+Ut(a)=μ+2δ,即 U t ( a ) = 2 δ U_t(a)=2delta Ut(a)=2δ为2倍的标准差,其中 μ = Q ^ t ( a ) mu=hat{Q}_t(a) μ=Q^t(a)为样本均值。
在这里插入图片描述
在这里插入图片描述

5、Thompson Sampling

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
举个视觉上很直观的例子:

在这里插入图片描述
quad 上图 action 1,2,3的分布就分别为Beta(601,401),Beta(401,601),Beta(2,3). 所以,这里我们也能定量化地看出action 3之前试验的次数比较少,而action 1,2之前试验的次数已经很多了。
在这里插入图片描述
在这里插入图片描述
quad 在Beta Bernoulli Bandit情形下的,贪心算法,和TS算法的伪代码如上图所示。
quad 主要的区别在于两个算法中贪心算法每个time step第一步是estimate model,而TS算法中第一步则是sample model。也就是说, θ ^ k hat{theta}_k θ^k决定的方法不同,一个是直接用sample average,即从sample中估计出来的成功率,因此根据历史经验收益率大的Bandit相应的 θ ^ k hat{theta}_k θ^k大,就会被选中。而与此不同的就是TS算法是sample一个model,即 θ ^ k hat{theta}_k θ^k是直接从后验的 B e t a ( α k , β k ) Beta(alpha_k,beta_k) Beta(αk,βk)分布中采样出来,对于没咋被探索的Bandit,例如 action 3 ,它的 θ ^ a c t i o n   3 hat{theta}_{action 3} θ^action 3是从红色曲线分布中采样出来的,相当于一个均匀分布,所以 θ ^ a c t i o n   3 hat{theta}_{action 3} θ^action 3 仍有可能比较大,所以被探索的概率也比较高。

最后

以上就是眯眯眼书本为你收集整理的汤普森采样(Thompson sampling)的全部内容,希望文章能够帮你解决汤普森采样(Thompson sampling)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部