WorldSense 技术笔记

具身智能 Sim-to-Real 方法论(一):把"从仿真到真实"当成一次误差预算分配

2026年9月10日 · 阅读约52分钟 · 具身智能, Sim-to-Real, Reality Gap, 误差预算分配, Sequential Allocation, Policy-conditioned Mismatch, Domain Randomization, System Identification, 世界模型, Domain Adaptation
目录

数据问题上篇数据 scaling 下篇。上篇把 sim-to-real 粗分四类工具、那只是 taxonomy、这一篇真正要回答的是——

当仿真数据在若干 evaluation-relevant 方向上离真实差得远时、下一单位预算(工程时间 / 算力 / 机器人小时)该花在哪条杠杆上:校准 sim、扩大训练分布、对齐表示、还是采真机数据?

本文不提出新 sim-to-real algorithm、而是给出一个比较与组合既有 intervention 的 decision framework。按三层收敛:

主线是 Diagnosis → Experiment → Intervention → Allocation → Re-evaluation 闭环。三个 framework contributions + 一个 downstream corollary(1) reality gap 是 policy-conditioned consequence、非 sim 固有标量;(2) descriptor / sensitivity 只是诊断、决策变量是 intervention;(3) SI / DR / DA / FT 是 multi-resource sequential allocation 下的 intervention lenses;corollary——sim evaluation 从 fidelity 扩到 downstream utility。约束是 $B_{\mathrm{real}}, B_{\mathrm{compute}}, B_{\mathrm{eng}}$、预算花在干预动作上。

Reality Gap:不是一个标量,而是一个 policy-conditioned 的 mismatch

Sim-to-real 常被叙述成"训练 policy 从 sim 迁移到 real"。更严格的起点是两个分布:同一条 $\pi$ 与两边环境交互各自诱导 $p_{\mathrm{sim}}^{\pi}(\tau)$ 与 $p_{\mathrm{real}}^{\pi}(\tau)$、一般不等:

$$p_{\mathrm{sim}}^{\pi}(\tau) \;\neq\; p_{\mathrm{real}}^{\pi}(\tau)$$

“同一条 $\pi$“有前提——sim 与 real 必须共享同一 policy interface:observation schema(键 / shape / 单位 / 归一化)、action schema(连续 or 离散、力矩 / 速度 / 位置、clamping)、control freq / action hold / delay。interface 不一致、$\pi$ 非同一函数、$\delta_J$ 失去定义。

轨迹分布本身 policy-induced、随 $\pi$ 变、非环境固有属性。真正关心的不是分布差、而是它在任务上表现的后果——同一 $\pi$ 两边的性能差:

术语分三层:(a) distribution mismatch $D(p_{\mathrm{sim}}^\pi, p_{\mathrm{real}}^\pi)$;(b) transfer delta

$$\boxed{\;\delta_J(\pi) \;=\; J_{\mathrm{real}}(\pi) \;-\; J_{\mathrm{sim}}(\pi)\;}$$

signed、真实反而更好时为正;(c) performance discrepancy $G_J(\pi) = |\delta_J(\pi)|$ 只谈幅度、下文敏感度用 $G_J$。$J$ 默认越大越好、若是 cost 符号反转结构不变。$\delta_J$ 不等于 reality gap 本身、是 gap 在特定 $\pi$ + evaluation 下的 downstream consequence。

distribution mismatch ≠ performance gap:$p_{\mathrm{sim}}^{\pi} \neq p_{\mathrm{real}}^{\pi}$ 不自动意味 $\delta_J$ 很大——依赖粗粒度几何的 policy 换掉摩擦建模几乎不变、依赖高频力反馈的精细装配里此差异可能致命。真正影响 policy 的非 marginal $p(s)$、而是 policy-conditioned occupancy $d_{\mathrm{sim}}^{\pi}(s,a)$ vs $d_{\mathrm{real}}^{\pi}(s,a)$(contact-rich 还要加 contact-mode 索引)、逻辑链 $\pi \rightarrow d^\pi \rightarrow \text{mismatch} \rightarrow J$。严格写要把 mechanism 与 induced distribution 分开

$$\text{Reality gap} \;=\; \mathrm{Gap}\big(\pi,\ \mathcal{E}_{\mathrm{shared}};\ M_{\mathrm{sim}},\ M_{\mathrm{real}}\big)$$

$\mathcal{E}_{\mathrm{shared}}$ 是 共同 evaluation 协议——initial-state / horizon / reward / constraints 在 sim 与 real 两侧必须相同($\mathcal{E}_{\mathrm{sim}} = \mathcal{E}_{\mathrm{real}} = \mathcal{E}_{\mathrm{shared}}$)、否则 $\delta_J(\pi) = J_{\mathrm{real}}(\pi) - J_{\mathrm{sim}}(\pi)$ 就不是"同一 task specification 下的 transfer consequence”。若 $\mathcal{E}_{\mathrm{sim}} \neq \mathcal{E}_{\mathrm{real}}$、观测到的性能差里已经混入 task-specification mismatch、本文不将其计入 operational reality gap。同一 $M_{\mathrm{sim}}$ 对 position control 可能 gap 很小、对 force-sensitive manipulation 可能巨大——reality gap 是四元组 $(\pi, \mathcal{E}_{\mathrm{shared}}, M_{\mathrm{sim}}, M_{\mathrm{real}})$ 下的 downstream discrepancy、非 sim 固有标量(operational definition)。

gap 到底在哪里:reality mismatch 与 task-specification mismatch

第一步是把多源 gap 拆开——两大类来源、不能全塞进"reality”:

Sim-to-real / task mismatch
├── Reality mismatch(物理层面)
│   ├── Dynamics / contact / stochasticity  摩擦、接触、可形变体、柔顺结构;motor stochasticity、friction variability、unmodeled disturbance、repeated-reset variability
│   ├── Observation / estimation  传感器物理、标定、噪声、遮挡、时延、状态估计
│   ├── Actuation / timing        电机动力学、控制频率、执行器延迟、通信抖动
│   └── Initial-state / env.      reset 分布、场景布局、长尾、初始条件
└── Task-specification mismatch
    └── Objective / constraint    reward 定义、安全约束、成功判据

