前言

本文不是一篇教程,而是一份学习笔记 + 个人思考。写这篇文章是因为我自己在学这个方向时,发现文献散落在各个会议和 arXiv 上,缺少一个从"小白视角"出发的宏观梳理。希望这篇文章能帮到同样在入门这个方向的朋友。

写这篇文章的契机是最近读了 Diffusion Planner、Flow-GRPO、AutoVLA、DriveVLA-W0 等几篇工作,发现它们虽然都在做同一件事——用强化学习改进生成式轨迹规划——但技术路线差异很大。更让我困惑的是,每篇论文都说自己是"第一个把 RL 和扩散/流结合的工作",到底谁在说真话?

后来读多了才发现:不是谁在撒谎,而是"结合"的方式可以非常不同。

所以这篇文章的目的就是:把"RL × 生成式轨迹"这盘棋的全局画出来,然后深入分析每一种下法的优缺点,最后给出我自己对这个方向的判断。


1. 快速基础回顾(写给小白)

1.1 生成式轨迹规划是什么?

传统的轨迹规划是"确定性的"——给定一个场景,输出一条轨迹。但这有问题:一个场景可能有多个"正确"的走法。

生成式模型(扩散/Flow)天生适合做轨迹规划,因为它们输出的是一个分布而不是一个点。

生成式轨迹规划的基本流程

关键点:

  • 训练:给模型看大量专家轨迹,让它学会"合理的轨迹长什么样"
  • 推理:从噪声出发,逐步去噪/积分,得到一条合理的轨迹
  • 多模态:多次采样可以得到多条不同的合理轨迹

1.2 强化学习的核心概念(写给纯小白)

如果你完全没接触过 RL,不要怕。这里用最直白的方式讲清楚。

RL 和 SFT 最本质的区别

SFT(监督学习)RL(强化学习)
训练数据给定的"标准答案"自己探索 + 奖励信号
目标模仿正确答案最大化累积奖励
反馈每个样本都有"对错"只有最终结果才有"好坏"
上限不超过训练数据质量可以超越专家

RL 的核心循环:

智能体(Agent)在环境(Environment)中做动作(Action),环境反馈奖励(Reward)和下一个状态(State),智能体根据奖励调整策略(Policy),让它下次做得更好。

简化成流程:

状态 sₜ → 智能体(策略 π)→ 动作 aₜ → 环境 → 奖励 rₜ + 新状态 sₜ₊₁ → 策略更新 → 循环

在轨迹规划里:

  • 智能体 = 扩散/Flow 模型
  • 动作 = 生成的轨迹(一系列 waypoint)
  • 环境 = 驾驶场景(道路、障碍物、交通参与者)
  • 奖励 = 安全?舒适?到达?规则遵守?

四组核心概念

如果你是 RL 新手,记住这四个概念就够了:

概念通俗理解轨迹规划中的对应
策略 π(a|s)在状态 s 下如何选择动作 a生成式模型:p_θ(轨迹|场景)
奖励 R(s,a)这一步走得好不好碰撞?舒适?到没到?
价值 V(s)当前状态"值多少钱"这个场景好不好开?
策略梯度好的动作概率↑ 坏的动作概率↓用奖励信号更新生成模型

核心公式(只需看一眼):

∇J(θ) = E[ R(τ) · ∇log p_θ(τ) ]

翻译成人话:好的轨迹要让生成概率变大,差的轨迹变小的方向更新模型参数。

为什么是 log-prob?因为我们要在保持生成多样性的前提下调整概率分布。这个 log-prob 在传统 RL 里很容易算(单步动作),但在扩散/Flow 的多步去噪过程中就变得极其麻烦——这会是后面的核心话题。


2. SFT 的天花板

2.1 为什么 SFT 不够?

目前的生成式轨迹模型,绝大多数是用 SFT(模仿学习/行为克隆) 训练的:

  • 收集大量专家驾驶数据
  • 让模型"照着学":最大化 log p_θ(轨迹_专家 | 场景)

这就是最直接的监督学习。看起来没什么问题?

实际上问题很大。

SFT vs RL 对比

2.2 Mode Averaging 效应

SFT 最隐蔽的问题是什么?我举一个具体例子:

在一个路口,有人说"左转"、有人说"右转"、没人说"直走"。SFT 学到的结果是——直走

因为 SFT 最小化的是 KL 散度 D_KL(专家数据分布 || 模型分布),它对"数据里没有的"做了平滑平均。模型在"左转和右转的高斯混合"中间找到了一个"都有点像又都不像"的均值点。

这就导致了 mode averaging(模式坍缩到平均)。

Mode Averaging 示意图:SFT 在两条不同路线上取平均,RL 保留多模态并选好的

看懂这张图了吗?左边有两个专家的路线——一个绕左边走、一个绕右边走。SFT 学完以后,对于中间的障碍物,它给出的轨迹是"直走",因为这是"左和右的平均"。但直走意味着撞上障碍物。

在实际驾驶中,这个效应非常危险。 所有专家都避开的障碍物,SFT 可能因为"左右需求平均"而直接对着障碍物开过去。

值得一提的是,这个问题的严重程度和数据的多样性有关:

数据情况SFT 表现问题严重度
所有专家走同一条路完美拟合★☆☆☆☆
几条常见路线 + 少数特殊走法主流路线完整,特殊走法被平滑★★★☆☆
每条路线各不同(多模态分布)全部平滑至均值→灾难★★★★★

