域随机化
定义
域随机化(DR)是一种通过在策略训练期间故意随机化模拟环境的视觉和物理参数来改进模拟到真实转移的技术。核心洞察非常简洁:如果一项控制策略在足够广泛的模拟条件分布中取得成功,那么现实世界就只是该分布的另一个样本,策略无需显式适应即可转移。
域随机化首先由 Tobin 等人(2017)在目标检测中正式化,由 Peng 等人(2018)在强化学习中正式化,已成为模拟到真实管道的标准组件。它通过使策略对视觉和物理变化具有鲁棒性,而不是要求模拟精确匹配现实,从而避免了对光学逼真模拟的需求。
该方法与现代 GPU 加速模拟器(NVIDIA Isaac Sim、MuJoCo with MJX、Genesis)结合时特别强大,这些模拟器可以并行运行数千个随机化环境,生成大量多样化的训练数据,而无需任何真实世界数据收集。
工作原理
在每个训练回合(或每次重置时),模拟器从预定义分布中为一组可随机化参数采样新值。控制策略必须学会在这种变化中取得成功。经过数百万个具有不同参数的回合,策略学会了对随机化量不变的特征和策略。
随机化有两个主要类别:
视觉随机化改变场景的外观:光照方向、强度和颜色;相机位置和视场;物体纹理和颜色;背景图像;阴影属性;以及干扰物体。这迫使视觉系统依赖结构特征(形状、空间关系),而不是在模拟和现实之间不同的表面线索(颜色、纹理)。
物理随机化改变模拟的动力学:摩擦系数、物体质量、关节阻尼、执行器增益、传感器噪声水平和接触参数。这使控制策略对物理模拟中不可避免的不准确性以及真实硬件中的变化(磨损的关节、不同的表面材料)具有鲁棒性。
随机化范围通常根据领域知识手动设置。范围过窄,现实世界会超出训练分布。范围过宽,训练变得不必要地困难,导致保守的策略。自适应域随机化(ADR)由 OpenAI 开创,在训练过程中自适应地扩展随机化范围,从简单开始,逐步增加难度。
随机化的内容
- 光照 — 方向、强度、色温、光源数量、环境光与定向光的比例
- 相机 — 位置偏移(平移和旋转)、视场、白平衡、曝光
- 纹理 — 物体表面纹理、桌面/背景纹理,通常从随机图像数据集中采样
- 物体属性 — 质量(通常 ±50%)、摩擦力(0.2-1.5)、尺寸缩放(0.8-1.2x)、初始姿态
- 机器人动力学 — 关节摩擦、执行器延迟(0-20ms)、PD 增益、连杆质量偏移
- 传感器噪声 — 关节编码器上的高斯噪声、相机噪声/模糊、深度传感器噪声模式
- 干扰物体 — 放置在场景中与任务无关的随机物体,迫使策略专注于任务相关特征
与替代方法的比较
DR 与域适应:域适应在真实数据上微调模拟训练的策略以缩小差距。DR 试图通过在足够广泛的分布上训练来使差距无关。DR 不需要真实数据;域适应需要一些。实际上,结合两者(DR 用于初始鲁棒性,然后在真实数据上微调)会产生最佳结果。
DR 与系统识别:系统识别测量真实世界参数(摩擦、质量、延迟)并配置模拟器以精确匹配。这是准确的但脆弱的:如果任何东西改变(新的夹爪垫、不同的桌面表面),识别必须重复。DR 对未建模的变化更具鲁棒性,但可能产生更保守的策略。
DR 与真实到模拟:真实到模拟方法(如 NVIDIA 的 Isaac Lab 数字孪生工作流)使用真实世界扫描和测量来构建高保真模拟。这与 DR 互补:你可以构建准确的基础模拟,然后在其上应用 DR 以获得额外的鲁棒性。
DR 与真实世界训练:直接在真实硬件上训练完全避免了模拟到真实的差距,但速度慢、成本高且风险大。DR 以可忽略的边际成本实现数量级更多的训练数据。混合方法 — 使用 DR 进行大部分训练的模拟,然后进行少量真实世界微调 — 是新兴标准。
成功案例
- OpenAI Dactyl(2019)— 使用 MuJoCo 中的大规模 DR 训练 Shadow Hand 解决魔方。使用自适应域随机化(ADR)逐步扩展随机化范围。尽管灵巧操纵的极端复杂性,策略零样本转移到真实机器人。
- Unitree 运动 — 四足和人形运动策略通常在 Isaac Sim 中使用地形随机化(斜坡、楼梯、粗糙表面)和动力学随机化进行训练,然后直接部署在硬件上。
- NVIDIA IsaacGym/Isaac Lab — GPU 加速的并行模拟使 RL 策略能够同时在数千个随机化环境中训练,将运动和操纵任务的训练时间从数天减少到数小时。
实际要求
模拟:你需要一个支持你关心的随机化的模拟器。对于视觉 DR:Isaac Sim、Blender/CycleGAN 或自定义渲染。对于物理 DR:MuJoCo、Isaac Sim、PyBullet 或 Genesis。模拟器必须足够快以生成数百万个具有不同参数的回合。
计算:DR 增加了有效训练时间,因为随机化使任务变得更难。GPU 加速模拟器(Isaac Sim、MuJoCo MJX)运行数千个并行环境对于实际训练时间至关重要。典型的具有 DR 的运动策略在单个高端 GPU 上训练 2-8 小时;操纵任务可能需要 12-48 小时。
调整:设置随机化范围需要领域专业知识和实验。常见的失败模式包括范围过窄(现实世界超出范围)、过宽(训练无法收敛)或缺少重要参数(真实世界差异在未随机化的维度中)。ADR 有帮助但增加了复杂性。
系统与随机参数采样
并非所有随机化策略都同样有效。存在两种主要方法:
均匀随机采样在每个回合重置时从均匀分布中独立绘制参数值。这是最简单的方法,对许多应用足够。但是,它不保证参数空间的覆盖 — 某些参数组合可能被欠采样,在训练分布中留下现实世界可能落入的间隙。
结构化采样使用拉丁超立方体采样(LHS)、Sobol 序列或其他准随机方法来确保参数空间的均匀覆盖。这减少了覆盖相同有效参数空间体积所需的回合数,在高维随机化设置(10+ 参数)中将样本效率提高 2-5 倍。
相关随机化在参数之间引入现实的相关性。在现实世界中,摩擦和刚度是相关的(橡胶具有高摩擦和低刚度;金属具有中等摩擦和高刚度)。独立随机化它们会产生物理上不合理的组合,浪费训练计算。从物理参数的学习联合分布(从真实物体测量)采样会产生更现实和高效的随机化。
实现指南
实现域随机化的实际工作流程:
- 无 DR 的基线:在默认模拟器设置中训练策略。在真实硬件上部署以测量基线模拟到真实差距。
- 识别失败模式:对模拟训练的策略在真实硬件上失败的原因进行分类。视觉失败(错误的物体识别)建议视觉 DR。动力学失败(错误的力、错过的接触)建议物理 DR。
- 添加目标随机化:从最可能导致观察到的失败的参数开始。视觉 DR(光照 + 纹理)用于视觉失败。摩擦 + 质量 DR 用于动力学失败。避免一次随机化所有内容 — 从窄范围开始并扩展。
- 调整范围:根据物理可行性设置初始范围。摩擦:0.3-1.2(常见材料的典型范围)。质量:±30% 的标称值。光照:3 个光源,随机方向和强度。迭代训练和评估。
- 验证:在真实硬件上部署 DR 训练的策略。与基线比较。如果差距已缩小,你走对了方向。如果出现新的失败模式,为这些维度添加随机化。







