VLA 入门(六):VLA 如何进行强化学习后训练?

本文介绍行为克隆的局限、Offline RL、Online RL、Reward Model、Critic、候选动作采样和世界模型辅助决策,帮助初学者理解 VLA 为什么还需要强化学习。


摘要

当前很多 VLA 模型主要通过行为克隆学习机器人示范。

行为克隆可以让模型快速获得基本操作能力,但它只是在模仿数据中的动作,并不直接优化任务成功率。

强化学习后训练的目标是:

在已有 VLA 能力基础上,利用奖励信号进一步提升任务成功率、动作稳定性和失败恢复能力。

本文将介绍:

  • 行为克隆的局限;

  • VLA 后训练的基本流程;

  • Offline RL 和 Online RL;

  • Reward Model 与 Critic;

  • 候选 Action Chunk 采样;

  • 世界模型辅助动作选择;

  • VLA-RL 面临的主要困难。


关键词

VLA强化学习RL 后训练行为克隆CriticReward Model


目录

TOC


一、为什么 VLA 还需要强化学习

大多数 VLA 首先使用机器人示范数据进行训练。

训练目标是:

复制代码
给定观测和语言
预测专家执行的动作

这种方式称为:

复制代码
Behavior Cloning

行为克隆本质上是监督学习。

例如:

复制代码
predicted_action = policy(
    image,
    language,
    state,
)

loss = mse_loss(
    predicted_action,
    expert_action,
)

但行为克隆学习的是:

专家在数据中做了什么。

它不一定直接学习:

哪个动作更容易成功。

这就是强化学习后训练存在的原因。


二、行为克隆的主要局限

2.1 分布偏移

训练数据全部来自专家轨迹。

专家通常处于正确状态:

复制代码
夹爪位于合理位置
机械臂没有发生碰撞
物体没有被推歪

但模型推理时可能产生小误差。

例如:

复制代码
预测动作稍微向左偏
      ↓
下一帧状态偏离专家数据
      ↓
模型从未见过该状态
      ↓
继续预测错误动作
      ↓
误差不断累积

这称为:

复制代码
Distribution Shift

2.2 数据中缺少失败恢复

专家示范通常只记录成功轨迹。

模型很少看到:

复制代码
抓空后如何重新抓取
物体滑落后如何恢复
抽屉只打开一半怎么办

因此,行为克隆策略容易在出现意外后彻底失败。

2.3 模仿动作不等于优化结果

专家动作可能并不唯一。

数据中还可能包含:

  • 不够平滑的操作;

  • 冗余移动;

  • 遥操作延迟;

  • 操作者习惯;

  • 次优路径。

行为克隆会同时模仿这些特点。


三、强化学习的基本目标

强化学习关注:

复制代码
状态
动作
奖励
长期回报

在机器人任务中,可以定义:

复制代码
成功完成任务:+1
任务失败:0
发生碰撞:-1
动作过大:负奖励
动作平滑:正奖励

策略的目标不再只是接近专家动作,而是最大化累计奖励:

复制代码
J(π) = E[Σ γᵗrₜ]

其中:

  • π 是策略;

  • rₜ 是时间 t 的奖励;

  • γ 是折扣因子。

对于 VLA,可以将策略表示为:

复制代码
π(a | image, language, state)

强化学习通过奖励优化这个策略。


四、VLA 后训练的基本流程

一个常见流程可以概括为:

复制代码
大规模机器人数据
      ↓
行为克隆预训练
      ↓
获得基础 VLA 策略
      ↓
环境交互或离线数据
      ↓
奖励、Critic 或偏好信号
      ↓
强化学习后训练

行为克隆负责让模型:

复制代码
先学会基本动作

强化学习负责让模型:

复制代码
进一步提高成功率

直接从随机策略开始训练大型 VLA,通常成本很高。

因此,更常见的是:

先模仿,再强化。


五、Offline RL 是什么

Offline RL 指:

只使用已有数据训练,不在训练过程中持续与环境交互。

数据集可能包含:

复制代码
观测
动作
奖励
下一时刻观测
任务结束标记

即:

复制代码
(oₜ, aₜ, rₜ, oₜ₊₁, done)

优点

  • 不需要训练时控制真实机器人;

  • 安全性较高;

  • 可以重复使用历史数据;

  • 适合真实机器人数据。