扩散/Flow 模型在 SFT 下的 mode averaging 比传统回归模型更隐蔽,因为生成式模型本身是分布式的(输出是一个分布而不是一个点),SFT 只是"拉偏"了分布的方向,但生成的样本仍然有多样性。这种"假性多模态"让人误以为模型学会了所有走法,实际上模型只是在所有走法之间取了个平均。

这也是为什么一些论文报告 SFT 效果还不错——因为评测指标只看"最终位置误差"或"碰撞率",不看你走的路线是不是"合理"的。你可能撞不上障碍物(因为误差容限大),但走了一条所有人类司机都不会走的奇怪路线。

2.3 永远无法超越专家

这可能是 SFT 最本质的限制:模型学到的最高水平不会超过训练数据里的最高水平。

就像一个学棋的人只看棋谱,永远下不出棋谱上没有的妙手。但 RL 可以——它通过试错、奖励、改进,找到训练数据里根本不存在的更好策略。

2.4 那为什么偏偏是「扩散/Flow × RL」?

你可能想问:普通 RL(如 DQN、SAC)也能做轨迹规划,为什么要加上扩散/Flow 模型?

答案是:扩散/Flow 给 RL 带来了两个传统 RL 没有的优势。

优势 1:天然的多模态输出

传统 RL 策略(如高斯策略)输出的是"一个动作"——即使是随机策略,也是在某个均值附近采样。这意味着它在一个状态下只能产生"一种风格"的行为。

扩散/Flow 策略输出的是"一个分布"——它可以同时包含"左转"和"右转"两个模式。RL 只需要从这些模式中选出"好"的那个,而不是从零开始学会探索。

优势 2:先验分布 = 好的初始化

SFT 虽然有限制,但它给了模型一个非常好的初始化——模型已经知道"什么样的轨迹是合理的"。RL 要做的是"在这个基础上优化",而不是"从随机策略开始探索世界"。

这一点在自动驾驶中尤其重要。你不可能让一个 RL 智能体在真实道路上做数百万次试错(那会撞死所有人)。但有了 SFT 预训练 + 生成式模型的多模态先验,RL 只需要在"已经合理的轨迹"中做选择和改进。

打个比方:

SFT + RL on 扩散/Flow = 先让一个学生看所有教科书(SFT),再让他做真题、找老师批改(RL)。

传统 RL on 传统策略 = 让一个学生直接做真题,连公式都不知道。

后者在 Atari 游戏里可行(死一局重来一局),但在自动驾驶里不可行(撞一次车就完了)。

这就是为什么扩散/Flow × RL 在 2025-2026 年突然火起来——生成式模型提供了 RL 需要的安全探索空间


3. 四大范式全景

在研究清楚当前文献后,我把 “RL × 生成式轨迹” 的方法归纳为四个由浅入深的范式。

四大范式总览

范式一:推理时奖励引导(Training-Free Guidance)

核心思想:模型权重不动,只在采样过程中用 cost function 的梯度去"推"轨迹。

代表性工作:Diffusion Planner、CTG++

为什么最简单?

想象你已经训练好了一个扩散轨迹模型。现在你想让生成的轨迹"更安全"。传统做法是:重新收集安全数据 → 重新训练模型。

但这个范式的做法是:在推理时,每一步去噪时除了看模型预测,还额外计算一个安全 cost 函数对轨迹的梯度,然后把轨迹往 cost 减小的方向推一点。

推理时奖励引导

实现步骤:

  1. 训练一个扩散/Flow 轨迹生成模型(完全正常的 SFT)
  2. 推理时,每一步去噪:
    • 先算模型预测的速度/噪声:v_t = v_θ(x_t, t)
    • 再算一个引导项:g_t = ∇_{x_t} J_collision(x_t)
    • 修正:v_t’ = v_t - λ · g_t
    • 走一步修正后的去噪
  3. 最终轨迹自然更安全、更舒适

优点:

  • 完全不需要改动模型权重,部署极快
  • 零训练成本
  • 可以换不同的 cost 函数(不同风格)
  • 不担心"训飞"

缺点:

  • 引导强度 λ 是玄学——太弱没效果、太强产生伪影
  • cost 函数必须可微
  • 受预训练模型的分布限制,不能"无中生有"
  • 每次推理需要多算一轮 cost 梯度,计算量增加

个人评价:这是目前落地最成熟的范式。Diffusion Planner 的引导效果非常漂亮。但如果你的生成模型本身就很差(SFT 阶段没学好),那引导也救不了。

实战经验:λ 怎么调?

引导强度 λ 是这个范式中唯一(也是最重要的)超参数。我总结了一个经验法则:

  1. 从 λ=0 开始(无引导),看模型默认生成的轨迹质量
  2. 每次翻倍:λ=0.1 → 0.2 → 0.4 → 0.8,直到轨迹出现明显伪影(锯齿、抖动)
  3. 回退一半:取上一个不产生伪影的值
  4. 按场景调整:不同场景可能需要不同的 λ

更高级的做法是自适应 λ

  • 在 cost 梯度方向与模型预测方向一致时,加大 λ
  • 在 cost 梯度方向与模型预测方向冲突时,减小 λ
  • 这样可以避免引导"拉扯"模型到不合理的区域

范式二:拒绝采样微调(RFT)

