第 9 章 评估(Demo 谎言学)¶
这一章是这本书最不愿意交朋友的一章。但你要在这个领域待超过两年,迟早要会两件事:怎么读别人的 demo,和怎么不让自己变成下一个被读穿的人。
先看一段视频。
2024 年某个礼拜五,一家具身公司在 Twitter 放了一段 30 秒的视频:一台双臂人形机器人,桌上一堆杂物,工程师在旁边说"please clean up the table"。机器人开始动作,把可乐罐放进回收箱,把香蕉放在水果盘,把叉子放在餐巾上,把毛巾叠了一下放在角落。视频结束的时候桌面是干净的。两小时之内 800 万播放,顶部评论是"AGI is here"。
我把这段视频逐帧拉过一遍。
第一处:第 3 秒到第 4 秒,有一个 27 帧的硬切。镜头从机器人的躯干特写跳到俯视桌面的另一台相机,机器人的右手位置在切的那一瞬间从桌沿外跳到了可乐罐上方 5 厘米的预抓位姿。这一秒钟里它做完了一段没拍出来的动作,那段动作大概率是接近物体的最后引导,也大概率出过几次错被剪掉了。
第二处:第 12 秒抓香蕉的时候,视频从 30 fps 降到了大约 22 fps。原始视频应该是 30 fps 录的,那一段被加速了大概 1.4 倍。抓香蕉这个动作在原始时间里花了 4 秒,剪进 demo 里是 2.8 秒。在物理世界里 4 秒抓一根香蕉是非常慢的,慢到这家公司的 CEO 在另一段播客里自己承认过他们的"slow but reliable"哲学。
第三处:背景里那个水果盘是空的。一个真实的家里清理桌面,水果盘里通常有别的水果。这个水果盘是为这次 demo 准备的,桌上每一样物体都被精心选过。这不是这个机器人遇到的真实场景,是它训过的分布的视觉重现。
三处不是全部。还有:机器人第一次接触每一个物体时手的接近角度都是同一种,说明这是它最熟的那种 grasp pattern;指令"please clean up the table"在这家公司的 demo 视频里反复出现过,几乎可以肯定它在训练集里;视频结尾那一瞬间镜头切走,没有给最终桌面一个完整的 wide shot,因为那个 shot 里大概率有一两件没归位的东西。
然后这段视频会被 venture capital 写进 LP 报告,会被记者写成"home robot 已经来了",会让另外三家做同类产品的公司在第二天把自己的 roadmap 加速。
这就是 demo。不是产品。Demo 是营销,而且是一种系统性、合法、行业默认的营销。这一章不教你怎么不上当,因为这个行业的人很多都已经知道但仍然甘愿上当。这一章教你自己做评估的时候怎么不变成你自己鄙视的那种 demo 制造者。
先把对手的工具箱列出来。一段 cherry-picked demo 的标准手法基本就这五种,按从粗暴到精巧排:
手法一:多次试错只剪成功段。最古老最常用。一个动作跑 50 次,成功 3 次,把那 3 次剪进去。观众看到的是 100% 成功率,工程师心里知道是 6%。这种 demo 怎么识破:看动作是不是被剪在视频开头很靠前的位置(剪辑师一般把最稳的那段放最前面),看不同 demo 之间机器人的初始位姿是不是几乎一样(因为只有那一种初始位姿训得最熟)。
手法二:切镜头隐藏失败动作。这是更现代的版本。视频里你看见机器人开始一个动作,然后镜头切到别处(比如人脸特写、环境广角、桌面俯拍),切回来的时候动作已经做完了。被切走的那一两秒里发生了什么,没人知道。判断标准很简单:在一段 30 秒 demo 里硬切的次数超过 3 次,就有可能在切某些事。一段真正稳的连续动作不需要剪辑节奏。
手法三:加速回放掩盖卡顿。VLA 模型在某些子动作上推理频率会掉,比如从 10 Hz 降到 3 Hz,机械手就会出现一拍一拍的卡顿。剪辑师把这种段加速 1.3-1.8 倍,肉眼看就顺滑了。识别方法:看背景里的人或者旁边的物体(比如桌上水珠下落、空调出风扇叶),他们的速度跟机器人不一致就说明被局部加速过。
手法四:演示物体范围比训练分布还窄。训练集里有 200 种物体,demo 里反复出现的只有 5-8 种,而且都是那 200 种里最 canonical 的(标准可乐罐、标准香蕉、标准毛巾)。这件事 RT-2、π0 的 demo 视频里都做过,π0 自己在论文 appendix 里其实承认了。这不算撒谎,但也不算诚实。真正能证明泛化的 demo 应该让外人挑物体,这种 demo 在这个行业几乎没有。
手法五:主语言指令在训练集中。这是最隐蔽也最常见的。"clean up the table" / "make me a coffee" / "pack the lunch box" 这些指令在训练数据里反复出现过,模型本质上是在做指令检索而不是指令理解。一旦你换一句意思相同但措辞不同的指令("tidy this mess up"),成功率立刻掉一半。识别方法:看公司在不同 demo 里使用的指令措辞,如果几乎一字不差,那就是训练集里的原句。
这五种手法不是阴谋。它们是这个行业的人在 demo deadline 前面对老板和 VC 时所有人都做但所有人都不说的事。问题不在做了,问题在没人在 demo 视频底下加一行 disclosure 说"this is one of N attempts"。学术界至少有 paper 的 evaluation section 兜底,工业界连这个都没有。
那 benchmark 呢?benchmark 至少是公开的、可重现的、跨团队可比的。
到 2026 年,这个领域的公开 benchmark 大概有这么几个值得认真对待的:
SimplerEnv(Stanford 2024)。Li、Levine 那一波人做的,第一次在 sim 里高保真重现了 RT-1 / RT-2 / Octo / OpenVLA 这一线 VLA 的原训练任务,让你不需要真机就能跑出跟真机大致相关的成功率。最大的贡献不在 benchmark 本身,在它证明了用 sim 当 VLA 的"公开评估"在某些任务上是可行的。但只是某些任务。布料、流体、复杂接触的任务 SimplerEnv 还差得远。
LIBERO(UT Austin,2023)。任务定义比较干净,分四个 suite(Spatial / Object / Goal / Long),适合测一个新 policy 的基本能力。问题是任务太程式化,跟真实场景的相关性不高。被引很多,被信任就少一些。
MetaWorld(Berkeley,2019)。强化学习时代的产物,50 个 manipulation 任务。VLA 时代它的角色越来越尴尬,因为它的任务都是合成的、视觉非常 sim 风、跟现在 VLA 想测的"真实指令理解"对不上。新 paper 还在用,但更多是出于惯性。
CALVIN(Karlsruhe,2022)。专门测语言条件 long-horizon 操作的 benchmark。在指令跟随这一类问题上还有用。但 sim 渲染老旧,2026 年来看视觉 gap 太大。
FurnitureBench(KAIST,2023)。这个 benchmark 让我比较尊重。任务是组装宜家家具,在真机上做,提供完整的 teleop 数据集和评估 protocol。它是少数几个在公开 benchmark 里坚持用真机评估的,所以也是少数几个 reviewer 看了不会盲信的。
ColosseumBench / Colosseum(CMU,2024)。专门测 VLA 在 perturbation 下的鲁棒性:换光照、换背景、换干扰物、换物体姿态。是这一波 benchmark 里最对得起"评估"两个字的一个,因为它直接测 OOD。结果也最难看,所有公开的 VLA 在它最难的 split 上成功率都掉到 30% 以下。
RoboCasa(NVIDIA / Stanford,2024)。100 个任务,120 个场景,主打 sim 里的多样性和可扩展性。它的姿态是"我们承认 sim 不能 1:1 评估真机,但我们提供海量的 task variation 让你的 policy 在 sim 里就能过 robustness 这关"。这个姿态我比较认可。
把这些 benchmark 列出来不是让你都去跑。列出来是让你看一件事:每一个公开 benchmark 都在某个维度上比公开 demo 严谨,但都不评估你真正想知道的东西。SimplerEnv 不评估真机部署。LIBERO 不评估真实物体。Colosseum 不评估长程任务。FurnitureBench 不评估 VLA 上限。
没有一个公开 benchmark 评估"这台机器人到客户家里能不能用"。
这就是为什么仿真 benchmark 不够用。它们评估的是你的 policy 在它们定义的那个 distribution 里的表现,不是你的 deployment 在真世界里的表现。这两个 distribution 的差距,是这本书第 7 章讲的整套 sim2real gap。如果你的内部决策只看 SimplerEnv 数字,你就是在用一个不评估你真问题的工具评估你自己。这不是 benchmark 的错,是使用者的错。
那真实评估呢?真实评估的代价是这样的。
一次 trial 在真机上的 wall-clock 大概 30 秒到 2 分钟。每次 trial 之间要 reset 环境(把物体放回初始位置、把机器人归位、检查传感器没漂),reset 时间 30 秒到 3 分钟。算上偶尔的硬件故障、需要充电、人在场观察的时间,一个全职评估工程师一天能跑 100 次到 200 次 trial。
跑 100 次给你的是什么?给你一个二项分布的样本,0/1 成功率乘以 100 次试验。如果观察到的成功率是 70/100=70%,95% 置信区间(Wilson interval)大概是 [60%, 78%]。18 个百分点宽。
跑 10 次给你的是什么?给你一个几乎没有信息量的数字。如果观察到 7/10=70%,95% Wilson 区间(Wilson confidence interval:用二项分布算成功率的可信范围,比 normal approximation 在小样本下准)是 [40%, 90%]。50 个百分点宽。在这个区间宽度下,70% 和 50% 在统计上分不开,70% 和 85% 在统计上也分不开。你 paper 写"我们的方法 70% 比 baseline 60% 好",如果两边都只跑了 10 次,这两个数字在 95% 信度上完全可能反过来。
为什么大多数 paper 还是跑 10-50 次?三个原因。第一个是钱。一台真机一天的人力 + 折旧 + 场地大概 1500-3000 美元。100 次 trial 一天跑得完,但要跨 5-10 个任务、3-5 个 baseline、再加上不同 perturbation,总试验次数动辄上万次,成本立刻是六位数。第二个是惯性。学术圈的 reviewer 对 10-30 次 trial 习以为常,作者按惯例就这样写,没人因为 trial 数太少被拒稿。第三个是政治。如果你跑了 200 次发现你的方法只比 baseline 好 5 个点,区间还重叠,paper 就不能写"significant improvement",你的 advisor 会让你想办法。最简单的"想办法"就是把试验次数减到区间能凑出 non-overlap 为止。这件事在工程界叫 p-hacking 的孪生兄弟 n-hacking。
到 2026 年这件事正在被慢慢掀开。CoRL 2025 有一篇 best paper finalist 专门讨论 robotics evaluation 的统计,结论非常硬:当前 top venue 上 80% 以上的论文,如果按正常的统计标准重审,它们的"superior performance" claim 站不住。这篇 paper 的标题没有点名,但 community 里大家都知道点的是谁。
立场一:没有 confidence interval 的成功率是营销,不是科学。
只写"我们的方法 78% 成功率"是没有意义的句子。一个负责任的句子是"我们的方法在 N=120 次试验里得到 94/120=78%,Wilson 95% CI [70%, 85%]"。后半段不是装饰,是这个数字能不能被信的判据。你 paper 里不写后半段,要么说明你不知道这件事,要么说明你知道但你写出来不好看。两个解释都不光彩。
Wilson interval 不复杂,scipy 一行能算(statsmodels.stats.proportion.proportion_confint(k, n, method='wilson'))。比 normal approximation 在小样本下准很多,比 bootstrap 简单很多。没有任何理由不写它。如果你的 paper 投出去,reviewer 没要求你加,那是 reviewer 的问题,但你自己在公司内部决策时把这件事省掉,是你的问题。
立场二:评估投入应该是训练投入的 30-50%。少于这个比例你就在自欺。
一个项目要 fine-tune 一个 VLA。训练侧的成本:8 张 H100 跑两周,加上数据收集(teleop / 标注)大概一个月,工程师两人 full-time。加起来一个人月级。这是大头。
那评估侧呢?大多数 team 的真实做法:写一个 demo task 列表,让一个工程师拿着秒表跑两天,把结果做成 PPT。这是 1-2 人天。
1-2 人天 vs 一个人月,评估投入是训练投入的 5%。这个比例下你测不出任何有用的东西。你既不知道你的方法在 50 次以上 trial 下的真实成功率,更不知道在 perturbation 下它会怎么崩。你交出去的 PPT 在你自己心里都不信。
合理的比例是 30-50%。一个人月训练,对应 10-15 人天的评估。这 10-15 人天里要做的事:定义 5-10 个评估任务(覆盖训练 distribution、轻 OOD、重 OOD 三档),每个任务跑 100-200 次 trial,每次 trial 标记 failure mode,最后写一个每一项 claim 都带置信区间的内部报告。
这件事工业界做得比学术界好,但也好得有限。Physical Intelligence 内部的评估流程比大多数学校严谨,他们在 π0.5 paper 里其实给了 trial 数。Figure 完全不公开。1X 偶尔在博客里说"超过一千次 trial"。Tesla 公开的部分基本是营销片段。这个行业还远没有形成"评估投入 ≥ 训练投入 30%"的共识,但这个共识必须形成,否则 deployment 一定会出事。
failure analysis 是评估里最被低估的一项。
只看 success / failure 的二值结果,你只能告诉别人"我的方法行不行",告诉不了任何人"该怎么改"。要让评估能 actionable,每一次失败都要被分类。我用顺手的分类是这六种:
perception miss。模型根本没看到目标物体,或者看错了。识别方法:检查最后一帧的视觉特征里目标物体的注意力权重,或者直接看 policy rollout 的首个动作方向。
planning error。看到了,但选了错的子任务或错的执行顺序。比如要叠 T-shirt,模型先去抓领口而不是下摆。这种错在分层架构里更容易隔离,端到端架构里要专门设计 probe。
contact failure。规划合理,但接触没发生,或者接触位姿错了。手指没接到、接到错的面、接触深度不对。识别方法:看力传感器和触觉传感器的时间序列,跟成功 trial 对比。
grasp slip。抓住了,但抓握过程中物体脱落。多见于光滑物体、重物、变形物体。识别方法:看抓取后的轨迹中物体相对手部的位姿变化。
model OOD。物体或场景超出训练分布,模型行为不可预测,可能完全僵住、可能输出极端动作。识别方法:把当前观测的视觉特征跟训练集做最近邻检索,距离超过阈值就标 OOD。
hardware fault。传感器掉线、电机过热、通讯延迟、电池电压不足。这一类失败跟模型没关系,但如果你不分出来,会污染你的成功率统计。
每次失败标记一个或多个标签,跑完 100 次 trial 你拿到的不是一个数字,是一张 confusion-style 的矩阵:每种 failure mode 占总失败的比例。这张矩阵告诉你下一步该往哪个方向投入。perception miss 占 50% 就该收数据增强 perception,contact failure 占 50% 就该改阻抗或者收触觉数据,model OOD 占 50% 就该在分布外做 fine-tune。
很多团队在评估里跳过这一步,理由是"标记 failure mode 太花时间"。100 次 trial 标 failure 大概 2-3 小时。它救你下一个月的研发方向,不标的代价比标的代价大得多。
工业评估有一套自己的指标体系,跟学术 benchmark 不完全对得上。值得列一下,因为如果你的下一站是工业部署,这套指标才是你交付的真东西。
MTBF (Mean Time Between Failures,平均无故障时间)。机器人从启动到下一次需要人介入的平均时间。家用机器人的目标 MTBF 在 2026 年大概是 2-4 小时,工业拣选机器人是 8-24 小时。这个数字跟学术成功率不能直接换算,因为学术成功率算的是单 task,MTBF 算的是连续多 task 直到崩为止。
Intervention Rate(介入率:每小时操作员要远程接管或现场干预多少次)。每小时人需要干预多少次。1X 在博客里给过他们家用 NEO 的数字,2025 年中是 4-6 次/小时。这是实际部署的硬指标,比成功率诚实,因为它包含了所有"机器人卡住、人来救一下"的情况,而单 task 评估往往忽略这种。
Success Rate per Task。这个跟学术界看上去一样,但工业界报告的时候通常带 N 和置信区间,因为下游的 SLA 合同要靠它。
MTBF + Intervention Rate + per-task SR 这三件套,比任何 benchmark 都更接近"这台机器人能不能交付"的真问题。学术 paper 几乎从不报前两个,这是 academia-industry gap 的最具体表现之一。
最后值得提的:自动评估这一波尝试。
人工评估的瓶颈是人工。这两年有几个工作在尝试用模型本身来评估:
RoboVQA(Google,2023 年底)。给一段机器人视频,让一个 VLM 回答关于这段视频的问题("机器人有没有完成任务"、"它抓的是什么物体"、"动作是不是顺利")。本质是把"评估"这件事 reframe 成 visual question answering。在 2024 中之前比较有用,之后随着 VLM 自己也是被评估对象,循环参考的问题越来越大。
RoboArena(CMU + Stanford,2025)。把人工对比评估变成一个 ELO 排名系统:让人看两段不同 policy 在同一任务的 rollout,选哪个更好。结果汇总成一个 leaderboard。这个思路从 LMSYS Arena 偷来的,在 robotics 里是新鲜事。问题是人评 rollout 比评文字累很多,参与者数量起不来,到 2026 年初还没真正成为 community 共识。
RoboBench(DeepMind,2025 年中)。野心最大的一个,想把 sim benchmark + 真机 benchmark + VLM auto-eval 合成一个 framework。包含一个 reference set 让大家可以横向比较。社区接受度还在爬坡,但这是当前最有可能成为新一代标准的工作。
这一波自动评估有用的部分是:它们把评估的边际成本降下来,让你可以在迭代中频繁评估而不是只在 paper deadline 前评估。它们不能替代真机 + 100 次 trial + failure analysis 的金标准,但可以让你在 daily training loop 里就发现哪一版 policy 在退化。用法应该是 CI/CD,不是 paper 表格。
写到这里这一章的核心立场可以再压缩一遍:
公开 demo 是营销。公开 benchmark 是必要不充分。真实评估的代价是 30-50% 的训练投入,少于这个比例的项目都在自欺。没有 confidence interval 的成功率不是科学。每一次失败都要被分类,否则 100 次 trial 的信息只压缩成 1 个数字。工业部署用 MTBF + Intervention Rate,跟学术 SR 不直接互换。自动评估开始有用,但还替代不了真机金标准。
这一章不会让你高兴。但下一次你看到一段 30 秒视频,800 万播放,顶部评论"AGI is here",希望你至少花一分钟把视频拉到 0.25x,看一下硬切的次数。那一分钟比你接下来读的任何一篇 paper 都教得多。
练习¶
找最近最火的一段具身 demo video(Figure / 1X / Tesla / Sanctuary / Apptronik / 国内任意一家任选其一),按上面五种手法过一遍。逐帧拉出至少 3 处可疑点,每一处写清是哪一种手法。然后回到这家公司在同一时期发的 paper 或 blog,看里面有没有给出试验次数和置信区间。如果没有,写出你估计他们真实的成功率范围,依据是什么。
找一篇你最尊重的 robotics paper(可以是 RT-2、π0、Helix、GR00T 任选),翻到 evaluation section。这一节里他们报告了多少次 trial?有没有置信区间?failure mode 是怎么分类的?用本章给出的标准给这一节打分,0-10 分,写一段为什么。如果分数低于 6,问自己:你有没有因为别的原因继续 cite 这篇 paper 的 SR 数字?
翻你自己手上正在做的项目最近一次内部评估报告(如果你没有评估报告,这个练习就到此为止)。算一下评估投入相对训练投入的比例。如果低于 30%,写出补到 30% 需要做什么、要多少人天、谁来做。如果你的 manager 不批这个时间,把这本书的这一章拍他桌上。
给你正在 fine-tune 的某一个 policy 写一份诚实的 demo disclosure:这个 demo 是第几次成功的剪辑、训练分布是什么、视频里出现的物体是不是都在训练集里、指令措辞是不是出现过、加速了多少倍、剪了几个镜头。写完之后问自己愿不愿意把这份 disclosure 跟 demo 视频一起发出去。如果不愿意,问自己为什么不愿意,那个为什么就是这个行业的病灶。
下一章:第 10 章 安全