缺点

Offline RL 容易遇到分布外动作问题。

Critic 可能错误地认为一个从未在数据中出现过的动作非常好。

但这个动作实际执行后可能失败。

因此,Offline RL 通常需要限制策略不要偏离数据分布太远。


六、Online RL 是什么

Online RL 指:

策略在训练过程中持续与环境交互,并根据新数据更新。

基本流程为:

复制代码
策略执行动作
      ↓
环境返回奖励和新状态
      ↓
数据加入经验池
      ↓
更新策略
      ↓
再次交互

优点

  • 能够探索新的动作;

  • 可以真正根据任务结果优化;

  • 能学习失败恢复;

  • 可以修正行为克隆的偏差。

缺点

  • 需要大量环境交互;

  • 真实机器人训练成本很高;

  • 存在设备磨损;

  • 存在碰撞风险;

  • 数据采集速度慢。

因此,很多工作会先在仿真环境中进行 Online RL,再考虑真实机器人迁移。


七、Reward Model 是什么

机器人奖励并不总是容易直接定义。

对于简单任务:

复制代码
按钮是否按下
抽屉是否打开
物体是否进入目标区域

可以通过环境状态自动判断。

但对于复杂任务:

复制代码
把桌面整理干净
把物品摆放整齐
以安全方式递给人类

奖励很难用简单规则描述。

Reward Model 的作用是:

根据观测、任务和动作结果,判断当前行为有多好。

输入可能包括:

复制代码
任务指令
当前图像
动作前后的图像
机器人轨迹

输出一个分数:

复制代码
reward = 0.82

Reward Model 可以来自:

  • 人工偏好标注;

  • 成功失败标签;

  • VLM 判断;

  • 规则与学习模型结合;

  • 自动任务检测器。


八、Critic 是什么

Critic 用于评估:

当前状态下执行某个动作,未来可能获得多少奖励。

常见价值函数包括:

状态价值

复制代码
V(s)

表示从当前状态开始,未来能够获得的期望回报。

动作价值

复制代码
Q(s, a)

表示在当前状态执行动作 a 后,未来能够获得的期望回报。

对于 VLA,可以扩展为:

复制代码
Q(image, language, state, action_chunk)

也就是评估一整段候选动作。


九、Policy 和 Critic 如何配合

VLA Policy 负责生成动作:

复制代码
Policy:
我认为可以执行这个动作

Critic 负责评估动作:

复制代码
Critic:
这个动作成功概率较高

可以用一个简单流程表示:

复制代码
VLA 生成多个候选动作
        ↓
Critic 分别打分
        ↓
选择得分最高的动作
        ↓
发送给机器人执行

这是一种非常直观的 VLA-RL 结合方式。


十、什么是候选动作采样

假设 VLA 使用 Diffusion 或 Flow Matching 生成 Action Chunk。

由于生成过程带有随机性,可以使用不同随机噪声生成多个候选动作:

复制代码
candidates = []

for k in range(num_candidates):

    action_chunk = policy.sample(
        observation,
        rng_seed=k,
    )

    candidates.append(action_chunk)

例如生成:

复制代码
Candidate 0
Candidate 1
Candidate 2
Candidate 3

它们都来自同一个 Policy,只是随机噪声不同。

这不是额外的规划器,也不是搜索树。

它本质上是:

同一个生成策略进行多次随机采样。


十一、候选动作如何选择

Critic 可以对候选动作打分:

复制代码
scores = []

for action_chunk in candidates:

    score = critic(
        observation,
        action_chunk,
    )

    scores.append(score)

best_index = scores.argmax()
best_action = candidates[best_index]

整体流程为:

复制代码
当前观测
    ↓
VLA 采样 K 个 Action Chunk
    ↓
Critic 预测每个候选的价值
    ↓
选择最高价值动作

这种方式可以在不修改底层 VLA 生成机制的情况下,提高动作选择质量。


十二、为什么需要多个候选动作

对于复杂场景,单次采样可能不是最佳方案。

例如,抓取一个杯子时,可能存在:

复制代码
从左侧接近
从右侧接近
从上方接近
先旋转再接近

VLA 单次输出可能只是其中一种。

