【强化学习】- 4.无模型预测(蒙特卡洛和TD学习)

1. 简介

  • 在“3.强化学习-动态规划”中我们假设环境模型已知,对马尔可夫决策问题(MDP)运用动态规划求解最优策略和最优价值。
  • 这个章节主要针对环境未知的情况(未知MDP),对给定策略的价值函数进行预估(无模型预测)。
  • 下一章节将会介绍无模型的控制问题(优化价值函数,在MDP未知的情况下)。

2. 蒙特卡洛学习(Monto-Carlo learning)

(book [3] chapter 5.1)

蒙特卡洛学习 MC,虽然该方法不是最高效的方法,但是却是有效的。

  • 从回合(espisode)中直接学习经验
  • 无模型(model-free), 没有MDP状态转移/奖励的知识
  • 完整的回合中学习:no-bootsrapping。 这种方法适合回合性的问题,如游戏,回合最终会结束。
  • 运用非常简单的逻辑,价值value=mean return 回报均值
  • 注意: 所有的回合(espisode)必须是完整的,已经结束的

2.1 蒙特卡洛策略评估

  • 目标:从给定策略下的多个经历回合(espisodes)中学习该策略下的状态价值函数 V π ( s ) V_{\pi}(s) Vπ(s),即
    S 1 , A 1 , R 2 . . . S k ∼ π S_1,A_1,R_2...S_k \sim \pi S1,A1,R2...Skπ
    (S 状态,A 动作,R奖励)

  • t时刻状态的总回报:
    G t = R t + 1 + γ R t + 2 . . . + γ T − 1 R T G_t=R_{t+1}+\gamma R_{t+2}...+\gamma ^{T-1} R_{T} Gt=Rt+1+γRt+2...+γT1RT
    γ \gamma γ is discount factor)

  • 回顾状态s的价值函数为回报的期望
    v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=\mathbb{E}_{\pi}[G_t|S_t=s] vπ(s)=Eπ[GtSt=s]

  • 蒙特卡洛策略评估运用经验均值回报来代替期望回报

2.1.1 首次访问(First-visit) 蒙特卡洛策略评估

假设我们想要估计状态s在策略 π \pi π下的价值 V π ( s ) V_{\pi}(s) Vπ(s) ,已知一些遵循此策略的回合(espisode),我们将每次s在回合中的出现定义为一次访问状态s。在一次回合中可能多次访问s。

对于每一个回合,

  • 当该状态第一次出现在回合中时列入计算,
  • 状态计数器,状态每次出现加1: N ( s ) ← N ( s ) + 1 N(s) \gets N(s)+1 N(s)N(s)+1
  • 增加总的收获: S ( s ) ← S ( s ) + 1 S(s) \gets S(s)+1 S(s)S(s)+1
  • 用回报的均值估计状态价值: V ( s ) ← S ( s ) / N ( s ) V(s) \gets S(s)/N(s) V(s)S(s)/N(s)
  • 根据大数定律: 当 N ( s ) → ∞ N(s) \rightarrow \infin N(s)
    时, V ( s ) → V π ( s ) V(s) \rightarrow V_{\pi}(s) V(s)Vπ(s)

2.1.2 每次访问(Every-visit) 蒙特卡洛策略评估

此方法和首次访问仅有一些区别。这里我们考虑每次的访问

对于每一个回合,

  • 当该状态每一次出现在回合中时列入计算,
  • 状态计数器,状态每次出现加1: N ( s ) ← N ( s ) + 1 N(s) \gets N(s)+1 N(s)N(s)+1
  • 增加总的收获: S ( s ) ← S ( s ) + 1 S(s) \gets S(s)+1 S(s)S(s)+1
  • 用回报的均值估计状态价值: V ( s ) ← S ( s ) / N ( s ) V(s) \gets S(s)/N(s) V(s)S(s)/N(s)
  • 根据大数定律:当 N ( s ) → ∞ N(s) \rightarrow \infin N(s)
    时, V ( s ) → V π ( s ) V(s) \rightarrow V_{\pi}(s) V(s)Vπ(s)

