机器人学习

域随机化

域随机化是一种在仿真里训练机器人、好让它的技能能在真实世界里挺住的窍门:与其在一个精心调好的虚拟环境里反复练习,不如在每一次运行时都把仿真的各项设定随机地打乱一遍。这一次试验地板很滑、光线很暗,下一次物体很重、电机有延迟,再下一次又是刺眼的眩光和换了角度的摄像头。等练到最后,机器人是在成千上万个略有差异的假世界里练过,而不是只在一个世界里。这个想法简单却有力:如果在训练过程中,从来没有哪一个版本的现实是那个“真正的”现实,机器人就不会再过度拟合其中任何一个,转而去学那条贯穿所有版本、放之四海皆准的底层技能。

它之所以管用,是因为真实世界不过是机器人从未原样见过的又一种设定罢了——而这恰恰正是它被训练得早有预料的情形。如果一个行走策略已经应付过上百种不同的仿真摩擦,那么它最终踩上去的那一种真实摩擦,就舒舒服服地落在它早已练习过的范围之内,于是它几乎察觉不到这点变化。说到底,域随机化并不把仿真与现实之间的差距当作一个必须精确命中的靶子,而是把它当作又一个需要被淹没掉的变化来源。这正是它成为仿真到现实迁移、以及缩小现实差距时最被广泛使用的工具的原因。

其中的门道,在于挑选随机化什么、以及随机到多大的幅度。变动得太少,仿真就仍是一个狭窄的泡泡,现实照样把它戳破;变动得太离谱,任务又会乱成一团,机器人永远学不出任何稳定的东西。工程师通常会随机化那些要紧的物理量——摩擦、质量、电机延迟、传感器噪声——以及事物的外观——光照、颜色、纹理、摄像头位置——并把每一项的范围调得既宽到足以涵盖现实,又不至于把问题变得无解。

为了训练机器人抓取一块红色积木,工程师在各次运行中随机变换它的颜色、光照、桌面纹理以及夹爪的摩擦;策略于是不再死盯某一种外观,在它从未见过的真实实验室灯光下,照样稳稳地把积木抓起来。

在一千个假世界里练过,那唯一的真实世界便显得似曾相识。

随机化世界的外观(颜色、光照、纹理)有时称为视觉随机化;随机化物理(摩擦、质量、延迟)则称为动力学随机化。两者都是域随机化的形式。

又称
DRdynamics randomization动力学随机化