Skip to content

06 - 强化学习基础(VLA 视角)

面向 VLA 学习者的强化学习速成指南。不需要你从零啃 Sutton & Barto,而是从 VLA 工程师的实际需求 出发,聚焦 RL 与 VLA 的交叉点。


1. 为什么 VLA 工程师需要懂 RL

1.1 Behavior Cloning 的天花板

VLA 的主流训练范式是 Behavior Cloning(行为克隆)——本质上就是监督学习:给模型看专家示范(状态-动作对),让它学会模仿。

但 BC 有几个根本性问题:

问题 描述 后果
复合误差(Compounding Error) 单步预测误差随时间步累积 长任务中轨迹越来越偏离
分布外泛化(OOD Generalization) 模型只见过训练分布内的状态 遇到新情况就"懵了"
多模态行为 同一状态可能有多种合理动作 BC 会取平均,导致次优行为
无反馈信号 BC 只模仿,不知道自己做对做错 无法主动纠正错误

1.2 RL Fine-tuning 是突破天花板的关键

在 BC 预训练之后,用 RL fine-tuning 可以显著提升 VLA 性能。核心逻辑:

  • BC 学会了"大概怎么做"(模仿人类示范)
  • RL 学会了"怎么做更好"(通过 reward 信号优化)
  • 两者结合,既保留了 BC 的数据效率,又获得了 RL 的优化能力

这和 NLP 领域的 RLHF(Reinforcement Learning from Human Feedback) 思路完全一致:先 SFT(对应 BC),再 RLHF(对应 RL fine-tuning)。

1.3 Reward Shaping 帮助设计更好的评估指标

理解 RL 中的 reward function 和 value function,能帮助你:

  • 设计更合理的 VLA 评估指标(不只是成功率,还有效率、安全性)
  • 理解 VLA 在线部署时的优化目标(多目标 trade-off)
  • 调试 VLA 策略的行为偏差(哪里 reward 设计有问题)

2. RL 核心概念速览

2.1 MDP(马尔可夫决策过程)

RL 的数学框架是 MDP,定义为元组 $(S, A, T, R, \gamma)$:

元素 VLA 中的对应 说明
S(状态 State) 机器人观测(RGB 图像 + 本体感知 + 语言指令) VLA 的输入;语言指令是任务条件/上下文,不是动作
A(动作 Action) VLA 的输出(末端位姿增量 / 关节角度) VLA 的输出
T(转移 Transition) 环境物理规律 执行动作后世界如何变化
R(奖励 Reward) 任务完成度(抓取成功 +1,碰撞 -0.1) 告诉模型"做得好不好"
$\gamma$(折扣因子) 0.95 ~ 0.99 衡量未来 reward 的重要程度

关键洞察:VLA 的训练数据(人类演示轨迹)可以看作 MDP 中的 expert policy 采样。BC 就是从这些采样中学习一个近似 expert 的策略。

2.2 Value Function

Value Function 衡量的是"从某个状态(或状态-动作对)出发,当前策略预期能拿到多少 reward":

  • $V(s)$:状态价值函数 —— 在状态 $s$ 下,按当前策略行动,预期能获得的总 reward
  • $Q(s, a)$:动作价值函数 —— 在状态 $s$ 下执行动作 $a$,之后按当前策略行动,预期能获得的总 reward

在 VLA 语境下,Value Function 帮你回答

"当前这个场景(状态),我的 VLA 模型接下来大概能得多少分?"

Bellman 方程

