少女祈祷中...

基于上海交通大学强化学习课程系列课程学习RL的笔记.
SJTU RL Course (wnzhang.net)

此为第三讲的内容. 在第二讲中, 我们解释了MDP的概念, 并在MDP处于白盒环境的前提下, 给出了通过期望算子不断进行迭代, 最终得到最优策略的算法. 而在这一讲中, 我们考虑根据一批样本来估计出一个值函数的方法, 包括MC方法和TD方法.

TODO: 编写值函数估计相关的库函数, 包括DP, MC, TD三种实现的函数
预计在gym环境上对这些函数进行测试
相关gym环境强化学习基础篇(十)OpenAI Gym环境汇总 - 简书 (jianshu.com)

无模型的强化学习(Model-free RL)

  • 前面一讲中, 我们考虑的都是显式给出各种分布(如状态转移分布和奖励函数等)的MDP白盒环境
  • 而在实际场景中, 我们往往无法得到相关的分布, 只能得到从分布中采样得出的一系列样本episode.
  • 模型无关的强化学习直接从经验中学习值(value)和策略 (policy),而无需构建马尔可夫决策过程模型(MDP)

值函数估计

在白盒环境中, 我们根据如下公式来对值函数进行计算

V(s)=E[GtSt=s]=E[i=tTλitRiSt=s]=E[RStAt+λV(St+1)St=s]V(s) = E[G_t|S_t = s] = E[\sum_{i = t}^{T} \lambda ^{i - t} R_i|S_t = s] = E[R_{S_t}^{A_t} + \lambda V(S_{t+1}) | S_t = s]

其中, 将期望展开可以得到

V(s)=aAaπsa[Rsa+λsSPssaV(s)]V(s) = \sum_{a\in A}^{a} \pi_{s}^{a}[R_{s}^{a} + \lambda\sum_{s' \in S} P_{ss'}^{a}V(s')]

而在黑盒情况下, 我们无法直接对相关的期望进行求解, 只能通过"样本均值"对期望进行拟合.

于是,

  • 将原本要求解的期望目标 RiR_i化为样本均值 iNri/N\sum_{i}^{N} r_i / N, 我们得到了蒙特卡洛的方法
  • 将原本要求解的期望目标 V(t)(St+1)V^{(t)}(S_{t+1})化为样本相关的 V(t1)(St+1)V^{(t-1)}(S_{t+1}), 我们得到了TD的方法

结合前面的直接求解法以及DP求解法, 可总结归纳如下:

蒙特卡洛值估计 MC

  • 大致思想上与前面讲的一致, 即用样本均值 iNri/N\sum_{i}^{N} r_i / N 来近似 RiR_i.
  • 有一点不同的是, 此处不是对所有的 RiR_i做简单平均, 而是做了加权平均和来获取最终的期望目标 E[Gt]E[G_t]. 具体的加权分布与参数 α\alpha 有关
  • 关于 λ\lambdaα\alpha:
    • λ\lambda越大, agent在每个episode中越关注未来奖励, 假定环境需要长远地考虑
    • α\alpha越大, agent在训练时越关注近期的episode, 而忽略历史的episode, 假定环境的变化性是比较强的

重要性采样 (离线蒙特卡洛)

此处我们考虑重要性采样, 从而引出TD方法.

假设我们有从分布qq中采样得出的一系列样本x, 并想要通过这些样本来求出pp的期望, 那么可做如下变化

Exp[f(x)]=xp(x)f(x)=xq(x)p(x)q(x)f(x)=Exq[p(x)q(x)f(x)]E_{x\sim p}[f(x)] = \int_{x} p(x) f(x) = \int_{x} q(x) \frac{p(x)}{q(x)} f(x) = E_{x\sim q}[\frac{p(x)}{q(x)}f(x)]

于是, 我们就可以将q中采样得到的x加上一个重要性权重 β(x)=p(x)q(x)\beta(x) = \frac{p(x)}{q(x)}, 然后求出它们的期望(通过样本均值), 就可以得到想要的pp的期望.

在RL中, 我们采用MC方法时采样得到的样本为 x=[st,at,rt,...,sT,aT,rT]x = [s_t, a_t, r_t, ..., s_T, a_T, r_T]

根据策略 π\piμ\mu和环境交互导出的分布, 我们可以导出重要性权重:

β(x)=p(st)π(atst)P(st+1st,at)...p(st)μ(atst)P(st+1st,at)...=π(atst)π(at+1st+1)...μ(atst)μ(aa+1st+1)...\beta(x) = \frac{p(s_t)\pi(a_t| s_t)P(s_{t + 1}|s_t, a_t) ... } {p(s_t)\mu(a_t|s_t)P(s_{t + 1}|s_t, a_t) ... } = \frac{\pi(a_t|s_t)\pi(a_{t+1}|s_{t+1})...} {\mu(a_t|s_t)\mu(a_{a+1}|s_{t+1})...}

于是, 我们通过这种方法可以做到:

  • 根据某个行为策略采集到的数据不断更新目标策略
  • 目标策略不需要在线地与环境进行交互

根据权重函数, 容易得到

  • 我们无法在𝜋非零而𝜇为零时使用重要性采样
  • 重要性采样将显著增大方差(variance) (许多概率进行了连乘, 方差也随之增大)

由于上面的缺点, 我们引入了TD.

时序差分学习(Temporal Difference Learning

  • 引入了随机变量的等式 V(s)=E[RStAt+λV(St+1)St=s]V(s) = E[R_{S_t}^{A_t} + \lambda V(S_{t+1}) | S_t = s]
  • 通过迭代式 V(st)αrt+V(st+1)V(s_t) \rightarrow ^{\alpha} r_t + V(s_{t+1}) 来逼近期望等式.

因此, TD方法可以在episode还未结束时就更新策略, 并实时地采用新策略不断进行采样, 实现在线的控制.

多步时序差分学习

定义n步回报

gt(n)=rt+λrt+1+...+λn1rt+n1+λnV(st+n)g^{(n)}_t = r_t + \lambda r_{t+1} + ... + \lambda^{n-1} r_{t+n-1} + \lambda^{n} V(s_{t+n})

更新公式为

V(s)αgt(n)V(s) \leftarrow^{\alpha} g^{(n)}_t

  • 一方面, 利用了许多当前获取的回报rr, 另一方面, 还是使用了历史数据V(s)V(s)对后续的大量rr进行估计
  • 介于MC与一步TD之间.

总览强化学习值函数估计多种方法