目录

Definition

MAB问题的形式化描述

对于 kk 臂老虎机,动作集合为 A={1,2,,k}\mathcal{A}=\{1,2,\dots,k\},在每个时刻 tt,智能体选择一个动作 AtA_t ,表示时刻 tt 实际拉动的 arm。随后环境返回 tt 时刻的奖励 RtRR_t\in\mathbb{R}

自然地对于任意固定动作 aAa\in\mathcal A,有 Q(a)=E(RtAt=a)Q(a) = \mathbb{E}(R_t \mid A_t = a) 是对于每个arm a的真实期望奖励,因此多臂老虎机的目标即为最大化 TT 时间段内累计期望奖励 maxEπt=1TRt\max \mathbb{E}^\pi\sum_{t=1}^T R_t

估计期望奖励

Q^t(a)=Nt1(a)i=1tI(Ai=a)Ri\hat Q_t(a)=N_t^{-1}(a)\sum_{i=1}^t \mathbb{I}(A_i=a)R_i
  • Q^t(a)\hat Q_t(a):到时刻 tt 为止,我们对动作(arm)aa 的奖励均值估计。
  • Nt(a)=i=1tI(Ai=a)N_t(a)=\sum_{i=1}^t \mathbb{I}(A_i=a):到时刻 tt 为止,动作 aa 一共被选中了多少次。
  • 直观地,Q^t(a)=arm a 历史上得到的奖励总和arm a 被选中的次数\hat Q_t(a)=\frac{\text{arm } a \text{ 历史上得到的奖励总和}}{\text{arm } a \text{ 被选中的次数}}

增量更新

如果 tt 时刻选择了a

Q^t+1(a)={Nt(a)+1}1(i=1tI(Ai=a)Ri+Rt+1)=Nt(a)Nt(a)+1{Nt1(a)i=1tI(Ai=a)Ri}+Rt+1Nt(a)+1=Nt(a)Nt(a)+1Q^t(a)+Rt+1Nt(a)+1\begin{aligned} \hat Q_{t+1}(a)&=\{N_t(a)+1\}^{-1}\left(\sum_{i=1}^t \mathbb{I}(A_i=a)R_i + R_{t+1}\right)\\ &= \frac{N_t(a)}{N_t(a)+1} \left\{ N_t^{-1}(a)\sum_{i=1}^t \mathbb{I}(A_i=a)R_i \right\} + \frac{R_{t+1}}{N_t(a)+1}\\ &=\frac{N_t(a)}{N_t(a)+1}\hat Q_t(a) + \frac{R_{t+1}}{N_t(a)+1} \end{aligned}

非平稳环境下,考虑一个给定的步长参数

探索-利用

探索(exploration)是指尝试拉动更多可能的拉杆,这根拉杆不一定会获得最大的奖励,但这种方案能够摸清楚所有拉杆的获奖情况。

例如,对于一个 10 臂老虎机,我们要把所有的拉杆都拉动一下才知道哪根拉杆可能获得最大的奖励。

利用(exploitation)是指拉动已知期望奖励最大的那根拉杆,由于已知的信息仅仅来自有限次的交互观测,所以当前的最优拉杆不一定是全局最优的。

例如,对于一个 10 臂老虎机,我们只拉动过其中 3 根拉杆,接下来就一直拉动这 3 根拉杆中期望奖励最大的那根拉杆,但很有可能期望奖励最大的拉杆在剩下的 7 根当中,即使我们对 10 根拉杆各自都尝试了 20 次,发现 5 号拉杆的经验期望奖励是最高的,但仍然存在着微小的概率—另一根 6 号拉杆的真实期望奖励是比 5 号拉杆更高的。

于是在多臂老虎机问题中,设计策略时就需要平衡探索和利用的次数,不可能单独只探索或只利用,最终目的是使得累积奖励最大化。目前已有经典的算法包括ε\varepsilon-贪婪算法、上置信界算法和汤普森采样算法等。


ε-greedy

每次以概率 1ε1-\varepsilon 选择 greedy policy:

At=argmaxaQ^t1(a)A_t = \arg\max_{a} \hat Q_{t-1}(a)

以概率 ε\varepsilon 随机选择一个arm a

算法伪代码

输入: 探索概率 ε(0,1)\varepsilon\in(0,1),总轮数 TT,臂数 kk

初始化:

对每个 a{1,2,,k}a\in\{1,2,\dots,k\},令

Q^(a)0,N(a)0\hat Q(a)\leftarrow 0,\qquad N(a)\leftarrow 0

t0t\leftarrow 0

循环执行直到 t=Tt=T

  1. tt+1t\leftarrow t+1

  2. ε\varepsilon-贪心策略选择动作:

    • 以概率 1ε1-\varepsilon,选择当前估计奖励最大的臂

      aargmaxaQ^(a)a^*\leftarrow \arg\max_{a}\hat Q(a)
    • 以概率 ε\varepsilon,从 {1,2,,k}\{1,2,\dots,k\} 中随机选择一根臂

  3. 拉动臂 aa^*,获得奖励 RR

  4. 更新该臂的选择次数:

    N(a)N(a)+1N(a^*)\leftarrow N(a^*)+1
  5. 更新该臂的估计期望奖励:

    Q^(a)N(a)1N(a)Q^t(a)+1N(a)R\hat Q(a^*)\leftarrow \frac{N(a^*)-1}{N(a^*)}\hat Q_t(a) + \frac{1}{N(a^*)}R