【注】不同于动态规划,这里只用到了采样, 抽取一些完成的回合来估计价值 V ( s ) V(s) V(s)。在动态规划中, 则将所有路径进行计算。

例子-参考https://zhuanlan.zhihu.com/p/500866739中扑克21点游戏,这里的讲解挺清晰的。

2.2 增量均值 Incremental mean

序列 x 1 , x 2 . . . x_1,x_2... x1,x2...的均值 μ 1 , m u 2 . . . \mu_1,mu_2... μ1,mu2...可以通过增量进行计算,如下,

μ k = 1 / k ∑ j = 1 k x j = 1 / k ( x k + ∑ j = 1 k − 1 x j ) = μ k − 1 + 1 / k ( x k − μ k − 1 ) \mu_k =1/k \sum^k_{j=1} x_j=1/k (x_k+\sum^{k-1}_{j=1} x_j )=\mu_{k-1}+1/k(x_k-\mu_{k-1}) μk=1/kj=1kxj=1/k(xk+j=1k1xj)=μk1+1/k(xkμk1)

x 1 , . . . x k x_1,...x_k x1,...xk 的均值 μ k \mu_k μk可以通过 x 1 , . . . x k x_1,...x_k x1,...xk 的均值 μ k − 1 \mu_{k-1} μk1以及增量 1 / k ( x k − μ k − 1 ) 1/k(x_k-\mu_{k-1}) 1/k(xkμk1) 得出。直观的理解就是通过新的 x k x_k xk和原来均值 μ k − 1 \mu_{k-1} μk1的差对原均值 μ k − 1 \mu_{k-1} μk1进行调整以获取新的均值 μ k \mu_k μk.

2.3 增量蒙特卡洛更新 Incremental Monto-Carlo updates

蒙特卡洛的价值均值更新可参考以上增量均值的模式,进行增量更新。