多次采样后,Critic 可以比较不同方案。

这类似于:

Policy 负责提出方案,Critic 负责选择方案。


十三、VLA 可以如何直接用强化学习更新

除了候选动作选择,还可以直接更新 Policy 参数。

例如,策略梯度思想为:

复制代码
高奖励动作:提高生成概率
低奖励动作:降低生成概率

对于自回归 Action Token,可以优化动作 Token 的生成概率。

对于 Diffusion 或 Flow Matching,可以优化动作生成分布,使高奖励 Action Chunk 更容易被采样。

但大型生成模型直接进行 RL 更新容易遇到:

  • 训练不稳定;

  • 显存占用高;

  • 策略快速偏离预训练模型;

  • 语言和视觉能力退化;

  • 奖励投机。

因此,实际训练中可能采用:

  • 冻结大部分主干;

  • 只训练 Action Expert;

  • LoRA;

  • 小学习率;

  • KL 正则;

  • 行为克隆损失混合;

  • Critic 引导采样。


十四、为什么要保留行为克隆损失

如果强化学习只追求奖励,模型可能忘记原有操作能力。

因此,可以使用联合目标:

复制代码
L = L_RL + λL_BC

其中:

  • L_RL 提高任务奖励;

  • L_BC 保持策略接近专家数据。

也可以加入 KL 约束:

复制代码
KL(π_new || π_reference)

限制更新后的策略不要偏离原始 VLA 太远。

这与大语言模型后训练中的思想有一定相似性:

复制代码
保持原模型能力
同时优化新的偏好或奖励

十五、世界模型如何辅助 VLA-RL

世界模型用于预测:

复制代码
执行一个动作后,环境会发生什么

输入:

复制代码
当前观测 + 候选动作

输出:

复制代码
未来图像
未来状态
任务进度
成功概率

因此,可以在真正执行动作前先进行"想象"。

流程为:

复制代码
VLA 生成候选动作
        ↓
世界模型预测每个动作的未来结果
        ↓
Reward Model 或 Critic 评估结果
        ↓
选择最佳动作

这类似于人类:

先想象动作后果,再决定是否执行。


十六、世界模型和 Critic 有什么区别

Critic 直接输出价值:

复制代码
当前状态 + 动作 → 分数

世界模型则预测未来:

复制代码
当前状态 + 动作 → 未来状态

然后可以再对未来状态进行评估。

因此:

复制代码
Critic:直接判断动作好不好
世界模型:先预测会发生什么

世界模型提供的信息更丰富,但训练和推理成本通常也更高。


十七、稀疏奖励问题

机器人任务的奖励经常非常稀疏。

例如:

复制代码
完成任务:1
没有完成:0

机器人执行了 200 步,只有最后一步才能知道是否成功。

这会导致学习困难。

解决方式包括:

  • 奖励塑形;

  • 子任务奖励;

  • 视觉进度奖励;

  • Reward Model;

  • Hindsight Experience Replay;

  • 任务阶段检测;

  • 世界模型预测。

例如,抓杯子任务可以设计:

复制代码
接近杯子:+0.1
夹爪对准:+0.2
成功抓住:+0.4
移动到目标:+0.2
成功放置:+1.0

但人工设计过多奖励可能让模型钻规则漏洞。


十八、VLA-RL 面临的主要困难

1. 真实机器人交互成本高

机器人每秒只能产生有限数据,无法像游戏环境一样快速运行数百万步。

2. 奖励难以定义

复杂语言任务很难自动判断是否完成。

3. 大模型训练成本高

VLA 通常包含大型视觉语言主干,完整 RL 更新需要大量显存和计算。

4. 安全探索困难

强化学习需要探索,但真实机器人不能随意碰撞和试错。

5. 长任务信用分配

任务可能经过数百步才成功,很难判断前面的哪个动作最重要。

6. 奖励投机

模型可能找到提高奖励但不符合真实目标的行为。

例如:

复制代码
通过遮挡摄像头欺骗视觉奖励模型

十九、一个简化的 VLA-RL 框架

