dmrookie's Studio.

强化学习4.Model-based 方法

字数统计: 6.8k阅读时长: 25 min
2026/08/05
loading

前两篇讲的 value-based 和 policy gradient 都属于 model-free:它们从不试图理解环境本身,只是在大量试错中总结"什么状态下做什么好"。代价是样本效率极低——DQN 打 Atari 需要上亿帧交互(相当于人类连续玩 40 天),PPO 学会一个简单的机器人步态也要百万级交互。

而人类学开车不需要撞一万次。原因很清楚:我们脑子里有一个世界模型。看到前方有个坑,不用真的开过去才知道会颠,可以先在想象里推演一遍。

这就是 Model-based RL 的全部动机:

与其在真实世界里反复试错,不如先学出环境的动力学 T^,R^\hat{T}, \hat{R},然后在模型里"想象"和"规划"。

它是三条路线中样本效率最高的一条,也是最难做对的一条——因为它引入了一个 model-free 方法完全不存在的新问题:模型误差。这一篇讲清这套方法怎么做、卡在哪,最后给整个系列收个尾。

什么是 model-based

定义与两种用法

所谓"模型",就是对环境动力学的一个可查询的近似:

T^(s′∣s,a)≈T(s′∣s,a),R^(s,a)≈R(s,a)\hat{T}(s' \mid s, a) \approx T(s' \mid s,a), \qquad \hat{R}(s,a) \approx R(s,a)

有了它,我们就可以在不接触真实环境的情况下问"如果我这么做会怎样"。模型有两种截然不同的用法,Sutton 把它们叫做:

用法 名称 做法 代表
决策时规划 decision-time planning 每次要行动时,在模型里前向搜索,当场算出这一步该做什么 MCTS、MPC
后台规划 background planning 用模型生成想象数据,喂给 model-free 算法去更新策略/价值 Dyna、MBPO、Dreamer

前者把模型当"沙盘",临场推演;后者把模型当"数据生成器",离线练兵。两者可以叠加(AlphaZero 就同时做了两件事)。

为什么样本效率高

