蒙特卡洛方法

模型无关的强化学习

  • 在现实问题中,通常没有明确给出状态转移奖励函数

    比如,我们只看到了一些 episodes(采样):

    • Episode1: s0(1)a0(1),R(s0)(1)s1(1)a1(1),R(s1)(1)s2(1)sT(1)s_0^{(1)}\xrightarrow{a_0^{(1)},R(s_0)^{(1)}}s_1^{(1)}\xrightarrow{a_1^{(1)},R(s_1)^{(1)}}s_2^{(1)}\cdots s_T^{(1)}

    • Episode2: s0(2)a0(2),R(s0)(2)s1(2)a1(2),R(s1)(2)s2(2)sT(2)s_0^{(2)}\xrightarrow{a_0^{(2)},R(s_0)^{(2)}}s_1^{(2)}\xrightarrow{a_1^{(2)},R(s_1)^{(2)}}s_2^{(2)}\cdots s_T^{(2)}

  • 模型无关的强化学习直接从经验中学习值 value策略 policy,无需构建 MDP。

  • 关键步骤

    1. 估计值函数
    2. 优化策略

值函数估计

  • 在基于模型的强化学习中,值函数通过动态规划计算获得。

    Vπ(s)=R(s)+γsSpsπ(s)(s)Vπ(s)V^\pi(s)=R(s)+\gamma\sum\limits_{s'\in S}p_{s\pi(s)}(s')V^{\pi}(s')

  • 在模型无关的强化学习中

    • 无法直接获得 PsaP_{sa}RR
    • 但我们可以根据已有的经验来估计值函数
      • Episode1: s0(1)a0(1),R(s0)(1)s1(1)a1(1),R(s1)(1)s2(1)sT(1)s_0^{(1)}\xrightarrow{a_0^{(1)},R(s_0)^{(1)}}s_1^{(1)}\xrightarrow{a_1^{(1)},R(s_1)^{(1)}}s_2^{(1)}\cdots s_T^{(1)}

      • Episode2: s0(2)a0(2),R(s0)(2)s1(2)a1(2),R(s1)(2)s2(2)sT(2)s_0^{(2)}\xrightarrow{a_0^{(2)},R(s_0)^{(2)}}s_1^{(2)}\xrightarrow{a_1^{(2)},R(s_1)^{(2)}}s_2^{(2)}\cdots s_T^{(2)}

蒙特卡洛方法

Monte-Carlo methods 是一类广泛的计算算法

  • 依赖于重复随机抽样来获得数值结果

例子

  • 估算圆周率
  • 围棋对弈:AlphaGo

蒙特卡洛价值估计

  • 目标:从策略 π\pi 下的经验片段学习 VπV^\pi

    s0(i)a0(i),R(s0)(i)s1(i)a1(i),R(s1)(i)s2(i)sT(i)πs_0^{(i)}\xrightarrow{a_0^{(i)},R(s_0)^{(i)}}s_1^{(i)}\xrightarrow{a_1^{(i)},R(s_1)^{(i)}}s_2^{(i)}\cdots s_T^{(i)}\sim\pi

  • 累积奖励(return)是总折扣奖励

    Gt=Rt+1+γRt+2+γ2Rt+3++γT1RTG_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\cdots+\gamma^{T-1}R_T

  • 值函数(value function)是期望累计奖励

    Vπ(s)=E[R(s0)+γR(s1)+s0=s,π]V^\pi(s)=\mathbb E[R(s_0)+\gamma R(s_1)+\cdots|s_0=s,\pi]

    =E[Gtst=s,π]=\mathbb E[G_t|s_t=s,\pi]

    1Ni=1NGt(i)\simeq\frac{1}{N}\sum_{i=1}^NG_t^{(i)}

    • 使用策略 π\pi 从状态 ss 采样 NN 个片段
    • 计算平均累计奖励
  • 蒙特卡洛策略评估使用经验均值累计奖励而不是期望累计奖励

实现蒙特卡洛值估计

实现

  • 使用策略 π\pi 采样片段

    s0(i)a0(i),R(s0)(i)s1(i)a1(i),R(s1)(i)s2(i)sT(i)πs_0^{(i)}\xrightarrow{a_0^{(i)},R(s_0)^{(i)}}s_1^{(i)}\xrightarrow{a_1^{(i)},R(s_1)^{(i)}}s_2^{(i)}\cdots s_T^{(i)}\sim\pi

  • 在一个片段中每个时间步长 t 的状态 s 都被访问

    • 增量计数器 N(s)N(s)+1N(s)\leftarrow N(s)+1
    • 增量总累计奖励 S(s)S(s)+GtS(s)\leftarrow S(s)+G_t
    • 值被估计为累计奖励的均值 V(s)=S(s)N(s)V(s)=\frac{S(s)}{N(s)}
    • 由大数定律得 V(s)Vπ(s) as N(s)V(s)\rightarrow V^\pi(s)\ as\ N(s)\rightarrow\infty

增量蒙特卡洛更新

  • 每个片段结束后逐步更新 V(s)V(s)

  • 对于每个状态 StS_t 和对应累计奖励 GtG_t

    N(St)N(St)+1N(S_t)\leftarrow N(S_t)+1

    V(St)V(St)+1N(St)(GtV(St))V(S_t)\leftarrow V(S_t)+\frac{1}{N(S_t)}(G_t-V(S_t))

  • 对于非稳定问题(即环境会随时间发生变化),我们可以跟踪一个现阶段的平均值(即不考虑过久之前的片段)

    V(St)V(St)+α(GtV(St))V(S_t)\leftarrow V(S_t)+\alpha(G_t-V(S_t))

实现值估计

思路:Vπ(s)1Ni=1NGt(i)V^\pi(s)\simeq\frac{1}{N}\sum_{i=1}^NG_t^{(i)}

实现:V(St)V(St)+α(GtV(St))V(S_t)\leftarrow V(S_t)+\alpha(G_t-V(S_t))

  • 直接从经验片段中学习

  • model-free,模型无关的:为止马尔可夫决策过程的状态转移/奖励

  • 完整的片段中进行学习:没有使用 bootstrapping 方法

  • 最简单的思想:值 value = 平均累计奖励 mean return

  • 警告⚠️:只能讲蒙特卡洛方法应用于可分片段的马尔可夫决策过程中!

    即,所有的片段都有终止状态

模型无关控制方法

模型无关的控制应用场景

  • 一些能够被建模成马尔可夫决策过程的问题

    电梯、平行泊车、船舶操纵、生物反应器、直升机、飞机物流、Atari和星际争霸、投资组合管理、围棋对弈……

  • 对于大部分真实世界的问题:

    • MDP 模型为未知,但能从经验中采样
    • MDP 模型为已知,但规模太大难以直接使用,只能通过采样
  • 模型无关的控制能解决上述问题

在线策略和离线策略学习

两类模型无关的强化学习

  1. 在线策略学习 On-Policy
    • Learning on the job
    • 利用策略 π\pi 的经验采样不断学习改进策略 π\pi
  2. 离线策略学习 Off-Policy
    • Look over someone’s shoulder
    • 利用另一个策略 μ\mu 的经验采样不断学习改进策略 π\pi

状态值和状态-动作值

Gt=Rt+1+γRt+2++γT1RTG_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-1}R_T

  • 状态值

    马尔可夫决策过程的状态值函数 Vπ(s)V^\pi(s) 是指从状态 ss 开始,执行策略 π\pi 的期望累计奖励为

    Vπ(s)=Eπ[GtSt=s]V^\pi(s)=\mathbb E_\pi[G_t|S_t=s]

  • 状态-动作值

    马尔可夫决策过程的状态-动作值函数 Qπ(s,a)Q^\pi(s,a) 是指从状态 ss 开始,执行 aa 动作之后,执行策略 π\pi 的期望累计奖励

    Qπ(s,a)=Eπ[GtSt=s,At=a]Q^\pi(s,a)=\mathbb E_\pi[G_t|S_t=s,A_t=a]