核心思想:采样一大批 → 用规则奖励打分 → 挑最好的当新的训练数据 → 继续 SFT。

代表性工作:AutoVLA RFT

如果说范式一是"小改",范式二就是"退一步"——本质上又把 RL 问题退化成了 SFT 问题,只不过训练数据变成了自己采样的好轨迹

拒绝采样微调

具体流程:

重复 N 轮:

  1. 采样:从当前模型对每个场景 s 采样 K 条轨迹
  2. 打分:用规则奖励函数 R 给每条轨迹评分
  3. 筛选:取 Top-M 高分轨迹作为正样本
  4. 训练:用这些正样本做 SFT,更新模型参数

这套流程在 AutoVLA 中效果非常显著。它的实现真的非常朴素,没有任何花哨的 RL 技巧。

优点:

  • 实现简单到令人发指
  • 不要求模型 log-prob 可求(不需要改去噪过程)
  • 任何生成模型都能用(扩散、Flow、VAE 随便)
  • 不会出现 reward hacking(因为我们只采样,不直接优化 reward)
  • 采样越多,数据集越丰富,效果越好

缺点:

  • 样本效率极低:4 条里挑 1 条,浪费 75%
  • 分布受限:永远是在"当前模型能生成的范围"里挑最好的
  • 不能真正改变模型的行为模式,只是筛选已有的好样本
  • 多轮迭代后收益递减——到了后期,采样的轨迹全都高分,没有进步空间
  • 本质上还是 SFT,所以 SFT 的所有问题(mode averaging、过平滑)依然存在

个人评价:作为"第一个 RL 改进"非常推荐。代码改动小、效果可预期、风险极小。但别指望它带来质的飞跃。做了一圈 RFT 后你会发现——瓶颈在生成模型的"探索能力",不在"筛选能力"

实战经验:做好 RFT 的五个技巧

技巧 1:K 值怎么选?

K(每组采样的轨迹数)是 RFT 中最重要的参数。我的经验是:

  • K=4 是最低要求,再少则样本覆盖率不够
  • K=8~16 是 sweet spot
  • K>32 时收益递减——因为高分轨迹开始大量重复

技巧 2:奖励函数不要复杂

很多人一上来就设计花哨的奖励函数:碰撞检测 + 舒适度 + 效率 + 交通规则 + 车道保持 + …

实际上 RFT 只需要 2-3 个核心指标就够了。越简单的奖励函数,筛选出的数据噪声越小,SFT 训练效果越好。

技巧 3:不仅要选好的,也要用坏的?

有些做法是把"好轨迹"当正样本,“坏轨迹"当负样本做 contrastive learning。我试过,效果不好。RFT 的核心思路是提纯数据,而不是对比学习。筛选出的正样本直接做 SFT 就够了。

技巧 4:多轮迭代的频率

每轮 RFT 后模型会变好,采样到的轨迹质量也更高。但迭代到第 5-8 轮后收益会饱和。这时候需要切换到范式三(策略梯度)才能突破。

技巧 5:小心伪高分

有时候奖励函数有 bug,会让某些明显不合理的轨迹得高分(比如急刹车停住不动但碰撞分为 0)。建议每轮 RFT 后人工检查 Top-10 的高分轨迹,确认奖励函数的质量。


范式三:策略梯度直接优化

核心思想:对生成过程的参数直接算策略梯度,用奖励信号反向传播更新去噪网络。

代表性工作:Flow-GRPO、DPO for Diffusion、Diffusion Policy Gradient

这是最"正宗"的 RL,也是最难实现的。

3.1 核心困境:扩散模型的 log-prob 怎么算?

回顾 RL 更新公式:

θ ← θ + α · E[ R(τ) · ∇_θ log p_θ(τ) ]

这里的问题是 log p_θ(τ) 对于扩散/Flow 模型来说极其复杂。

为什么?因为"生成一条轨迹 τ” 是一个多步迭代过程

τ=v,v,.,_T)

其中 v_t 是第 t 步去噪时的预测速度。我们的生成模型输出的是 T 个这样的速度。

整个过程的联合概率: p_θ(τ) = p_θ(v₁, v₂, …, v_T) = p_θ(v₁) · p_θ(v₂|v₁) · … · p_θ(v_T|v_{T-1})

在扩散/Flow 中,每一步的分布通常是高斯分布: p_θ(v_t | v_{t-1}) = N(μ_θ(v_{t-1}, t), σ² I)

所以: log p_θ(τ) = Σ_t log N(v_t; μ_θ(v_{t-1}, t), σ² I) = -½ Σ_t ||v_t - μ_θ(v_{t-1}, t)||² / σ² + const

但这里有个关键细节:实际生成时,我们用的是确定的 ODE 求解器(如 Euler、RK4),没有随机性。这怎么办?

3.2 Flow-GRPO 的解决方案

Flow-GRPO(字节跳动, NeurIPS 2025)的解决思路非常优雅:

  1. ODE → SDE 转换:在确定性 ODE 求解中加入少量噪声,让它变成随机微分方程(SDE),这样就重建了可导的 log-prob

  2. Denoising Reduction:把 T 步的 log-prob 近似压缩成 1 步,大幅降低训练计算量

  3. 使用 GRPO 而非 PPO:不用 critic 网络,省掉大约 40% 的显存

