核心结论
从 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 原理对机器人示教数据采集最直接的指导。