2 分钟阅读

用控制理论的视角理解 sim2real 问题

可以把真实机器人写成一个部分可观测动态系统:

\[\begin{aligned} x_{t+1} &\sim R(x_{t+1}\mid x_t,\tau_t),\\ o_t &\sim H(o_t\mid x_t),\\ \tau_t &= C(r,\;o_{\le t},\tau_{<t}), \end{aligned}\]

其中 $R$ 是真实世界动力学,$H$ 是 sensing/observation process。 $r$ 是控制目标。允许整个 history 进入 $C$,所以这个表达本身不要求 Markov。

更精确地说,model-based controller 内部通常至少可以拆成两个东西:

\(\boxed{ \text{history} \xrightarrow{\text{state estimator }E} \hat x_t \xrightarrow{\text{dynamics model }M} \hat x_{t+1} \xrightarrow{\text{planning/control }P} \tau_t }\) 其中

  • $E$:observer / state estimator,解决 “现在系统处于什么状态?”
  • $M$:system/dynamics model,解决 “如果我施加 $\tau$,之后会发生什么?”
  • $P$:planner/controller,解决 “为了达到 $r$,应该施加什么 $\tau$?”

例如经典控制里: \(\hat x_t = E(o_{\le t},\tau_{<t}), \qquad \hat x_{t+1}=f_\theta(\hat x_t,\tau_t),\) 然后 MPC 解 \(\tau_{t:t+H}^* = \arg\min_{\tau_{t:t+H}} \sum_{k=t}^{t+H} \ell(\hat x_k,r,\tau_k).\)

在这个视角下,sim2real 本质上是:$R_{\rm sim}\neq R_{\rm real}$ 而我们有一个在 $C_{\rm sim}\circ R_{\rm sim}$ 上表现很好的闭环系统,希望 $C_{\rm real}\circ R_{\rm real}$ 仍然表现好。 问题转化为:如何让 closed-loop behavior 对 $R_{\rm sim}\to R_{\rm real}$ 的变化保持稳定?

大体可以分成三个路线:

1. Robustness:不去精确知道 real,只要求 policy 对 model mismatch 不敏感

Domain randomization、noise injection、adversarial perturbation、robust MPC,本质思想都是不去识别真实世界到底是什么,而是让C对一片可能世界 $R=R_0+\Delta R$ 都工作。

以 DR 为例,可以这样理解:

训练时人为定义一族参数化的系统 \(R_\theta,\qquad \theta\sim p(\theta),\quad s.t. R_{\rm real}\in \{R_\theta\}\) 然后优化 \(\max_C \mathbb E_{\theta\sim p(\theta)} J(C,R_\theta).\) (可以看到这里有个小mismatch, 预期高,不能保证在真机上一定好,也有可能被其他的参数带坏。扩大theta的覆盖让R_real尽可能在其中,和缩小theta范围避免不真实的动态mislead模型,是相互矛盾的。因此,我们希望在覆盖到真实世界参数的条件下,不要把theta采样范围搞得太宽。这种思路推到极限就变成了系统辨识,即,让theta的训练阶段采样分布贴近真实分布。)

2. Adaptation / System Identification:先推断 real world 是什么,再调整控制

这里又可以分两件事。

一件是你说的 observer/state estimation:

\[o_{\le t},\tau_{<t} \rightarrow \hat x_t.\]

例如估计:

  • object pose;
  • velocity;
  • contact state;
  • friction/contact mode;
  • unobserved joint state。

另一件实际上更加关键,是 system identification:

\[\mathcal D_{\rm real} = \{o_t,\tau_t,o_{t+1}\} \rightarrow \hat\theta_{\rm real},\]

进而建立

\[\hat R_{\rm real} = R_{\hat\theta_{\rm real}}.\]

也就是说:

\[\boxed{ \text{observer estimates state }x; \qquad \text{system identification estimates dynamics }R. }\]