两类来源不能混为一谈:reality mismatch 是"仿真与真实非同一世界"、task-spec mismatch 是"优化目标不对齐"。一般项目中直接观测到的性能差可能同时混合两类;但本文定义的 operational $\delta_J$ 在 $\mathcal{E}_{\mathrm{shared}}$ 固定之后,只讨论 reality mismatch 引起的 downstream discrepancy($\mathcal{E}_{\mathrm{sim}} \neq \mathcal{E}_{\mathrm{real}}$ 的部分已按上一条不计入 reality gap)。两者可独立调节——完美 sim 若 reward 与 deployment 不一致仍有 task-spec gap、反之 sim 有 bias 仍有 reality gap。本文 focus reality mismatch。

把"误差预算分配"写成一个可估计、可迭代优化的决策框架

拆完来源、给直觉一个数学落点。误差项强烈交互(sim 假设 proprioception 精确 + 真实有 latency、单看都不致命、叠加可让 controller 失稳)——更稳写法是承认存在 schematic 依赖 $F$:

$$\boxed{\;\delta_J \;=\; F\big(\Delta_{\mathrm{model}},\ \Delta_{\mathrm{obs}},\ \Delta_{\mathrm{ctrl}},\ \Delta_{\mathrm{dist}}\big)\;}$$

$\Delta_k$ 是 mismatch descriptor(scalar / vector / distribution);$F$ 只是 schematic、由 sensitivity / ablation 探测局部响应、不是待估 predictive model四个 $\Delta_k$ 是 diagnostic buckets、非正交 latent variables——actuator delay 可伪装成 obs、contact 可伪装成 dynamics。层级:reality discrepancies → buckets → observable evidence → intervention candidates。全文里 $\mathcal{D}_t$ 一律表示 allocator 在 step $t$ 可获得的全部 evidence(calibration / ID 测量、sim 诊断、real paired evaluation、failure traces、safety observations 等),不特指训练集;$D_{\mathrm{train}}$、$D_{\mathrm{eval}}$ 保留独立记号、避免与 belief state 混用。

$\Delta_{\mathrm{opt}}$ 从 reality gap 拿掉(层级不同:同固定 policy、sim 观测动力学都准但 RL 未训好、$\delta_J$ 小而 policy 差)——分成两个诊断量

$$\underbrace{J_{\mathrm{real}}(\pi_{\mathrm{train}}) - J_{\mathrm{sim}}(\pi_{\mathrm{train}})}_{\text{transfer delta } \delta_J}\qquad \underbrace{J_{\mathrm{real}}(\pi^{*}_{\mathrm{real}}) - J_{\mathrm{real}}(\pi_{\mathrm{train}})}_{\text{real-domain learning gap}}$$

不能无条件相加叫 deployment loss(signed、baseline / 层级不同);$\pi^{*}_{\mathrm{real}}$ 不可得、右侧是 oracle-defined 量、实际用 $J_{\mathrm{real}}(\pi_{\mathrm{best\text{-}validated}})$ proxy(其中 $\pi_{\mathrm{best\text{-}validated}}$ 指在独立 audit / held-out 评估切片上表现最好的 policy、而非 noisy eval 里 argmax 的那个、避免 winner’s curse)。工程归因 $F$ 局部近似 $\delta_J \approx \sum_k w_k \Delta_k$ 只是 heuristic;真正 decision 用的是每类 mismatch 挑一 intervention 变量 $\xi_k$ 后测得的 intervention sensitivity

$$\hat S_k^{\mathrm{int}} \;\approx\; \frac{J_{\mathrm{real}}(\pi;\xi_k{+}\delta) - J_{\mathrm{real}}(\pi;\xi_k)}{\delta}$$

$\hat S_k^{\mathrm{int}}$ 叫 local intervention response statistic、非真导数;$\xi_k$ 是 experiment 人为定义的变量、分三档:direct perturbation(拨动 latency / friction)、proxy / surrogate(借 sim 估 calibration error)、diagnostic ablation。跨 $\xi_k$ 单位不同不可直接比较、且 sensitivity 还具有 policy-conditional dependence——同一 $\xi_k$ 下 $S_k^{\mathrm{int}}(\pi_1) \neq S_k^{\mathrm{int}}(\pi_2)$、默认只在当前 baseline policy / protocol 内做局部比较、跨 policy 不承诺可比。因此 sensitivity 是 candidate generation / prioritization 层的统计、不是最终的 allocation 输入(value input)performance / cost / continuation——即 $\Delta J(m\mid s_t)$、$\Delta C(m\mid s_t)$、$\mathrm{CVU}(m\mid s_t)$——是 allocation score 的三类核心 value inputs、safety 与 budget 则定义 feasibility($\mathcal{M}_t^{\mathrm{safe}}$、$\mathcal{M}_t^{\mathrm{budget}}$),allocation 只能回到这四者。层级:descriptor → sensitivity / uncertainty → candidate generation → $(\Delta J,\;\Delta C,\;\mathrm{CVU})$ + feasibility → $Q_{\lambda_t}$ → allocation

诊断 ≠ 归因:单 perturb $\Delta_{\mathrm{friction}}$ 与 $\Delta_{\mathrm{latency}}$ 各自影响很小、组合却可 $\Delta J(\Delta_f,\Delta_l) \gg \Delta J(\Delta_f,0) + \Delta J(0,\Delta_l)$(synergy)。Sensitivity experiments 只识别 locally influential intervention directions、不提供 additive causal attribution;$\Delta_{\mathrm{model}}$ 与 $\Delta_{\mathrm{ctrl}}$ 也可能互相补偿、都是 ablation 估的 decision statistics、非严格分解。

真正的"分配":把钱花在干预动作上,而不是在方法里挑一个