Upper Confidence Bound

探索准则(乐观准则):看某个 arm 在乐观估计下最多可能有多好,因此每次选

argmaxa[Q^t(a)利用+Ut(a)探索]\arg\max_a \bigl[\underbrace{\hat{Q}_t(a)}_{\text{利用}}+\underbrace{U_t(a)}_{\text{探索}}\bigr]
  • Ut(a)U_t(a):对arm aa不确定性补偿项 / 置信上界 bonus Ut(a)=clogtNt(a)U_t(a)=\sqrt{\frac{c\log t}{N_t(a)}} 试得越多,bonus 衰减越快;试得越少,bonus 越大

Hoeffding’s inequality

P{E[X]xˉn+u}e2nu2\mathbb{P}\{\mathbb{E}[X]\geq \bar{x}_n + u\} \leq e^{-2nu^2}

因此有

Pr(Q(a)Q^t(a)+Ut(a))1t2c.\Pr\big(Q(a)\le \hat Q_t(a)+U_t(a)\big)\ge 1-t^{-2c}.

上界是随着tt\to\infty1t2c1.1-t^{-2c}\to 1.

算法伪代码

输入: 常数 (c>0),总轮数 TT,臂数 kk

初始化:

对每个 a{1,2,,k}a\in\{1,2,\dots,k\},令

Q^(a)0,N(a)0\hat Q(a)\leftarrow 0,\qquad N(a)\leftarrow 0

t0t\leftarrow 0

循环执行直到 t=Tt=T

  1. tt+1t \leftarrow t+1

  2. 按 UCB 策略选择动作:

    • 选择上置信界最大的臂
    aargmaxa[Q^(a)+clogtN(a)] a^*\leftarrow \arg\max_a\left[\hat Q(a)+\sqrt{\frac{c\log t}{N(a)}}\right]
  3. 拉动臂 aa^*,获得奖励 RR

  4. 更新该臂的选择次数: [ N(a^) \leftarrow N(a^)+1 ]

  5. 更新该臂的估计期望奖励: [ \hat Q(a^) \leftarrow \hat Q(a^) + \frac{1}{N(a^)}\bigl(R-\hat Q(a^)\bigr) ]


Thompson Sampling

对每个 arm 的真实奖励参数并不确定,因此先维护这个参数的后验分布;每一轮从后验分布中采样一个参数值,再选择采样值最大的 arm。

贝叶斯学派一脉相承的思想:先验分布的存在,这里是给奖励分布先建模后加先验分布

Bernoulli Bandit

以Bernoulli Bandit为例:假设 arm a 的奖励分布是均值为 θ(a)\theta(a) 的伯努利分布,即

RtAt=aBer(θa)R_t \mid A_t = a \sim Ber(\theta_a)

给成功率 θ(a)\theta(a) 设 Beta 先验分布:

θaBeta(α,β)\theta_a \sim Beta(\alpha, \beta)
  • Beta 分布适合做 Bernoulli 参数的先验,而且与 Bernoulli 分布是共轭分布,因此后验更新很方便。

贝叶斯法则更新后验:

θ(a)DBeta(Sa+α,  Fa+β)\theta(a)\mid \mathcal D \sim \mathrm{Beta}(S_a+\alpha,\;F_a+\beta)
  • SaS_a:arm aa 的成功次数

  • FaF_a:arm aa 的失败次数

  • 后验 = 先验信念 + 真实观测证据

对于 Bernoulli 分布,其期望为参数本身,因此动作价值为

E(RA=a,θt)=θt(a)\mathbb E(R\mid A=a,\theta_t)=\theta_t(a)

算法伪代码(Bernoulli-TS)

输入: 超参数 α,β>0\alpha,\beta>0,总轮数 TT

初始化: 对每个 a{1,2,,k}a\in\{1,2,\dots,k\},令

Sa0,Fa0S_a\leftarrow 0,\qquad F_a\leftarrow 0

t0t\leftarrow 0

循环执行直到 t=Tt=T

  1. tt+1t \leftarrow t+1

  2. 对每个 arm aa,从其后验中采样(探索)

    θaBeta(α+Sa,β+Fa)\theta_a \sim \mathrm{Beta}(\alpha+S_a,\beta+F_a)
  3. 选择后验采样值最大的臂(利用)

    a=argmaxaθaa^*=\arg\max_a \theta_a
  4. 拉动臂 aa^*,获得奖励 RR

  5. 观察结果后更新 Sa,FaS_a,F_a

    • R=1R=1SaSa+1S_a\leftarrow S_a + 1
    • R=0R=0FaFa+1F_a\leftarrow F_a + 1

Contextual Bandits

StS_t: context; AtA_t: action; RtR_t: reward

Personalized recommedation

AtStA_t \mid S_t:根据StS_t做推荐AtA_t

目标依然是 maxEt=0TRt\max \mathbb{E}\sum_{t=0}^T R_t

下一篇:马尔可夫决策过程(MDP)
My avatar

Thx for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


强化学习课堂笔记 系列