复制代码
for episode in range(num_episodes):

    observation = env.reset()
    done = False

    while not done:

        candidates = []

        for k in range(num_candidates):

            action_chunk = policy.sample(
                observation,
                seed=k,
            )

            candidates.append(
                action_chunk
            )

        scores = [
            critic(
                observation,
                action_chunk,
            )
            for action_chunk in candidates
        ]

        best_index = max(
            range(len(scores)),
            key=lambda i: scores[i],
        )

        selected_chunk = candidates[
            best_index
        ]

        next_observation, reward, done = (
            env.step(
                selected_chunk[0]
            )
        )

        replay_buffer.add(
            observation,
            selected_chunk,
            reward,
            next_observation,
            done,
        )

        observation = next_observation

    update_critic(replay_buffer)
    update_policy(replay_buffer)

这只是一个概念示例。

真实系统还需要处理:

  • Action Chunk 执行长度;

  • 多环境并行;

  • 奖励归一化;

  • 目标网络;

  • 优势估计;

  • KL 正则;

  • 混合行为克隆损失;

  • 模型冻结策略。


二十、初学者学习路线

建议按照以下顺序学习。

第一步:行为克隆

理解:

复制代码
Observation → Action

以及分布偏移问题。

第二步:基础强化学习

理解:

  • MDP;

  • Reward;

  • Return;

  • Value;

  • Q Function;

  • Policy Gradient;

  • Actor-Critic。

第三步:Offline RL

理解为什么不能让策略随意偏离离线数据。

第四步:候选动作与 Critic

这是理解 VLA-RL 比较直观的切入点。

第五步:世界模型

理解如何预测候选动作的未来结果。

第六步:生成策略强化学习

进一步研究如何更新 Diffusion 或 Flow Matching Policy。


二十一、常见误区

误区一:强化学习可以替代行为克隆

对于大型 VLA,直接从随机策略开始 RL 通常成本极高。

行为克隆仍然是重要基础。

误区二:Critic 是另一个 Policy

Policy 负责生成动作,Critic 负责评价动作。

二者作用不同。

误区三:候选动作生成就是搜索树

多次使用不同随机噪声采样 Action Chunk,并不等于构建搜索树。

误区四:奖励越复杂越好

过于复杂的人工奖励可能导致奖励投机,甚至偏离真实任务目标。

误区五:仿真中有效就能直接部署真实机器人

仿真与真实环境之间存在视觉、动力学和控制误差。


二十二、总结

VLA 的行为克隆训练解决的是:

复制代码
如何模仿专家动作

强化学习后训练进一步解决:

复制代码
如何根据任务结果优化动作

常见 VLA-RL 路线包括:

复制代码
Offline RL
Online RL
Reward Model
Critic
候选动作选择
世界模型预测
直接优化生成策略

一个容易理解的组合是:

复制代码
VLA 生成多个候选动作
Critic 对候选动作打分
选择最优动作执行

更进一步,可以使用世界模型预测动作后果,再由奖励模型进行评估。

因此,VLA、Critic 和世界模型可以分别理解为:

复制代码
VLA:提出动作
Critic:评价动作
世界模型:预测动作后果

强化学习后训练的目标,不只是让机器人模仿得更像,而是让机器人真正完成得更好。

相关推荐
祉猷并茂,雯华若锦15 小时前
Appium 3.x实战:获取元素属性全解析
python·appium·自动化
触底反弹16 小时前
🔥 从零搭建 RAG 知识库:爬虫→分词→向量化→检索,一步都不能错
javascript·人工智能·面试
宠友信息16 小时前
消息序号如何保证即时通讯源码聊天记录稳定加载
java·spring boot·redis·python·mysql·uni-app
zhou lily16 小时前
超自动化落地:RPA+AI如何打通业务流程的“最后一公里”?
人工智能·自动化·rpa
tyqtyq2216 小时前
HarmonyOS AI 应用开发实战:简历项目经历改写系统
人工智能·学习·华为·生活·harmonyos
小柯南敲键盘17 小时前
批量图片翻译与视频字幕一站式解决高效跨境电商沟通难题
大数据·人工智能·python·音视频
FreeBuf_17 小时前
仅用六分钟,黑客借助Gemini CLI自主构建并迁移C&C僵尸网络
网络·人工智能
xd18557855517 小时前
表情包配文-基于鸿蒙的AI表情包配文生成应用开发实践
人工智能·华为·harmonyos·鸿蒙
石山代码17 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·人工智能