预算连续地分到每条干预轴:$b=(b_1,\dots,b_K)$、$b_k$ 花在干预 $k$ 上($b_{\mathrm{SI}}=2\text{h}$、$b_{\mathrm{DR}}=10^6$ 步 sim、$b_{\mathrm{real}}=4\text{h}$ 真机)、非 0/1 选择。部署 objective 不能只看均值——mean 90% + catastrophic 1% 与 mean 88% + tail ≈ 0 是不同种部署决策。本文采用 mean utility + tail/safety constraint(而非把 tail 直接折进 scalar cost)、除非项目显式引入 CVaR / risk-penalized utility $\max \mathbb{E}[J] - \gamma\,\mathrm{TailRisk}(J)$:

$$\max_{b}\quad \mathbb{E}\big[J_{\mathrm{real}}(\pi_b)\big] \quad \text{s.t.}\quad \Pr\big[\text{unsafe} \mid \pi_b\big] \le \alpha$$

项目预算非同一种货币(GPU 近乎无限 / 真机机时稀缺 / 有机器时间却没工程人力)、正解是多预算 $C_{\mathrm{real}} \le B_{\mathrm{real}}$、$C_{\mathrm{compute}} \le B_{\mathrm{compute}}$、$C_{\mathrm{eng}} \le B_{\mathrm{eng}}$、不折成标量 $B$。安全不进同一层 cost——是 chance constraint($\alpha$ 由 e-stop / hardware fault 上限决定)。本文默认 deployment $J$ 已固定单一 utility 或已外部 scalarization;若保留多目标、应上升到 Pareto 或 lexicographic layer

预算是分向量后、决策变量从"gap"换成"干预动作"——能买到 30 min SI / $10^6$ 步 sim / 100 条真机轨迹;干预不直接改 $\Delta_k$、通过更新 state 改变后续决策

$$\boxed{\;s_{t+1} \;=\; \mathcal{T}\big(s_t,\; m_t^*,\; Y_t\big),\quad Y_t \sim p\!\big(Y \mid s_t,\, m_t^*\big)\;}$$

$\mathcal{T}$ 同时更新 $\pi_t$、$\mathcal{D}_t$、$b_t$、$h_t$——最核心一条是 budget dynamics $b_{t+1} = b_t - \Delta C(m_t^* \mid s_t)$;$b_t$ 是 remaining budget vector(不是 cumulative expenditure)。policy-changing intervention 更新 $\pi_t$ 与预算(早期写作 $\pi_{b+m} = \operatorname{Train}(D_{\mathrm{sim}}, D_{\mathrm{real}};\, m)$ 是其 budget-indexed shorthand、state-based 版本一律用 $\pi_t$)、diagnostic experiment 主要更新 $\mathcal{D}_t \cup Y_m$、model-update intervention 同时更新 sim / surrogate state。三类 action 统一到同一个 sequential framework。

$Q_{\lambda_t}$(decision score)与 $MV$(效率读数、不是 decision rule)。conditional on $s_t$。「DR 的 $MV$」问错了、正解是「当前 $s_t$ 下加一单位 DR 的 expected value」。$m = (\text{role},\,\text{method},\,\text{protocol},\,\text{batch})$——SI / DR / DA / FT 只是 method 标签、真正的 candidate 由 role × method × protocol/batch 三元决定。Cost 也 state-conditioned:$\Delta C(m \mid s_t) = (\Delta C_{\mathrm{real}}, \Delta C_{\mathrm{compute}}, \Delta C_{\mathrm{eng}})$——同一 DR batch 在 GPU 满载时空闲时不同 cost、同一 real FT 在高温机器人上可行性也不同;$C_\lambda(m \mid s_t) = \lambda_t^\top \Delta C(m \mid s_t)$。

$$\boxed{\;MV(m \mid s_t;\lambda_t) \;=\; \frac{\mu_{\Delta J,t}(m)}{\lambda_t^\top \Delta C(m \mid s_t)},\qquad \mu_{\Delta J,t}(m) \;=\; \mathbb{E}\big[\Delta J(m) \mid s_t\big]\;}$$

其中 $\widehat{\Delta J}_t(m)$ 表示本次 paired evaluation 实际观测到的 empirical gain、$\mu_{\Delta J,t}(m) = \mathbb{E}[\Delta J(m)\mid s_t]$ 表示当前 belief 下对未来 intervention gain 的期望——两者不混用、allocation 里出现的一律是 $\mu_{\Delta J,t}$、Step 4/6 报告的是 $\widehat{\Delta J}_t$。

**$U_0(m\mid s_t) = \mu_{\Delta J,t}(m) - \lambda_t^\top \Delta C(m \mid s_t)$ 才是典型意义上的 Lagrangian-style performance net utility;本文真正的局部 decision score $Q_{\lambda_t}$ 是在 $U_0$ 之上再叠加 one-step continuation heuristic 的合成量、严格地说已经不再属于标准 Lagrangian 形式。且要与 global objective 一样把 continuation value uplift(后文记作 $\mathrm{CVU}$)纳入(否则出现"全局含 $\mathrm{CVU}$、局部只算 performance"的近似断点):

$$\boxed{\begin{aligned} &U_0(m \mid s_t) \;=\; \mu_{\Delta J,t}(m) \;-\; \lambda_t^\top \Delta C(m \mid s_t)\\[2pt] &G_0(s) \;:=\; \max_{m' \in \mathcal{M}^{\mathrm{feasible}}(s)}\, U_0(m' \mid s) \quad\text{(one-step performance-only continuation surrogate)}\\[2pt] &Q_{\lambda_t}^{\mathrm{perf+CVU}}(m \mid s_t) \;=\; U_0(m \mid s_t) \;+\; \beta\,\mathrm{CVU}(m \mid s_t) \end{aligned}\;}$$