对于每个状态 S t S_t St,其对应的回报 G t G_t Gt
N ( s ) ← N ( s ) + 1 N(s) \gets N(s)+1 N(s)N(s)+1 //状态计数
V ( s t ) ← V ( s t ) + 1 N ( s ) ( G t − V ( s t ) ) V(s_t) \gets V(s_t) +\frac{1}{N(s)}(G_t-V(s_t)) V(st)V(st)+N(s)1(GtV(st)) //价值均值增量更新
对于非稳定问题(non-stationary), 我们可能想要对旧的回合进行遗忘:
V ( s t ) ← V ( s t ) + α ( G t − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(G_t-V(s_t)) V(st)V(st)+α(GtV(st))

3. 时序差分学习 (Temporal-Difference learning)

(book [3] chapter 6.1,6.2,6.3)

3.1 时序差分学习 TD

  • 从回合(espisode)中直接学习经验
  • 无模型(model-free), 没有MDP状态转移/奖励的知识
  • 不完整的回合中学习:by-bootsrapping, 我们可以用部分的路径然后用对剩余路径奖励的估计值来代替真实的回报
    “更新初始的 猜测 向后继的 猜测 靠近”

3.2 蒙特卡洛学习 MC和时序差分学习 TD

  • 目标:从经验回合中在线学习策略 π \pi π的价值 v π v_\pi vπ

  • 增量每次访问(Every-visit) 的蒙特卡洛
    更新价值 V ( s t ) V(s_t) V(st)趋向于真实回报 G t G_t Gt
    V ( s t ) ← V ( s t ) + α ( G t − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(G_t-V(s_t)) V(st)V(st)+α(GtV(st))

  • 最简单的时序差分学习 :TD(0)
    更新价值 V ( s t ) V(s_t) V(st)趋向于估计回报 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1)(也称为TD目标)

    V ( s t ) ← V ( s t ) + α ( R t + 1 + γ V ( S t + 1 ) − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(R_{t+1}+\gamma V(S_{t+1}) - V(s_t)) V(st)V(st)+α(Rt+1+γV(St+1)V(st))
    δ t = R t + 1 + γ V ( S t + 1 ) − V ( s t ) \delta_t = R_{t+1}+ \gamma V(S_{t+1}) - V(s_t) δt=Rt+1+γV(St+1)V(st)是TD误差

MC和 TD的优势劣势 1

  • TD 可以在知道最终结果前进行学习
    • TD可以在每一步后在线学习
    • MC必须要等到回合结束,回报获得以后
  • TD学习可以不需最终结果
    • TD可以从不完整的序列里学习
    • MC仅从完整的序列里学习
    • TD可以在持续(无结点)的环境学习
    • MC仅在有结点的回合环境学习

3.3 偏差/方差平衡

  • 回报 G t = R t + 1 + γ R t + 2 + . . . + γ T − 1 R T G_t= R_{t+1}+\gamma R_{t+2}+...+\gamma ^{T-1} R_{T} Gt=Rt+1+γRt+2+...+γT1RT V π ( s t ) V_\pi (s_t) Vπ(st)的无偏估计 (对于MC).
  • 真实的TD目标 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1) V π ( s t ) V_\pi (s_t) Vπ(st)的无偏估计.
  • TD目标 R t + 1 + γ V ( S t + 1 ) R_{t+1}+\gamma V(S_{t+1}) Rt+1+γV(St+1) V π ( s t ) V_\pi (s_t) Vπ(st)有偏估计。 有偏来自于 V ( S t + 1 ) ≠ V π ( s t + 1 ) V(S_{t+1})\neq V_\pi (s_{t+1}) V(St+1)=Vπ(st+1)
  • TD目标 比回报(MC)的方差更低
    1.回报的值取决于很多随机的动作、转换、和奖励
    2.TD目标取决于一个随机的动作、转换、和奖励

MC和 TD的优势劣势 2

  • MC的方差大,0偏差

    1. 收敛
    2. 对于初始值不敏感
    3. 简单,易理解
  • TD的方差小,但是有偏差

    1. 通常比MC更高效
    2. TD(0)收敛于 V π ( s t ) V_\pi (s_t) Vπ(st)
    3. 对于初始值更敏感

例子- 随机行走。
用来对比 α \alpha α-MC和TD在下图中MRP的预测能力

MRP是一个没有动作action的MDP

状态空间: 如下图:A、B、C、D、E为中间状态,C同时作为起始状态。灰色方格表示终止状态;

在这里插入图片描述

即时奖励: 右侧的终止状态得到即时奖励为1,左侧终止状态得到的即时奖励为0,在其他状态间转化得到的即时奖励是0;

状态转移: 任意状态下等概率向左或向右转移一步,进入终止状态即终止;

折扣系数 γ \gamma γ= 1;

给定的策略: 随机选择向左、向右两个行为。

问题: 对这个MRP问题进行预测,也就是评估随机行走这个策略的状态价值,即确定该MRP问题的状态价值函数。由于MRP是无折扣的,且只有右边的终止状态奖励为1,其他奖励为0,所以,某个状态的真实价值就是假如从该状态开始,终止于右边终止状态的概率。因此,中间状态C的价值真实值为 v π ( C ) = 0.5 v_\pi(C)=0.5 vπ(C)=0.5. A到E的真实状态价值为1/6,2/6,3/6,4/6,5/6。

求解: 下图左图是使用TD算法得到的结果。横坐标显示的是状态,纵坐标是各状态的价值估计,一共5条折线,数字表明的是实际经历的Episode数量,true value所指的那根折线反映的是各状态的实际价值。第0次时,各状态的价值被初始化为0.5,经过1次、10次、100次后得到的价值函数越来越接近实际状态价值函数。
在这里插入图片描述

上面右图比较了MC和TD算法在不同步长 α \alpha α参数下的学习曲线。横坐标是经历的episode数量,纵坐标是学习得到的状态函数和实际状态函数下各状态价值的均方差(五个状态的平均,然后跑了100次做平均)。红色是MC算法在不同step-size下的学习曲线,蓝色的曲线使用TD算法。可以看出TD较MC更高效。此图还可以看出当step-size不是非常小的情况下,TD有可能得不到最终的实际价值,将会在某一区间震荡。

批量MC和 TD

  • MC和 TD 收敛: V ( s ) → v π ( s ) V(s) \rightarrow v_\pi(s) V(s)vπ(s) as experience → ∞ \rightarrow \infty
  • 有限经历的批量结果?

确定性等价

  • MC 收敛于最小化均方差解(是观测回报的最优拟合)
  • TD 收敛于马尔可夫模型的最大似然解 (最好的解释数据)

MC和 TD的优势劣势 3

  • TD 利用了马尔可夫性质
    • 在马尔可夫环境 更高效。不需要看整个的路径,利用已经总结好的之前的状态, 因此更高效;
  • MD利用马尔可夫性质,
    • 如果你在非马尔可夫环境 (或者部分被观测)的话,MD更有效。

3.4 Monto-Carlo 备份

假设我们在MDP中,从 S t S_t St开始有左右两个动作(action), 假设根据红色部分,我们选择右边的动作,然后来自下一层中的两个state,等。现在是我们如何通过利用这样的前瞻式的树得到root node 状态 S t S_t St的价值。

蒙特卡洛是通过对完整路径的采样对 V ( S t ) V(S_t) V(St)进行更新。(如下红色标注的是一个完整的路径为一次采样)
在这里插入图片描述
(空心点为状态,实心点为动作)

3.5 TD备份

TD是一步瞻望,仅对当前状态的下一动作和阶段进行采样。 (如下图, S t S_t St在action 进行采样, 然后从 r t + 1 r_{t+1} rt+1对下一环境状态节点采样, 然后通过 S t + 1 S_{t+1} St+1 备份和 r t + 1 r_{t+1} rt+1 S t S_t St更新。
在这里插入图片描述

3.6 DP动态规划备份

DP是也是一步瞻望,但我们对动作或者状态进行采样。我需要知道整个动态来计算期望值。
在这里插入图片描述

3.7 bootstrapping 和sampling采样

  • bootstrapping 不用真实的回报而用估计的回报
    1. MC不用bootstrapping
    2. DP和TD用bootstrapping
  • sampling
    1. MC 和TD采样
    2. DP不采样

3.8 强化学习统一视图

强化学习统一视图

4.TD( λ ) \lambda) λ)

