vla训练为什么要Domain Randomization

VLA(Vision-Language-Action)训练里用 Domain Randomization(域随机化,DR),核心目的可以浓缩成一句话:

故意把训练环境搞得“变化很大”,让 VLA 学动作策略时依赖真正稳定的任务语义,而不是记住训练环境的外观细节。

尤其是simulation → real robot(Sim2Real) 时,Domain Randomization 几乎是最经典的手段之一。

1. VLA 最大的问题:训练分布和真实世界不一样

假设你在仿真器里训练机器人


Instruction:
"Pick up the red cup."

Vision:
桌子 + 红杯子 + 机械臂

↓

VLA

↓

Action:
Δx, Δy, Δz, gripper close

如果训练数据永远是:

  • 白桌子
  • 固定灯光
  • 固定摄像头
  • 红杯子永远在某个区域
  • 同一种机械臂
  • 同一个背景

模型很容易学到一些 shortcut。

比如它可能实际上学的是:

“看到这块红色像素出现在画面右下角 → 手往右移动。”

而不是:

“识别 instruction 中的 red cup → 找到对应 object → 判断其 3D 位置 → 规划抓取动作。”

这样一到真实机器人:


仿真:
白桌子
↓
真实:
木桌子

仿真:
均匀光照
↓
真实:
阴影、反光

仿真:
固定相机
↓
真实:
相机偏了 3cm

policy 就可能直接崩掉。


2. Domain Randomization 就是在破坏这些 shortcut

例如训练时随机:


Texture
桌子:
wood / white / black / metal / random texture

Lighting
brightness = random
direction = random
color temperature = random

Camera
position += noise
rotation += noise
FOV += noise

Objects
position = random
size = random
color = random
shape = random

Robot
joint friction = random
motor strength = random
latency = random

Physics
mass = random
friction = random
restitution = random

于是同一句:

Pick up the red cup.

可能看到几千种不同场景。

模型逐渐发现:


桌子颜色
   ↓
没用

背景
   ↓
没用

光照
   ↓
没用

相机微小位置
   ↓
不能完全依赖

----------------

物体是什么
物体在哪里
语言指令要求什么
机器人当前状态如何
   ↓
这些才是稳定信息

所以 Domain Randomization 本质上是在做:

remove spurious correlations​

让网络学 invariant features


3. 对 VLA 来说,它还有一个特别重要的作用

普通视觉模型的输出可能只是:

image→class

例如:


image → "cup"

分类错一点可能只是 accuracy 降一点。

但 VLA 是:

(It​,L,st​)→at​

其中:

  • It​:图像
  • L:语言指令
  • st​:robot state
  • at​:action

例如:

at​=(Δx,Δy,Δz,Δroll,Δpitch,Δyaw,gripper)

这里视觉误差会直接变成 动作误差

例如 camera calibration 偏一点:


真实杯子位置
      ●

模型预测位置
         ●

在 classification 里没什么。

但机器人可能:


手 →
        ×
      杯子

直接抓空。

所以 VLA 比普通 VLM 更需要考虑:

visual distribution shift→action distribution shift

这也是 DR 非常重要的原因。


4. Domain Randomization 可以理解成一种“对抗过拟合”

假设训练分布:

x∼ptrain​(x)

现实世界:

x∼preal​(x)

一般:

ptrain​=preal​

DR 的想法不是精确模拟现实。

反而是把训练域主动扩大:

pDR​(x)

让:

preal​(x)⊆pDR​(x)​

直觉上就是:

与其把 simulator 做得跟现实一模一样,不如把 simulator 搞得千奇百怪,让现实世界只成为其中一种情况。

这也是 Domain Randomization 很漂亮的思想。


5. VLA 里通常随机化什么?

可以分成 Visual DRDynamics DR

Visual Domain Randomization

主要解决 perception:

image→representation

例如:

  • background
  • texture
  • object color
  • object appearance
  • illumination
  • shadow
  • camera pose
  • camera intrinsic
  • blur
  • exposure
  • image noise
  • distractor objects

目的是让:

z=fθ​(I)

对这些 nuisance variables 不敏感。

即:

f(Ibright​)≈f(Idark​)

只要任务状态相同。


Dynamics Randomization

这个对 Action 更重要。

随机:

m,μ,k,τ,Δt

比如:

  • object mass
  • friction
  • joint damping
  • motor strength
  • control frequency
  • action delay
  • sensor delay
  • gripper friction
  • contact parameters

例如:


训练:
杯子质量始终 100g

机器人可能只学出一套固定力度。

现实:


杯子:
80g
150g
300g

就可能失败。

随机质量:

m∼U(mmin​,mmax​)

会逼 policy 学出更加 robust 的 control policy。


6. Language 甚至也可以做某种“随机化”

严格说这通常不叫传统 Domain Randomization,但 VLA 训练经常使用类似思想:

同一个 task:


Pick up the red cup.
Grab the red cup.
Take the red mug.
Could you pick up the red cup?
Lift the red cup.

对应相同或者类似 trajectory。

它是在让模型学:

language variation→same task semantics

否则模型可能过拟合某种 prompt template。

所以你可以把现代 VLA robustness 理解成三个方向:

Visual Randomization+Language Variation+Dynamics Randomization​


7. 但一个很重要的问题:DR 不是越多越好

这是机器人论文里经常被忽略的一点。

如果 randomization 太强:


杯子突然变成极其奇怪的纹理
camera旋转60°
重力随机成3m/s²
摩擦系数乱飞

可能造成:

pDR​≫preal​

模型会花大量 capacity 去适应现实中根本不会发生的情况。

结果反而:

training harder

甚至:

in-domain performance↓

因此真正好的 DR 通常不是:

randomize everything.

而是:

randomize task-irrelevant nuisance variables,同时保留任务需要的 causal structure。

例如:


“抓红杯子”

你不能把:


red cup

颜色也随便随机掉,却依然要求模型理解“red”。

否则:

language↔vision

的语义对应关系被破坏了。


8. 一个更深的理解:DR 是在逼 VLA 学 causal representation

比如:


桌子纹理 ──────┐
灯光 ─────────┤
背景 ─────────┤
camera noise ─┤
               ↓
             Image
               ↓
               VLA
               ↓
             Action

真正决定 action 的应该主要是:


instruction
object identity
object pose
robot state
environment geometry

而不是:


background texture
lighting
irrelevant colors

DR 相当于人为干预:

do(background=random) do(lighting=random) do(texture=random)

如果 action 仍然应该保持一致,模型就会逐渐学会:

a⊥background∣task state

这其实已经非常接近 causal invariance / invariant representation learning 的思想了。


所以,你如果正在看 VLA 论文,可以记住这个框架


                        VLA
                         │
           ┌─────────────┼─────────────┐
           ↓             ↓             ↓
       Language        Vision         Action
           │             │             │
   paraphrasing      Visual DR     Dynamics DR
                         │             │
                         └──────┬──────┘
                                ↓
                           Robustness
                                ↓
                             Sim2Real

最终目标不是为了让训练数据“更丰富”这么简单,而是:

让 policy 对 task-irrelevant variation 不变, 但对 task-relevant variation 敏感​

这句话其实是理解 VLA 为什么做 Domain Randomization 最关键的一句话。

另外,如果你现在是在做 VLA / robot learning 研究,一个更值得深挖的问题其实是:传统 DR 对大规模 pretrained VLA 还到底有多大必要? 因为像互联网预训练视觉 backbone、本身具有较强视觉 invariance 的 VLA,与过去从零训练的 RL policy 情况已经很不同;这里面其实很容易挖出一条不错的研究 idea。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