$U_0$ 是 performance-only Lagrangian-style net utility、同时充当 $\mathrm{CVU}$ 的 reference;$\mathrm{CVU}(\cdot)$ 只通过 one-step continuation surrogate $G_0(\cdot) := \max_{m'} U_0(m'\mid\cdot)$ 引用 $U_0$、不引用 $Q_{\lambda_t}^{\mathrm{perf+CVU}}$ 本身,避免 $Q \leftrightarrow \mathrm{CVU}$ 自我递归(真要走 self-consistent 需 fixed-point、本文不走)。performance-only $Q_{\lambda_t}^{\mathrm{perf}} = U_0$ 是 special case;$MV = \mu_{\Delta J,t} / \lambda_t^\top \Delta C(m \mid s_t)$ 是 efficiency readout、对 diagnostic-only action 与 只更新 simulator / surrogate、不重新训练 policy 的 model-update action 都天生 immediate $\Delta J = 0$、$MV \equiv 0$——这不是遗漏、而是 $MV$ 只度量 performance efficiency、后续价值由 $\mathrm{CVU}$ 承担(见 allocation caveats)。$Q_{\lambda_t}^{\mathrm{perf+CVU}}$ 正式叫作 local decision score inducing a greedy one-step allocation policy不是 RL 意义上的 Bellman action value、也不是标准 Lagrangian——Lagrangian 只属于 $U_0$ 那一层)、是当前 state 下可估计的一步局部近似、其 argmax 即 L4 的 computable 近似策略 $\mu_t^{Q}(s_t) = \arg\max_m Q_{\lambda_t}(m \mid s_t)$。

$\mathcal{M}_t = \mathcal{M}(s_t)$ state-dependent——直接缩 $\mathcal{M}_t$、不是让 $MV$ 变小;$\mathcal{M}_t^{\mathrm{feasible}} = \mathcal{M}_t^{\mathrm{safe}} \cap \mathcal{M}_t^{\mathrm{budget}}$。Safety 分成两个不同 eventexecution-level $\mathcal{M}_t^{\mathrm{safe}} = \{m : \mathrm{UCB}_{1-\delta}[P_{\mathrm{exec}}(\text{unsafe} \mid s_t, m)] \le \alpha_{\mathrm{exec}}\}$ gate 每次 candidate 本身会不会把机器人推到危险;deployment-level $P_{\mathrm{deploy}}(\text{unsafe} \mid \pi_T, \mathcal{E}_{\mathrm{shared}}) \le \alpha_{\mathrm{deploy}}$ 约束最终 policy 在部署分布下的 outcome。两者可共用同一个 $\alpha$、但 event 不混。$\mathrm{UCB}$ 由 empirical frequency 模型、posterior predictive risk、simulation + uncertainty bound 或 conservative reachability estimate 等 estimation layer 给出、Clopper–Pearson 只是 binary execution outcome 下的一个特例。执行-level safety gate 只对涉及真实执行风险的 candidate 有非平凡意义:纯计算 / 离线 diagnosis(例如 simulation-only diagnosis、offline calibration 或 model-refresh-only action)不驱动真机硬件、其 $P_{\mathrm{exec}}$ 可退化为 $0$ 或一个 deterministic feasibility check、$\mathcal{M}_t^{\mathrm{safe}}$ 对该子集自动满足。状态记号定死:raw evidence / history 记作 $\mathcal{D}_t$、真正进入决策的是其 sufficient 压缩(belief state)$q_t = q(\mathcal{D}_t)$,因此本文 formal Markov decision state 一律写成 $s_t = (b_t,\,\pi_t,\,q_t,\,h_t)$;下文有时仍以 $\mathcal{D}_t$ 作 evidence 简写、泛指生成 $q_t$ 的可用观测、凡出现 $\mathcal{D}_t$ 处均可读作其 belief 压缩 $q_t$、不要求保留 raw history。$m$ 涵盖 policy-changing intervention 与 diagnostic experiment(role ∈ {adaptation, diagnosis, model update},role 指 action 的 primary operational purpose、允许同一 action 产生其他 side effects,例如一次 SI measurement 可能同时是 diagnosis + 隐式 model update);同 type 不同 batch / recipe / protocol 视为不同 candidate。

$$m_t^* \;=\; \arg\max_{m \,\in\, \mathcal{M}_t^{\mathrm{feasible}}}\; Q_{\lambda_t}^{\mathrm{perf+CVU}}(m \mid s_t),\qquad s_{t+1} = \mathcal{T}(s_t,\, m_t^*,\, Y_t)$$

时间索引完全对齐 transition:在 $s_t$ 决策 $m_t^*$ → 观察 $Y_t$ → 进入 $s_{t+1}$。注意 L4 不仅是给出一个 scalar score、argmax 本身就通过 $m_t^* = \mu_t^Q(s_t)$ 诱导出一个 state-conditioned 的 approximate allocation policy $\mu_t^Q : s_t \mapsto m_t$;下一轮的 $m_{t+1}$ 由 $\mu_{t+1}^Q(s_{t+1})$ 决定、因此 L4 与 L1 的 global adaptive allocation policy 在语义上首尾闭合(见下文 L1 讨论)。

$MV$ 不作 decision rule——极简 toy 展示分岔($\lambda = (3, 0.1, 1)$ 是 toy resource weight 常数取值;$\Delta C = (\text{real-h},\text{compute},\text{eng-h})$;toy 取 $\beta = 0$、只隔离 $MV$ 与 performance-only net utility $Q_{\lambda_t}^{\mathrm{perf}} = U_0$ 的差别):

Intervention$\mu_{\Delta J}$real hcomputeeng h$C_\lambda$$MV$$Q_{\lambda_t}^{\mathrm{perf}}$
30 min SI1.50.20.50.51.151.300.35
Big DR batch3.00.020.00.42.401.252.00
Camera DA2.51.03.00.53.800.66−1.30
Real FT5.02.01.01.07.100.70−2.10

$MV$ 把 SI 顶第一、$Q_{\lambda_t}^{\mathrm{perf}}$ 把 DR 顶第一——这里的 $Q_{\lambda_t}^{\mathrm{perf}} = U_0$ 是正式定义 $Q_{\lambda_t}^{\mathrm{perf+CVU}}$ 在 $\beta = 0$ 下的特例(示例刻意关掉 continuation-value 通道、只用来看效率 vs 净值的分离、不是本文主张 information 无用)。域条件:当 $\lambda_t^\top \Delta C > 0$ 时 $MV < 0 \Leftrightarrow \mu_{\Delta J,t} < 0$、$Q_{\lambda_t}^{\mathrm{perf}} < 0 \Leftrightarrow \mu_{\Delta J,t} < C_\lambda$;DA / FT 在此 $\lambda_t$ 下被 local net-value stop(economic stop)排除。