一个直观的解释:model-free 方法从一条经验 (s,a,r,s′)(s,a,r,s') 里只提取了一个标量信号(TD error 或者回报权重)。而学模型时,同样一条经验提供的是整个 s′s' 向量的监督信号——信息量高出几个数量级。

更重要的是,模型是与任务无关的:环境动力学不随奖励函数改变。所以同一个模型可以复用到新任务上(换奖励函数重新规划即可),而 QQ 函数和策略都是任务专用的。这是 model-based 方法在多任务、迁移场景下的巨大优势。

典型的量级对比(连续控制基准任务):

三类方法的样本效率对比

代价则是计算量:规划和想象都要反复前向模型,AlphaZero 每步要跑几百次 MCTS 模拟。这是一个"用算力换样本"的交易——当真实交互很贵(真机、临床、金融)而算力便宜时,这笔交易非常划算。


有了模型怎么用:规划

先假设模型是完美的(比如棋类游戏,规则本身就是精确模型),只讨论怎么用。

已知模型的经典解法

如果状态空间小,第一篇讲过的动态规划就够了:价值迭代、策略迭代,直接把贝尔曼最优方程迭代到收敛。状态空间大时行不通,于是有了下面的近似方法。

轨迹优化与 MPC

在连续控制里,最常用的框架是 模型预测控制(MPC):

1
2
3
4
5
每一个时间步:
1. 在模型里向前推演 H 步(H 是规划视野,如 20~50)
2. 搜索一段动作序列 (a_t, ..., a_{t+H-1}),使预测累积奖励最大
3. 只执行第一个动作 a_t
4. 观察真实的 s_{t+1},扔掉剩下的规划,回到第 1 步重新算

第 3、4 步是 MPC 的精髓:只执行第一步,然后重新规划。这样即使模型有误差,每一步都会被真实观测"纠偏",误差不会一直累积下去。这是对抗模型误差最有效、最朴素的机制。

具体怎么搜索那段动作序列?

方法 做法 特点
随机打靶(random shooting) 随机采 1000 条动作序列,选预测回报最高的 极简单,维度高时效率低
CEM(交叉熵方法) 采样 → 保留最好的 10% → 用它们拟合新的高斯分布 → 重新采样,迭代几轮 实践中最常用
MPPI 按回报做指数加权平均,而非硬性截断 更平滑
iLQR / DDP 对动力学做局部线性化、对奖励做二次近似,解析求解 高效但需要可微模型、易陷局部解

CEM 的实现只有十几行,效果却出奇地好:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def cem_plan(model, s0, horizon=25, n_samples=500, n_elite=50, n_iters=5):
mu = torch.zeros(horizon, action_dim) # 动作序列分布的均值
sigma = torch.ones(horizon, action_dim)

for _ in range(n_iters):
acts = mu + sigma * torch.randn(n_samples, horizon, action_dim)
acts = acts.clamp(-1, 1)

returns = torch.zeros(n_samples) # 在模型里推演,算预测回报
s = s0.repeat(n_samples, 1)
for t in range(horizon):
s, r = model(s, acts[:, t])
returns += r

elite = acts[returns.topk(n_elite).indices] # 保留精英
mu, sigma = elite.mean(dim=0), elite.std(dim=0) # 重新拟合分布

return mu[0] # MPC:只返回第一个动作

MCTS:搜索与神经网络的结合

离散动作、树状结构的问题(棋类)用 蒙特卡洛树搜索(MCTS)。它的四个步骤循环:

1
2
3
4
5
6
7
8
9
10
11
12
     根节点 = 当前局面
│
┌──────────┴──────────┐
│ 1. 选择 Selection │ 沿着已有的树往下走,用 UCT 公式平衡
│ │ "已知的好" 与 "还没试过的"
│ 2. 扩展 Expansion │ 走到叶子,新建子节点
│ │
│ 3. 模拟 Simulation │ 从新节点估计价值(随机快速走到底
│ │ 或直接用价值网络打分)
│ 4. 回传 Backup │ 把结果沿路径往上更新所有节点的 Q 和 N
└─────────────────────┘
重复几百~几千次,最后选访问次数最多的动作

MCTS 的四步循环

第 1 步的选择规则是核心。经典 UCT:

a=arg⁡max⁡a[Q(s,a)+cln⁡N(s)N(s,a)]a = \arg\max_a \left[ Q(s,a) + c \sqrt{\frac{\ln N(s)}{N(s,a)}} \right]

前一项是利用(当前估计的价值),后一项是探索(访问次数少的加分)。AlphaGo/AlphaZero 用的是 PUCT,把策略网络的先验 P(s,a)P(s,a) 加进来指导搜索:

a=arg⁡max⁡a[Q(s,a)+c P(s,a)N(s)1+N(s,a)]a = \arg\max_a \left[ Q(s,a) + c \, P(s,a) \frac{\sqrt{N(s)}}{1 + N(s,a)} \right]

AlphaZero 的整体设计非常值得体会,它把三样东西拧在了一起:

  • 模型:围棋规则就是完美模型,免费获得
  • 神经网络 fθ(s)=(p,v)f_\theta(s) = (p, v):策略头 pp 给搜索提供先验(剪枝,避免宽度爆炸),价值头 vv 替代随机模拟到底(截断深度,避免深度爆炸)
  • 自我对弈:MCTS 搜索出的动作分布 πMCTS\pi_{\text{MCTS}} 比网络原始输出 pp 更强(搜索本身就是一次策略改进),于是把 πMCTS\pi_{\text{MCTS}} 当作标签去训练网络。网络变强 → 搜索变强 → 标签更好 → 网络更强

这是全书最漂亮的思想之一:把规划器当作策略改进算子(policy improvement operator),用搜索的结果去监督学习网络。 它把 RL 问题转化成了一个不断自我提升的监督学习循环。

MuZero:只学"对决策有用"的模型

AlphaZero 依赖规则已知。MuZero 把这个限制去掉了,做法非常有启发性:它学一个模型,但完全不预测观测。三个网络:

表示:  hθ(o1:t)→zt动力学:  gθ(zt,at)→(zt+1,r^t)预测:  fθ(zt)→(p^t,v^t)\text{表示:} \; h_\theta(o_{1:t}) \to z_t \qquad \text{动力学:} \; g_\theta(z_t, a_t) \to (z_{t+1}, \hat{r}_t) \qquad \text{预测:} \; f_\theta(z_t) \to (\hat{p}_t, \hat{v}_t)

隐状态 zz 不需要能重建画面,它只需要满足一件事:在它上面展开搜索时,预测出来的奖励、价值、策略和真实的一致。训练损失就是这三项的预测误差。

这叫 价值等价(value equivalence) 原则:模型不必是环境的忠实复制品,只要在"对决策有用"的量上与环境等价就够了。

为什么这很重要?想想用像素级模型玩 Atari:为了预测下一帧,模型要花巨大容量去建模背景纹理、云朵飘动这些与决策完全无关的细节,而真正关键的几个像素(球的位置)反而被平均掉了。MuZero 直接跳过了这个陷阱。"不要试图预测一切,只预测有用的东西"——这可能是整个 model-based 领域最重要的教训。


怎么学模型

现在讨论模型本身怎么来。表面上这是个标准的监督学习问题,实际上有几个非常棘手的坑。

朴素做法与复合误差

最直接的做法:把交互数据当训练集,学一个一步预测器

min⁡ψ  E(s,a,s′)∼D[∥f^ψ(s,a)−s′∥2]\min_{\psi} \; \mathbb{E}_{(s,a,s') \sim \mathcal{D}} \left[ \left\| \hat{f}_\psi(s,a) - s' \right\|^2 \right]

(实践中常用预测差值 s′−ss' - s 而不是 s′s' 本身,因为差值的量级小、更好学。)

问题在于:训练时是一步预测,使用时却要多步 rollout。第 1 步的预测误差成为第 2 步的输入,模型在这个"略微失真"的输入上从未训练过,误差被放大,再传给第 3 步……误差随步数指数级放大,这就是 复合误差(compounding error)。

1
2
3
4
5
6
真实轨迹:  s0 ──→ s1 ──→ s2 ──→ s3 ──→ s4
· · · ·
模型轨迹: s0 ──→ ŝ1 ─→ ŝ2 ──→ ŝ3 ────→ ŝ4
误差ε ~2ε ~4ε ~8ε
↑
规划器会专门去利用这里的错误

更糟的是最后一句:规划器/策略会主动去攻击模型的错误。如果模型在某个状态错误地预测"这里能拿 100 分",优化器会兴高采烈地找到这条路径并疯狂利用它。这被称为 model exploitation,是 model-based RL 失败的头号原因。它和第三篇 DDPG 里"策略去攻击 critic 的高估"是同一类病症。

复合误差随想象步数指数放大

应对一:显式建模不确定性

既然模型必然有错,那至少要知道自己哪里不确定。两条主流做法:

  • 高斯过程(PILCO):用 GP 建模动力学,天然给出预测的均值和方差,然后把不确定性解析地传播到多步预测里,在"期望回报"上求梯度。样本效率惊人(几十次交互就能学会倒立摆),但 GP 无法扩展到高维和大数据。
  • 概率集成(PETS):训 KK 个(如 5 个)神经网络,每个输出高斯分布的均值和方差,初始化和数据顺序不同。规划时,每条候选轨迹在随机选取的模型上推演——如果各个模型意见一致(认知不确定性小),说明这个区域数据充足可信;如果分歧很大,那么该轨迹的平均回报会自动被拉低。这就实现了自动的保守规划。

区分两种不确定性对理解这套方法很重要:

类型 来源 能否消除 建模方式
偶然不确定性(aleatoric) 环境本身随机 不能 网络输出方差
认知不确定性(epistemic) 数据不够,模型不知道 能(多采数据) 集成 / 贝叶斯

model exploitation 攻击的正是认知不确定性大的区域,所以集成(而不只是输出方差)是必需的。

应对二:在隐空间里建模

高维观测(图像)直接做像素预测既贵又没必要。隐空间世界模型的思路是:先学一个编码器把观测压成低维隐变量 zz,再在 zz 空间里学动力学。

World Models(2018) 的三件套非常清晰:

1
2
3
V (VAE):   图像 o  ──编码──→  低维隐向量 z(如 32 维)
M (RNN): (z_t, a_t) ──MDN-RNN──→ 预测 z_{t+1} 的分布
C (控制器): (z_t, h_t) ──小型线性策略──→ a_t

有意思的是,它训练策略时完全在"梦里"进行(不接触真实环境),学完直接迁移回真实环境就能用。控制器只有几百个参数,用进化算法(CMA-ES)就能优化。

Dreamer 系列 把这套做法工程化到了 SOTA 水平,几个关键设计:

  • RSSM:隐状态同时包含确定性部分(RNN 隐状态)和随机部分(隐变量),前者负责长程记忆,后者负责建模随机性
  • 在隐空间中想象训练:从回放池里的真实状态编码出 zz,然后在隐空间里 rollout 15~20 步,用这些想象轨迹训练 actor 和 critic(完全不需要解码回图像,极快)
  • 解析梯度:因为整个想象过程可微,策略梯度可以直接穿过动力学模型回传,比第三篇的 log-derivative 估计方差低得多
  • 重建作为辅助任务:Dreamer 仍然重建图像(作为表示学习的信号),但 DreamerV3 加入了大量归一化技巧,使得一套超参能横跨 150 多个差异极大的任务

Dreamer 的成绩说明了一件事:在隐空间里做梦,是当前把样本效率推到极限的最有效路径。

应对三:让规划本身可微

还有一类思路:不把"学模型"和"规划"分成两步,而是把规划过程本身写成神经网络的一部分,端到端训练。

  • VIN(Value Iteration Network):注意到网格世界里的价值迭代,其实等价于"卷积 + max-pooling"的反复迭代。于是把 KK 轮价值迭代实现为一个 KK 层的 CNN,整个"规划器"就是可微的,直接用最终决策的损失去训练。
  • Predictron / VPN:不要求模型能预测状态,只要求它多步展开后预测的价值和奖励是准的——和 MuZero 的价值等价思想一脉相承。

这些方法的共同哲学是:模型的训练目标应该对齐它的使用目的。用监督学习的一步预测误差去训模型,然后指望它在多步规划里表现好,这本身就是目标错配。


与 model-free 的结合

纯 model-based 的渐近性能通常不如 model-free(因为模型误差最终会成为瓶颈),而 model-free 的样本效率又太低。现代方法几乎都是两者的混合。

Dyna 风格:模型当数据增强

Dyna 是最经典的框架,Sutton 在 1991 年就提出了:

1
2
3
4
5
循环:
1. 与真实环境交互一步,存入真实数据池 D_real
2. 用 D_real 更新模型 T̂, R̂ ← model learning
3. 用真实经验做一次 model-free 更新 ← direct RL
4. 重复 K 次:从模型里采样想象经验,做 model-free 更新 ← planning

第 4 步是关键:一次真实交互可以配上 KK 次(如 20 次)想象更新,样本效率直接提升一个量级。本质上,模型是一个数据增强器。

Dyna / MBPO 的循环

MBPO 是 Dyna 的现代版,两个关键设计正好对应前面讲的两个坑:

  1. 短 rollout:想象轨迹从回放池中的真实状态出发,只走 1~5 步就停。因为复合误差是指数增长的,短 rollout 把误差控制在可接受范围内。论文里有个理论结果:性能改进的下界取决于"模型误差 × rollout 长度",于是存在一个最优长度。
  2. 概率集成模型 + SAC:用 PETS 式的集成建模不确定性,用 SAC(第三篇)作为 model-free 部分消费想象数据。

MBPO 在 MuJoCo 上用大约 1/10 的样本达到了 SAC 的渐近性能,是这条路线上最实用的算法之一。

规划作为策略改进算子

前面讲 AlphaZero 时提过这个思想,它可以推广:

1
2
3
网络给出策略 π_θ  ──→  规划器(MCTS/CEM)在模型里搜索  ──→  更好的策略 π_plan
↑ │
└──────────── 用 π_plan 作为标签监督训练 ←────────────────┘

这叫 Expert Iteration(ExIt):搜索扮演"专家"的角色,网络通过模仿这个专家来提升,提升后的网络又让搜索变得更强。Dreamer 里的"想象训练"、MuZero 的自我对弈都可以放进这个框架理解。

把规划结果当特征

还有一类更"软"的结合方式:不完全信任模型,只把它的输出当作额外信息。

  • I2A(Imagination-Augmented Agents):用模型 rollout 出几条想象轨迹,把它们编码成向量,和真实观测一起喂给策略网络。策略自己学着判断该信任想象多少——模型不准时它可以学着忽略。这个设计对模型误差非常鲁棒。
  • VPN(Value Prediction Network):把模型的多步价值预测作为规划信号,但不要求状态预测准确。

离线设定下的悲观主义

在 Offline RL 里,model-based 方法反而有独特优势:可以用模型生成数据集之外的状态,缓解覆盖不足。但 model exploitation 的风险也更大(没有真实交互来纠偏)。主流方案是悲观:

  • MOPO / MOReL:在奖励里减去一个与模型不确定性成正比的惩罚项 r~=r^−λ u(s,a)\tilde{r} = \hat{r} - \lambda \, u(s,a)。这样策略会自动避开模型没把握的区域,等价于优化真实回报的一个下界。

注意这和第二篇的 CQL、第三篇 TD3 的双 critic 取最小是同一个思想的不同实现:面对不确定,就假设最坏。这条原则贯穿了整个深度 RL 的稳定性工程。


三条路线的最终对比

维度 Value-based Policy gradient Model-based
学什么 Q(s,a)Q(s,a) πθ(a∣s)\pi_\theta(a \mid s) T^,R^\hat{T}, \hat{R}(+ 策略/价值)
样本效率 中 低(on-policy)/ 中(SAC) 高
渐近性能 高 高 受模型误差限制
决策时计算量 极低(一次前向) 极低 高(要搜索/推演)
连续动作 困难 天然支持 支持
稳定性风险 过估计发散 高方差、策略崩塌 model exploitation
任务迁移 差(QQ 绑定任务) 差 好(动力学与奖励无关)
可解释性 中(能看 QQ 值) 低 高(能看想象的轨迹)
典型代表 Rainbow、R2D2 PPO、SAC AlphaZero、MuZero、Dreamer

三条路线的取舍

选型建议:

  • 离散动作、有大量交互预算、要冲榜 → Rainbow 系
  • 连续控制、能大量仿真 → SAC(最省心);需要严格稳定或超大规模并行 → PPO
  • 真机交互昂贵、仿真极慢 → MBPO / Dreamer
  • 有精确模型(棋类、组合优化、调度) → MCTS + 神经网络
  • 只有历史数据、不能交互 → Offline RL(CQL / IQL / MOPO)
  • 需要一个模型服务多个任务 → model-based

系列收尾:那些还没解决的问题

四篇文章覆盖了深度 RL 的主干,但真实世界里还有一堆硬骨头。这里列出来,作为进一步阅读的地图。

探索:稀疏奖励下的死局

前面所有方法都假设"随机试探迟早能碰到奖励"。但在 Montezuma's Revenge 这类游戏里,需要精确执行几十个动作才能拿到第一个奖励,随机探索的成功概率是天文数字的倒数。主流思路是内在动机(intrinsic motivation):给"新奇"本身发奖励。

方法 新奇性怎么度量
Count-based 状态访问次数的倒数(高维时用哈希或密度模型近似)
ICM 用一个前向模型的预测误差当奖励——"预测不准说明没见过"
RND 用一个随机固定网络作为目标,预测它的误差当奖励(巧妙避开了随机噪声陷阱)
Go-Explore 显式记住去过的有趣状态,先"返回"再从那里探索

注意 ICM 有个著名的失效模式:噪声电视(noisy TV)问题——如果环境里有个永远预测不准的随机噪声源,智能体会痴迷地盯着它看。RND 的设计正是为了绕开这一点。

部分可观测与记忆

真实世界几乎从不满足马尔可夫性(第一篇讲过)。处理 POMDP 的办法:

  • 拼接历史帧(DQN 的做法,只能处理很短的依赖)
  • 循环网络维护隐状态(R2D2、Dreamer 的 RSSM)
  • 显式维护对隐状态的信念分布(理论优雅但难扩展)
  • Transformer 处理长序列(Decision Transformer 系列,把 RL 变成序列建模问题)

泛化、迁移与元学习

一个在训练关卡上表现完美的智能体,换个随机种子或换一张地图往往就崩了。RL 的过拟合比监督学习更隐蔽(第一篇的偏差-过拟合权衡)。研究方向包括:程序化生成的训练环境(Procgen)、数据增强、域随机化(sim-to-real 的标准做法)、以及元学习(学会快速适应新任务)。

多智能体

多个智能体同时学习时,每个智能体眼中的"环境"包含了其他正在变化的智能体,平稳性假设直接失效。这带来了博弈论层面的新问题(纳什均衡、合作与竞争、通信协议的涌现),代表工作有 AlphaStar、OpenAI Five。

评测与复现性

这是一个很实际的忠告。深度 RL 的实验方差大得离谱:同一份代码、同一组超参、只换随机种子,最终性能可能相差数倍。所以:

  • 至少跑 5~10 个种子,报告均值和置信区间(而不是最好的那条曲线)
  • 注意实现细节的影响可能超过算法本身(第三篇讲过 PPO 的例子)
  • 用标准化的基准和评测协议(Atari 100k、MuJoCo、Procgen、D4RL)

现实落地的挑战

原综述最后一章讨论了把深度 RL 用到真实系统时的几个核心困难,都很中肯:

  1. 奖励设计(reward shaping):写出一个真正对齐意图的奖励函数极其困难。奖励作弊无处不在——赛艇游戏里刷分的智能体宁愿在原地转圈撞补给包也不去终点。RLHF 里的 KL 惩罚(第三篇)就是在对抗这个问题。
  2. 安全探索:真机不能通过"摔坏一千次"来学习。需要安全约束、可恢复性保证。
  3. Sim-to-real gap:仿真里学会的策略搬到真机上失效。域随机化、系统辨识、以及本篇的 model-based 方法都是应对手段。
  4. 数据效率与冷启动:这也是 offline RL 和 model-based RL 最有商业价值的地方。

和神经科学的呼应

最后一个有趣的视角:RL 的很多概念与大脑的机制惊人吻合。多巴胺神经元的放电模式被发现编码的正是 TD error(Schultz 等人的经典实验);大脑基底神经节的功能类似 model-free 的习惯性学习,而前额叶皮层与海马体的"心理模拟"更像 model-based 的规划。人类在熟练后从"深思熟虑"切换到"下意识反应",很像从 model-based 逐渐 amortize 到 model-free 的过程。


全系列一图流

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
┌──────────────────────────────────────────────────────────────────────┐
│ 强化学习问题:MDP │
│ (S, A, T, R, γ) ← 第一篇 │
│ 目标:max E[Σ γ^t r_t] │
│ 核心工具:贝尔曼方程 + 价值函数 │
└───────────────────────────────┬──────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
┌───────▼─────────┐ ┌─────────▼─────────┐ ┌─────────▼─────────┐
│ ① Value-based │ │ ② Policy gradient │ │ ③ Model-based │
│ (第二篇) │ │ (第三篇) │ │ (第四篇) │
├─────────────────┤ ├───────────────────┤ ├───────────────────┤
│ Q-learning │ │ REINFORCE │ │ Dyna │
│ ↓ 函数逼近 │ │ ↓ 基线/优势 │ │ ↓ 深度模型 │
│ DQN │ │ A2C/A3C │ │ PETS (集成+CEM) │
│ ↓ 修过估计 │ │ ↓ 限制步长 │ │ MBPO (短rollout) │
│ Double/Dueling │ │ TRPO → PPO │ │ World Models │
│ ↓ 采样/多步 │ │ ↓ 连续+off-policy│ │ ↓ 隐空间想象 │
│ PER / n-step │ │ DDPG → TD3 → SAC │ │ Dreamer V1-V3 │
│ ↓ 分布 │ │ ↓ 大模型 │ │ MCTS + 网络 │
│ C51 → Rainbow │ │ RLHF (PPO/GRPO) │ │ AlphaZero→MuZero │
└────────┬────────┘ └─────────┬─────────┘ └─────────┬─────────┘
│ │ │
└──────────┬───────────┴───────────┬───────────┘
│ │
Actor-Critic 是 ①②的融合 AlphaZero/Dreamer 是 ①②③的融合
│ │
└───────────┬───────────┘
│
┌─────────────────▼──────────────────┐
│ 贯穿全系列的三条主线: │
│ · 偏差-方差权衡(γ, n, λ, 模型误差)│
│ · 面对不确定就悲观(Double/min/MOPO)│
│ · 目标要对齐用途(价值等价/GAE/clip)│
└────────────────────────────────────┘

小结

  • Model-based RL 的核心是学出 T^,R^\hat{T}, \hat{R},用法有两种:决策时规划(MCTS、MPC)和后台规划(Dyna 式生成想象数据)。它样本效率最高,且模型与奖励无关因而易于迁移,代价是决策时计算量大。
  • 有模型时的规划工具:连续动作用 MPC + CEM(只执行第一步、每步重新规划,天然抗模型误差),离散/树结构用 MCTS。AlphaZero 的关键洞察是把搜索当作策略改进算子,用搜索结果监督网络,形成自我提升循环。
  • 学模型的头号敌人是复合误差与model exploitation(优化器专挑模型的错误去利用)。三类解药:显式建模不确定性并保守规划(PETS、MOPO)、缩短 rollout(MBPO)、以及只学"对决策有用的模型"(MuZero 的价值等价、Dreamer 的隐空间想象)。
  • 一条贯穿整个深度 RL 的原则:面对不确定,就假设最坏。Double DQN 的解耦、TD3 的双 critic 取最小、CQL 压低未见动作、MOPO 的不确定性惩罚,全是同一思想的不同外衣。
  • 三条路线不是竞争关系而是可组合的模块。Actor-Critic 融合了前两条,AlphaZero 与 Dreamer 三条全占。选型的真正依据是:动作空间形态、交互成本、算力预算、是否需要迁移。

到这里,这个四篇的系列就结束了。回头看,强化学习的全部工程史几乎都在做同一件事:在信息极其稀缺(只有标量奖励)的条件下,尽可能榨取每一次交互的价值,同时不让自己被自己的估计误差骗到。

延伸阅读

  • Francois-Lavet, Henderson, Islam, Bellemare, Pineau. An Introduction to Deep Reinforcement Learning. arXiv:1811.12560
  • Sutton & Barto. Reinforcement Learning: An Introduction (2nd ed.) —— 第 8 章专门讲 model-based 与 Dyna
  • Moerland, Broekens, Jonker. Model-based Reinforcement Learning: A Survey. arXiv:2006.16712
  • Silver et al. Mastering the game of Go without human knowledge (AlphaGo Zero);Schrittwieser et al. MuZero
  • Hafner et al. Dream to Control / DreamerV3
  • Janner et al. When to Trust Your Model: Model-Based Policy Optimization (MBPO)
  • OpenAI Spinning Up in Deep RL —— 最好的代码入门
CATALOG
  1. 1. 什么是 model-based
    1. 1.1. 定义与两种用法
    2. 1.2. 为什么样本效率高
  2. 2. 有了模型怎么用:规划
    1. 2.1. 已知模型的经典解法
    2. 2.2. 轨迹优化与 MPC
    3. 2.3. MCTS:搜索与神经网络的结合
    4. 2.4. MuZero:只学"对决策有用"的模型
  3. 3. 怎么学模型
    1. 3.1. 朴素做法与复合误差
    2. 3.2. 应对一:显式建模不确定性
    3. 3.3. 应对二:在隐空间里建模
    4. 3.4. 应对三:让规划本身可微
  4. 4. 与 model-free 的结合
    1. 4.1. Dyna 风格:模型当数据增强
    2. 4.2. 规划作为策略改进算子
    3. 4.3. 把规划结果当特征
    4. 4.4. 离线设定下的悲观主义
  5. 5. 三条路线的最终对比
  6. 6. 系列收尾:那些还没解决的问题
    1. 6.1. 探索:稀疏奖励下的死局
    2. 6.2. 部分可观测与记忆
    3. 6.3. 泛化、迁移与元学习
    4. 6.4. 多智能体
    5. 6.5. 评测与复现性
    6. 6.6. 现实落地的挑战
    7. 6.7. 和神经科学的呼应
  7. 7. 全系列一图流
  8. 8. 小结
  9. 9. 延伸阅读