具体来说:

  • 标准 Flow 生成:dx = v_θ(x, t) dt(ODE,确定性,无 log-prob)
  • Flow-GRPO 转换后:dx = v_θ(x, t) dt + σ(t) dw(SDE,有随机性,可算 log-prob)
  • log-prob:用 Itô 积分的 Girsanov 定理推算

这个 SDE 转换保证了:

  • 生成的质量几乎不变(σ(t) 很小)
  • log-prob 终于可以算了
  • 策略梯度可以正式应用

3.3 各策略梯度方法对比

策略梯度方法对比

Flow-GRPO vs DPO for Diffusion:

维度Flow-GRPODPO for Diffusion
需要奖励模型否(只需偏好对)
训练稳定性较高(组归一化)极高(闭式解)
可探索性高(采样多条)低(从已有偏好对学)
代码复杂度
SDE 转换需要不需要(用 ELBO 替代)

个人评价:策略梯度是最有"RL 感觉"的方法,也是我个人认为最有前途的方向。但实话实说,目前的技术成熟度还远不如范式一和范式二。Flow-GRPO 的 SDE 转换虽然优雅,但引入的额外噪声和近似会降低生成质量。DPO for Diffusion 虽然不需要奖励模型,但依赖已有的偏好数据,缺乏探索动力。

3.4 PPO vs GRPO:到底选哪个?

如果你要做策略梯度,首先面对的问题是:用 PPO 还是 GRPO?

PPO vs GRPO 详细对比

PPO 的核心架构:

  • Actor + Critic 两个网络
  • Critic 负责估计状态价值 V(s),作为 baseline 计算优势 A_t = Q(s,a) - V(s)
  • 需要 GAE(Generalized Advantage Estimation)做多步优势估计
  • Critic 和 Actor 一样大 → 显存 ×2

GRPO 的核心架构:

  • 只有 Actor,没有 Critic
  • 对同一个输入采样 G 条轨迹,用组内奖励的均值和标准差做基线
  • A_i = (R_i - mean(R_group)) / std(R_group)
  • 省掉 40-50% 的显存,训练更稳定

在扩散/Flow 模型上的选择:

我的建议非常明确——选 GRPO,不要选 PPO

原因有三:

  1. 扩散模型的 Actor(去噪网络)已经非常大了(几百 M 到几 B 参数),再加一个同样大小的 Critic,显存根本不够
  2. Critic 的输入是"状态",而扩散模型的状态是整个场景信息(图像、点云等),Critic 也需要同样的视觉编码器 → 等于训两个大视觉模型
  3. 扩散模型的生成过程本身就可以采多条轨迹 → GRPO 的"组内采样"成本几乎为零

这也是为什么 Flow-GRPO、DriveVLA-W0 等最新工作全部选择 GRPO。

3.5 Flow-GRPO 训练循环详解

理解 GRPO 的概念是一回事,理解它如何在扩散/Flow 模型上具体实现是另一回事。

Flow-GRPO 训练循环拆解

这张图展示了 Flow-GRPO 的完整训练循环:

Step 1:ODE → SDE 转换

  • 标准 Flow 是确定性 ODE:dx = v_θ(x, t) dt
  • Flow-GRPO 加入少量噪声:dx = v_θ(x, t) dt + σ(t) dw
  • σ(t) 通常设得很小(如 σ=0.01),保证生成质量几乎不变
  • 关键作用:SDE 的随机性让 log-prob 变得可计算

Step 2:采样一组轨迹

  • 对同一个场景/条件 c,从 SDE 采样 G 条轨迹
  • G 一般取 4-8 条(和 GRPO 的 group size 一致)
  • 对每条轨迹用奖励函数 R 打分

Step 3:组内优势计算

  • 计算本组奖励的均值 μ 和标准差 σ
  • 每条轨迹的优势 A_i = (R_i - μ) / σ
  • 这就是"组相对"的含义——奖励是相对的,不是绝对的

Step 4:Denoising Reduction

  • 完整去噪链有 T=50-100 步,每一步都算 log-prob 太贵
  • DR 技术:随机采样 K 个时间步(K=1-4),只在这几步算 log-prob
  • 近似公式:log p_θ(τ) ≈ (T/K) · Σ log p_θ(v_{t_k} | v_{t_{k-1}})
  • 训练速度快 10-20 倍,且实验证明效果几乎不变

Step 5:GRPO 策略更新

  • 用优势 A_i 加权更新 Actor 参数
  • 好的轨迹(A_i > 0)→ 提高生成概率
  • 差的轨迹(A_i < 0)→ 降低生成概率
  • 用 clip 限制更新幅度,防止训飞

整个循环反复迭代,每次迭代模型都变得更好。

3.6 策略梯度如何通过扩散网络反向传播?

你可能好奇:说了这么多"策略梯度",梯度到底是怎么通过几十步去噪网络传回去的?

策略梯度反向传播路径

让我们一步步看:

  1. 前向生成:从初始噪声 x₀ 开始,经过 T 步去噪,每步调用 v_θ 预测速度/噪声,最终生成轨迹 x_T
  2. 计算奖励:R(x_T) 是对最终轨迹的打分
  3. 反向传播:∇_θ R(x_T) 需要穿过整个计算图
    • 从 x_T 往回传 → 经过最后一步 v_θ → 到 x_{T-1} → … → 到 x₀
    • 每一层都涉及 v_θ 的梯度

