核心结论
从 Flow Matching action head 的训练目标出发,机器人示教数据采集最重要的原则是:
优先扩大"状态覆盖",同时尽量降低无意义的"同条件动作冲突"。
理想的数据集应当同时满足:
- 横向覆盖广:覆盖更多真实部署中会遇到的状态、扰动、任务阶段和恢复场景
- 纵向监督干净:在给定 observation / task / subtask 条件下,动作应当具有稳定、合理、可解释的结构
- 保留真正的多模态:如果多种动作策略都合理,就保留
- 减少不可解释的随机性:操作员抖动、犹豫、时延、标定漂移等不应被当成"有益多样性"
1. Flow Matching action head 到底在学什么
设真实动作 chunk 为 ,其中 是 action horizon, 是单步动作维度。
训练时采样高斯噪声 ,并在真实动作 与噪声 之间构造条件路径:
对 求导得到条件速度标签:
速度网络接收 ,其中 是 observation, 是 task/subtask condition,输出 。
训练目标:
所以训练数据真正决定的是:
即:在给定机器人观测和任务条件时,数据集认为"合理动作应该如何分布"。
2. 为什么数据采集质量会直接影响速度场
对 MSE 回归,理论最优解为:
网络并不是简单记忆某一条 demonstration,而是在同一条件下,对所有可能的局部速度监督进行条件平均。
如果数据中存在大量互相冲突、但又无法通过输入条件解释的动作,网络就必须对这些冲突进行平均或建模。
这导出数据采集最重要的原则:
不要无目的地增加 ,即给定条件下的动作熵。
2.1 有价值的多样性
例如:
- 左侧有障碍,所以从右侧绕
- 杯子姿态不同,所以抓取姿态不同
- 物体被碰偏后,采用恢复动作
- 相同任务有两种都合理且都值得部署的抓取策略
这些差异是:,应该保留。
2.2 无价值的多样性
例如:
- 不同操作员随意使用不同动作风格
- 操作员犹豫、停顿、抖动
- 控制器 latency 不一致
- 相机和 action timestamp 错位
- 标定漂移导致相同状态记录出不同动作
- 同一任务中存在大量效率很差但"勉强成功"的轨迹
这些差异无法被 observation 或 task condition 解释,却会直接扩大 ,让 action head 更难学。
3. 第一原则:优先扩大状态覆盖
有限采集预算下,更值得增加的是状态覆盖,而不是简单增加 episode 数量。
与其重复采集 500 次几乎完全相同的抓杯子轨迹,不如主动变化:
- 物体位置、姿态
- 机器人初始关节姿态、末端执行器初始位置
- 光照、背景、遮挡
- 容器位置、桌面高度
- 不同目标实例、不同任务阶段
- 发生轻微失败后的状态
- 物体被碰偏、滑动、倾倒后的状态
建议从如下覆盖矩阵来设计采集:
目标不是让几个 easy cell 里堆满数据,而是让 deployment 可能进入的重要 cell 都有高质量示教。
4. 第二原则:给定条件下,示教动作应尽可能稳定、流畅、可解释
Flow Matching 可以表达多模态,但不意味着数据越杂越好。
在同一个 observation / task condition 下,如果两个 action chunk 差别很大,应逐一判断:
4.1 两种行为是否都正确
如果 流畅、低风险、稳定完成,而 犹豫、碰撞、绕路、勉强完成,那么用于最终 action-head 训练时,通常应优先保留 ,降低 的权重或直接过滤。
4.2 差异是否能被输入条件解释
理想情况是:
例如:左边有障碍 → 右绕;右边有障碍 → 左绕。这是模型应该学习的条件依赖。
4.3 两种策略是否都值得部署
如果 observation 几乎相同,但两种策略都值得部署,则这是有价值的多模态,可以保留。
如果答案是"否",则这种差异只是在增加无意义动作熵。
5. 第三原则:真正的多模态应该保留
假设同一状态下,左抓和右抓都安全、有效,则 天然可能是多峰分布。
普通 action MSE 回归容易得到 ,这可能产生一个介于两种策略之间、反而不合理的"平均动作"。
Flow Matching 的优势之一,就是可以建模完整的条件动作分布。
因此:
不要因为担心 velocity averaging 就把所有真实多模态都删掉。
真正应该减少的是:无法通过条件解释、且没有部署价值的模式冲突,而不是所有 multimodality。
6. 第四原则:尽可能通过 condition 消除"伪多模态"
如果同一个视觉状态对应多个动作,首先检查:
是否其实缺少了某个决定动作的条件变量?
例如,同一画面中机器人可能下一步抓杯子、移动勺子、或把碗推到左边。
如果只条件于视觉 会非常混乱。加入 task/subtask 后 会明显更简单。
应尽可能让 action head 条件于:
- task instruction、subtask、skill id、task phase
- object-of-interest、mode / control context
- 必要的历史状态
其本质是降低 。
7. 第五原则:警惕 partial observability 造成的 state aliasing
有时"同状态对应不同动作"并不是行为天然多模态,而是 observation 不够。
例如单帧 RGB 看起来一样,但实际上:
- 轨迹 A 正在"向上抬"阶段
- 轨迹 B 已经抬到位,下一步准备"向右移动"
如果 action head 只看到当前单帧视觉和当前关节状态,这两个状态可能几乎无法区分。这实际上是 state aliasing,而不是有价值的 multimodality。
解决方法不是简单增加更多数据,而是增强 conditioning:
- frame history、proprioceptive history、previous action
- subtask / phase、object state、contact state
- force / tactile 信息
判断标准:
如果正确动作依赖某个变量,而模型输入里没有这个变量,那么再多 demonstration 也只能让模型学习一个更混乱的条件分布。
8. 第六原则:timestamp 对齐是硬约束
训练监督本质上是 。必须确保图像、proprioception、force/tactile、action、controller 的 timestamp 在同一个时间基准上正确对齐。
例如如果图像实际对应 ,proprioception 对应 ,action chunk 却从 开始,那么模型看到的经验分布会人为变成 ,其中 已经不是动作真正对应的状态。
从 Flow Matching 的角度看,这会直接制造无意义的条件动作熵:
建议在数据采集系统层面:
- 所有传感器统一时钟,记录原始 timestamp
- 不依赖"到达主进程的时间"代替真实采样时间
- 明确 action command 与实际 actuator 生效之间的延迟
- 训练前进行 latency calibration
9. 第七原则:action chunk 的整体质量比单步动作质量更重要
Flow Matching action head 通常生成的是完整 action chunk:
因此一个训练标签是整个局部轨迹,而不是单个 action。需要重点检查:
- 控制频率是否稳定、是否存在丢帧或重复帧
- action 是否有 spike、controller 是否中途切换
- 坐标系是否切换、是否存在不连续的 mode transition
- episode 尾部 padding 是否合理
- chunk 跨越 task boundary 时是否仍有明确语义
一个单步看起来正常的数据点,如果其后 30 步发生不合理跳变,那么整个 action chunk 都可能变成低质量监督。
10. 第八原则:统一 action 语义、单位、坐标系和尺度
必须明确每个 action dimension 的物理意义。不要不加区分地混合:
- absolute joint position / joint delta / joint velocity
- end-effector absolute pose / delta pose
- base velocity / gripper position / gripper binary command
需要统一:action representation、坐标系、角度单位、长度单位、rotation representation、gripper convention、delta 定义、normalization、clipping/saturation 规则。
还应统计每个 action dimension 的 min/max、quantile、mean/std、saturation ratio、spike ratio、zero ratio、derivative distribution。
11. 第九原则:主动采恢复轨迹
部署时机器人必然会偏离训练轨迹。如果训练数据只覆盖标准初始状态 → 标准成功轨迹,那么一旦发生轻微偏差,模型可能进入数据分布之外。
因此应主动构造:
例如:抓取点偏移、物体被碰偏、夹爪第一次未完全夹住、末端执行器轨迹被阻挡、物体轻微滑动、接触位置错误、放置失败后重新调整。
关键不是"多采失败",而是:多采可恢复的异常状态及其正确恢复动作。
12. 第十原则:控制不同任务、策略和 rare case 的采样比例
Flow Matching 最终学习的是经验数据分布。如果某类数据占比为 95%,模型自然会优先拟合这类模式。
需要特别关注:
- rare-but-important recovery、小物体操作、极端姿态
- 少见但高风险状态、边界 workspace、长尾任务
- 特殊接触状态
建议对数据 mixture 做:task balancing、scenario balancing、recovery oversampling、duplicate trajectory downsampling、operator balancing、hard-case weighting。
目标不是让数据集看起来"自然",而是让训练分布支持真实部署需求。
13. 实用判断流程
当发现同一条件附近存在明显不同的 action chunk 时:
相似 condition 下动作不同
↓
两种动作都正确吗?
/ \
否 是
| |
过滤/降权 差异能被 condition 解释吗?
/ \
是 否
| |
正常保留 两种策略都值得部署吗?
/ \
是 否
| |
保留多模态 增加 condition
或过滤/降权这个流程比简单的"成功轨迹全部保留"更适合 Flow Matching action head。
14. 数据采集的核心指标
不建议仅以"100 小时"、"10000 episodes"、"100 万 transitions"作为数据质量指标。
更值得关注:
- 状态覆盖 :关键状态空间覆盖度
- 条件一致性 :给定 condition 后动作是否稳定、合理
- 恢复覆盖 :异常状态及恢复策略覆盖度
- 时间质量 :observation-action 时间同步质量
- 动作质量 :action chunk 的平滑性、成功率、效率和安全性
最终:
最终总结
从 Flow Matching 的训练目标 可以直接得到机器人数据采集最重要的工程指导:
- 优先扩大状态覆盖:主动增加初始状态、物体配置、环境变化、任务阶段、扰动、恢复场景
- 保证条件动作的一致性:减少操作员随机风格、犹豫、抖动、时间错位、标定漂移、不必要的低质量策略
- 保留真正有价值的多模态:只要多种策略都正确、安全、值得部署,就不应该因为"动作不唯一"而删除
- 用 condition 解释动作差异:优先增加 task、subtask、history、phase、robot state、contact information
- 把 timestamp 和 action semantics 当作训练目标的一部分:错误的时间对齐或 action 定义会直接污染 velocity field
- 主动采 recovery-success:相比重复 nominal success,更有价值的是异常状态 → 正确恢复 → 成功
一句话版本
Flow Matching action head 的数据采集,不应追求"同一种轨迹采得更多",而应追求"更多有意义的状态 + 每个状态下高质量、可解释的动作分布"。
从数学上说:
这是 Flow Matching 原理对机器人示教数据采集最直接的指导。
补充:来自数据多样性实证研究的三点修正
上面的原则是从 Flow Matching 的训练目标反推出来的,属于「按训练目标应该怎样」。这篇论文在 AgiBot World(100 万条真机轨迹、217 个任务、87 种原子技能,全部来自单一 AgiBot G1 平台)上做了 控制变量实验,把其中几条从推理变成了可量化的结论,并修正了一条。
需要先说明适用范围:论文的策略是 GO-1 和 RDT,不是 Flow Matching action head。但三者都是 action chunk 级别的 imitation learning,都通过条件期望吸收同条件下的监督冲突,因此下面关于 数据分布的结论可以迁移;关于具体模型性能的数字不能。
一、状态覆盖要再拆一层:场景多样性 > 技能多样性
上面的第一原则只说「优先扩大状态覆盖」。论文把它拆成两个正交的轴:
- skill diversity:任务指令里的原子技能(pick / place / pour / fold …)覆盖多少
- scene diversity:同一技能下的场景、物体配置、光照、空间布局变化多少
然后在数据量完全相同(都取 10%)的前提下比较三种采样:
| 采样策略 | 构造方式 | 平均得分 |
|---|---|---|
| scenario-based | 随机取 10% 场景 | 0.33 |
| task-based | 人工挑 10% 与下游最相关的任务 | 0.36 |
| episode-based | 每个任务各随机取 10% episode | 0.46 |
值得注意的是 episode-based 采样里,与下游评测相关的原子技能占比反而更低(59.2% 对 71.1%)—— 也就是说它用更少的相关技能样本赢了 0.1 分。
更关键的是分布偏移下的差距:
视觉干扰: episode 比 scenario 高 0.13,比 task 只高 0.09
物体-环境泛化: episode 比 scenario 高 0.13,比 task 只高 0.08
(p < 0.05)两种多样性在 in-domain 上收益接近,但一旦进入分布偏移,场景多样性的优势稳定大于技能多样性。 换句话说,上面「优先扩大状态覆盖」这条原则里, 的横向覆盖比 的语义覆盖更值钱。
在任务多样性足够的前提下,继续加数据仍然有效,而且服从幂律。把 optimality gap 定义为 :
对应的绝对得分是 0.28(无预训练)→ 0.47(10 万)→ 0.53(25 万)→ 0.58(100 万)。指数 很小,这是对「加数据」这条路的一个定量提醒:在多样性已经足够时,再要提升一个台阶需要的 数据量是指数级的 —— 这正是下面第二点的价值所在。
二、伪多模态有了一个可计算的坐标轴:action rate
上面第 4、5 原则区分了「有价值的多样性」和「无价值的多样性」,但判据是靠人去问「这个差异能不能 被 condition 解释」。论文把 expert diversity 拆成两个可分离的维度,其中一个可以直接算:
- spatial multimodality:从左边绕还是从右边绕 —— 真实的策略分歧,应当保留
- action rate multimodality:同一条轨迹执行得快或慢 —— 应当消除
为什么后者对 action chunk 训练是有害的?因为 chunk 是固定长度的时间窗。同一条 的空间轨迹,快慢不同会落成完全不同的标签:
Demo 1(慢) chunk = [A → B]
Demo 2(快) chunk = [A → B → C → D]
观测几乎相同,监督完全不同空间上等价的运动被当成两个不同训练样本 —— 这就是上面第 8 原则讲的「人为制造 velocity supervision 冲突」在时间轴上的形式。timestamp 错位是观测与动作之间的错位,action rate 偏置是 同一条动作序列在时间上的伸缩;两者都在扩大 ,而且都不是真实的策略多模态。
论文给出的速度度量很朴素:把末端执行器相对位移各维归一化到 ,再取 L1 范数
纠偏方式是先学一个 ARM (Action Rate Model):冻结的 SigLIP 视觉编码器加一个 MLP,从 observation 预测该状态下的期望速度
训练策略时,不再直接用固定长度 的 chunk,而是先找出与期望速度最匹配的实际长度
再把 插值回长度 。于是相似观测下的样本被拉到一致的速度上,空间信息保持不变。 冻结视觉编码器是刻意的:让 ARM 学「相似观测的平均速度」,而不是记住具体画面。
效果(4 个真机任务平均分):
| 预训练数据 | 微调数据 | 平均分 |
|---|---|---|
| biased | biased | 0.46 |
| debiased | biased | 0.49 |
| biased | debiased | 0.50 |
| debiased | debiased | 0.53 |
两阶段都纠偏得到 +15%,相当于把预训练数据放大 2.5 倍;倒水任务从 0.20 到 0.32(+60%), 叠衣服 +23%。数据效率上,纠偏后 60 条示教超过原方法 120 条;数据越少收益越大(15 条示教时, Make Sandwich 从 0.35 到 0.52)。微调阶段的幂律指数也更陡(Wipe Table 从 到 ), 即同样的数据能更快压掉 optimality gap。
这里有一个对上面第 13 节流程图的实质修正。那张图把「无法被 condition 解释的差异」一律导向 「过滤或降权」。但对 action rate 这一类偏置,过滤会连同轨迹里的空间信息一起丢掉,而论文的做法是 第三条路:重参数化。同时论文也验证了两种更直觉的做法为什么不行 ——
- 全部归一化到统一速度:精细任务(插拔对齐)本来就需要慢,倒水本来就需要停顿,速度是任务要求的 一部分
- 把每条 episode 缩放到相同时长:episode 内部各段速度本来就异构,而且不同初始条件下合理时长本就 不同
所以正确的目标不是「把速度压平」,而是「让速度成为 observation 的函数」—— 这和上面第 6 原则 (用 condition 消除伪多模态)是同一个思路,只是这里的 condition 不是加进模型输入,而是用来 重整标签。
判断一种动作差异该保留还是该消除,看它是否能被 observation 解释;判断该过滤还是该纠偏, 看丢掉它是否会连带丢掉别的有效监督。速度偏置属于后者:它和空间轨迹纠缠在同一段数据里,所以正确 做法是把速度对齐,而不是把这条轨迹删掉。
两个使用前提值得记住:插值改变了动力学,需要高精度控制器才能跟得上,否则要改成让策略预测 reached pose(实际到达位姿)而不是 commanded pose;另外对乒乓球这类速度本身参与环境交互的动态 任务,这套纠偏不适用。
三、本体多样性:一致性比覆盖更重要
上面的原则没有讨论这个维度。论文用单一本体(AgiBot G1)的高质量数据预训练,再迁移到形态、动作 空间、相机配置都不同的平台:
| 模型 | 预训练数据 | 真机 Agilex 平均分 |
|---|---|---|
| RDT-OXE | OXE (Open X-Embodiment),22 种本体 | 0.38 ± 0.03 |
| RDT-AWB | AgiBot World,单一本体 | 0.43 ± 0.04 |
而且评测环境的控制方式和相机配置本来就出现在 OXE 训练集里,对 OXE 一方有利。作者明确说这只是 existence proof,不是证明单本体普遍更优。
对采集的指导是保守但有用的:不要为了「将来要跨本体」而提前把预算摊薄到多个平台。跨本体能力 更多来自微调阶段,而预训练阶段更值钱的是采集协议的一致性 —— 统一的本体、相机、标定和验收流程。 这与上面第 10 原则(统一 action 语义、单位、坐标系)指向同一件事:一致性本身就是数据质量。
仍然没有解决的部分
论文自己列出的遗留问题,恰好是上面第 4 原则里最难自动化的那一类:
采集中无意义的停顿
次优行为模式(可能让机器人进入死循环)这些同样属于「无法被 condition 解释、也没有部署价值」的模式,但目前没有像 action rate 这样 可计算的度量,仍然依赖人工筛查和评分。
与上面原则的对应关系
| 上面的原则 | 这篇论文提供的 |
|---|---|
| 优先扩大状态覆盖 | 实证支持,并拆成 scene / skill 两轴:分布偏移下 scene 更关键 |
| 减少无意义的动作熵 | 给出一个可计算的子集(action rate)和纠偏方法,+15% ≈ 2.5× 数据 |
| 保留真正的多模态 | 支持:spatial multimodality 必须保留,压平速度不等于压平策略 |
| 用 condition 解释动作差异 | 扩展:condition 不只是喂进模型,也可以用来重整标签 |
| 不可解释的差异就过滤或降权 | 修正:先看能不能纠偏,过滤会连带丢掉空间监督 |
| 统一 action 语义与坐标系 | 提升为预训练阶段的首要项:一致性优先于本体覆盖 |