(book [3] chapter 7.1,12.1)

4.1 n-step 预测

在这里插入图片描述

4.2 n-step 回报

  • 考虑一下子的n-step 回报,n=1,2,… ∞ \infin .
    在这里插入图片描述
    回顾一下3.3中TD得回报公式,当n=1时,对应得时TD学习。
    而当n= ∞ \infin 时,对应得时MC学习
  • 定义n-step回报
    G t ( n ) = R t + 1 + γ R t + 2 + . . . + γ n − 1 R t + n + γ n V ( s t + n ) G_t^{(n)}= R_{t+1}+\gamma R_{t+2}+...+\gamma ^{n-1} R_{t+n}+\gamma ^{n}V(s_{t+n}) Gt(n)=Rt+1+γRt+2+...+γn1Rt+n+γnV(st+n)
  • n-step TD
    V ( s t ) ← V ( s t ) + α ( G t ( n ) − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(G_t^{(n)}-V(s_t)) V(st)V(st)+α(Gt(n)V(st))

我们试图更新$V(s_t) $, 使其接近于TD target G t ( n ) G_t^{(n)} Gt(n) ,或者降低 G t ( n ) − V ( s t ) G_t^{(n)}-V(s_t) Gt(n)V(st) error signal.

例子- 随机游走

基于不同的stepsize α \alpha α 和不同的n-step。
在这里插入图片描述

下一节 我们考虑所有的n-step

4.3 平均 n-step 回报

我们可以对不同n下的 n-step 回报进行平均。
1 / 2 G ( 2 ) + 1 / 2 G ( 4 ) 1/2G^{(2)}+1/2G^{(4)} 1/2G(2)+1/2G(4)

4.4 λ − \lambda- λ回报

(book [3] chapter 12.1)在这里插入图片描述

  • λ − \lambda- λ回报 G t λ G_t^{\lambda} Gtλ 融合所有n-step 回报 G t ( n ) G_t^{(n)} Gt(n)

  • 用权重 ( 1 − λ ) λ n − 1 (1-\lambda)\lambda^{n-1} (1λ)λn1, 则回报
    G t λ = ( 1 − λ ) ∑ n − 1 ∞ λ n − 1 G t ( n ) G_t^{\lambda}=(1-\lambda)\sum_{n-1}^{\infin} \lambda^{n-1}G_t^{(n)} Gtλ=(1λ)n1λn1Gt(n)

  • 前视 TD( λ \lambda λ), G t λ G_t^{\lambda} Gtλ as TD target
    V ( s t ) ← V ( s t ) + α ( G t λ − V ( s t ) ) V(s_t) \gets V(s_t) +\alpha(G_t^{\lambda}-V(s_t)) V(st)V(st)+α(GtλV(st))

    G t λ G_t^{\lambda} Gtλ 更具有鲁棒性)