这就是"通过时间反向传播"(BPTT),和训练 RNN 的原理类似。

为什么这很难?

  • 内存爆炸:T=50 步的计算图,每一步都存中间变量 → GPU 内存不够
  • 梯度消失/爆炸:50 步连乘,梯度要不消失要不爆炸
  • log-prob 不可导:确定性 ODE 没有概率解释

Flow-GRPO 用两个技巧分别解决:

  • Denoising Reduction → 减少 T(从 50 步降为 1-4 步)→ 解决内存和梯度问题
  • SDE 转换 → 重建 log-prob → 解决概率问题

没有这两个技巧,策略梯度在扩散/Flow 模型上就训不动。


范式四:世界模型 + RL

核心思想:学一个世界模型做环境,把生成模型当策略,在世界模型里做 RL 训练。

代表性工作:DriveVLA-W0、DreamerV2/3、Iso-Dream

这是最"宏大"的范式,也是最复杂的。

4.1 为什么需要世界模型?

前面三种范式都有一个共同的问题:奖励只能在轨迹终结后计算

在实际驾驶中,一个看似安全的动作可能在 5 秒后导致危险。前面的方法都无法捕捉这种"延迟奖励"。世界模型提供了解决方案:在想象中提前预测未来。

4.2 架构拆解

世界模型范式的核心架构包含三个组件:

  1. 世界模型(World Model):学环境的动力学 p(s_{t+1} | s_t, a_t)

    • 输入:当前状态 + 动作
    • 输出:下一状态的预测分布
    • 在驾驶中,这相当于学了一个"模拟器"
  2. 策略模型(Policy/Actor):生成式轨迹模型,负责决定怎么走

    • 与世界模型交互,生成动作序列
  3. 价值模型(Critic/Value):估计某个状态值多少钱

    • 帮助策略在想象中做出更好的决策