例如你最近做 in-hand manipulation 时遇到的 actuator/contact dynamics mismatch,更接近后一类:

\[(q_t,\dot q_t,\tau_t) \rightarrow (q_{t+1},\dot q_{t+1}).\]

DexNDM 那种方法,本质就是:

\[R_{\rm sim} \rightarrow \hat R_{\rm real}\]

然后在更准确的 dynamics model 里训练 controller。


3. Policy adaptation:不显式恢复 $R_{\rm real}$,直接用 real data 修正 $C$

这就是你说的 Online RL。

例如有

\[Q_\phi(x,a)\]

通过真实 transition

\[(x_t,a_t,r_t,x_{t+1})\]

更新:

\[Q_\phi \leftarrow r_t+\gamma Q_{\bar\phi}(x_{t+1},\pi(x_{t+1})).\]

然后再更新 actor:

\[\pi_\theta \leftarrow \arg\max_\pi Q_\phi(x,\pi(x)).\]

这并不是“更好地估计 $R_{\rm real}$”——至少 model-free online RL 并没有显式这么做。

它实际上是在做:

\[\boxed{ C_{\rm sim} \rightarrow C_{\rm real} }\]

而不是

\[R_{\rm sim} \rightarrow \hat R_{\rm real}.\]

这是一个很重要的区分。

所以可以把 sim2real 更干净地分成:

\(\boxed{ \begin{array}{lll} \textbf{Robustification} & R \text{ 不估计} & C\text{ 对 }R\text{ 的变化鲁棒} \\)3pt] \textbf{System adaptation} & R_{\rm real}\text{ 被估计} & C\text{ 根据 }\hat R_{\rm real}\text{ 控制} $$3pt] \textbf{Policy adaptation} & R_{\rm real}\text{ 不显式估计} & \text{直接用 real data 更新 }C \end{array}} $$


你这个视角特别适合进一步理解 为什么真机 RL 有价值。

假设你的仿真 SAC policy 是

\[\tau_t=\pi_{\rm sim}(o_t).\]

在仿真中:

\[Q_{\rm sim}^{\pi}(o,a)\]

学到的是

\[R_{\rm sim}\]

下某个动作长期是否好。

一旦到了真实世界:

\[R_{\rm real}\neq R_{\rm sim},\]

即使 observation 一模一样,也可能有

\[Q_{\rm real}^{\pi}(o,a) \neq Q_{\rm sim}^{\pi}(o,a).\]

这其实精确描述了你现在遇到的问题。

例如对于同一个目标 frame:

\[o_t \xrightarrow{\pi_{\rm sim}} a_t,\]

在 sim 中可能:

\[P_{\rm sim}(o_{t+1}\approx o_{\rm target})=0.95,\]

而 real 中:

\[P_{\rm real}(o_{t+1}\approx o_{\rm target})=0.4.\]

原因可能来自:

\[\text{motor dynamics} +\text{friction} +\text{contact} +\text{delay} +\text{state estimation error}.\]

因此真机数据

\[(o_t,a_t,o_{t+1})\]

其实是在给你提供关于

\[\boxed{R_{\rm real}}\]

的信息。

接下来你有三个非常自然的问题:

\[\begin{aligned} &\text{Can I make }\pi\text{ robust to it?}\\ &\text{Can I identify }R_{\rm real}\text{ from it?}\\ &\text{Can I directly adapt }\pi/Q/V\text{ from it?} \end{aligned}\]

这三句话基本就是你现在做真机 sim2real 文献调研的三个主要 research branch。

我甚至认为这套表述比单纯按照“domain randomization / residual learning / online RL / system ID”分方法更有用,因为它直接问了一个更根本的问题:

\[\boxed{ \text{real-world experience 到底被用来更新系统中的哪一个 component?} }\]

是更新 $E$、$R$、$Q$,还是直接更新 $\pi$。这个分类方式很适合你接下来整理真机 dexterous manipulation 文献。

更新时间: