1226 字
6 分钟
强化学习(三):被动强化学习与策略评价

第二篇在模型已知时用动态规划精确求解了价值函数。但现实中转移概率 p(s′∣s,a)p(s'\mid s,a) 和奖励分布通常未知,智能体只能通过一条条交互样本 (St,At,Rt,St+1)(S_t,A_t,R_t,S_{t+1}) 去学习。

从这里开始进入无模型(model-free) 方法。本篇先处理最简单的情形——被动强化学习。

一、什么是被动强化学习?#

被动强化学习的设定是:策略 π\pi 已经给定并固定不变,学习的目标不是改进策略,而是评价它——估计该策略下的 Vπ(s)V^\pi(s) 或 Qπ(s,a)Q^\pi(s,a)。

被动强化学习
策略预先给定,固定
任务策略评价(policy evaluation)
要学的量Vπ(s)V^\pi(s) 或 Qπ(s,a)Q^\pi(s,a)
是否需要模型 P,RP,R不需要
典型场景评估一个人工规则、评估已有控制器,作为策略改进前的基础

关键:被动 RL 里不存在”探索与利用”的矛盾。 策略已经定死,智能体不需要自己决定采集什么数据——它只是照着 π\pi 走,从走出来的轨迹里估计价值。这个矛盾要到下一篇主动 RL 才会出现。

价值是回报的期望 Vπ(s)=Eπ[Gt∣St=s]V^\pi(s)=\mathbb{E}_\pi[G_t\mid S_t=s],但模型未知,没法像第二篇那样解析地算它。既然是期望,最自然的办法就是用样本平均去近似。

二、蒙特卡洛法:等一整个回合结束#

蒙特卡洛(Monte Carlo, MC) 方法的思路最直接:从状态 ss 出发,按固定策略一直走到回合结束,得到一条完整轨迹,就能算出真实的采样回报 GtG_t。多走几次,用这些 GtG_t 的平均作为 Vπ(s)V^\pi(s) 的估计。

V(s)≈多条轨迹上 Gt 的平均.V(s)\approx \text{多条轨迹上 } G_t \text{ 的平均}.

写成增量更新的形式(每来一个新样本 GtG_t 就修正一次旧估计):

V(St)←V(St)+α[Gt−V(St)],V(S_t)\leftarrow V(S_t)+\alpha\left[G_t-V(S_t)\right],

其中 α∈(0,1]\alpha\in(0,1] 是学习率,控制每个样本对旧估计的影响。

举个直观的例子:状态 ss 出发采样了三条轨迹,回报分别是 G=12, 5, 9G=12,\ 5,\ 9,那么 Vπ(s)≈(12+5+9)/3≈8.7V^\pi(s)\approx (12+5+9)/3\approx 8.7。

MC 的特点:

  • 不需要环境模型,也不使用任何价值估计来构造目标;
  • 用的是真实完整回报 GtG_t,因此估计是无偏的;
  • 但必须等回合结束才能更新,且完整回报的方差较大。

三、时序差分 TD(0):只等一步#

蒙特卡洛必须等回合结束才知道 GtG_t,这在长回合或持续任务中很不方便。时序差分(Temporal-Difference, TD) 的核心技巧是:用第一篇的回报递推 Gt=Rt+γGt+1G_t=R_t+\gamma G_{t+1},把还没发生的 Gt+1G_{t+1} 替换成下一状态当前的价值估计 V(St+1)V(S_{t+1}):

Gt=Rt+γGt+1 ≈ Rt+γV(St+1).G_t=R_t+\gamma G_{t+1}\ \approx\ R_t+\gamma V(S_{t+1}).

于是不必等回合结束,走一步拿到 (Rt,St+1)(R_t,S_{t+1}) 就能构造更新目标:

YtTD=Rt+γV(St+1),Y_t^{\mathrm{TD}}=R_t+\gamma V(S_{t+1}), V(St)←V(St)+α[Rt+γV(St+1)−V(St)⏟TD 误差 δt] \boxed{\,V(S_t)\leftarrow V(S_t)+\alpha\big[\underbrace{R_t+\gamma V(S_{t+1})-V(S_t)}_{\text{TD 误差 }\delta_t}\big]\,}

如果 St+1S_{t+1} 是终止状态,目标就退化为 YtTD=RtY_t^{\mathrm{TD}}=R_t,不再加未来价值项。

TD 误差的含义#

括号内的量称为 TD 误差:

δt=Rt+γV(St+1)−V(St).\delta_t=R_t+\gamma V(S_{t+1})-V(S_t).

它衡量”这一步的实际结果”与”原来的价值预期”之间的差距:

  • δt>0\delta_t>0:实际比预期好,抬高 V(St)V(S_t);
  • δt<0\delta_t<0:实际比预期差,压低 V(St)V(S_t)。

因为 TD 用到了下一状态的价值估计 V(St+1)V(S_{t+1}),它同样带有第二篇提到的自举(bootstrapping) 性质——用估计更新估计。

四、蒙特卡洛 vs TD(0)#

两者都不需要模型,区别在于用什么作为更新目标、以及要不要等回合结束:

对比项蒙特卡洛 (MC)时序差分 TD(0)
更新目标真实完整回报 GtG_t一步自举估计 Rt+γV(St+1)R_t+\gamma V(S_{t+1})
需要等回合结束吗需要不需要,每步可更新
是否需要模型 P,RP,R不需要不需要
是否自举否是
偏差 / 方差无偏,但方差大有偏,但方差小

一个统一的视角:MC 和 TD 的更新都是

V(St)←V(St)+α[目标−V(St)],V(S_t)\leftarrow V(S_t)+\alpha\left[\text{目标}-V(S_t)\right],

只是”目标”分别取真实回报 GtG_t 和自举估计 Rt+γV(St+1)R_t+\gamma V(S_{t+1})。这个”目标 − 当前估计”的模式会在下一篇的控制算法里继续出现。

五、小结与下一步#

被动强化学习解决了”模型未知时如何评价一个固定策略”的问题:

固定策略 π⟶采样轨迹⟶{MC:用完整回报 GtTD:用一步自举 Rt+γV(St+1)⟶V^π.\text{固定策略 }\pi \longrightarrow \text{采样轨迹} \longrightarrow \begin{cases} \text{MC:用完整回报 }G_t\\ \text{TD:用一步自举 }R_t+\gamma V(S_{t+1}) \end{cases} \longrightarrow \hat V^\pi.

但被动 RL 有一个根本局限:它只能告诉你”当前策略值多少分”,不能告诉你”该怎么改进策略”。 如果这个策略本身很差,评价得再准也没用。

要真正学到好策略,就必须让策略从固定变成”边交互边改进”——这就进入下一篇主动强化学习:策略不再固定,探索与利用的矛盾也随之登场,并由此得到 SARSA 与 Q-learning 两种经典算法。

强化学习(三):被动强化学习与策略评价
https://biscuit0613.github.io/posts/reinforcement-learning/rl_passiverl/
作者
Biscuit
发布于
2025-11-02
许可协议
CC BY-NC-SA 4.0
强化学习(二):价值函数与贝尔曼方程
强化学习(四):主动强化学习、SARSA 与 Q-learning