4.5 TD( λ ) \lambda) λ)权重函数

下图说明了 λ − \lambda- λ回报中n-step回报序列的权重。1-step 回报对应的权重最高 1 − λ 1-\lambda 1λ.
在这里插入图片描述
为什么用几何加权geometric weighting??

4.6 前视TD( λ ) \lambda) λ)

在这里插入图片描述

  • 前向视角指用未来的奖励更新当前状态,即基于向前看来更新状态。在这里指计算回报时朝未来看,朝着λ回报方向更新价值函数。
  • 引入了λ之后,会发现要更新一个状态的状态价值,必须要走完整个回合,获得每一个状态的即时奖励以及最终状态获得的即时奖励。
  • 这和MC算法的要求一样,因此TD(λ)算法有着和MC方法一样的劣势,只能工作在完整的回合的MDP。

基于随机游走的前视TD( λ ) \lambda) λ)
基于随机游走的前视TD(\lambda)

  • λ取值区间为[0,1],当λ=1时对应的就是MC算法。当λ=0时对应的就是TD算法

4.7 后视TD( λ ) \lambda) λ)

前向视角提供了理论基础,反向视角提供了机制。反向视角在线更新每一步,且从不完整的序列中更新。

资格迹Eligibility Traces

(book chapter 12)

资格迹 是一种更有效地实现 TD(λ) 的机制。它跟踪最近访问的状态(或状态-动作对),这些状态应该被更新。状态 s(或状态-动作对 ( s , a ) (s, a) (s,a))的资格迹随时间衰减,并在状态(或状态-动作对)被访问时增加。

例子:被电击的原因?
在这里插入图片描述
信用分配问题(Credit assignment problem):是铃声还是灯光引起了电击?

  • 频率启发式(Frequency heuristic):将信用分配给最常出现的状态
  • 近期启发式(Recency heuristic):将信用分配给最近的状态。

资格迹(Eligibility traces):结合了上述两种启发式。

时间 t 时状态 s 的资格迹 E ( s ) E(s) E(s)更新如下:
E t ( s ) = γ λ E t − 1 ( s ) + 1 s t = s E_t(s) = \gamma \lambda E_{t-1}(s) + 1_{s_t=s} Et(s)=γλEt1(s)+1st=s
其中 1 s t = s 1_{s_t=s} 1st=s 是一个指示函数,如果状态 s t s_t st 是 s,则为 1,否则为 0。

该方法为 T D ( λ ) TD(\lambda) TD(λ) 提供了后视视角。 每次更新依赖于当前的TD-error和当前时刻对过去事件资格迹。
在这里插入图片描述

TD(λ) 和资格迹之间的关系

  • TD(λ) 与资格迹:TD(λ) 可以通过资格迹来实现,为多步更新提供了有效的机制。当收到奖励时,更新分布到所有在迹中的状态(或状态-动作对),权重由其资格迹决定
  • 统一框架:资格迹统一了 TD 学习和蒙特卡罗方法的概念。λ 参数允许在这些方法之间进行平滑插值。当 λ = 0 时,TD(λ) 退化为 TD(0);当 λ = 1 时,它近似于蒙特卡罗方法。

