机器人学习的扩散策略:它是什么以及如何使用它
扩散政策,由 Chi 等人提出。 2023 年,为机器人控制带来了生成建模革命。 通过将动作生成视为降噪问题,它以更简单的行为克隆算法无法做到的方式处理操纵行为的多模态、高维性质。 以下是将其应用到您自己的机器人项目中需要了解的内容。
什么是扩散政策?
扩散策略是一类基于去噪扩散概率模型 (DDPM) 的机器人控制策略,该模型与稳定扩散等文本到图像模型的数学框架相同。 在机器人环境中,生成的“图像”是一系列机器人动作(轨迹)。 该模型从动作空间中的纯高斯噪声开始,根据当前视觉观察和机器人状态对其进行迭代降噪,在 10-100 个降噪步骤后产生连贯的高质量动作序列。
关键的见解是扩散模型学习动作的完整概率分布,而不是预测单个最佳动作。 对于机器人技术来说,这一点至关重要。 人类对同一任务的演示自然是多模式的:一个人可能会根据微妙的上下文提示从左侧或右侧抓住杯子。 必须将此分布折叠为单个预测的模型要么致力于一种模式并在另一半时间失败,要么对模式进行平均并产生始终失败的奇怪的中间轨迹。 扩散策略通过显式地对分布进行建模并在推理时从中进行采样来避免这种情况。
为什么扩散策略优于标准行为克隆
标准行为克隆(BC)将策略训练为监督回归问题:给定观察,预测行动。 当从观察到行动的映射是确定性的和单峰的时,这种方法就有效。 在实践中,操纵任务很少是这样的。 即使是“简单”的任务,例如从桌子上拾取一个块,也涉及多个有效的接近角度、抓取姿势和预抓取配置。 Naive BC 产生的策略会在决策点犹豫、做出妥协的动作选择,或者当测试分布与训练略有不同时彻底失败。
扩散政策在基准操纵套件上始终优于 BC 基线。 在原始论文中,它在 Robomimic 基准测试中的 12 项任务中的 11 项上取得了最先进的结果,尤其是在具有高动作多模态的任务上取得了特别大的优势。 在真实的机器人评估中,扩散策略表现出了更稳健的恢复行为——当机器人达到稍微错误的中间状态时,该策略可以恢复,因为它是从广泛的分布中采样,而不是遵循确定性路径。
与 ACT(使用 Transformers 进行动作分块)相比,扩散策略通常在具有强多模态性的任务上表现更好,而在具有长期依赖关系的任务上表现较差,而 ACT 的块预测则表现出色。 在实践中,两种算法都具有足够的竞争力,数据集的质量和数量比策略架构的选择更重要。 如果您不确定使用哪个,请首先尝试 ACT 来提高迭代速度,如果观察到模式平均失败,则再尝试扩散策略。
扩散政策的数据要求
扩散策略比 ACT 受益于更多的数据,主要是因为去噪网络具有更多的参数和更丰富的建模目标。 在受控条件下,单个任务的实际演示最少为 100-200 次。 为了实现强大的部署性能(处理对象位置变化、照明变化和偶尔的传感器噪声),每个任务预算 300-500 次演示。 与 ACT 不同,扩散策略往往会随着额外的数据不断改进直至相当大的数据集大小,如果您计划投资大规模数据收集工作,那么它是更好的选择。
数据多样性与数据量同样重要。 演示应涵盖您在部署中期望的对象位置、方向和场景配置的范围。 物体总是处于完全相同位置的密集演示集群将产生一种在物体移动几厘米时就会失败的策略。 SVRC的 托管数据收集服务 遵循结构化变化协议——系统地随机化对象位置、照明条件和操作员握持方式——以确保数据集产生可推广的策略。
观察表征也很重要。 使用经过端到端训练的 ResNet 图像编码器的扩散策略通常优于在狭窄任务分布上使用冻结预训练编码器的策略,但当测试条件与训练不同时,预训练编码器(R3M、MVP、DINO)会产生更好的泛化能力。 对于大多数实际项目,从预先训练的编码器开始,以最大限度地提高数据集的价值,只有在拥有 500 多个演示和稳定的环境时才切换到端到端训练。
训练设置和计算要求
扩散策略的参考实现(可在哥伦比亚机器人实验室 GitHub 上找到)使用 UNet 主干(推理速度更快,容量较低)或 Transformer 主干(推理速度较慢,容量较高)进行训练。 对于大多数单任务项目,UNet 变体是正确的起点。 对于 200 集数据集,在单个 RTX 3090 或 4090 上进行训练需要 4-12 小时,具体取决于观察分辨率和行动范围长度。
正确设置的关键超参数:动作范围(要预测的未来步骤数 - 对于桌面任务通常为 16-32)、扩散步骤数(对于 DDPM 为 100,对于 DDIM 为 10-25,质量损失最小)以及观察窗口(要包含多少过去的帧 - 通常为 2)。 不要同时改变这三者; 在调整其中一个的同时修复其他的。 对于提高策略性能最有影响力的变化通常是增加数据集大小,而不是调整架构超参数。
对于真实机器人的推理,100 步的 DDPM 对于高频控制来说通常太慢。 使用具有 10-25 个步骤的 DDIM 调度程序,该调度程序在 RTX 3090 上以约 20Hz 的速度运行 — 足以进行带有缓冲区的 10Hz 控制。 或者,对于更简单的任务,一致性策略蒸馏可以实现 1-3 步推理,同时将性能下降降至最低。
使用 SVRC 数据服务进行扩散策略
SVRC的 数据服务管道 生成格式化的数据集,可直接与扩散策略参考实现和 HuggingFace LeRobot 框架一起使用。 剧集存储为 ZARR 档案,具有同步图像流、本体感受状态和 50Hz 的动作。 质量过滤可以消除任务未成功完成、机器人与环境碰撞或操作员犹豫产生非代表性轨迹的事件。
我们的收集服务使用 SVRC远程操作平台 具有双臂主从控制、腕式和头顶摄像头以及可选的力-扭矩记录。 对于多任务扩散策略训练(单个策略根据任务 ID 或语言学习多个任务),我们可以收集同一活动中的跨任务变体并提供统一的数据集。 使用 OpenArm 或 ALOHA 硬件平台的团队可以获得本机硬件支持; 可根据要求提供定制硬件集成。 联系我们的团队 讨论您的数据要求和时间表。