$m_t^*$ 只是 one-step local rule、非 global optimum;L1 定义全局优化问题时、优化变量应是 allocation policy 序列 $\{\mu_t\}_{t=1}^T$(其中 $\mu_t : s_t \mapsto m_t$ 是 state-conditioned 决策规则)、而不是 open-loop action sequence $\{m_t\}$——若用后者读起来就是"一开始就把 $m_1, \ldots, m_T$ 全钉死"、恰恰违反本文反复强调的 adaptive sequential experimentation($Y_t \to s_{t+1} \to$ 重新选 $m_{t+1}$);若进一步写成 $\{m_t^*\}$ 则会把 L4 的 heuristic argmax 与 L1 的 global decision variable 混起来、层级绕回。**这里要求每个 $\mu_t$ 是 history-measurable / adapted policy:只依赖 step $t$ 已可获得的 state $s_t = (b_t,\pi_t,q_t,h_t)$、满足 non-anticipativity——未来实现 $Y_{t'}\ (t' > t)$ 不可用于当前 action selection、$\mu_t$ 也不是事先知道 $Y_{t+1},Y_{t+2},\ldots$ 的神谕。**L1 给出累计资源约束 $\sum_t \Delta C_r(\mu_t(s_t) \mid s_t) \le B_r$、是 global feasibility 层;$b_t$ 则是同一份预算的在线 state representation、递推 $b_{t+1} = b_t - \Delta C(\mu_t(s_t) \mid s_t)$ 供 local decision 使用——两层同时写不是重复、而是分别服务"整体是否可行"与"当下还剩多少"两个问题。本文把 $\Delta C(m \mid s_t)$ 视为执行 candidate 后可观察到的 realized incremental resource consumption;因此 L1 的预算约束按"每一条执行路径上的累计 realized 消耗 $\le B_r$“来解释(pathwise cumulative constraint);由于 $s_t$ 本身随机、这实质是一个随机累计约束、严格按 almost surely / 以概率 $1$ 解读、即 $\Pr\!\big(\sum_t \Delta C_r(\mu_t(s_t)\mid s_t)\le B_r,\ \forall r\big)=1$。若成本本身具有显著 stochasticity(机器人维修、unexpected engineering effort 等)、可将 L1 约束改为 expected 或 chance-constrained resource consumption、本文正文按 realized cost 陈述。 Safety 分两层:execution-level 由 $\mathcal{M}_t^{\mathrm{safe}}$ 每一步 gate($P_{\mathrm{exec}}$)、deployment-level 只作为 terminal chance constraint 出现($P_{\mathrm{deploy}}$)。形式上、整个对象可以理解为一个 belief-state adaptive allocation problem(在 $q_t$ 上做序贯决策);本文不进一步求其 exact Bellman solution、也不将其当作标准 POMDP 展开、只取这一定位、不深入。 完整问题:multi-resource sequential allocation with chance constraint over an adaptive allocation policy

$$\boxed{\;\max_{\{\mu_t\}_{t=1}^{T}}\ \mathbb{E}\big[J_{\mathrm{real}}(\pi_T)\big] \quad \text{s.t.}\quad \sum_{t} \Delta C_r\!\big(\mu_t(s_t) \mid s_t\big) \le B_r\ (r \in \{\mathrm{real},\mathrm{compute},\mathrm{eng}\}),\;\; P_{\mathrm{deploy}}(\text{unsafe} \mid \pi_T, \mathcal{E}_{\mathrm{shared}}) \le \alpha_{\mathrm{deploy}},\;\; m_t = \mu_t(s_t).\;}$$