训练流程:

  1. 策略生成轨迹(在真实环境或世界模型中)
  2. 收集交互数据 (s, a, r, s')
  3. 更新世界模型:最小化预测误差
  4. 更新策略:用世界模型做 rollout,用 RL 优化
  5. 更新价值函数(如果用 Actor-Critic)

世界模型 Rollout 详解

世界模型范式中最核心的操作是 imagination rollout(在想象中 rollout):

  1. 从当前真实状态 s₀ 出发
  2. 策略 π 生成动作 a₀
  3. 世界模型预测下一状态 ŝ₁ = WM(s₀, a₀)
  4. 策略 π 基于 ŝ₁ 生成 a₁
  5. 世界模型预测 ŝ₂ = WM(ŝ₁, a₁)
  6. 重复直到 rollout 结束
  7. 计算累积奖励 Σr_t,更新策略

这个 rollout 完全在"想象"中进行,不需要真实环境交互。这就意味着:

  • 不需要真车上路(安全)
  • 可以并行 rollout 大量场景(高效)
  • 可以探索极端情况(没有风险)

但前提是世界模型要足够准

DriveVLA-W0 的具体做法

DriveVLA-W0(CVPR 2025)把世界模型和扩散策略结合得最紧密:

  1. 世界模型作为条件编码器:世界模型把历史信息编码成潜变量 z
  2. 扩散策略以 z 为条件:p_θ(轨迹 | 场景, z)
  3. GRPO 在世界模型的 rollout 中做优化

这样做的好处是:世界模型提供的潜变量 z 包含了"未来会怎样"的信息,扩散策略可以根据这个信息调整当前的轨迹。

比如在十字路口,世界模型预测"右侧车辆 2 秒后会加速",策略就可以提前减速避让——即使用 SFT 数据里没有这种场景。

DriveVLA-W0 的 NavSim 榜单结果证明了这套方案的有效性:在 closed-loop 评测中超过了所有纯 SFT 方法和简单的 RL 方法。

但训练复杂度也相应增加了:需要联合训练世界模型编码器、扩散策略去噪网络、以及 reward model。

优点:

  • 理论上上限最高
  • 可以做离线训练(不用真车上路)
  • 可以做多步规划(想象中推演未来)
  • 可以处理 long-horizon 任务

缺点:

  • 训练复杂度极高(三个模型联合训)
  • 世界模型的精度是瓶颈——如果世界模型预测不准,策略学到的就是错的
  • 分布外问题严重——策略探索到世界模型没见过的区域,世界模型开始"幻想"

个人评价:这是"终极方案",但现阶段还不够成熟。我用 DriveVLA-W0 的代码试过,训一个世界模型需要的数据量和算力是前面三种范式的 5-10 倍。而且世界模型的"幻觉"问题在自动驾驶中非常致命——想象出一条不存在的障碍物,然后策略绕开它走,学到的完全是无用行为。


4. 详细对比

4.1 四维对比

维度范式一:奖励引导范式二:拒绝采样范式三:策略梯度范式四:世界模型
实现难度★☆☆☆☆★★☆☆☆★★★★☆★★★★★
训练成本0极高
推理时间增加不变不变可能增加
可扩展性
理论上限最高
适用范围已有好模型任何模型希望突破上限长期规划
技术成熟度
训飞风险极低
代表工作Diffusion PlannerAutoVLA RFTFlow-GRPODriveVLA-W0

4.2 关于"训飞"的特别讨论

“训飞”(Training Divergence,训练发散/模型崩溃)是 RL 在自动驾驶中最让人头疼的问题。我观察到:

  • 范式一永远不会训飞——因为模型权重根本没变
  • 范式二几乎不会训飞——因为每次都是 SFT,而 SFT 的目标是"拟合分布",不是"最大化奖励"
  • 范式三容易训飞——策略梯度是"向着奖励最大的方向走",如果奖励设计有缺陷,模型会钻空子
  • 范式四的训飞风险来自世界模型——不是策略本身训飞,而是世界模型给策略提供了虚假的反馈

我的建议:如果你刚入门,从范式一开始;如果你的项目需要快速落地的效果,从范式二开始;如果你在做研究且资源充裕,挑战范式三或范式四。


5. 核心挑战深入分析

5.1 Log-Prob 的三个层次

我前面多次提到 log-prob 的问题。现在系统地梳理一下:

第一层:不需要 log-prob(范式一、二)

  • 奖励引导:只需要 cost 的梯度,不求 log-prob
  • 拒绝采样:只需要采样能力,不求 log-prob
  • 理由:它们的下个方法是"筛选"而不是"优化"

第二层:需要近似 log-prob(范式三的大多数)

  • Flow-GRPO:通过 SDE 转换近似 log-prob
  • Diffusion Policy Gradient:通过 ELBO 下界近似 log-prob
  • 理由:精确计算实在太难,近似够用

第三层:需要精确 log-prob(从理论角度)

  • 目前没有实用方法能做到
  • 但是像 RLHF 中对语言模型做的 PPO,之所以这么成功,就是因为语言模型的 log-prob 可以精确计算(因为每一步 token 的概率是精确的)
  • 这可能是生成式轨迹的 RL 还没达到语言模型那样成熟度的根本原因

5.2 Reward Hacking:RL 最头疼的问题

Reward hacking 是 RL 最经典的失败模式:模型找到了一个"让奖励函数看起来很好"但实际上无用的策略。

Reward Hacking 的三种常见形态

在轨迹规划中,我至少见过这三种形态:

形态 1:碰撞奖励逃避

  • 奖励函数说:“碰撞了要减分”
  • 模型学会:生成"原地不动"的轨迹(因为不动就不会碰撞)
  • 结果:安全分很高,但车不走
  • 为什么?只有惩罚没有正奖励,模型选择"零风险"= 零收益
  • 解决方法:加入"前进距离"正奖励

形态 2:舒适性奖励 gamming

  • 奖励函数说:“jerk 小加分”
  • 模型学会:生成无限平滑的直线
  • 结果:舒适分很高,但不去目的地
  • 为什么?舒适权重太大,压制了任务奖励
  • 解决方法:多目标权重合理设计

形态 3:多目标权衡崩溃

  • 同时优化安全和效率
  • 模型学会:在边界上疯狂试探,找到奖励函数的漏洞
  • 结果:每个目标看上去都不错,但组合起来是危险行为(如贴边高速行驶)
  • 为什么?加权和引入权衡漏洞
  • 解决方法:用约束优化替代加权和

如何缓解 reward hacking?

先看一个真实案例:我在一个项目中同时优化"安全"和"效率",权重各 50%。模型学会的是——在十字路口以 80km/h 的速度贴着行人冲过去。碰撞检测说"没碰到(差 5cm)",安全分满分;速度达标,效率分满分。但这是人敢开的吗?

从这件事我学到了几个原则:

  1. 奖励函数越简单越好。不要超过 3-4 个目标的加权组合。更多目标意味着更多权衡漏洞。
  2. 远离边界。如果你发现模型生成的轨迹总是"刚好不碰障碍物"或"刚好达到速度上限",说明奖励函数在鼓励边界试探。
  3. 使用约束优化。把一些指标作为硬约束(如"必须零碰撞"),而不是作为加权项。模型不会在安全上做权衡。
  4. Ensemble reward。用多个不同的奖励函数投票,降低单一奖励被 hack 的风险。
  5. 定期人工检查。不要只看聚合奖励分数,定期抽样看模型实际生成的轨迹长什么样。

5.3 探索与利用的困境

RL 的核心矛盾是:探索未知 vs 利用已知

在生成式轨迹中,这个矛盾更尖锐:

  • 如果探索太多(温度设得很高),采样的轨迹全是废的
  • 如果探索太少(温度很低),采样到的都是相似的轨迹
  • 找不到"刚好"的参数

这个问题在范式二中尤其明显——在 RFT 的最后一轮,当所有采样的轨迹都是高分时,RL 训练就停在了

目前最有效的解决方法是 entropy bonus(在目标函数里加一项"保持多样性"),但这又引入了另一个超参数…

5.4 收敛行为对比

不同范式的收敛行为差异很大,了解这些差异可以帮助你判断训练是否正常。

不同范式的收敛行为对比

SFT(灰色虚线):

  • 一开始就接近训练数据平均水平
  • 永远无法超过专家水平线
  • 横轴不适用(SFT 是一次性训练,不是迭代优化)

范式一:推理时引导(蓝色)

  • 不训练模型,一步到位
  • 效果上限受预训练模型限制
  • 横轴是推理计算量,不是训练步数

范式二:RFT(绿色阶梯线)

  • 每轮迭代有跳跃式提升
  • 阶梯平台期 = 模型在"消化"新数据
  • 3-5 轮后开始饱和,曲线变平
  • 突破方式:增加采样 K 值 or 转入范式三

范式三:策略梯度(紫色波动线)

  • 初期波动最大(最容易训飞)
  • 但只要奖励函数稳定,长期趋势向上
  • 有持续增长潜力
  • 如果奖励分数不增长反而下降 → 检查 reward hacking 或训飞

如何判断训练是否健康?

  1. 奖励均值在上升(不是必须单调,但长期趋势向上)
  2. 奖励方差在缩小(好的轨迹越来越多,差的越来越少)
  3. 生成轨迹的多样性没有消失(如果有 entropy bonus,观察 entropy 值)
  4. 人工检查部分高分段和低分段轨迹,确认奖励函数没有 bug

6. 个人思考与未来方向

6.1 我的几个判断

判断一:范式二是当前的性价比之王

对于大多数团队,实现难度、效果、稳定性综合来看,范式二(RFT)是当前的最佳选择。这也是为什么 AutoVLA 选择这个方案——简单、可靠、有效。它的信号噪声比最高。

判断二:范式三是未来,但短期内不会取代范式二

策略梯度方法(Flow-GRPO 等)在理论上更优美、上限更高。但目前的工程成熟度还不够。我预计 1-2 年内会出现更成熟的 pipeline,让范式三成为主流。

判断三:世界模型需要「炼丹」级别的投入

范式四要做对,需要有极致精度的世界模型。而训世界模型本身就是自动驾驶中公认最难的问题之一。除非团队有世界模型方面的长期积累,否则不建议作为第一个尝试的方向。

6.2 一条技术路线建议

如果让我给一个团队制定路线图,我会建议:

Phase 1 (1-2 月):范式一

  • 已有扩散/Flow 轨迹模型加上推理时引导,快速看效果

Phase 2 (2-4 月):范式二

  • 实现 RFT pipeline,迭代 3-5 轮,效果显著提升

Phase 3 (6-12 月):范式三

  • 尝试 Flow-GRPO,解决 log-prob 估算问题
  • 研究奖励函数的正确设计,追求超越 SFT 的质变

Phase 4 (长期):范式四

  • 世界模型预研,等范式三成熟后再接轨

6.3 如何选择适合你的范式?

不同团队的情况不同,适合的范式也不同。

范式选择指南

如果你属于以下情况,从范式一开始:

  • 刚接触 RL,团队没有 RL 经验
  • 模型已经部署,想快速看到 RL 收益
  • 资源有限(没有 GPU 集群做训练)

如果你属于以下情况,从范式二开始:

  • 有 SFT 经验,想尝试 RL
  • 需要稳定可靠的结果
  • 有标注/奖励函数设计能力

如果你属于以下情况,从范式三开始:

  • RL 经验丰富,团队有 RL 研究员
  • 有大量 GPU 资源(至少 8 卡起步)
  • 追求上限,想突破 SFT 瓶颈
  • 愿意接受训飞和调试的代价

如果你属于以下情况,再考虑范式四:

  • 有世界模型的长期积累
  • 几十万 GPU 小时的预算
  • 追求终极方案

6.4 我觉得最重要的认知

最后想说一点个人感受:

RL 不是 SFT 的替代品,而是互补品。

SFT 教会模型"什么看起来合理",RL 教会模型"什么实际上是好的"。两者缺一不可。

如果把 SFT 比作"学字帖",RL 就是"真正写文章去投稿被审稿人骂"。没练过字帖的人写不出字,但只练字帖的人写不出好文章。

另外,不要迷信 RL。2025 年以来,很多论文喜欢把"RL"当作一个卖点,但实际上很多 RL 改进带来的提升主要来自更多的采样和筛选,而不是 RL 算法本身。我个人的经验是:

把采样数量翻倍,比你花一个月调 PPO 超参带来的提升大得多。

RL 不是银弹,但它是这个方向上最有潜力的工具。


7. 工程实现的一些建议

7.1 代码框架选择

框架适合场景学习曲线RL 支持备注
PyTorch + custom研究、实验灵活最推荐,自由度最高
Stable-Baselines3标准 RL 环境丰富但不支持扩散策略
Ray/RLlib大规模分布式丰富适合 Paradigm 3/4
Hugging Face TRLLLM/RLHFGRPO/PPO配合扩散模型需改写

对于生成式轨迹的 RL,PyTorch + custom 是最主流的选择。因为你需要:

  • 自定义扩散/Flow 模型的训练循环
  • 自定义奖励函数
  • 自定义采样和筛选逻辑
  • 高度灵活的实验控制

7.2 训练监控 checklist

RL 训练比 SFT 容易出各种问题。建议至少监控这些指标:

必监控:

  • 奖励均值(每个 batch / 每个 epoch)
  • 奖励方差(reward diversity)
  • 策略熵 / 轨迹多样性
  • KL 散度(新旧策略之间)
  • clip 比例(PPO/GRPO 中被 clip 的样本占比)

建议监控:

  • 最大/最小奖励(看是否有异常值)
  • 轨迹长度(模型是否学会"偷懒"停在原地)
  • 碰撞率等具体 safety 指标
  • 生成轨迹的自车速度分布
  • 奖励函数的各子项分解(看是否有某项异常增长)

训飞预警信号:

  1. 奖励突然飙升但生成轨迹明显变差 → reward hacking
  2. clip 比例持续 > 50% → 更新步长太大,需要调小 lr
  3. 策略熵骤降 → 模式塌缩,模型丧失了多样性
  4. 生成轨迹长度突然变短 → 模型学会了"偷懒"

7.3 算力预算参考

范式训练时间(参考)GPU 需求数据需求
范式一0(推理时引导)1 卡推理
范式二1-3 天4-8 卡10K-100K 场景
范式三3-14 天8-32 卡10K-100K 场景
范式四14-60 天32-128 卡100K-1M 场景

注意这些是"从零开始"的大概估计。如果你有预训练模型,范式二和范式三的时间可以减半以上。


8. 相关工作的对比表

方法范式基础模型RL 框架需要 reward model改模型权重发表
Diffusion Planner扩散模型Cost Guidance是(cost func)CoRL 2023
CTG++扩散模型Classifier GuidanceICRA 2024
AutoVLAVLARFT是(规则奖励)NeurIPS 2025
Flow-GRPOFlow ModelGRPONeurIPS 2025
DPO for Diffusion扩散模型DPONeurIPS 2024
Diffusion PG扩散模型PPOarXiv 2024
DriveVLA-W0VLA + WMGRPO + World ModelCVPR 2025
DreamerV3RSSMDreamer是(环境奖励)ICLR 2023

9. 写在最后

这篇文章断断续续写了一个多星期,因为我发现这个方向的文献在快速增长,几乎每周都有新论文出现。就在我写这篇文章的过程中,又冒出了两篇用 GRPO 优化扩散策略的 pre-print…

如果这篇文章对你有帮助,欢迎 Star 和讨论。如果我有理解错误的地方,也欢迎指正——毕竟 RL + 生成式轨迹还是一个非常年轻的领域,大家都在学习。

我们正在见证自动驾驶规划范式的转变:从"学专家"到"在试错中超越专家"。


附录:常见问题 FAQ

Q1: RL + 扩散/Flow 在实车上跑过吗?

A: 目前大多数工作还在仿真环境中验证。Diffusion Planner 在 CARLA 上做了闭环测试,AutoVLA 在 NAVSIM 上验证,DriveVLA-W0 也在 NAVSIM 上做了闭环评测。实车部署是当前的最大 gap,但从仿真到实车的迁移正在加速。

Q2: 我需要先学会哪些技术才能做这个方向?

建议的学习路径:

  1. 扩散模型 / Flow Matching 基础(至少能写训练推理代码)
  2. PPO / GRPO 的原理(不需要写,但要知道公式)
  3. PyTorch 的自定义训练循环(自己写过 train loop)
  4. 自动驾驶的规划基础知识(轨迹表示、坐标变换、碰撞检测)

Q3: 用预训练的文生图扩散模型能做轨迹规划吗?

理论上可以,但效果不好。文生图模型的输出空间是 RGB 像素,轨迹规划的输出是连续坐标。直接迁移需要大量调参。更实际的做法是从零训练一个轨迹扩散/Flow 模型,或者用 Bagel 这种已经预训练好的轨迹生成模型做初始化。

Q4: 奖励函数需要多少人工设计?

取决于范式。范式一需要可微的 cost 函数(可能是手工设计的碰撞距离等),范式二需要规则奖励(规则相对容易设计),范式三需要更复杂的奖励函数(因为模型会尝试 hack)。总体来说,奖励函数的设计是这个方向最需要人类直觉的部分——好的奖励函数比好的算法重要得多。

Q5: RFT 和策略梯度能一起用吗?

当然可以。事实上这是一个非常有效的组合:

  1. 先用 RFT 做 3-5 轮粗调(快速提升基础质量)
  2. 再用 Flow-GRPO 做精调(追求上限) RFT 给 GRPO 提供了一个好的初始化,GRPO 突破了 RFT 的限制。两者互补,不互斥。

Q6: 生成式轨迹的 RL 和 LLM 的 RLHF 有什么异同?

维度LLM RLHF生成式轨迹 RL
动作空间离散 token连续 waypoint
动作数量几百万步几十到几百步
log-prob精确可算近似(扩散/Flow)
奖励来源人类偏好规则/仿真
探索代价低(文本生成)高(轨迹要安全)

相同点是都用 PPO/GRPO 做策略优化。不同点是轨迹规划的 log-prob 更难算、探索更危险。

Q7: 我应该从哪篇论文的代码开始看?

按难度排序:

  1. Diffusion Planner(最简单,只有推理时引导)
  2. AutoVLA(RFT 的完整实现)
  3. Flow-GRPO(最完整的策略梯度实现,代码开源)
  4. DriveVLA-W0(世界模型 + 扩散策略,最复杂)

10. 参考文献

  1. Diffusion Planner (CoRL 2023) - arXiv:2305.08705
  2. CTG++ (ICRA 2024) - arXiv:2402.05248
  3. AutoVLA (NeurIPS 2025) - arXiv:2505.08701
  4. Flow-GRPO (NeurIPS 2025) - arXiv:2505.05470
  5. DPO for Diffusion (NeurIPS 2024) - arXiv:2311.12962
  6. Diffusion Policy Gradient (arXiv 2024) - arXiv:2403.06326
  7. DriveVLA-W0 (CVPR 2025) - arXiv:2503.13576
  8. DreamerV3 (ICLR 2023) - arXiv:2301.04104
  9. PPO (2017) - Schulman et al.
  10. GRPO (DeepSeekMath, 2024) - arXiv:2402.03300