使用资格迹的 TD(λ) 示例

考虑一个在网格世界中导航的代理。在每个时间步,代理根据收到的奖励和下一个状态的价值更新当前状态的价值。有了资格迹,代理还会更新之前访问过的状态的价值,更新随时间衰减。

  1. 初始化

    • V ( s ) ← V(s) \leftarrow V(s)任意值
    • E ( s ) ← 0 E(s) \leftarrow 0 E(s)0 对所有状态s
  2. 对于每个情节

    • 初始化状态 (s)
  3. 对于情节中的每一步

    • 采取动作 (a),观察奖励 (r) 和下一个状态 s ′ s' s
    • 计算 TD 误差: δ = r + γ V ( s ′ ) − V ( s ) \delta = r + \gamma V(s') - V(s) δ=r+γV(s)V(s)
    • 更新资格迹 : E ( s ) ← E ( s ) + 1 E(s) \leftarrow E(s) + 1 E(s)E(s)+1
    • 对所有状态 (s):
      • 更新价值: V ( s ) ← V ( s ) + α δ E ( s ) V(s) \leftarrow V(s) + \alpha \delta E(s) V(s)V(s)+αδE(s)
      • 衰减资格迹: E ( s ) ← γ λ E ( s ) E(s) \leftarrow \gamma \lambda E(s) E(s)γλE(s)
    • 转移到下一个状态 s ← s ′ s \leftarrow s' ss

总结

  • TD(λ) 是 TD 学习的广义化,通过参数 λ 在 TD(0) 和蒙特卡罗方法之间进行平衡。
  • 资格迹 是实现 TD(λ) 的工具,通过跟踪最近访问的状态(或状态-动作对)并更新它们来提高效率。
  • 关系:TD(λ) 使用资格迹根据近期奖励和未来估计奖励更新价值函数,提供更平衡和有效的学习过程。

TD(λ) 和资格迹一起为在强化学习中学习最优策略提供了一个强大的框架。

在这里插入图片描述

[1] 封面图片来自于https://www.researchgate.net/publication/343415080_Adaptive_Bitrate_Video_Streaming_for_Wireless_nodes_A_Survey
[2]RL Course by David Silver - Lecture 4: Model-Free Prediction
[3] http://incompleteideas.net/book/the-book-2nd.html
[4] https://zhuanlan.zhihu.com/p/500866739

Q-learning和SARSA都属于时序差分强化学习方法,而不是蒙特卡洛强化学习方法。 时序差分强化学习是一种结合了动态规划和蒙特卡洛方法的强化学习方法。它通过使用经验数据进行增量式的更新,同时利用了当前和未来的估计值来逼近最优值函数。 具体来说,Q-learning和SARSA都是基于Q值函数的时序差分强化学习算法。 1. Q-learning:Q-learning是一种基于动态规划的无模型强化学习算法。它使用了时序差分(TD)方法,通过不断迭代更新Q值函数的估计值,使其逼近最优的Q值。Q-learning算法通过将当前状态和动作的估计值与下一个状态和动作的最大估计值相结合,来更新Q值函数的估计值。 2. SARSA:SARSA是一种基于时序差分的强化学习算法,也是一种模型-free的强化学习算法。SARSA算法使用了时序差分的方法,通过不断迭代更新Q值函数的估计值。与Q-learning不同的是,SARSA算法采用了一个策略(Policy)来决定下一个动作,并在更新Q值时使用下一个动作的估计值。 时序差分强化学习方法与蒙特卡洛强化学习方法相比,具有更高的效率和更好的适应性。它可以在每个时间步骤中进行更新,不需要等到任务结束后才进行更新,从而更快地收敛到最优策略。而蒙特卡洛强化学习方法则需要等到任务结束后才能获取完整的回报信息,进行全局更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值