$$V(s) = \mathbb{E}_{a \sim \pi}[R(s,a) + \gamma V(s')]$$

这个方程说的是:当前状态的价值 = 立即获得的 reward + 下一个状态的期望价值(打折后)。

2.3 Policy Gradient 定理

Policy Gradient 是最直觉的 RL 优化方法——直接对策略参数 $\theta$ 求梯度,让期望 reward 最大化:

$$\nabla_\theta J(\theta) = \mathbb{E}{\tau \sim \pi\theta} \left[ \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t | s_t) \cdot R(\tau) \right]$$

直觉解释:

  1. $\nabla_\theta \log \pi_\theta(a_t | s_t)$:增大选中动作的概率梯度方向
  2. $R(\tau)$:整条轨迹的 return(reward 总和)
  3. 如果 return 高 → 增大该动作的概率;return 低 → 减小该动作的概率

VLA 视角:BC 是固定目标(专家动作),Policy Gradient 是用 reward 信号做目标。在 VLA 微调阶段,可以用 reward 替代固定的专家标签。

2.4 On-Policy vs Off-Policy

类型 定义 代表算法 VLA 中的对应
On-Policy 用当前策略自己采集的数据训练 PPO, TRPO VLA 在线部署后收集交互数据
Off-Policy 用其他策略(或人类)采集的数据训练 SAC, DDPG, DQN 使用历史交互数据训练

关键区别:BC(行为克隆)是监督式模仿学习——它使用由专家(其他策略或人类)收集的离线数据,但 BC 本身不是 off-policy RL 算法。PPO fine-tuning 是 on-policy(需要 VLA 自己去环境里试错)。


3. VLA 中的 RL 应用

3.1 RLVF(RL from VLA Feedback)

核心思想:用一个强大的 VLA 模型(或 VLM)作为 "裁判",为底层策略提供 reward 信号。

┌──────────────┐    动作     ┌──────────────┐
│  底层策略     │ ────────→  │  环境         │
│ (小模型)     │ ←────────  │              │
└──────────────┘    观测     └──────┬───────┘
                                   │ 观测 + 动作
                                   ↓
                          ┌──────────────┐
                          │  VLA 裁判     │ ──→ reward 信号
                          │ (大模型)     │
                          └──────────────┘
  • 类比 NLP:类似 RLHF 中用 LLM 作为 reward model
  • 优势:不需要手动设计 reward function
  • 挑战:VLA 裁判的 reward 质量决定了训练效果

3.2 PPO Fine-tuning

PPO(Proximal Policy Optimization)是目前最主流的 RL fine-tuning 方法,流程如下:

Stage 1: BC Pre-training(监督学习)
  人类演示数据 → 训练 VLA 基础模型

Stage 2: PPO Fine-tuning(强化学习)
  ┌─────────────────────────────────────────────┐
  │ 1. VLA 在环境中执行动作,收集 (s, a, r, s')  │
  │ 2. 用 GAE 计算优势函数 A(s, a)              │
  │ 3. 用 clipped objective 更新策略             │
  │ 4. 重复 1-3 直到收敛                        │
  └─────────────────────────────────────────────┘

PPO 的关键设计:

组件 作用
Clipped Objective 防止策略更新步子太大(保持稳定)
GAE(Generalized Advantage Estimation) 估计每个动作比平均水平好多少
Value Network 辅助估计 $V(s)$,降低方差
Entropy Bonus 鼓励探索,防止策略过早坍缩

3.3 Reward Shaping for Manipulation

为操作任务设计 reward 是一门艺术。以下是常见策略:

稀疏 vs 稠密 Reward

类型 例子 优缺点
稀疏 成功 +1,失败 0 简单,但信号太少,学习困难
稠密 距离目标 $-d$,接触 $+0.1$ 信号丰富,但可能引入 reward hacking

常用 Reward 组件

# 常见的操作任务 reward 设计
reward = 0.0
reward += -distance_to_target          # 距离奖励:越近越好
reward += 1.0 if grasped else 0.0      # 抓取奖励:是否抓到
reward += 1.0 if task_complete else 0.0 # 完成奖励:任务是否完成
reward += -0.1 if collision else 0.0   # 碰撞惩罚:避免碰撞
reward += -0.01 * action_smoothness     # 平滑惩罚:鼓励平滑动作

Reward Shaping 原则

  1. 对齐目标:reward 应该引导 VLA 完成你真正想要的行为
  2. 避免 hacking:VLA 可能找到"偷懒"的方法获得高 reward
  3. 多阶段设计:先稀疏 reward 确保方向对,再加稠密 reward 加速学习
  4. 安全约束:始终加入碰撞惩罚等安全项

3.4 Hierarchical RL(分层强化学习)

高层(LLM)负责规划,低层(VLA)负责执行

┌─────────────────────────────────────────────────┐
│                 高层策略(LLM)                    │
│  输入:任务指令 + 当前状态                          │
│  输出:子目标序列 [子目标1, 子目标2, 子目标3, ...]   │
│  频率:每 N 步决策一次                              │
└───────────────────────┬─────────────────────────┘
                        │ 子目标
                        ↓
┌─────────────────────────────────────────────────┐
│                 低层策略(VLA)                     │
│  输入:子目标 + 当前观测                            │
│  输出:末端执行器动作 (dx, dy, dz, droll, dgripper) │
│  频率:每控制步(如 3Hz / 10Hz)                    │
└─────────────────────────────────────────────────┘
  • 优势:高层处理长程规划,低层专注于短程操作
  • VLA 的角色:低层执行器,接收 LLM 分解的子任务
  • 代表工作:SayCan, Inner Monologue, Code as Policies

4. 关键算法对比(VLA 视角)

算法 在 VLA 中的角色 核心思想 优点 缺点
BC (Behavior Cloning) VLA 主训练范式 最小化与专家动作的距离(监督学习) 简单、数据利用率高、无需在线交互 复合误差、OOD 泛化差、多模态问题
PPO VLA 微调 / 对齐 Clipped policy gradient 稳定、超参鲁棒、易于实现 样本效率低(需要大量在线交互)
SAC (Soft Actor-Critic) 连续控制 fine-tuning 最大熵 RL,平衡探索与利用 样本效率高、自动调节探索 需要精心设计 reward
DQN 离散动作 VLA Q-learning + 神经网络 + experience replay 简单有效、off-policy 只支持离散动作空间
DAgger BC 改进 主动查询专家纠正 解决分布偏移 需要专家在线参与
Diffusion Policy + RL 最新趋势 用 diffusion model 参数化策略 + RL 优化 能处理多模态动作分布 计算量大

何时用哪种算法?

                你有大量专家数据吗?
                   /          \
                 是             否
                /                \
        任务需要泛化吗?         必须用 RL
          /       \              (SAC / PPO)
        是         否
       /            \
   BC + RL fine-tune  纯 BC
   (BC → PPO)        足够用了

5. 实践指南

5.1 如何为 VLA 设计 Reward Function

Step 1:明确任务成功的判据 - 抓取任务:物体被抓起并移到目标位置 - 打开抽屉任务:抽屉被拉开一定距离

Step 2:分解为可计算的组件 - 目标距离($\ell_2$ 距离或姿态误差) - 关键里程碑(接触、抓取、放置) - 安全约束(碰撞检测、关节限位)

Step 3:确定 reward 类型 - 任务简单 → 稀疏 reward(成功 / 失败) - 任务复杂 → 稠密 reward(距离 + 里程碑 + 约束) - 不确定 → 先稀疏,再逐步加稠密项

Step 4:验证 reward 设计 - 用固定策略随机采样,检查 reward 分布 - 确认 reward 没有意外的高分捷径(reward hacking) - 在模拟器中快速迭代验证

5.2 BC + RL 两阶段训练流程

# ============ Stage 1: BC Pre-training ============
# 使用离线的人类演示数据
vl_model = VLAWithTransformerBackbone()
bc_loss = CrossEntropyLoss(vl_model(actions), expert_actions)
optimizer.step()  # 标准监督学习

# ============ Stage 2: RL Fine-tuning (PPO) ============
# 在线与环境交互
for iteration in range(num_iterations):
    # 收集轨迹
    trajectories = collect_trajectories(vl_model, env, num_steps=2048)

    # 计算优势函数(GAE)
    advantages = compute_gae(trajectories, value_network)

    # PPO 更新(多个 epoch)
    for epoch in range(num_ppo_epochs):
        # Clipped surrogate objective
        ratio = new_policy / old_policy
        clipped = clip(ratio, 1 - eps, 1 + eps) * advantages
        ppo_loss = -min(ratio * advantages, clipped)

        # Value loss
        value_loss = mse(value_network(states), returns)

        # 总 loss
        total_loss = ppo_loss + c1 * value_loss - c2 * entropy
        optimizer.step()

5.3 什么时候用 BC,什么时候用 RL

场景 推荐方案 理由
有大量高质量演示数据 纯 BC 数据足够,简单高效
BC 性能已到瓶颈 BC → PPO fine-tune RL 可以突破 BC 天花板
任务需要超出演示分布的泛化 BC + RL RL 的探索能力处理新情况
安全关键任务(手术、驾驶) BC + 保守 RL 加安全约束的 RL,如 constrained PPO
无演示数据 纯 RL(SAC / PPO) 从零开始探索
只有稀疏 reward SAC + curiosity / BC 引导 用内在动机或 BC 初始化辅助

5.4 常见陷阱与建议

陷阱 说明 建议
Reward Hacking VLA 找到获得高 reward 但不是你想要的行为 多测试,加约束项
探索不足 PPO 微调时 VLA 过快收敛到局部最优 调大 entropy coefficient
Catastrophic Forgetting RL 训练破坏了 BC 学到的能力 加 KL 散度约束(参考 DPO)
Sample Efficiency 在线 RL 需要大量交互,真实机器人成本高 先在模拟器中训练,再 sim-to-real
Reward Scale reward 数值范围影响训练稳定性 对 reward 做 running normalization

交叉引用


推荐阅读

资源 类型 难度 说明
Sutton & Barto 《Reinforcement Learning》 教材 入门 RL 圣经,选读前 6 章即可
Spinning Up in Deep RL (OpenAI) 教程 入门 代码驱动的 RL 教程,PPO/SAC/TRPO 完整实现
Stable Baselines3 文档 文档 中等 PyTorch RL 算法库,含完整 API 和示例
David Silver RL Course (DeepMind) 视频 入门 经典 RL 课程(16 讲),理论扎实
UCB CS285 — Deep RL (Sergey Levine) 课程 进阶 Berkeley 深度强化学习,含前沿进展
Hugging Face RL Course 教程 入门 从 Q-Learning 到 PPO 的交互式课程
The 37 Implementation Details of PPO 博客 进阶 PPO 调参与实现细节,复现必读
PPO 原始论文 (Schulman et al., 2017) 论文 中等 理解 PPO 的设计动机
OpenVLA 论文 (2024) 论文 中等 VLA + BC 训练的实践参考
RT-2 论文 (2023) 论文 中等 VLA 模型在机器人上的应用
Low-cost Policy Learning (Chi et al., 2023) 论文 中等 在线 RL fine-tuning VLA