第二篇在模型已知时用动态规划精确求解了价值函数。但现实中转移概率 p(s′∣s,a) 和奖励分布通常未知,智能体只能通过一条条交互样本 (St,At,Rt,St+1) 去学习。
从这里开始进入无模型(model-free) 方法。本篇先处理最简单的情形——被动强化学习。
一、什么是被动强化学习?#
被动强化学习的设定是:策略 π 已经给定并固定不变,学习的目标不是改进策略,而是评价它——估计该策略下的 Vπ(s) 或 Qπ(s,a)。
| 被动强化学习 |
|---|
| 策略 | 预先给定,固定 |
| 任务 | 策略评价(policy evaluation) |
| 要学的量 | Vπ(s) 或 Qπ(s,a) |
| 是否需要模型 P,R | 不需要 |
| 典型场景 | 评估一个人工规则、评估已有控制器,作为策略改进前的基础 |
关键:被动 RL 里不存在”探索与利用”的矛盾。 策略已经定死,智能体不需要自己决定采集什么数据——它只是照着 π 走,从走出来的轨迹里估计价值。这个矛盾要到下一篇主动 RL 才会出现。
价值是回报的期望 Vπ(s)=Eπ[Gt∣St=s],但模型未知,没法像第二篇那样解析地算它。既然是期望,最自然的办法就是用样本平均去近似。
二、蒙特卡洛法:等一整个回合结束#
蒙特卡洛(Monte Carlo, MC) 方法的思路最直接:从状态 s 出发,按固定策略一直走到回合结束,得到一条完整轨迹,就能算出真实的采样回报 Gt。多走几次,用这些 Gt 的平均作为 Vπ(s) 的估计。
V(s)≈多条轨迹上 Gt 的平均.写成增量更新的形式(每来一个新样本 Gt 就修正一次旧估计):
V(St)←V(St)+α[Gt−V(St)],其中 α∈(0,1] 是学习率,控制每个样本对旧估计的影响。
举个直观的例子:状态 s 出发采样了三条轨迹,回报分别是 G=12, 5, 9,那么 Vπ(s)≈(12+5+9)/3≈8.7。
MC 的特点:
- 不需要环境模型,也不使用任何价值估计来构造目标;
- 用的是真实完整回报 Gt,因此估计是无偏的;
- 但必须等回合结束才能更新,且完整回报的方差较大。
三、时序差分 TD(0):只等一步#
蒙特卡洛必须等回合结束才知道 Gt,这在长回合或持续任务中很不方便。时序差分(Temporal-Difference, TD) 的核心技巧是:用第一篇的回报递推 Gt=Rt+γGt+1,把还没发生的 Gt+1 替换成下一状态当前的价值估计 V(St+1):
Gt=Rt+γGt+1 ≈ Rt+γV(St+1).于是不必等回合结束,走一步拿到 (Rt,St+1) 就能构造更新目标:
YtTD=Rt+γV(St+1),V(St)←V(St)+α[TD 误差 δtRt+γV(St+1)−V(St)]如果 St+1 是终止状态,目标就退化为 YtTD=Rt,不再加未来价值项。
TD 误差的含义#
括号内的量称为 TD 误差:
δt=Rt+γV(St+1)−V(St).它衡量”这一步的实际结果”与”原来的价值预期”之间的差距:
- δt>0:实际比预期好,抬高 V(St);
- δt<0:实际比预期差,压低 V(St)。
因为 TD 用到了下一状态的价值估计 V(St+1),它同样带有第二篇提到的自举(bootstrapping) 性质——用估计更新估计。
四、蒙特卡洛 vs TD(0)#
两者都不需要模型,区别在于用什么作为更新目标、以及要不要等回合结束:
| 对比项 | 蒙特卡洛 (MC) | 时序差分 TD(0) |
|---|
| 更新目标 | 真实完整回报 Gt | 一步自举估计 Rt+γV(St+1) |
| 需要等回合结束吗 | 需要 | 不需要,每步可更新 |
| 是否需要模型 P,R | 不需要 | 不需要 |
| 是否自举 | 否 | 是 |
| 偏差 / 方差 | 无偏,但方差大 | 有偏,但方差小 |
一个统一的视角:MC 和 TD 的更新都是
V(St)←V(St)+α[目标−V(St)],只是”目标”分别取真实回报 Gt 和自举估计 Rt+γV(St+1)。这个”目标 − 当前估计”的模式会在下一篇的控制算法里继续出现。
五、小结与下一步#
被动强化学习解决了”模型未知时如何评价一个固定策略”的问题:
固定策略 π⟶采样轨迹⟶{MC:用完整回报 GtTD:用一步自举 Rt+γV(St+1)⟶V^π.但被动 RL 有一个根本局限:它只能告诉你”当前策略值多少分”,不能告诉你”该怎么改进策略”。 如果这个策略本身很差,评价得再准也没用。
要真正学到好策略,就必须让策略从固定变成”边交互边改进”——这就进入下一篇主动强化学习:策略不再固定,探索与利用的矛盾也随之登场,并由此得到 SARSA 与 Q-learning 两种经典算法。