贝尔曼期望方程

  • 状态值函数 Vπ(s)V^\pi(s) 可被分解为即时奖励加上后续状态的折扣值

    Vπ(s)=Eπ[Rt+1+γVπ(St+1)St=s]V^\pi(s)=\mathbb E_\pi[R_{t+1}+\gamma V^\pi(S_{t+1})|S_t=s]

  • 状态-动作值函数 Qπ(s,a)Q^\pi(s,a) 也能被分解为

    Qπ(s,a)=Eπ[Rt+1+γQπ(St+1,At+1)St=s,At=a]Q^\pi(s,a)=\mathbb E_\pi[R_{t+1}+\gamma Q^\pi(S_{t+1},A_{t+1})|S_t=s,A_t=a]

  • 因此

    • Vπ(s)=aAQπ(s,a)V^\pi(s)=\sum_{a\in A}Q^\pi(s,a)
    • Qπ(s,a)=R(s,a)+γsSPsa(s)Vπ(s)Q^\pi(s,a)=R(s,a)+\gamma \sum_{s'\in S}P_{sa}(s')V^\pi(s')

模型无关的策略迭代

  • 给定状态值函数 V(s)V(s) 和状态-动作值函数 Q(s,a)Q(s,a),模型无关的策略迭代应使用状态-动作值函数

  • 基于状态值函数 V(s)V(s) 的贪心策略改进需要建立马尔可夫决策过程的模型

    πnew(s)=argmaxaA{R(s,a)+γsSPsa(s)Vπ(s)}\pi^{new}(s)=\arg\max_{a\in A}\{R(s,a)+\gamma\sum_{s'\in S}P_{sa}(s')V^\pi(s')\}

    • 我们不知道状态转移概率 Psa(s)P_{sa}(s')
  • 基于状态-动作值函数 Q(s,a)Q(s,a) 的贪心策略改进是模型无关的

    πnew(s)=argmaxaAQ(s,a)\pi^{new}(s)=\arg\max_{a\in A}Q(s,a)

使用状态-动作值函数的广义策略迭代

  • 策略评估:蒙特卡洛策略估计 Q=QπQ=Q^\pi
  • 策略改进:贪心策略改进

ε-greedy 策略探索

  • 确保持续探索最简单的想法

  • 所有 m 个动作都以非零概率进行尝试

  • 以 1-ε 的概率,选择贪心动作

  • 以 ε 的概率,随机选择一个动作

    π(as)=ϵm+1ϵ\pi(a|s)=\frac{\epsilon}{m}+1-\epsilona=argmaxaAQ(s,a)a^*=argmax_{a\in A}Q(s,a)

    π(as)=ϵm\pi(a|s)=\frac{\epsilon}{m} otherwise

ε-greedy 策略改进

定理:

  • 对于任意 ε-greedy 的策略 π\pi,关于 QπQ^\pi 的 ε-greedy 策略 π\pi'π\pi 的一个改进,即 Vπ(s)Vπ(s)V^{\pi'}(s)\ge V^\pi(s)

Vπ(s)=Qπ(s,π(s))=aAπ(as)Qπ(s,a)V^{\pi'}(s)=Q^\pi(s,\pi'(s))=\sum_{a\in A}\pi'(a|s)Q^\pi(s,a)

=ϵmaAQπ(s,a)+(1ϵ)maxaAQπ(s,a)=\frac{\epsilon}{m}\sum_{a\in A}Q^\pi(s,a)+(1-\epsilon)\max_{a\in A}Q^\pi(s,a)

ϵmaAQπ(s,a)+(1ϵ)aAπ(as)ϵm1ϵQπ(s,a)\ge\frac{\epsilon}{m}\sum_{a\in A}Q^\pi(s,a)+(1-\epsilon)\sum_{a\in A}\frac{\pi(a|s)-\frac{\epsilon}{m}}{1-\epsilon}Q^\pi(s,a)

=aAπ(as)Qπ(s,a)=Vπ(s)=\sum_{a\in A}\pi(a|s)Q^\pi(s,a)=V^\pi(s)

蒙特卡洛控制

对于每个片段 episode

  • 策略评估:蒙特卡洛策略估计 QQπQ≈Q^\pi
  • 策略改进:ε-greedy 策略改进

蒙特卡洛控制 vs. 时序差分控制

  • 时序差分(TD)学习相比蒙特卡洛(MC)有许多优点
    • 更低的方差
    • 在线策略
    • 基于不完整的序列
  • 自然的想法:在控制中,使用时序差分代替蒙特卡洛
    • 使用时序差分来更细状态-动作值函数
    • 使用 ε-greedy 策略改进
    • 每个时间步长更新状态-动作值函数

重要性采样

  • 估计一个不同分布的期望

    Exp[f(x)]=xp(x)f(x)dx\mathbb E_{x\sim p}[f(x)]=\int_xp(x)f(x)dx

    =xq(x)p(x)q(x)f(x)dx=\int_xq(x)\frac{p(x)}{q(x)}f(x)dx

    =Exq[p(x)q(x)f(x)]=\mathbb E_{x\sim q}[\frac{p(x)}{q(x)}f(x)]

  • 将每个实例的权重重新分配为 β(x)=p(x)q(x)\beta(x)=\frac{p(x)}{q(x)}

使用重要性采样的离线策略蒙特卡洛

  • 使用策略 μ\mu 产生的累计奖励评估策略 π\pi

  • 根据两个策略之间的重要性比率(importance ratio)对累计奖励 GtG_t 加权

  • 每个片段乘以重要性比率

    {s1,a1,r2,s2,a2,,sT}μ\{s_1,a_1,r_2,s_2,a_2,\cdots,s_T\}\sim\mu

    Gtπ/μ=π(atst)π(at+1st+1)μ(atst)μ(at+1st+1)π(aTsT)μ(aTsT)GtG_t^{\pi/\mu}=\frac{\pi(a_t|s_t)\pi(a_{t+1}|s_{t+1})}{\mu(a_t|s_t)\mu(a_{t+1}|s_{t+1})}\cdots\frac{\pi(a_T|s_T)}{\mu(a_T|s_T)}G_t

  • 更新值函数以逼近修正的累计奖励值

    V(st)V(st)+α(Gtπ/μV(st))V(s_t)\leftarrow V(s_t)+\alpha(G_t^{\pi/\mu}-V(s_t))

    • 无法在 π\pi 非零而 μ\mu 为 0 时使用
    • 重要性采样将显著增大方差(variance)

使用重要性采样的离线策略时序差分

  • 使用策略 μ\mu 产生的时序差分目标评估策略 π\pi

  • 根据重要性采样对时序差分目标 r+γV(s)r+\gamma V(s') 加权

  • 仅需要一步来进行重要性采样验证

    V(st)V(st)+α(π(atst)μ(atst)(rt+1+γV(st+1))V(st))V(s_t)\leftarrow V(s_t)+\alpha(\frac{\pi(a_t|s_t)}{\mu(a_t|s_t)}(r_{t+1}+\gamma V(s_{t+1}))-V(s_t))

    • 重要性采样修正:π(atst)μ(atst)\frac{\pi(a_t|s_t)}{\mu(a_t|s_t)}
    • 时序差分目标:rt+1+γV(st+1)r_{t+1}+\gamma V(s_{t+1})

时序差分学习

时序差分学习

Gt=Rt+1+γRt+2+γ2Rt+3+=Rt+1+γV(St+1)G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\cdots=R_{t+1}+\gamma V(S_{t+1})

V(St)V(St)+α(Rt+1+γV(St+1)V(St))V(S_t)\leftarrow V(S_t)+\alpha(R_{t+1}+\gamma V(S_{t+1})-V(S_t))

观测值 Rt+1R_{t+1},对未来的猜测 γV(St+1)\gamma V(S_{t+1})

  • 时序差分方法直接从经验片段中进行学习
  • 时序差分是模型无关
    • 不需要预先获取 MDP 的状态转移/奖励
  • 通过自举法(bootstrapping),时序差分从不完整的片段中学习
  • 时序差分更新当前预测值使之接近估计累计奖励(非真实值)

蒙特卡洛 MC VS 时序差分 TD

相同的目标:从策略 π\pi 下的经验片段学习 VπV^\pi

  • 增量地进行每次蒙特卡洛过程

    • 更新值函数 V(St)V(S_t) 使之接近准确累计奖励 GtG_t

      V(St)V(St)+α(GtV(St))V(S_t)\leftarrow V(S_t)+\alpha(G_t-V(S_t))

  • 最简单的时序差分学习算法:

    • 更新 V(St)V(S_t) 使之接近估计累计奖励 Rt+1+γV(St+1)R_{t+1}+\gamma V(S_{t+1})

      V(St)V(St)+α(Rt+1+γV(St+1)V(St))V(S_t)\leftarrow V(S_t)+\alpha(R_{t+1}+\gamma V(S_{t+1})-V(S_t))

    • 时序差分目标: Rt+1+γV(St+1)R_{t+1}+\gamma V(S_{t+1})

    • 时序差分误差:δt=Rt+1+γV(St+1)V(St)\delta_t=R_{t+1}+\gamma V(S_{t+1})-V(S_t)

蒙特卡洛和时序差分的优缺点

时序差分能够在知道最后结果之前进行学习

  • 能够在每一步之后进行学习
  • 蒙特卡洛必须等待片段结束,直到累计奖励已知

时序差分能够无需最后结果而进行学习

  • 时序差分能够从不完整序列中学习,而蒙特卡洛只能从完整序列中学习
  • 时序差分在连续*(无终止的)*环境下工作
  • 蒙特卡洛只能在片段化*(有终止)*环境下工作

蒙特卡洛 MC

蒙特卡洛具有高方差,无偏差 V(St)V(St)+α(GtV(St))V(S_t)\leftarrow V(S_t)+\alpha(G_t-V(S_t))

  • 良好的收敛性质
    • 使用函数近似时依然如此
  • 对初始值不敏感
  • 易于理解和使用

时序差分 TD

时序差分具有低方差,有偏差 V(St)V(St)+α(Rt+1+γV(St+1)V(St))V(S_t)\leftarrow V(S_t)+\alpha(R_{t+1}+\gamma V(S_{t+1})-V(S_t))

  • 通常比蒙特卡洛更高效
  • 时序差分最终收敛到 Vπ(St)V^\pi(S_t)
    • 但使用函数近似时并不总是如此
  • 比蒙特卡洛对初始值更加敏感

偏差 Bias 和方差 Variance 的权衡

  • 累计奖励 Gt=Rt+1+γRt+2++γT1RTG_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-1}R_TVπ(St)V^\pi(S_t) 的无偏估计

  • 时序差分真实目标 Rt+1+γVπ(St+1)R_{t+1}+\gamma V^\pi(S_{t+1})Vπ(St)V^\pi(S_t) 的无偏估计

  • 时序差分目标 Rt+1+γV(St+1)R_{t+1}+\gamma V(S_{t+1})Vπ(St)V^\pi(S_t) 的有偏估计

  • 时序差分目标具有比累计奖励更低的方差

    • 累计奖励——取决于多步随机动作,多步状态转移和多步奖励
    • 时序差分目标——取决于单步随机动作,单步状态转移和单步奖励

多步时序差分学习

  • 对于有时间约束的情况,我们可以跳过 n 步预测的部分,直接进入模型无关的控制

  • 定义 n 步累计奖励

    Gt(n)=Rt+1+γRt+2++γn1R(t+n)+γnV(St+n)G_t^{(n)}=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{n-1}R_{(t+n)}+\gamma^nV(S_{t+n})

  • n 步时序差分学习

    V(St)V(St)+α(Gt(n)V(St))V(S_t)\leftarrow V(S_t)+\alpha(G_t^{(n)}-V(S_t))