$\lambda_r$ 在具有良好值函数与约束正则性的情形下、可解释为最优值函数对 $B_r$ 的边际价值(ideal shadow price)、实际本文只需 resource-weight estimate $\lambda_t = \lambda(s_t)$(实现时可再展开为 $\lambda(s_t) = \lambda(b_t, q_t, \pi_t, h_t)$、不再人为漏掉 $h_t$)、随 allocation state 更新;下文一律简称 resource weights $\lambda_t$。由于 $\lambda_t$ 本身 state-dependent、$s_{t+1}$ 里的 continuation 使用更新后的 $\lambda_{t+1} = \lambda(s_{t+1})$——因此 $U_0(m' \mid s_{t+1}) = \mu_{\Delta J, t+1}(m') - \lambda_{t+1}^\top \Delta C(m' \mid s_{t+1})$ 里的 shadow price 是下一步的、不是当前 $\lambda_t$ 的沿用,$s_t \to \lambda_t \to m_t \to s_{t+1} \to \lambda_{t+1}$ 才形成完整闭环。五条 caveat:(i) $Q_{\lambda_t}$ 默认 posterior mean、风险敏感可换 LCB / CVaR-adjusted utility——禁"公式 mean、文字 LCB”。(ii) SI fixed cost、DR diminishing returns、FT threshold、negative transfer 可让 $MV < 0$。(iii) $\mathrm{CVU}$ 采用 counterfactual 定义、避免与 $U_0$ 重复计费当前 ΔC。 $\mathrm{CVU}(m\mid s_t)$(signed, one-step, candidate-relative, performance-only continuation uplift heuristic)定义为执行 $m$ 所导致的下一状态同一时间推进下不执行 $m$ 的 counterfactual 下一状态之间、one-step continuation surrogate $G_0(\cdot)$ 的差:

$$\mathrm{CVU}(m\mid s_t) \;=\; \mathbb{E}_{Y \sim p(\cdot\mid s_t, m)}\!\big[G_0(s_{t+1}^{m, Y})\big] \;-\; G_0(s_{t+1}^{\varnothing}),\qquad G_0(s) := \max_{m' \in \mathcal{M}^{\mathrm{feasible}}(s)} U_0(m' \mid s).$$

其中 $s_{t+1}^{m,Y}$ 是执行 $m$ 并观察 $Y$ 后的 state(携带 $b_{t+1} = b_t - \Delta C(m\mid s_t)$、$\pi_{t+1}$、$q_{t+1}$、$h_{t+1}$、$\lambda_{t+1}$),$s_{t+1}^{\varnothing}$ 是相同时间推进 / background drift convention 下不执行 $m$ 的 counterfactual state(保留当前 policy $\pi_{t+1}^{\varnothing} = \pi_t$、保留未扣减的 action-specific 预算($\Delta C(m)$ 未从 $b_t$ 扣除)、只推进与执行 $m$ 相同的 background time / drift process、其余 convention 与执行 $m$ 时可比)。这样当前 action 的即时资源消耗 $\Delta C$ 只在 $U_0$ 里被扣一次、$\mathrm{CVU}$ 只度量"$m$ 相对 $\varnothing$ 为未来 decision state / opportunity set(含 policy、belief、budget、hardware、candidate set)带来的额外 value"、不再叠加同一份 cost——即 $U_0$ 处理当前 action 的 gain-cost、$\mathrm{CVU}$ 处理它对未来的边际影响、二者互补。$\mathrm{CVU}$ 依然不是 VoI 也不是 Bellman continuation value function:$s_{t+1}$ 除了 evidence 更新之外、还携带 policy 改变、hardware drift、candidate-set 变化,标准 continuation term 应是 $V_{t+1}(s_{t+1})$、这里用 $G_0$ 代替,因此是 heuristic 而非真 value function。$\mathrm{CVU}$ 可以为负(budget depletion、hardware degradation、policy transition、candidate elimination、adverse evidence 都能让 $G_0(s_{t+1}^{m,Y})$ 低于 $G_0(s_{t+1}^{\varnothing})$);本文不再讨论"信息是不是有负价值"这类 VoI 语境问题——$\mathrm{CVU}$ 就是净 continuation uplift、符号直接由上式给出。Terminal convention:在终止步 $T$ 之后没有下一步决策、约定 terminal continuation value $V^{\mathrm{cont}}_{T+1}(s) := 0$、因此 terminal step 的 $Q_T = U_0(m\mid s_T) + \beta \cdot 0 = U_0$——不是"CVU 自动退化"、而是显式 convention。$\beta$ 是 dimensionless 偏好权重、若 $\mathrm{CVU}$ 与 $U_0$ 同尺度可令 $\beta=1$。$V(\mathcal{D}) = -\Pr(\arg\max Q_{\lambda_t}$ flips$)$ 只是 decision-stability proxy。(iv) $\Delta J$ 非天然 causal effect——matched / paired evaluation、$\Delta C$ 含全部 incremental cost;$\widehat{\Delta J}_t(m)$(realized)与 $\mu_{\Delta J,t}(m) = \mathbb{E}[\Delta J(m)\mid s_t]$(belief)两层次分开、公式中一律用 $\mu_{\Delta J,t}$。(v) Diagnostic-only action 与"只更新 simulator / surrogate、暂不重新训练当前 policy 的 model-refresh action" 均满足 immediate $\pi_t^m = \pi_t^{\mathrm{control}}$、$\mu_{\Delta J,t} = 0$(:若 model update 内含"更新 model 后立刻重训 policy"、$\Delta J \neq 0$、此时应按 adaptation 处理);因此 diagnostic / model-refresh 的 immediate value 恰好等于 $-\lambda_t^\top \Delta C$(即"净机会成本")、其信息收益完全通过 $\mathrm{CVU}$ 侧的 counterfactual continuation 差体现——$MV$ 对二者不提供有效信息(且当 incremental cost 也为 0 时 $MV$ 未定义)在本文一步近似下、这些非即时 performance effects(evidence / hypothesis posterior / candidate space / safety feasibility / simulator quality 的改善)统一通过 $\mathrm{CVU}$ 汇总、不再单独定义额外 reward channel。数值只在固定 $p_{\mathrm{eval}}$ 下有意义;跨时比较 $MV(m \mid s_t)$ 还要求 utility($J$)scale 与 resource-weight calibration($\lambda_t$ 的解释)保持一致、否则不同时刻的 $MV$ 已不在同一经济刻度上、不能直接连成一条趋势线。

$MV_i = MV_i(s_t)$ state-dependent。先 SI 可使 DR $MV$ 下降、先 DR 可使 FT $MV$ 上升——方向取决于 interaction、不假设单调。intervention 之间有 complementarity / substitutability / conflict(不写成 bandit)。反馈层:intervention 改 policy、进而改 $S_k^{\mathrm{int}}(\pi)$

estimate mismatch → estimate sensitivity → intervention
       ↑                                          ↓
   re-estimate  ←  sensitivity changes  ←  policy changes

这张 feedback loop 比任何新公式更贴合 allocation thesis:sim-to-real 是一轮做完重估一轮的 sequential experiment。

把每条干预对应到主要压缩项与主要预算:

Intervention主要压缩项主要预算
System Identification$\Delta_{\mathrm{model}}$$C_{\mathrm{eng}}$ + $C_{\mathrm{compute}}$ + 少量 $C_{\mathrm{real}}$
Domain Randomization$\Delta_{\mathrm{model}} + \Delta_{\mathrm{dist}}$$C_{\mathrm{compute}}$(样本效率)
Residual physics$\Delta_{\mathrm{model}}$(残差部分)$C_{\mathrm{real}}$ + $C_{\mathrm{compute}}$
Domain Adaptation$\Delta_{\mathrm{obs}}$(appearance 子集)$C_{\mathrm{real}}$(未标注数据)+ $C_{\mathrm{compute}}$
Real-world fine-tuning不直接对应单一 mismatch;通过目标域 optimization 改变 policy(同时改 transfer delta 与 learning gap)$C_{\mathrm{real}}$(磨损 / 安全)
World model改变 model source$C_{\mathrm{real}}$ + $C_{\mathrm{compute}}$
Sim-and-real co-training改变 $p_{\mathrm{train}}$($\Delta_{\mathrm{dist}}$ 为主)混合数据($C_{\mathrm{real}}+C_{\mathrm{compute}}$)

有了这套写法、全文就非"四种方法谁更好"、而是闭环:定位主导 $\Delta_k$、sensitivity 判重要度、$\arg\max Q_{\lambda_t}$ 选下一步、真实评估回报、再定下一份。

这意味着什么?:一个闭环,而不是一个开关

数据 scaling 下篇核心句是 evaluation-aware distribution allocation。套回 sim-to-real——仿真数据 utility 不是 sim 内部属性、而是相对真实 evaluation distribution 的属性:

$$U\big(D_{\mathrm{sim}} \mid \mathcal{L},\ p_{\mathrm{eval}}^{\mathrm{real}}\big)$$

这解释了常见挫败:“堆更多 sim 数据"有时没用——当主要瓶颈恰好是 simulator 与真实 evaluation distribution 之间的 support / fidelity mismatch、加同分布 samples 的边际收益会快速下降;不能自动创造 evaluation-relevant coverage、也不能修正 model bias。与其问"我的 sim 有多好”、不如问:“我的 sim 在哪些 evaluation-relevant 方向上接近真实、哪些差得远?差得远的那些敏感度多高、用哪种预算压它最便宜?”

把这条线走完、sim-to-real 就不再是"能否迁移成功"的开关、而是带反馈的闭环:

$$\boxed{\ \text{diagnosis} \rightarrow \text{sensitivity / uncertainty} \rightarrow \text{intervention} \rightarrow \text{performance} + \text{information gains} \rightarrow \text{update }\mathcal{D}_t \rightarrow \text{re-allocate} \rightarrow\ \circlearrowleft\ }$$

配套的闭环 spine 图、比任何"四分类"表格都更贴合本文论点:

                current state  s_t = (b_t, π_t, q_t, h_t)   ← b_t = remaining budget
                     mismatch diagnosis (D_t vs real)
                 sensitivity / uncertainty attribution
         candidate action  m = (role, lens, protocol/batch)
              ┌────────────────┼────────────────┐
              ▼                ▼                ▼
         diagnosis         adaptation       model update
      (any lens:        (Model / Data /    (Model / Data /
       Model / Data…)    Representation /   Representation /
                         Optimization)      Optimization)
              └────────────────┼────────────────┘
                  real evaluation (paired, CI)
                    performance uplift  +  continuation uplift
                     (ΔJ_real)          (CVU: q_t, π_t, M_{t+1})
                update  s_{t+1} = T(s_t, m_t^*, Y_t),  Y_t ~ p(·|s_t, m_t^*)
                    stopping rule?  → deploy π_T
                               └────► next round (loop)

role × lens × protocol/batch 三元索引共同定义 candidate——它们是不同语义层的分类维度、不假设统计正交或物理独立:role 描述"这次 action 在 sequential loop 中的 primary operational purpose"(adaptation / diagnosis / model update、允许同时产生其他 side effects)、lens 描述"通过什么机制干预"(Model / Data / Representation / Optimization、"×" 是组合空间、本身也非正交)、protocol/batch 描述"以什么规模与配方执行"。SI / DR / DA / FT 只是 method 标签、一个 method 可以落到不同 role(SI 既可以是 adaptation、也可以是纯诊断性 measurement、甚至可以顺带刷新 sim 参数 = primary role 是 diagnosis、side effect 是 model update),因此 method 不是 allocation 的 action space。真正的 decision unit 是 state-conditioned action $m \in \mathcal{M}_t^{\mathrm{feasible}}(s_t)$。candidate set 本身也 state-dependent:diagnostic experiment 关掉或打开后续 adaptation / model-update 的可行域、把 evidence 与 action set 的耦合直接暴露在读图上;最后一步改变 $s_{t+1}$ 里的 sensitivity 与 mismatch、驱动 feedback loop。

这条链是 resource-constrained adaptive sequential experimentation framework:敏感度与边际收益靠小步实验估出、一轮估完再定下一份预算。收成五层 spine:

$$\boxed{\begin{aligned} &\textbf{L1}:\ \max_{\{\mu_t\}_{t=1}^{T}}\ \mathbb{E}[J_{\mathrm{real}}(\pi_T)]\quad\text{s.t.}\ \textstyle\sum_t \Delta C_r(\mu_t(s_t)\mid s_t)\le B_r,\ m_t=\mu_t(s_t),\ P_{\mathrm{deploy}}(\text{unsafe}\mid \pi_T, \mathcal{E}_{\mathrm{shared}})\le \alpha_{\mathrm{deploy}}\\ &\textbf{L2}:\ s_t = (b_t,\,\pi_t,\,q_t,\,h_t),\quad q_t = q(\mathcal{D}_t)\ \text{(belief state)},\quad b_t\ \text{= remaining},\quad b_{t+1} = b_t - \Delta C(m_t\mid s_t)\\ &\textbf{L3}:\ m_t \in \mathcal{M}_t^{\mathrm{feasible}}(s_t),\quad \mathcal{M}_t^{\mathrm{feasible}} = \mathcal{M}_t^{\mathrm{safe}} \cap \mathcal{M}_t^{\mathrm{budget}},\ \mathcal{M}_t^{\mathrm{safe}}\ \text{gates}\ P_{\mathrm{exec}}\\ &\textbf{L4}:\ m_t^* = \arg\max_{m\in\mathcal{M}_t^{\mathrm{feasible}}} Q_{\lambda_t}^{\mathrm{perf+CVU}}(m\mid s_t),\quad Q_{\lambda_t}^{\mathrm{perf+CVU}} = U_0(m\mid s_t) + \beta\,\mathrm{CVU}(m\mid s_t)\\ &\textbf{L5}:\ MV(m\mid s_t) = \mu_{\Delta J,t}(m)\;/\;\lambda_t^\top \Delta C(m\mid s_t),\quad \mu_{\Delta J,t}(m) = \mathbb{E}[\Delta J(m)\mid s_t]\\ &\textbf{Transition}:\ s_{t+1} = \mathcal{T}(s_t,\, m_t^*,\, Y_t),\quad Y_t \sim p(\cdot\mid s_t, m_t^*),\quad \lambda_{t+1} = \lambda(s_{t+1})\\ &\textbf{Terminal}:\ V^{\mathrm{cont}}_{T+1}(s) := 0,\ \text{hence } Q_T = U_0(m\mid s_T) \end{aligned}\;\longrightarrow\;\circlearrowleft}$$

层级:$\boxed{\text{global } \mathbb{E}[J_T] \supset \text{local } Q_{\lambda_t} \supset MV}$——L1 定义的是优化问题本身(stochastic sequential allocation with chance constraint)、L4 只是它的一个 tractable action-selection approximation($m_t^* = \arg\max\,(U_0 + \beta\,\mathrm{CVU})$ 是 global sequential allocation 的 one-step, performance-only continuation approximation、不是 Bellman-style exact solution、$V_{t+1}(s_{t+1})$ 用 $\max_{m'} U_0(m' \mid s_{t+1})$ 替代)、$MV$ 是 efficiency statistic。$\mathrm{CVU}$ 只用于中间决策 continuation look-ahead、不是 terminal deployment reward;到停止时刻、最终 objective 仍只评价 $J_{\mathrm{real}}(\pi_T)$ 与 $P_{\mathrm{deploy}}$ 约束——因此 terminal step 的 $Q_{\lambda_t}$ 退化为 $U_0$。

收束:sim-to-real 不是选一种 transfer technique、而是在当前 belief、不可互换预算与真实评估反馈下连续决定下一次 intervention——这是全文理论 spine。本文的贡献不是提出新的 optimization primitive、而是重新定义 sim-to-real 的 decision unit——从「选一种方法」到「在当前 state 下选下一次 intervention」——并把 reality gap 与 sim utility 重述成 policy / evaluation-conditioned 的量。所有前文展开的符号最后收成一条主链、两条封口、以及一张 allocation stack:

$$\boxed{\begin{gathered} \text{state } s_t \;\rightarrow\; \mathcal{M}_t^{\mathrm{feasible}}(s_t) \;\rightarrow\; \big(\mu_{\Delta J,t},\;\Delta C,\;\mathrm{CVU}\big) \;\rightarrow\; Q_{\lambda_t} \;\rightarrow\; m_t^* \;\rightarrow\; s_{t+1}\\[4pt] \text{safety / budget define feasibility;}\\[-2pt] MV\ \text{is only an efficiency diagnostic, not a decision rule.} \end{gathered}}$$

主链上不再显式画 $\mu_t$——因为 L1 优化的是 ideal global adaptive allocation policy $\{\mu_t\}_{t=1}^T$、L4 通过 argmax 构造的是 computable approximate allocation policy $\mu_t^Q(s_t) := m_t^* = \arg\max_m Q_{\lambda_t}(m \mid s_t)$、两者分处 ideal / approximate 两层;若把 $\mu_t$ 与 $m_t^*$ 同时画进主链、就会被读成 “$\mu_t$ 先生成 $m_t$、然后 Q 再挑出 $m_t^*$” 的伪循环。整个 framework 的 allocation stack 自上而下收成七层:

$$\boxed{\begin{array}{rcl} \text{diagnostic layer} &:& \Delta_k,\ S_k^{\mathrm{int}},\ \text{uncertainty}\\[2pt] \downarrow &&\\[2pt] \text{candidate construction} &:& m = (\text{role},\,\text{lens},\,\text{protocol}/\text{batch})\\[2pt] \downarrow &&\\[2pt] \text{value estimation} &:& (\mu_{\Delta J,t},\ \Delta C,\ \mathrm{CVU})\\[2pt] \downarrow &&\\[2pt] \text{feasibility} &:& P_{\mathrm{exec}},\ \text{budget}\\[2pt] \downarrow &&\\[2pt] \text{local decision} &:& Q_{\lambda_t}\\[2pt] \downarrow &&\\[2pt] \text{action} &:& m_t^*\\[2pt] \downarrow &&\\[2pt] \text{state transition} &:& s_{t+1} \end{array}}$$

读者只需要抓住 五个主对象($s_t$、$\mathcal{M}_t^{\mathrm{feasible}}$、$Q_{\lambda_t}$、$m_t^*$、$s_{t+1}$)、一条 feasibility 规则($\mathcal{M}_t^{\mathrm{safe}} \cap \mathcal{M}_t^{\mathrm{budget}}$ 与 $P_{\mathrm{exec}} / P_{\mathrm{deploy}}$ 双层)、以及 $MV$ 只提供 efficiency 读数不充当 decision rule 的分工,就把整套 formal framework 收在一张纸上;$(\mu_{\Delta J,t}, \Delta C, \mathrm{CVU})$ 是 $Q_{\lambda_t}$ 的三个 value inputs、$m_t$ 只是 generic action 记号、均不再另列为一级对象


参考文献

正文涉及的主要工作(均按 arXiv ID 检索):

sim-to-real 尚无公认跨任务定量对照、不同任务 / 硬件 / fidelity 上限下结论可颠倒;上述工作更多是"这类 gap 用这方法可行"的样本、非可外推排序。本文四个 lens 分解、sim utility 三维切分、constrained-allocation 形式化都是 conceptual framework 与作者解读、非受控实验证明的结论。


本篇是"具身智能的数据问题"上下篇续篇:上篇讲数据来源与接口、下篇讲数据 scaling 框架;本篇把镜头拉到 sim-to-real、把它从"一堆迁移技巧"重述成带经验边际效用的闭环分配问题、接回 sequential data allocation 主线。

下一篇(Part 2)Sim-to-Real 方法论(二):四把手术刀与两条新路线 – 把 SI / DR / DA / FT / World Model / Co-training 逐一拆开。

评估与落地(Part 3)你怎么知道 gap 补好了 – 三级证据层、sim utility 三维切分、6 步 protocol。

本篇是"具身智能 Sim-to-Real 方法论"三部曲-理论篇。方法谱系详解在 Part 2、评估与落地在 Part 3。三部曲承接"数据问题"上下篇的数据来源与 scaling 主线。


← 机器人数据 Scaling:从 interaction coverage 到 marginal data value 具身智能 Sim-to-Real 方法论(二):四把手术刀与两条改写问题的新路线 →

评论

W
侯晓琴

西北工业大学硕士,十余年自动化与 AI 工程经验。著有《Visual C++入门很容易》《C++程序设计经典300例》。目前聚焦世界模型与具身智能方向,记录从传统自动化到机器人 AI 的转型之路。