1. 问题的形式化
强化学习的标准框架是马尔可夫决策过程(MDP)。我们把它写成一个六元组:
M = ⟨ S , A , P , r , γ , ρ 0 ⟩ \mathcal{M} = \langle \mathcal{S}, \mathcal{A}, P, r, \gamma, \rho_0 \rangle M = ⟨ S , A , P , r , γ , ρ 0 ⟩
其中 P : S × A × S → [ 0 , 1 ] P: \mathcal{S} \times \mathcal{A} \times \mathcal{S} \to [0,1] P : S × A × S → [ 0 , 1 ] 是转移核,ρ 0 \rho_0 ρ 0 是初始状态分布。策略优化的目标是最大化折扣累积回报的期望:
J ( π ) = E τ ∼ p π ( τ ) [ ∑ t = 0 ∞ γ t r ( s t , a t ) ] J(\pi) = \mathbb{E}_{\tau \sim p_\pi(\tau)} \left[ \sum_{t=0}^{\infty} \gamma^t r(s_t, a_t) \right] J ( π ) = E τ ∼ p π ( τ ) [ t = 0 ∑ ∞ γ t r ( s t , a t ) ]
其中轨迹 τ = ( s 0 , a 0 , s 1 , a 1 , … ) \tau = (s_0, a_0, s_1, a_1, \ldots) τ = ( s 0 , a 0 , s 1 , a 1 , … ) 的概率测度为:
p π ( τ ) = ρ 0 ( s 0 ) ∏ t = 0 ∞ π ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t ) p_\pi(\tau) = \rho_0(s_0) \prod_{t=0}^{\infty} \pi(a_t | s_t) P(s_{t+1} | s_t, a_t) p π ( τ ) = ρ 0 ( s 0 ) t = 0 ∏ ∞ π ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t )
Sim2Real Gap 的本质 就在这里:我们在仿真器 M sim \mathcal{M}_{\text{sim}} M sim 上训练策略 π sim ∗ \pi^*_{\text{sim}} π sim ∗ ,但部署在真实系统 M real \mathcal{M}_{\text{real}} M real 上评估。两个 MDP 的核心差异体现在转移核上:
P sim ( s ′ ∣ s , a ) ≠ P real ( s ′ ∣ s , a ) P_{\text{sim}}(s' | s, a) \neq P_{\text{real}}(s' | s, a) P sim ( s ′ ∣ s , a ) = P real ( s ′ ∣ s , a )
这种差异不是数值上的小扰动,而是分布族级别的错配 ,后果是策略在真实环境下的性能下界无法由仿真中的训练曲线保证。
2. 性能差距的上界:一个粗糙但有用的估计
用 ρ M π ( s , a ) \rho^\pi_{\mathcal{M}}(s, a) ρ M π ( s , a ) 表示在 MDP M \mathcal{M} M 下策略 π \pi π 诱导的状态-动作占用度量(occupancy measure):
ρ M π ( s , a ) = ( 1 − γ ) ∑ t = 0 ∞ γ t Pr ( s t = s , a t = a ∣ M , π ) \rho^\pi_{\mathcal{M}}(s, a) = (1-\gamma) \sum_{t=0}^{\infty} \gamma^t \Pr(s_t = s, a_t = a \mid \mathcal{M}, \pi) ρ M π ( s , a ) = ( 1 − γ ) t = 0 ∑ ∞ γ t Pr ( s t = s , a t = a ∣ M , π )
那么目标函数可以写成:
J M ( π ) = 1 1 − γ E ( s , a ) ∼ ρ M π [ r ( s , a ) ] J_{\mathcal{M}}(\pi) = \frac{1}{1-\gamma} \mathbb{E}_{(s,a) \sim \rho^\pi_{\mathcal{M}}} [r(s, a)] J M ( π ) = 1 − γ 1 E ( s , a ) ∼ ρ M π [ r ( s , a )]
考虑同一策略在两个 MDP 下的性能差距:
J real ( π ) − J sim ( π ) = 1 1 − γ ( E ρ real π [ r ] − E ρ sim π [ r ] ) J_{\text{real}}(\pi) - J_{\text{sim}}(\pi) = \frac{1}{1-\gamma} \left( \mathbb{E}_{\rho^\pi_{\text{real}}}[r] - \mathbb{E}_{\rho^\pi_{\text{sim}}}[r] \right) J real ( π ) − J sim ( π ) = 1 − γ 1 ( E ρ real π [ r ] − E ρ sim π [ r ] )
利用 f f f -散度的变分表示,可以得到一个上界。设奖励函数有界 ∣ r ∣ ≤ R max |r| \leq R_{\max} ∣ r ∣ ≤ R m a x ,则:
∣ J real ( π ) − J sim ( π ) ∣ ≤ 2 R max ( 1 − γ ) 2 ⋅ E s ∼ ρ sim π [ D TV ( P real ( ⋅ ∣ s , π ( s ) ) ∥ P sim ( ⋅ ∣ s , π ( s ) ) ) ] \left| J_{\text{real}}(\pi) - J_{\text{sim}}(\pi) \right| \leq \frac{2 R_{\max}}{(1-\gamma)^2} \cdot \mathbb{E}_{s \sim \rho^\pi_{\text{sim}}} \left[ D_{\text{TV}}\left( P_{\text{real}}(\cdot|s,\pi(s)) \,\|\, P_{\text{sim}}(\cdot|s,\pi(s)) \right) \right] ∣ J real ( π ) − J sim ( π ) ∣ ≤ ( 1 − γ ) 2 2 R m a x ⋅ E s ∼ ρ sim π [ D TV ( P real ( ⋅ ∣ s , π ( s )) ∥ P sim ( ⋅ ∣ s , π ( s )) ) ]
其中 D TV D_{\text{TV}} D TV 是全变差距离。注意这里的 ( 1 − γ ) − 2 (1-\gamma)^{-2} ( 1 − γ ) − 2 项——它告诉我们,随着折扣因子接近 1(即长视野任务),转移核哪怕极小的差异也会被平方级放大 。这解释了为什么长周期控制任务(比如卫星轨道保持、长时间操纵)比短时稳定任务更难从仿真迁移到现实。
3. Gap 的来源拆解
实践中 Sim2Real Gap 不是一个单一的东西,它是多种不匹配的叠加。
3.1 动力学不匹配(Dynamics Mismatch)
这是最核心也最难处理的部分。仿真器建立在简化的物理模型上,常见的误差来源包括:
参数误差 :质量、转动惯量、摩擦系数、气动系数等不准确
模型阶次截断 :连续系统离散化、高频模态被忽略
接触力学 :刚体碰撞、摩擦锥的简化处理
非建模动力学 :柔性形变、热效应、执行器非线性
设真实系统的动力学为:
x ˙ = f ( x , u ) + Δ ( x , u ) \dot{x} = f(x, u) + \Delta(x, u) x ˙ = f ( x , u ) + Δ ( x , u )
其中 Δ ( x , u ) \Delta(x, u) Δ ( x , u ) 是仿真器未建模的"残差动力学"。这一项在标称点附近可能很小,但一旦策略把系统驱动到非标称区域(这在 RL 探索中几乎不可避免),Δ \Delta Δ 就会变得显著。
3.2 观测不匹配(Observation Gap)
策略的输入是观测 o t o_t o t ,不是完整状态 s t s_t s t 。在仿真中,我们可以随意访问任意精度的状态变量;在现实中,传感器有噪声、延迟和量化误差。
设仿真中的观测模型为 o = h sim ( s ) o = h_{\text{sim}}(s) o = h sim ( s ) ,真实传感器为 o = h real ( s ) + ϵ o = h_{\text{real}}(s) + \epsilon o = h real ( s ) + ϵ ,其中 ϵ ∼ N ( 0 , Σ ) \epsilon \sim \mathcal{N}(0, \Sigma) ϵ ∼ N ( 0 , Σ ) 。对于一个已经收敛的确定性策略 π : O → A \pi: \mathcal{O} \to \mathcal{A} π : O → A ,策略梯度的方差会因为观测噪声产生偏移——这在连续动作空间中尤为致命。
还有一类更微妙的问题:时间延迟 。现实系统中控制指令从计算到执行往往有 δ t \delta t δ t 的延迟,这等价于把 MDP 的状态空间扩展:
s ~ t = ( s t , a t − 1 , a t − 2 , … , a t − k ) \tilde{s}_t = (s_t, a_{t-1}, a_{t-2}, \ldots, a_{t-k}) s ~ t = ( s t , a t − 1 , a t − 2 , … , a t − k )
仿真中如果没有显式建模这一延迟,策略在时序上就是错位的。
3.3 动作空间不匹配
仿真给出的是理想化的力矩或速度指令,真实执行器有带宽限制和死区:
u real = sat ( F − 1 { H ( j ω ) ⋅ F { u cmd } } ) u_{\text{real}} = \text{sat}\left( \mathcal{F}^{-1}\{H(j\omega) \cdot \mathcal{F}\{u_{\text{cmd}}\}\} \right) u real = sat ( F − 1 { H ( j ω ) ⋅ F { u cmd }} )
其中 H ( j ω ) H(j\omega) H ( j ω ) 是执行器的传递函数,sat ( ⋅ ) \text{sat}(\cdot) sat ( ⋅ ) 是饱和非线性。RL 策略在仿真中学到的高频抖动指令(chattering),在通过真实执行器低通滤波之后会产生完全不同的效果。
4. 主流解决思路
4.1 域随机化(Domain Randomization)
核心思想 :与其让仿真尽量精确,不如让它足够多样,使得真实环境只是众多仿真变体中的一个样本。
设物理参数向量 ϕ ∈ Φ ⊆ R d \phi \in \Phi \subseteq \mathbb{R}^d ϕ ∈ Φ ⊆ R d ,在参数分布 p ( ϕ ) p(\phi) p ( ϕ ) 上定义一族 MDP { M ϕ } ϕ ∈ Φ \{\mathcal{M}_\phi\}_{\phi \in \Phi} { M ϕ } ϕ ∈ Φ 。优化目标变为:
max π E ϕ ∼ p ( ϕ ) [ J M ϕ ( π ) ] \max_\pi \mathbb{E}_{\phi \sim p(\phi)} \left[ J_{\mathcal{M}_\phi}(\pi) \right] π max E ϕ ∼ p ( ϕ ) [ J M ϕ ( π ) ]
这是一个鲁棒策略优化 问题。直觉上,如果 p ( ϕ ) p(\phi) p ( ϕ ) 覆盖了真实参数 ϕ real \phi_{\text{real}} ϕ real ,那么训练得到的策略对 ϕ real \phi_{\text{real}} ϕ real 就有一定的泛化能力。
但这里有一个微妙的地方——随机化分布的宽度和中心都很重要。太窄则不覆盖现实,太宽则策略会退化为过于保守的次优解。最优的 p ( ϕ ) p(\phi) p ( ϕ ) 应该是真实参数的先验分布,这把问题归结为系统辨识 。
实践中常用的随机化维度包括:
质量与惯量矩阵 M ( ϕ m ) M(\phi_m) M ( ϕ m )
摩擦系数 μ ( ϕ f ) \mu(\phi_f) μ ( ϕ f )
关节阻尼 D ( ϕ d ) D(\phi_d) D ( ϕ d )
传感器噪声方差 Σ ( ϕ n ) \Sigma(\phi_n) Σ ( ϕ n )
控制延迟 δ t ( ϕ τ ) \delta t(\phi_\tau) δ t ( ϕ τ )
值得注意的是,视觉域随机化 (Randomized Rendering)在感知策略中同样重要:纹理、光照、摄像机内参的随机化可以让基于视觉的策略更好地泛化。
4.2 自适应域随机化(Adaptive DR)
朴素 DR 使用固定分布 p ( ϕ ) p(\phi) p ( ϕ ) ,但我们可以做得更好——在训练过程中动态调整随机化范围。
DROPO (Domain Randomization via Policy Optimization)的思路是:把参数分布本身也作为优化变量,用真实交互数据来收紧 p ( ϕ ) p(\phi) p ( ϕ ) 的置信区间:
p ∗ ( ϕ ) = arg min p ∈ P D KL ( p ( ϕ ) ∥ p 0 ( ϕ ) ) s.t. E ϕ [ J M ϕ ( π ) ] ≥ J real ( π ) − ϵ p^*(\phi) = \arg\min_{p \in \mathcal{P}} D_{\text{KL}}\left( p(\phi) \,\|\, p_0(\phi) \right) \quad \text{s.t.} \quad \mathbb{E}_\phi[J_{\mathcal{M}_\phi}(\pi)] \geq J_{\text{real}}(\pi) - \epsilon p ∗ ( ϕ ) = arg p ∈ P min D KL ( p ( ϕ ) ∥ p 0 ( ϕ ) ) s.t. E ϕ [ J M ϕ ( π )] ≥ J real ( π ) − ϵ
这本质上是在参数空间做约束优化,找到既与先验一致、又能解释真实行为的最小不确定性分布。
4.3 残差强化学习(Residual RL)
把 Sim2Real Gap 理解为一个补偿问题 :
u total = u nominal ( s ) + u residual ( s ) u_{\text{total}} = u_{\text{nominal}}(s) + u_{\text{residual}}(s) u total = u nominal ( s ) + u residual ( s )
u nominal u_{\text{nominal}} u nominal 是基于仿真模型设计的标称控制器(可以是传统的 PD 控制、MPC 或仿真训练的 RL 策略),u residual u_{\text{residual}} u residual 是用真实数据训练的残差策略,专门用于补偿建模误差 Δ \Delta Δ 。
这个框架的优势是:残差策略只需要学习小范围的补偿量,样本效率远高于从零开始的真实环境训练。设仿真动力学为 f ^ \hat{f} f ^ ,则残差学习的等效 MDP 是:
s t + 1 = f ^ ( s t , u nominal + u residual ) + [ f ( s t , ⋅ ) − f ^ ( s t , ⋅ ) ] ⏟ 待补偿项 s_{t+1} = \hat{f}(s_t, u_{\text{nominal}} + u_{\text{residual}}) + \underbrace{[f(s_t, \cdot) - \hat{f}(s_t, \cdot)]}_{\text{待补偿项}} s t + 1 = f ^ ( s t , u nominal + u residual ) + 待补偿项 [ f ( s t , ⋅ ) − f ^ ( s t , ⋅ )]
残差策略面对的是一个方差更小、信噪比更高 的学习问题。
4.4 元学习与快速适应
MAML (Model-Agnostic Meta-Learning)提供了另一个视角:与其直接学一个鲁棒策略,不如学一个善于适应的初始化 。
θ ∗ = arg min θ ∑ ϕ ∼ p ( ϕ ) L M ϕ ( θ − α ∇ θ L M ϕ ( θ ) ) \theta^* = \arg\min_\theta \sum_{\phi \sim p(\phi)} \mathcal{L}_{\mathcal{M}_\phi}\left( \theta - \alpha \nabla_\theta \mathcal{L}_{\mathcal{M}_\phi}(\theta) \right) θ ∗ = arg θ min ϕ ∼ p ( ϕ ) ∑ L M ϕ ( θ − α ∇ θ L M ϕ ( θ ) )
外层优化找到一个 θ ∗ \theta^* θ ∗ ,使得在任意新环境中经过少量梯度步就能达到高性能。这对 Sim2Real 的含义是:策略在真实环境的少量交互(few-shot adaptation)后能迅速收敛,而不需要从零开始。
在实际工程中,MAML 的二阶梯度计算代价很高,PEARL (Probabilistic Embeddings for Actor-critic RL)通过引入隐变量推断来近似这一过程:用历史轨迹 τ 1 : K \tau_{1:K} τ 1 : K 推断环境参数的后验 q ( z ∣ τ 1 : K ) q(z | \tau_{1:K}) q ( z ∣ τ 1 : K ) ,再以 z z z 为条件调节策略:
π ( a ∣ s , z ) , z ∼ q ( z ∣ τ 1 : K ) \pi(a | s, z), \quad z \sim q(z | \tau_{1:K}) π ( a ∣ s , z ) , z ∼ q ( z ∣ τ 1 : K )
这样策略在上下文 z z z 的条件下变得参数化,在线部署时只需收集少量轨迹更新 z z z 的估计即可完成适应,不需要再做梯度更新。
4.5 系统辨识与物理信息学习
从控制论的角度,最根本的解决方案是缩小 P sim P_{\text{sim}} P sim 和 P real P_{\text{real}} P real 之间的差距。可微仿真 (Differentiable Simulation)使得我们可以通过真实数据做端到端的参数辨识:
ϕ ^ = arg min ϕ ∑ t ∥ s t + 1 real − f ϕ ( s t , u t ) ∥ 2 \hat{\phi} = \arg\min_\phi \sum_{t} \left\| s_{t+1}^{\text{real}} - f_\phi(s_t, u_t) \right\|^2 ϕ ^ = arg ϕ min t ∑ s t + 1 real − f ϕ ( s t , u t ) 2
利用自动微分对 ϕ \phi ϕ 求梯度并做梯度下降。现代物理引擎(Brax、Warp、MuJoCo XLA)已经支持这种端到端的可微物理优化。
更进一步,神经网络动力学模型 可以直接学习 Δ ( s , u ) \Delta(s, u) Δ ( s , u ) :
Δ ^ ( s , u ) = N N ψ ( s , u ) \hat{\Delta}(s, u) = \mathcal{N\!N}_\psi(s, u) Δ ^ ( s , u ) = N N ψ ( s , u )
在高斯过程(GP)框架下,这个残差估计还可以给出不确定性:
Δ ( s , u ) ∼ G P ( μ ψ ( s , u ) , k ψ ( s , u , s ′ , u ′ ) ) \Delta(s, u) \sim \mathcal{GP}(\mu_\psi(s,u),\, k_\psi(s,u,s',u')) Δ ( s , u ) ∼ G P ( μ ψ ( s , u ) , k ψ ( s , u , s ′ , u ′ ))
将 GP 的预测不确定性纳入安全约束(如 CBF),可以设计出对模型误差鲁棒的安全控制器——这是安全强化学习 与 Sim2Real 的结合点。
5. 一个具体的例子:航天器终端交会
以终端交会为例,标称动力学是 Clohessy-Wiltshire(CW)方程:
x ¨ − 2 n y ˙ − 3 n 2 x = F x m \ddot{x} - 2n\dot{y} - 3n^2 x = \frac{F_x}{m} x ¨ − 2 n y ˙ − 3 n 2 x = m F x
y ¨ + 2 n x ˙ = F y m \ddot{y} + 2n\dot{x} = \frac{F_y}{m} y ¨ + 2 n x ˙ = m F y
z ¨ + n 2 z = F z m \ddot{z} + n^2 z = \frac{F_z}{m} z ¨ + n 2 z = m F z
其中 n = μ / a 3 n = \sqrt{\mu/a^3} n = μ / a 3 是轨道角速度。CW 方程是线性化的,它假设:追踪星相对目标星位移远小于轨道半径,且目标星在圆轨道上。
真实系统的不匹配项 Δ \Delta Δ 来自:
J 2 J_2 J 2 摄动 :地球扁率引起的非球形引力,量级约 10 − 3 10^{-3} 1 0 − 3 量级的加速度偏差
大气阻力 :低轨任务中不可忽略,且极难精确建模
质量不确定性 :推进剂消耗导致质量实时变化
推力器误差 :安装偏差、推力非线性、羽流干扰
在 CW 框架下训练的 RL 策略(无论是 PPO 还是 SAC)可以得到很漂亮的收敛曲线,但一旦加入真实摄动,性能会急剧下降,尤其是最终逼近段(<10m)对建模精度要求极高。
一个可行的工程方案是分层处理:
外环(粗调) :用域随机化训练鲁棒的引导律,覆盖轨道参数和质量的不确定性范围
内环(精调) :用残差 RL 在线补偿近距离段的接触动力学和对接机构柔性
安全层 :用 HOCBF(高阶控制障碍函数)包装最终输出,保证在模型不确定性下的碰撞约束
u = u RL + k ( s ) ⋅ max ( 0 , − B ˙ ( s ) − α B ( s ) ) u = u_{\text{RL}} + k(s) \cdot \max(0, -\dot{B}(s) - \alpha B(s)) u = u RL + k ( s ) ⋅ max ( 0 , − B ˙ ( s ) − α B ( s ))
其中 B ( s ) B(s) B ( s ) 是障碍函数(例如相对距离的下界),k ( s ) k(s) k ( s ) 是 QP 安全滤波器的校正权重。
6. 评估 Sim2Real 迁移的指标
最后说一个常被忽视的问题:如何定量评估迁移质量?
常用的指标是迁移比(Transfer Ratio) :
TR = J real ( π sim ∗ ) J real ( π real ∗ ) \text{TR} = \frac{J_{\text{real}}(\pi_{\text{sim}}^*)}{J_{\text{real}}(\pi_{\text{real}}^*)} TR = J real ( π real ∗ ) J real ( π sim ∗ )
π sim ∗ \pi_{\text{sim}}^* π sim ∗ 是仿真训练的策略,π real ∗ \pi_{\text{real}}^* π real ∗ 是直接在真实环境训练的策略(作为性能上界)。理想情况下 TR → 1 \text{TR} \to 1 TR → 1 ,但实际中 TR < 0.5 \text{TR} < 0.5 TR < 0.5 的情况并不罕见。
另一个有用的量是行为差异度 ,用状态占用度量的 Wasserstein 距离来衡量策略在两个环境中行为的差异:
BD ( π ) = W 1 ( ρ real π , ρ sim π ) \text{BD}(\pi) = W_1\left(\rho^\pi_{\text{real}},\, \rho^\pi_{\text{sim}}\right) BD ( π ) = W 1 ( ρ real π , ρ sim π )
BD 大意味着策略在现实和仿真中走了非常不同的轨迹,这往往预示着迁移后的性能会很差。在域随机化的参数调整中,可以用 BD 作为一个早期预警指标,在上真机之前就评估迁移风险。
结语
Sim2Real Gap 本质上是一个分布偏移问题 在强化学习动态系统中的特殊形态。它比监督学习中的分布偏移更难处理,因为错误会在时间上累积,而且策略本身会驱动状态分布的偏移——这是一个闭环耦合的问题,不能用简单的重要性采样修正。
目前没有哪一种方法能银弹式地解决所有场景下的 Sim2Real Gap。域随机化有覆盖问题,残差 RL 有探索代价,元学习有计算开销,可微仿真有局部最优——工程中往往需要把这些工具组合起来用。真正理解每种方法的假设和局限性,比记住它们的名字更重要。
参考方向:Peng et al. (2018) SimToReal Transfer of Robotic Control with Dynamics Randomization;Andrychowicz et al. (2020) Learning Dexterous In-Hand Manipulation;Akkaya et al. (2019) Solving Rubik's Cube with a Robot Hand;Kumar et al. (2021) RMA: Rapid Motor Adaptation for Legged Robots
Sim2Real Gap:当策略离开仿真器之后
写在前面:这篇文章的起点是一个让我困惑了很久的问题——为什么一个在仿真里收敛得无比漂亮的策略,放到真实系统上会立刻崩掉?这不只是“仿真不够逼真”这么简单,背后其实有一套值得认真对待的数学结构。
问题的形式化
强化学习的标准框架是马尔可夫决策过程,通常简称为 MDP。我们可以把它写成一个六元组:
M = ⟨ S , A , P , r , γ , ρ 0 ⟩ \mathcal{M} = \langle \mathcal{S}, \mathcal{A}, P, r, \gamma, \rho_0 \rangle M = ⟨ S , A , P , r , γ , ρ 0 ⟩
其中 P : S × A × S → [ 0 , 1 ] P: \mathcal{S} \times \mathcal{A} \times \mathcal{S} \to [0,1] P : S × A × S → [ 0 , 1 ] 是转移核,ρ 0 \rho_0 ρ 0 是初始状态分布。策略优化的核心目标是最大化折扣累积回报的期望:
J ( π ) = E τ ∼ p π ( τ ) [ ∑ t = 0 ∞ γ t r ( s t , a t ) ] J(\pi) = \mathbb{E}_{\tau \sim p_\pi(\tau)} \left[ \sum_{t=0}^{\infty} \gamma^t r(s_t, a_t) \right] J ( π ) = E τ ∼ p π ( τ ) [ t = 0 ∑ ∞ γ t r ( s t , a t ) ]
在这里,轨迹 τ = ( s 0 , a 0 , s 1 , a 1 , … ) \tau = (s_0, a_0, s_1, a_1, \ldots) τ = ( s 0 , a 0 , s 1 , a 1 , … ) 的概率测度可以表示为:
p π ( τ ) = ρ 0 ( s 0 ) ∏ t = 0 ∞ π ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t ) p_\pi(\tau) = \rho_0(s_0) \prod_{t=0}^{\infty} \pi(a_t | s_t) P(s_{t+1} | s_t, a_t) p π ( τ ) = ρ 0 ( s 0 ) t = 0 ∏ ∞ π ( a t ∣ s t ) P ( s t + 1 ∣ s t , a t )
Sim2Real Gap 的本质恰恰就隐藏在这个公式里。我们在仿真器 M sim \mathcal{M}_{\text{sim}} M sim 上训练出最优策略 π sim ∗ \pi^*_{\text{sim}} π sim ∗ ,但最终却需要将它部署在真实系统 M real \mathcal{M}_{\text{real}} M real 上进行评估。这两个 MDP 之间最致命的差异体现在转移核上:
P sim ( s ′ ∣ s , a ) ≠ P real ( s ′ ∣ s , a ) P_{\text{sim}}(s' | s, a) \neq P_{\text{real}}(s' | s, a) P sim ( s ′ ∣ s , a ) = P real ( s ′ ∣ s , a )
这种差异绝不是数值上的微小扰动,而是分布族级别的彻底错配。它导致了一个直接的后果:策略在真实环境下的性能下界,是根本无法由仿真中的那条完美训练曲线来保证的。
性能差距的上界:一个粗糙但有用的估计
为了更直观地看清这个问题,我们可以用 ρ M π ( s , a ) \rho^\pi_{\mathcal{M}}(s, a) ρ M π ( s , a ) 来表示在 MDP M \mathcal{M} M 下策略 π \pi π 诱导的状态-动作占用度量:
ρ M π ( s , a ) = ( 1 − γ ) ∑ t = 0 ∞ γ t Pr ( s t = s , a t = a ∣ M , π ) \rho^\pi_{\mathcal{M}}(s, a) = (1-\gamma) \sum_{t=0}^{\infty} \gamma^t \Pr(s_t = s, a_t = a \mid \mathcal{M}, \pi) ρ M π ( s , a ) = ( 1 − γ ) t = 0 ∑ ∞ γ t Pr ( s t = s , a t = a ∣ M , π )
借此,目标函数就可以被改写为:
J M ( π ) = 1 1 − γ E ( s , a ) ∼ ρ M π [ r ( s , a ) ] J_{\mathcal{M}}(\pi) = \frac{1}{1-\gamma} \mathbb{E}_{(s,a) \sim \rho^\pi_{\mathcal{M}}} [r(s, a)] J M ( π ) = 1 − γ 1 E ( s , a ) ∼ ρ M π [ r ( s , a )]
现在我们来考虑同一个策略在两个不同 MDP 下的性能差距:
J real ( π ) − J sim ( π ) = 1 1 − γ ( E ρ real π [ r ] − E ρ sim π [ r ] ) J_{\text{real}}(\pi) - J_{\text{sim}}(\pi) = \frac{1}{1-\gamma} \left( \mathbb{E}_{\rho^\pi_{\text{real}}}[r] - \mathbb{E}_{\rho^\pi_{\text{sim}}}[r] \right) J real ( π ) − J sim ( π ) = 1 − γ 1 ( E ρ real π [ r ] − E ρ sim π [ r ] )
利用 f-散度的变分表示,我们可以为这个差距推导出一个上界。假设奖励函数是有界的,即 ∣ r ∣ ≤ R max |r| \leq R_{\max} ∣ r ∣ ≤ R m a x ,那么有:
∣ J real ( π ) − J sim ( π ) ∣ ≤ 2 R max ( 1 − γ ) 2 ⋅ E s ∼ ρ sim π [ D TV ( P real ( ⋅ ∣ s , π ( s ) ) ∥ P sim ( ⋅ ∣ s , π ( s ) ) ) ] \left| J_{\text{real}}(\pi) - J_{\text{sim}}(\pi) \right| \leq \frac{2 R_{\max}}{(1-\gamma)^2} \cdot \mathbb{E}_{s \sim \rho^\pi_{\text{sim}}} \left[ D_{\text{TV}}\left( P_{\text{real}}(\cdot|s,\pi(s)) \,\|\, P_{\text{sim}}(\cdot|s,\pi(s)) \right) \right] ∣ J real ( π ) − J sim ( π ) ∣ ≤ ( 1 − γ ) 2 2 R m a x ⋅ E s ∼ ρ sim π [ D TV ( P real ( ⋅ ∣ s , π ( s )) ∥ P sim ( ⋅ ∣ s , π ( s )) ) ]
这里的 D TV D_{\text{TV}} D TV 代表全变差距离。需要特别警惕的是公式中的 ( 1 − γ ) − 2 (1-\gamma)^{-2} ( 1 − γ ) − 2 这一项。它清晰地告诉我们,随着折扣因子越来越接近 1(也就是在面对长视野任务时),转移核上哪怕极其微小的差异,也会被呈平方级地剧烈放大。这从数学上完美解释了,为什么长周期控制任务(比如卫星轨道保持、长时间的机械臂操纵)要比短时稳定任务更难从仿真迁移到现实中。
Gap 的来源拆解
在工程实践中,Sim2Real Gap 从来不是单一维度的缺陷,而是多种不匹配现象的复杂叠加。
动力学不匹配通常是最核心也是最难处理的一环。由于仿真器必然建立在简化的物理模型之上,误差几乎无处不在。这可能源于质量、转动惯量、摩擦系数、气动系数等物理参数的测量不准;也可能是由于连续系统在离散化过程中产生的高频模态截断;亦或是对刚体碰撞和摩擦锥等接触力学的过度简化。更不用说柔性形变、热效应以及执行器的非线性等根本未被建模的动力学因素。如果设真实系统的动力学为:
x ˙ = f ( x , u ) + Δ ( x , u ) \dot{x} = f(x, u) + \Delta(x, u) x ˙ = f ( x , u ) + Δ ( x , u )
其中 Δ ( x , u ) \Delta(x, u) Δ ( x , u ) 就是仿真器未建模的残差动力学。这一项在标称工作点附近可能微乎其微,但一旦强化学习的探索机制将系统驱动到了非标称区域,Δ \Delta Δ 的影响就会变得极为显著甚至失控。
观测不匹配同样致命。策略的实际输入往往是观测值 o t o_t o t 而非完整的状态 s t s_t s t 。在仿真中我们拥有上帝视角,可以随意访问任意精度的状态变量;但在现实中,传感器充满了噪声、延迟和量化误差。设仿真中的观测模型为 o = h sim ( s ) o = h_{\text{sim}}(s) o = h sim ( s ) ,而真实的传感器模型为 o = h real ( s ) + ϵ o = h_{\text{real}}(s) + \epsilon o = h real ( s ) + ϵ ,其中 ϵ ∼ N ( 0 , Σ ) \epsilon \sim \mathcal{N}(0, \Sigma) ϵ ∼ N ( 0 , Σ ) 。对于一个已经收敛的确定性策略而言,观测噪声会导致策略梯度的方差发生严重偏移,这在连续动作空间中往往是灾难性的。此外,现实系统从计算指令到实际执行往往存在固有的时间延迟 δ t \delta t δ t 。这在数学上等价于将原有的状态空间进行了扩展:
s ~ t = ( s t , a t − 1 , a t − 2 , … , a t − k ) \tilde{s}_t = (s_t, a_{t-1}, a_{t-2}, \ldots, a_{t-k}) s ~ t = ( s t , a t − 1 , a t − 2 , … , a t − k )
如果仿真中没有显式地把这种延迟建模进去,策略在时序轴上就已经是错位的了。
动作空间的不匹配也是导致翻车的高频原因。仿真环境通常会给出理想化的力矩或绝对速度指令,但真实的物理执行器有着严格的带宽限制和死区特性:
u real = sat ( F − 1 { H ( j ω ) ⋅ F { u cmd } } ) u_{\text{real}} = \text{sat}\left( \mathcal{F}^{-1}\{H(j\omega) \cdot \mathcal{F}\{u_{\text{cmd}}\}\} \right) u real = sat ( F − 1 { H ( j ω ) ⋅ F { u cmd }} )
在这个模型中,H ( j ω ) H(j\omega) H ( j ω ) 代表执行器的传递函数,sat ( ⋅ ) \text{sat}(\cdot) sat ( ⋅ ) 则是饱和非线性。强化学习策略在仿真中非常容易学到那种高频抖动的控制指令,这些指令一旦经过真实执行器的低通滤波,输出的效果将面目全非。
主流解决思路
为了跨越这道鸿沟,学界和工业界演化出了几条主流的技术路线。
域随机化的思路非常直观:既然仿真无法做到绝对精确,那就让它变得足够多样。只要仿真变体足够丰富,真实环境就只是其中一个普通的样本。设物理参数向量 ϕ ∈ Φ ⊆ R d \phi \in \Phi \subseteq \mathbb{R}^d ϕ ∈ Φ ⊆ R d ,我们在参数分布 p ( ϕ ) p(\phi) p ( ϕ ) 上定义一族 MDP,即 { M ϕ } ϕ ∈ Φ \{\mathcal{M}_\phi\}_{\phi \in \Phi} { M ϕ } ϕ ∈ Φ 。此时优化目标就变成了一个鲁棒策略优化问题:
max π E ϕ ∼ p ( ϕ ) [ J M ϕ ( π ) ] \max_\pi \mathbb{E}_{\phi \sim p(\phi)} \left[ J_{\mathcal{M}_\phi}(\pi) \right] π max E ϕ ∼ p ( ϕ ) [ J M ϕ ( π ) ]
直觉上,只要 p ( ϕ ) p(\phi) p ( ϕ ) 足够宽广并覆盖了真实参数,策略就能具备泛化能力。但这其中隐藏着一个微妙的平衡:分布太窄覆盖不到现实,太宽又会导致策略退化为极其保守的次优解。因此,理想的参数分布应该贴合真实系统的先验,这实际上又把问题引回了系统辨识的范畴。在实践中,我们常常会对质量与惯量矩阵、摩擦系数、关节阻尼、传感器噪声方差以及控制延迟等维度进行随机化。对于基于视觉的策略而言,纹理、光照、摄像机内参的视觉随机化同样不可或缺。
自适应域随机化则更进了一步。与其使用固定的参数分布,不如在训练过程中动态去调整它。比如将参数分布本身也视作优化变量,利用与真实环境的交互数据来不断收紧置信区间:
p ∗ ( ϕ ) = arg min p ∈ P D KL ( p ( ϕ ) ∥ p 0 ( ϕ ) ) s.t. E ϕ [ J M ϕ ( π ) ] ≥ J real ( π ) − ϵ p^*(\phi) = \arg\min_{p \in \mathcal{P}} D_{\text{KL}}\left( p(\phi) \,\|\, p_0(\phi) \right) \quad \text{s.t.} \quad \mathbb{E}_\phi[J_{\mathcal{M}_\phi}(\pi)] \geq J_{\text{real}}(\pi) - \epsilon p ∗ ( ϕ ) = arg p ∈ P min D KL ( p ( ϕ ) ∥ p 0 ( ϕ ) ) s.t. E ϕ [ J M ϕ ( π )] ≥ J real ( π ) − ϵ
这种方法本质上是在参数空间进行约束优化,致力于寻找既符合先验认知,又能合理解释真实行为的最小不确定性分布。
残差强化学习提供了一种“补偿”的视角。它将控制律拆分为两部分:
u total = u nominal ( s ) + u residual ( s ) u_{\text{total}} = u_{\text{nominal}}(s) + u_{\text{residual}}(s) u total = u nominal ( s ) + u residual ( s )
其中标称部分是由传统控制理论或纯仿真 RL 训练出的控制器,而残差部分则是专门用来补偿未建模误差 Δ \Delta Δ 的策略。因为只需要学习小范围的补偿量,它在真实环境中的样本利用效率极高。假设仿真的动力学函数为 f ^ \hat{f} f ^ ,那么残差学习面对的等效 MDP 可以写为:
s t + 1 = f ^ ( s t , u nominal + u residual ) + [ f ( s t , ⋅ ) − f ^ ( s t , ⋅ ) ] ⏟ 待补偿项 s_{t+1} = \hat{f}(s_t, u_{\text{nominal}} + u_{\text{residual}}) + \underbrace{[f(s_t, \cdot) - \hat{f}(s_t, \cdot)]}_{\text{待补偿项}} s t + 1 = f ^ ( s t , u nominal + u residual ) + 待补偿项 [ f ( s t , ⋅ ) − f ^ ( s t , ⋅ )]
显然,这是一个方差更小、信噪比更高的学习任务。
元学习与快速适应则跳出了单纯追求鲁棒性的框架。它旨在学习一个具备极强适应能力的初始权重,使得策略在进入新环境后只需极少的梯度更新就能迅速收敛:
θ ∗ = arg min θ ∑ ϕ ∼ p ( ϕ ) L M ϕ ( θ − α ∇ θ L M ϕ ( θ ) ) \theta^* = \arg\min_\theta \sum_{\phi \sim p(\phi)} \mathcal{L}_{\mathcal{M}_\phi}\left( \theta - \alpha \nabla_\theta \mathcal{L}_{\mathcal{M}_\phi}(\theta) \right) θ ∗ = arg θ min ϕ ∼ p ( ϕ ) ∑ L M ϕ ( θ − α ∇ θ L M ϕ ( θ ) )
在实际工程中,由于直接计算二阶梯度的开销过于高昂,很多方案会引入隐变量推断来近似这一过程。通过历史轨迹推断出环境变量的后验分布,然后将这个隐变量作为条件输入给策略:
π ( a ∣ s , z ) , z ∼ q ( z ∣ τ 1 : K ) \pi(a | s, z), \quad z \sim q(z | \tau_{1:K}) π ( a ∣ s , z ) , z ∼ q ( z ∣ τ 1 : K )
这样一来,在线部署时只需要收集少量数据更新对环境上下文的估计,无需进行任何反向传播即可完成自适应。
从控制论最本源的视角来看,缩小仿真与现实之间转移核差距的终极方案还是系统辨识与物理信息学习。现代可微仿真器允许我们通过真实数据进行端到端的参数辨识:
ϕ ^ = arg min ϕ ∑ t ∥ s t + 1 real − f ϕ ( s t , u t ) ∥ 2 \hat{\phi} = \arg\min_\phi \sum_{t} \left\| s_{t+1}^{\text{real}} - f_\phi(s_t, u_t) \right\|^2 ϕ ^ = arg ϕ min t ∑ s t + 1 real − f ϕ ( s t , u t ) 2
更进一步,我们完全可以用神经网络来直接拟合那个难以言明的残差动力学:
Δ ^ ( s , u ) = N N ψ ( s , u ) \hat{\Delta}(s, u) = \mathcal{N\!N}_\psi(s, u) Δ ^ ( s , u ) = N N ψ ( s , u )
如果将其放在高斯过程的框架下,我们甚至能同时获得残差的估计值和不确定性:
Δ ( s , u ) ∼ G P ( μ ψ ( s , u ) , k ψ ( s , u , s ′ , u ′ ) ) \Delta(s, u) \sim \mathcal{GP}(\mu_\psi(s,u),\, k_\psi(s,u,s',u')) Δ ( s , u ) ∼ G P ( μ ψ ( s , u ) , k ψ ( s , u , s ′ , u ′ ))
将这种不确定性纳入安全约束中,我们就能设计出对模型误差具有强鲁棒性的安全控制器。
一个具体的例子:航天器终端交会
为了让上述理论落地,我们可以看看航天器终端交会任务。其标称动力学通常由 Clohessy-Wiltshire(CW)方程描述。为了修复原方程的书写错位问题,我们可以将其整理为规范的方程组:
x ¨ − 2 n y ˙ − 3 n 2 x = F x m y ¨ + 2 n x ˙ = F y m z ¨ + n 2 z = F z m \begin{aligned} \ddot{x} - 2n\dot{y} - 3n^2 x &= \frac{F_x}{m} \\ \ddot{y} + 2n\dot{x} &= \frac{F_y}{m} \\ \ddot{z} + n^2 z &= \frac{F_z}{m} \end{aligned} x ¨ − 2 n y ˙ − 3 n 2 x y ¨ + 2 n x ˙ z ¨ + n 2 z = m F x = m F y = m F z
这里的 n = μ / a 3 n = \sqrt{\mu/a^3} n = μ / a 3 是轨道角速度。CW 方程是高度线性化和理想化的,而真实系统的不匹配项极多:包括引起非球形引力摄动的地球扁率、极难精确建模的大气阻力、推进剂消耗带来的质量剧变,以及推力器自身的各种非线性干扰。在理想 CW 框架下训练出的策略曲线可能极其平滑,但一旦叠加这些真实摄动,尤其是在距离小于 10 米的最终逼近段,控制逻辑极易崩溃。
面对这种情况,工程上最稳妥的做法是分层处理。外环利用域随机化进行粗调,覆盖轨道和质量的常规不确定性;内环利用残差网络进行精调,在线补偿复杂的接触动力学;最后在输出端套上一层基于高阶控制障碍函数的安全滤波器:
u = u RL + k ( s ) ⋅ max ( 0 , − B ˙ ( s ) − α B ( s ) ) u = u_{\text{RL}} + k(s) \cdot \max(0, -\dot{B}(s) - \alpha B(s)) u = u RL + k ( s ) ⋅ max ( 0 , − B ˙ ( s ) − α B ( s ))
其中 B ( s ) B(s) B ( s ) 代表诸如相对距离下界这样的障碍函数,而 k ( s ) k(s) k ( s ) 则是滤波器的校正权重,以此兜底保证系统的绝对安全。
评估 Sim2Real 迁移的指标
最后不得不提的是如何定量评估迁移质量。最直观的指标是迁移比,即仿真策略与真实最优策略在真实环境下的性能比值:
TR = J real ( π sim ∗ ) J real ( π real ∗ ) \text{TR} = \frac{J_{\text{real}}(\pi_{\text{sim}}^*)}{J_{\text{real}}(\pi_{\text{real}}^*)} TR = J real ( π real ∗ ) J real ( π sim ∗ )
理想状态下这个比值应无限趋近于 1,但在真实的工程灾难中,迁移比跌破 0.5 都是家常便饭。另一个极其关键的诊断指标是行为差异度。我们通常使用状态占用度量的 Wasserstein 距离来衡量策略在虚拟和现实中行为模式的分歧:
BD ( π ) = W 1 ( ρ real π , ρ sim π ) \text{BD}(\pi) = W_1\left(\rho^\pi_{\text{real}},\, \rho^\pi_{\text{sim}}\right) BD ( π ) = W 1 ( ρ real π , ρ sim π )
如果行为差异度居高不下,意味着策略在现实中走出了完全偏离仿真的轨迹。在进行域随机化调参时,将其作为一个前置的早期预警指标,能在上真机测试前规避掉大量的炸机风险。
结语
归根结底,Sim2Real Gap 是分布偏移问题在动态强化学习系统中的一种极端形态。它远比监督学习中的分布偏移更加棘手,因为误差会在时间轴上不断累积,而且策略自身还会反过来加剧状态分布的偏移。这是一个深度的闭环耦合难题,绝非简单的重要性采样所能修正。
时至今日,依然没有任何一种单一的技术路线能够成为解决 Sim2Real 问题的银弹。域随机化面临着覆盖率的悖论,残差学习有着无法避免的探索代价,元学习受制于庞大的计算开销,而可微仿真又常常陷入局部最优的泥潭。在真正的工程前线,解决问题的艺术往往在于如何巧妙地将这些工具拼接组合。相比于盲目追捧时髦的名词,真正洞察每一种方法背后的数学假设及其局限性,才是跨越这道现实鸿沟的唯一坦途。
参考方向:
Peng et al. (2018) SimToReal Transfer of Robotic Control with Dynamics Randomization
Andrychowicz et al. (2020) Learning Dexterous In-Hand Manipulation
Akkaya et al. (2019) Solving Rubik's Cube with a Robot Hand
Kumar et al. (2021) RMA: Rapid Motor Adaptation for Legged Robots