做具身智能的团队都缺同一样东西:带动作标签的交互数据。真机示教按小时计费,一套采集平台一天能产出几小时可用轨迹,还要清洗、对齐、标注任务描述。而人类在 3D 环境里每天都在产生海量的「观察—操作—后果」三元组:屏幕在变,键鼠在动,时间戳是准的。问题只剩一个,这些数据到底能不能喂给机器人策略。

arXiv 2611.13819v1 这篇《Game-Enhanced Embodied Learning with Event and Foresight Pretraining》给出的答案是「能,但迁移方式和你猜的不一样」。它没有把键盘鼠标翻译成机械臂的关节角,也没有学一个从键鼠到电机指令的映射网络。它的做法是把游戏录屏当成一个额外的预训练阶段:一边预测玩家下一个键鼠事件,一边用一个完全冻结的视频模型去监督「未来一秒的画面」会变成什么样。预训练结束,把权重搬回 InternVLA-A1.5 的原生机器人通路,再在 LIBERO 的四个 suite 上微调。最终从 85.90% 涨到 90.55%,2,000 局里多赢 93 局。

但有一句话必须放在开头:这篇论文没有任何真机实验。所有下游数字都来自 LIBERO 仿真,作者在结论里写得很清楚——这些结果不构成跨任务、跨游戏、跨架构或跨真实机器人的一致提升。所以它值得读的地方不是「游戏数据有用」这个结论,而是它把一条从非机器人数据通向机器人策略的训练路线完整跑了一遍,并且诚实地标出了这条路上哪几段还没修完。

01 先把账摊开:+4.65 个点买到的是什么

两个数字:2,000 局里多赢 93 局

先把最容易被标题带偏的地方钉死。四个 suite 各 10 个任务、每个任务 50 局,一共 2,000 局;Base 臂赢 1,718 局,游戏预训练臂赢 1,811 局。成功率 85.90% 对 90.55%,差 4.65 个百分点,绝对值是 93 局。因为每个 suite 都是 500 局,这个合计成功率既是四者的等权平均,也是直接池化的结果,论文在附录 D.1 里专门写了这一步等价关系。

这里有一个容易忽略的细节:Base 不是官方发布的那个训好的基准策略,而是用同一套本地视频损失实现、同一条下游配方从公开的 base 初始化微调出来的。论文明确说,公开实现里条件片段和未来片段共用一个采样时间步,而本地实现里条件片段是干净、时间步为零的。所以 85.90% 这个数不能拿去和论文里引用的其它 LIBERO 榜单横比,它只在这个内部对照里有意义。

这个差值不是「游戏数据」的净效应

两臂的下游预算被对齐了:每个 suite 都是 20,000 步、batch 32、同一份机器人示教、同一套评测协议。但总训练预算是不同的——游戏臂在微调之前多做了 12,400 步、每步 batch 128 的预训练,合计 1,587,200 次样本呈现。作者的措辞很克制:「这个比较包含额外的优化,并没有把游戏数据、两个目标项、以及训练随机性的效应分离开。」

这句话翻译成工程语言就是:+4.65 里有多少来自「多训了 158 万次样本」,论文没有拆。缺的那个对照很明确——同样是这批算力,喂机器人数据继续预训练,或者干脆从一个随机初始化的同架构模型出发训同样步数,结果会是多少。没有这个对照,「游戏数据有价值」就只能算一个有希望的观察,不能算已证实的因果。

论文自己划的三条边界

  • 只在仿真里验证:下游是 LIBERO 的四个 suite,机械臂是仿真里的,没有一次真机 rollout。
  • 只有一次训练:每个 suite 每个初始化只训了一个模型,50 局评测是同一个策略的重复 rollout,不是独立的训练重复,所以论文明确不做显著性检验,也不做等价性声明。
  • 只有一个模型、一个基准、一种切分:InternVLA-A1.5 一个底座,LIBERO 一个基准,游戏数据按 session 在游戏内部切分,不是留出整个游戏做泛化测试。

把这三条摆出来之后,后面的所有数字才有正确的读法:它们描述的是一套特定配置下的完整训练阶段,而不是一个可外推的规律。

02 事件是什么:不是碰撞,是玩家按下的每一个键

这篇论文里的「事件」有精确定义,别按字面猜成游戏引擎的碰撞回调或者交互瞬间。原文写的是:一条游戏录制是事件序列,每个事件 e 是一个三元组,包含类型、物理时间戳和载荷;屏幕载荷是图像,动作载荷是键盘或鼠标输入。也就是说,事件是玩家的原始人机输入流——哪个键在什么时候按下、什么时候松开、鼠标往哪个方向移动了多少、滚轮滚了几格。论文还有一句话把这件事说得更直白:监督信号用的是原始人类事件。

这一点很关键,因为它决定了后面所有的迁移讨论。游戏里没有机器人意义上的「动作」,只有离散的输入事件;作者没有去伪造一个连续动作空间,而是换了个问法:这些事件流能不能当作「预测下一个交互」的监督信号。

一条样本 = 一秒历史 + 一秒未来

每条训练样本由一个屏幕锚点 t 展开:历史 H 是锚点之前最多一秒的事件与画面,事件目标是 (t, t+1 秒] 区间里玩家真正做出的键鼠 token,视频目标是从 t 起五个时间点上的画面。锚点按 250 毫秒的节奏铺,不够的地方再用回补策略补齐。

论文给了整批样本的统计画像,这组数字比总时长有用得多:

  • 历史事件数的中位数是 32 个,其中 17 个是屏幕帧;
  • 历史时长中位数 968.32 毫秒,离一秒上限很近;
  • 有效 token 数中位数 1,726,训练集 1,723,最大值 4,686,低于 8,192 的位置上限。

也就是说,一条样本塞进上下文的是「半秒到一秒的真实操作 + 十几帧画面」,长度是可控的,不需要 truncation 技巧。

事件怎么变成 token

游戏分支把事件序列化成 token,词表被扩到 250,416 行,连续动作目标被直接关掉——游戏阶段根本不训练动作头。序列化的细节在附录里:每个带时间的事件后面跟三位数字 token,取值是时间戳除以 10 毫秒后对 1000 取模。换句话说,时间被量化到 10 毫秒一格,一个 10 秒的循环内可以无歧义还原。

事件目标用的是一个标准的下一 token 预测损失,只是归约方式被特意设计成先样本内平均、再跨样本平均:

LNEP=−1B∑b=1B×1∣Tb∣∑j∈Tblog⁡pθ(ybj∣Htb,yb,<j) \mathcal{L}_{\mathrm{NEP}} = -\frac{1}{B}\sum_{b=1}^{B} \times \frac{1}{|T_b|}\sum_{j\in T_b}\log p_\theta(y_{bj}\mid H_{t_b}, y_{b,<j}) LNEP​=−B1​b=1∑B​×∣Tb​∣1​j∈Tb​∑​logpθ​(ybj​∣Htb​​,yb,<j​)

其中 B 是 batch,T 是第 b 条样本的目标 token 集合。这样处理的后果是每个样本权重相同,不会因为某条样本目标特别多就主导梯度。作者在附录里还对比了另一种归约——按 token 类别做加权平均——并指出两种归约回答的是不同问题,不能混着解释。

为什么必须挡住「未来动作」

这是全文我最愿意给它鼓掌的一处工程细节。训练时用的是 teacher forcing:目标动作 token 会作为前缀喂进模型。如果前瞻查询能注意到这些 token,那么「预测未来画面」就变成了抄答案——模型看见玩家按了开火键,自然知道下一秒屏幕会闪光,视觉监督就退化成了一条恒等映射。

作者的处理不是加模块,而是加一个注意力掩码:50 个可学习的前瞻查询,对每一个目标动作位置的注意力被屏蔽;同时这些查询的位置索引被锚定在目标后缀之前。于是前瞻特征只能从历史里长出来,事件头和前瞻路径各自负责一件事——前者学因果动作序列,后者学「只看历史时,未来画面应该怎么变」。

图 1
图 1|三个阶段串成一条路线:左边是玩家的一秒历史与键鼠事件,中间是事件头与前瞻查询共享同一个主干,右边是权重搬回机器人策略后每 0.4 秒重规划一次。

03 前瞻预测什么:冻结视频模型给出的未来潜变量

前瞻预测的不是像素,是未来视频的潜变量。这句话决定了整个监督信号的性质:模型不需要画出一帧游戏画面,它需要把历史压成一个条件向量,让一个已经会做视频生成的大模型相信这个条件能解释未来。

五十个查询加两个时间切片

五帧画面先过冻结的 Wan VAE,得到两个时间切片,每片 48×2×14×14 的潜变量;当前帧被单独编码成一片干净的条件潜变量 z_c,未来那一半 z_f 加上高斯噪声。冻结的去噪器看到的输入是两者的拼接:

e~σ=[ zc, (1−σ)zf+σϵ ],cθ=PθFθ(Ht) \tilde{e}_\sigma = [\,z_c,\ (1-\sigma)z_f + \sigma\epsilon\,], \qquad c_\theta = P_\theta F_\theta(H_t) e~σ​=[zc​, (1−σ)zf​+σϵ],cθ​=Pθ​Fθ​(Ht​)

条件片段的时间步设为零,未来片段用采样出来的时间步。条件向量 c 由前瞻专家 F 和投影 P 从历史算出来,只有它能携带梯度。这里的设计意图很清楚:让冻结的生成模型当考官,让可训练的前瞻路径当考生,考生交的答卷是一个向量,不是一个视频。

损失只算未来那一半

Lvideo=E[∥M⊙(vω(e~σ,cθ,σ)−v⋆)∥22Nz],v⋆=[0, ϵ−zf] \mathcal{L}_{\mathrm{video}} = \mathrm{E}\left[\frac{\Vert M\odot(v_\omega(\tilde{e}_\sigma,c_\theta,\sigma)-v^{\star})\Vert_2^2}{N_z}\right], \quad v^{\star} = [0,\ \epsilon - z_f] Lvideo​=E[Nz​∥M⊙(vω​(e~σ​,cθ​,σ)−v⋆)∥22​​],v⋆=[0, ϵ−zf​]

M 是把条件切片挖掉的掩码,v 是冻结去噪器的输出,v* 是流匹配的目标,N_z 是全部潜变量元素数——注意它包含了被掩掉的条件切片。因为两个切片大小相同,分母里有一半是白算的,所以这个式子实际等于未来切片均方误差的一半。作者特意点明这一点,因为「损失系数是 1」并不等于「两项贡献相等」,数量级的错觉经常在这里发生。

梯度怎么从冻结模型里穿过去

VAE 和去噪器的权重全部冻结,但条件向量 c 的梯度会穿过冻结的去噪器回传到前瞻查询、投影、多模态主干和视觉编码器。这是整条路线里最像「蒸馏」的一环:老师不动,学生学会把一秒的历史编码成一个能预测未来的表示。游戏阶段的总损失就是两项相加,系数都是 1。

站在读者角度,这一节有三件事值得记住:

  • 监督发生在潜空间:模型不学画图,只学「把历史压成一个能解释未来的条件向量」;
  • 老师是冻结的通用视频模型 Wan2.2 TI2V-5B,不是机器人视频模型,所以它奖励的是「画面可预测」,不是「任务有进展」;
  • 损失的分母包含了被掩掉的条件切片,读数字时要记得它实际是未来切片均方误差的一半。

这三条合起来解释了为什么后面的迁移可以完全不碰动作接口——它迁移的是表征,不是控制。

04 从 2,264 万条事件到 207 万个训练锚点

数据这一节值得单独讲,因为它是全文唯一可以照着复现的部分,也是最容易被「223 小时」这种总量数字掩盖的部分。

语料是从 D2E 的人类录制里选出的子集:20 个游戏、394 段录制、22,646,179 条屏幕与键鼠原始事件。两个时长要分开看——按每段录制的时间戳跨度相加是 223.36 小时,按索引出来的活跃区间相加是 197.85 小时,后者才是真正有交互的时长。游戏类型覆盖射击、驾驶、建造、生存,锚点占比的前几名是:

  • Apex Legends:234,160 个训练锚点,占全部锚点的 10.8%,战术射击;
  • Euro Truck Simulator 2:174,104 个,7.8%,第一人称驾驶舱视角;
  • Stardew Valley:139,625 个,6.6%,像素风农场经营;
  • Cyberpunk 2077:125,783 个,5.8%,写实开放世界;
  • Raft:88,598 个,5.2%,海上生存建造。

再往下还有 Dinkum、Medieval Dynasty、Satisfactory、Minecraft 1.21.8、Grand Theft Auto V、Counter-Strike 2、PUBG 等,完整 20 个游戏的逐项统计在论文表 5。这个组合的意义在于画面统计特性被拉得非常开:写实渲染、体素方块、像素手绘共处一个语料,作者显然是有意用多样性替代域对齐。

项目数值
游戏 / 录制段20 / 394
原始事件行22,646,179
录制跨度 / 活跃时长223.36 小时 / 197.85 小时
通过校验的稠密样本11,118,648
250 毫秒选锚后2,356,278
覆盖率回补新增 3,038 个锚点,覆盖 6,681 个动作
最终训练 / 验证锚点2,072,084 / 287,232

覆盖保全:99.94% 到 100% 的那 3,038 个锚点

筛选是三级漏斗。1,189 万个屏幕候选里,先因为活动性或因果边界不合格砍掉 93,641 个;再有 677,326 个(5.74%)因为目标区间里一个键鼠事件都没有被判定为空目标而删除;最后 1,826 个因为取不到帧被剔除,剩 11,118,648 个合法稠密样本。

真正有意思的是第二步。按 250 毫秒的节奏贪心选锚,会大量重复同一个起点,于是 1,073.9 万个可覆盖动作里,有 6,681 个动作一次都没落进任何目标窗口。作者加了一趟回补:为这 6,681 个动作各找一个合法锚点,实际补了 3,038 个锚点,把覆盖率从 99.94% 顶到 100%。这个动作很小,但意义不小——它说明作者在意的是「动作覆盖率」而不是「样本数」,这两件事在长尾输入流里经常是矛盾的。

图 2
图 2|从 1,189 万个屏幕候选筛到 207 万个训练锚点:中间两段是丢弃原因,右下是按会话分组后训练与验证的划分。

按会话切分,而不是按游戏留出

名义上是 90/10 切分,实际操作是按来源 session 分组、在游戏内分层:349 段录制、171 个 session 组进训练,45 段、23 组进验证。窗口之间有重叠,所以重叠窗口必须留在同一侧;论文检查了 session、录制、媒体文件、时间戳四类重叠,确认切分干净。

但这仍然是一个 within-game 切分。也就是说,验证集里的游戏在训练集里都出现过,只是场次不同。它测的是同一批游戏内的泛化,不是「换个没见过的游戏还能不能学」。这一点在讨论迁移能力时经常被读者自动补全成后者,需要主动纠正。

训练配置:12,400 步与 26.8 亿可训练参数

预训练用 12,400 步的滚动检查点,全局 batch 是 8 卡 × 1 样本 × 16 次累积 = 128,AdamW、学习率 2×10⁻⁵、200 步线性预热后恒定,种子 42,BF16 加 ZeRO-2,可训练参数 2,682,148,480。12,400 步对应 1,587,200 次样本呈现,只覆盖名义 epoch 的 76.6%——连一轮都没跑完。

图 3
图 3|十个游戏各取一条训练样本的五帧未来:画面风格从写实射击到像素农场都有,右侧数字是历史事件数与目标事件数。

下面这段伪代码把整条样本构建流程压成十几行,数字全部取自附录 A.1,只用于说明顺序,不代表可运行的实现:

# 仅示意:一段游戏录制如何变成训练锚点(数字取自论文附录 A.1)
candidates = screens(recording)                    # 11,891,441 个屏幕候选
candidates = drop(candidates, bad_activity_or_causal_boundary)  # -93,641
candidates = drop(candidates, empty_event_target)               # -677,326
candidates = drop(candidates, frame_retrieval_failed)           # -1,826
dense = candidates                                 # 11,118,648 条合法稠密样本
anchors = greedy_every_250ms(dense)                # 2,356,278 个锚点
for a in actions_not_covered(dense):               # 6,681 个漏掉的动作
    anchors.add(any_legal_anchor_covering(a))      # 补入 3,038 个,覆盖率 99.94% -> 100%
split_by_session(anchors)                          # 2,072,084 训练 / 287,232 验证

05 迁移:只搬权重,不搬动作

这是全文最需要读者停一下的地方。很多人看到「游戏预训练」四个字,默认的想象是:先把键鼠映射成机械臂动作,再用游戏数据训练一个能执行动作的策略。这篇论文完全不是这么做的。

Bridge 做了什么,没做什么

论文把迁移写成一个两段式:

θG=Pretrain(θ0,DG),θR=Finetune(Bridge(θG),DR) \theta_G = \mathrm{Pretrain}(\theta_0, D_G),\qquad \theta_R = \mathrm{Finetune}(\mathrm{Bridge}(\theta_G), D_R) θG​=Pretrain(θ0​,DG​),θR​=Finetune(Bridge(θG​),DR​)

Bridge 是一个纯工程函数:从扩展过的种子模型重建原生架构、合并 ZeRO-2 检查点、把训练过的张量覆盖回去、保留冻结的种子组件,同时保留扩展词表、前瞻查询、投影和时间元数据,最后把前向模式设成机器人。它不学习从键盘鼠标到电机动作的额外映射,论文原话是:它不学习这样的映射。

所以「迁移」的真实含义是:游戏阶段改变了视觉编码器、多模态主干、专家、前瞻查询和投影的权重,然后这套权重被当作机器人微调的初始化。键鼠事件从头到尾没有变成过机器人动作。整条迁移链拆开只有四步:

  1. 从扩展词表的种子模型重建原生机器人架构;
  2. 合并 ZeRO-2 检查点,把训练过的张量覆盖回去;
  3. 保留扩展词表、前瞻查询、投影与时间元数据,冻结组件原样不动;
  4. 把前向模式切到机器人,交给下游微调。

没有第五步,尤其没有「把键鼠翻译成动作」这一步。第 12,400 步的检查点被原样搬过去,下游比较用的也是第 20,000 步,论文特意说明这不是从一串检查点里挑最好看的那个。

下游微调:四个 suite、两万步

每个 suite 单独训一个策略,20,000 步,两张卡 × 16 样本 = 32 的 batch,学习率从 5×10⁻⁵ 余弦退到 5×10⁻⁶,400 步有效预热,种子 42,目标函数是 10 倍动作损失加语言损失加视频损失。评测用种子 7,10 个任务 × 50 局,10 步 settling,图像缩到 224。

机器人数据这边是 1,693 条 episode、273,465 帧,两路 256×256 相机,20 Hz 时间戳,从 LeRobot v2.1 转到 v3.0,各 suite 的归一化统计分开存。

冻结什么、训练什么

规格游戏预训练阶段机器人微调阶段
视觉监督5 帧 / 1 秒5 帧 / 2.5 秒
动作目标序列化键鼠事件 token50 步连续动作(20 Hz,到 2.45 秒)
执行方式无每 8 步重规划,即 0.4 秒
更新步数12,400,batch 128每 suite 20,000,batch 32
冻结模块Wan VAE 与 DiT 去噪器同样的 VAE 与去噪器
可训练模块视觉编码器、主干、专家、前瞻查询与投影再加动作投影与前瞻 token

这张表里藏着一个反差:很多人以为「冻结主干、只调头部」是省算力的通行做法,但这篇论文的做法相反——它冻结的是老师(视频模型),学生(整个 VLM 加专家)是全量微调的。所以它既不是线性探测,也不是特征对齐,更不是只调最后几层:游戏阶段训练了 26.8 亿参数,机器人阶段继续训同一批模块。

06 四个 suite 的结果与四十个任务的裂缝

Spatial +9.2、Object +6.8、Goal +0.2、Long +2.4

SuiteBase游戏初始化差值(局)差值(百分点)
Spatial417(83.4%)463(92.6%)+46+9.2
Object460(92.0%)494(98.8%)+34+6.8
Goal442(88.4%)443(88.6%)+1+0.2
Long399(79.8%)411(82.2%)+12+2.4
合计 / 2,0001,718(85.90%)1,811(90.55%)+93+4.65

顺带交代这四个 suite 各自在考什么,从附录里的原始任务名能直接读出来:Spatial 是「把碗从抽屉里、柜子上、炉灶上拿下来放到盘子里」,考的是同一物体在不同空间位置与视角下的抓取;Object 是「把某个物体放进篮子」,考的是物体类别与外观;Goal 是「打开抽屉、把碗放上去、把瓶子放上架子」,考的是目标条件满足;Long 是「把两个物体分别放到两个位置」,考的是多步顺序。四档的难点不同,涨跌自然也不同。

读完这四行,第一反应应该是「不均衡」。Spatial 和 Object 两个 suite 合起来贡献了 80 局,占全部 93 局净增的 86%;Goal 只多赢一局,Long 多赢 12 局。而 Spatial 恰恰是 LIBERO 里最依赖空间定位与视角变化的一档,Object 最依赖物体外观与类别区分——这两档提升最大,和「游戏画面提供了大量视角变化与物体外观多样性」这个直觉是吻合的,但论文没有做机制验证,所以我只能说吻合,不能说证明。

图 4
图 4|四个 suite 的成功率与差值:Spatial 与 Object 扛起了几乎全部净增益,Goal 只差一局。

两个极端任务:+32 与 −36

四十个任务的逐项差值才是最该看的东西:24 个任务涨、10 个跌、6 个持平。Long 里有两个极端——「把两个马克杯分别放到两个盘子上」从 14/50 涨到 30/50,+32 个百分点;「把字母汤和番茄酱都放进篮子」从 42/50 掉到 24/50,−36 个百分点。Goal 里「打开上层抽屉并把碗放进去」从 41/50 掉到 33/50,−16。

图 5
图 5|四十个任务的逐项差值:绿色是涨、红色是跌,同一行里能同时出现 +32 与 −20。

论文对这类反差的态度很干脆:这些对比定位了差异存在,但没有识别出机制。作者还专门提醒,不能把 Long 那 +2.4 读成「长程任务整体变好了」——同一个 suite 里既有 +32 也有 −36。

先做一次量级校准,这部分是我的粗算,不是论文的结论:单任务 50 局,成功率的最小刻度就是 2 个百分点,所以 +2、−4 这种差异只对应一两个 episode;单任务在成功率 0.85 附近的二项标准误约 5 个百分点。把四个 suite 池化成 2,000 局,标准误降到 1.5 个百分点左右,+4.65 大约是三个标准误的量级——但两臂共用同一批任务和初始状态,这不是独立样本,所以只能说「不像噪声」,不能说「显著」。这也正是论文拒绝做显著性声明的原因,而 Goal 那 +0.2 连一个刻度都不到。

对做工程的人来说,这十项退步比那 93 局净增更值得研究。一个合理的猜测是:游戏画面里的人手、工具、载具提供了大量「物体被拿起后视角如何变化」的先验,这类先验对短程抓放有帮助;但对「多个物体按顺序放进容器」这种需要严格任务分解与顺序保持的长程任务,多出来的视觉先验可能反而干扰了原有的语言-动作对齐。这只是猜测,论文没有提供证据,我把它标在这里是为了说明「哪些问题还没答案」,不是替作者下结论。

和谁比、没和谁比

严格说,这篇论文只有一个 baseline:同一个 base 初始化、同一套下游配方直接微调。论文没有跑「只加同样算力的机器人数据继续预训练」这个对照,没有跑「随机初始化加同样算力」,也没有把 VPT、SIMA、D2E 这些游戏预训练方法拉进来做同协议对比。D2E 在这里是数据来源和方向来源,不是被击败的对手。

这也是为什么论文的结论措辞停在「支持这个完整游戏预训练阶段在所评估设置下的实用价值」,而不是「游戏预训练优于机器人数据预训练」。这两句话的差别,正好就是那个缺失对照的差别。

07 游戏到真机的鸿沟

这一节是我写这篇文章的主要原因。读者真正关心的是「游戏里学的东西能不能迁到真机」,而这篇论文恰好在三个接口上都做了取舍,值得逐条摊开。

动作接口:键鼠从来没有进过机器人策略

游戏动作是离散事件流:按下、松开、按住状态、鼠标位移、滚轮。机器人动作是 20 Hz 的连续向量,一次预测 50 步。这两者之间没有任何可对齐的数值结构——键鼠的 D 键和机械臂的第三个关节角之间不存在物理对应。

作者的解法是不对齐,直接绕开:游戏阶段把连续动作目标关掉,只学事件预测和视觉前瞻;迁移时只搬权重。这样做的代价是,游戏数据里关于「动作后果」的信息只能通过视觉前瞻这条间接通道进入模型,而「什么样的动作序列能完成任务」这件事,从来没有被显式教过。

如果要真的做映射,至少有三条路,论文一条都没走:

  1. 逆动力学标注:用相邻两帧反推「什么动作导致了这帧变化」,VPT 走的就是这条路,论文在相关工作里明确把它列为另一条路线;
  2. 动作重定向:把键鼠事件手工映射到某个本体的关节空间,需要为每个游戏写规则;
  3. 跨具身学习:在同一序列模型里混合多种本体的动作,Gato 那一类做法。

三条路的共同问题是都会引入新的假设,而且假设错了没人能发现。作者选择不引入,换来的是「这条路线不需要跨具身假设」的干净性。

收益也很明确:这条路不依赖任何动作重定向或跨具身映射的假设,因此不会被「键鼠到关节角」这个本身就没有标准答案的问题卡住。这是我读下来认为最值得借鉴的设计取舍。

时间尺度:一秒对 2.5 秒

第二个鸿沟是时间。游戏阶段五帧覆盖 1 秒,偏移是 0、0.25、0.5、0.75、1.00 秒。机器人阶段同样五帧,但按 50 步动作里取第 0、12、25、37、50 步,在 20 Hz 下变成 0、0.60、1.25、1.85、2.50 秒。同一套五帧规则,物理时长差了 2.5 倍。

更麻烦的是执行节奏:50 步动作预测到 2.45 秒,但只执行前 8 步,也就是 0.4 秒,然后重新观测、重新规划。所以模型在游戏里学的是「一秒内画面怎么变」,到机器人上要预测的是「2.5 秒内画面怎么变」,而真正执行时只用到前 0.4 秒。三者对不上,意味着前瞻模块在游戏阶段练出来的「一秒尺度直觉」,到机器人阶段有一大半落在它没练过的时长区间里。

图 6
图 6|两段监督的物理时长并不相同:游戏阶段五帧覆盖一秒,机器人阶段五帧覆盖 2.5 秒,而动作只执行前 0.4 秒。

论文对这处不一致的处理是诚实的:它把帧数、预测步长、执行间隔明确列成三个不同的规格维度,并说明初始化实验固定了下游 horizon,因此没有估计改变 horizon 带来的影响。换句话说,这 2.5 倍是论文自己标出来的一个未检验项,不是被验证过的设计。

渲染与物理:论文没有做定量分析

第三个鸿沟是最常被问、也最容易被糊弄过去的:游戏是渲染出来的,机器人是拍出来的,光照、材质、噪声、相机内参全都不一样;游戏物理是引擎近似的,机器人接触是真实摩擦与形变。

这篇论文对此没有做任何定量分析。它没有测渲染风格差异,没有测物理参数差异,也没有做「同一任务在游戏里和在仿真里」的配对实验。它能提供的最强证据,就是「用了同一套视觉编码器 + 同一个冻结视频模型,在下游看到了一致的平均提升」。这只能说明这套表征在这个特定组合下没被域差异彻底打断,不能说明域差异不存在或者被解决了。

一个旁证是语料本身:Apex Legends 是写实射击,Minecraft 是体素方块,Stardew Valley 是像素农场,Euro Truck Simulator 2 是驾驶舱视角。这些画面的统计特性差异极大,作者选择用「20 个游戏混合」来覆盖多样性,而不是去对齐某一个目标域。这个选择在数据层面是合理的,但它把「域差异到底有多大」这个问题留空了。

视角与相机:第一人称屏幕不是固定双相机

还有一层差异比渲染风格更几何。游戏画面是玩家视角的单目渲染,相机跟着人走,物体在画面里的成像尺寸取决于玩家离它多远;机器人这边是两路固定安装的 256×256 相机,20 Hz 固定节奏,物体的大小取决于它在工作空间里的位置。同一个「把碗拿起来」的过程,在前者里是视角连续移动,在后者里是固定机位下的位姿变化。

论文没有对这一项做分析,也没有加视角增强。它用的补偿手段是数据侧的多样性——20 个游戏、20 种相机行为——指望视觉编码器自己吸收。这个选择能不能成,取决于下游任务对相机几何有多敏感,而论文没有做这层拆解。

连仿真里都没跨过去的部分

最该警惕的是这一条:Goal 只多赢一局,十项任务退步,最差的一项掉了 36 个百分点。这些都不是真机才出现的问题,是在 LIBERO 仿真里就已经出现的。作者对机制的解释停留在「定位了差异,但没有识别原因」。

所以对「游戏到真机」这个问题的诚实回答是:这篇论文证明了在有大量仿真配对数据的条件下,游戏预训练可以带来平均意义上的提升;它没有回答真机上会怎样,也没有回答为什么有些任务会退步。任何把它读成「游戏数据可以替代真机数据」的解读,都超出了论文的证据范围。

08 附录里最值得读的一节:loss 降到 0.249,结构崩到 0

如果说正文是「这条路线跑通了」,那附录 E 就是「这条路线里有一个坑,而且这个坑很普遍」。这一节做的是独立的游戏动作诊断,作者明确说明这些检查点不参与机器人预训练,所以它不是消融实验,而是一次关于「指标能不能信」的研究。

四个臂,四种失败方式

模型teacher-forced loss结构完整度键盘 F1鼠标事件数
H-Base无99.5%.49423,427
T-Real.249340%.00171,735
T-Unknown.265070%.00000
T-Neutral.7701553.7%.357243

T-Real 把真实的相对时间喂进去,teacher-forced loss 在三臂里最低,只有 0.249;但它的结构完整度是 0——859 个机会里没有一次把「按住状态记录」按正确顺序生成出来。T-Unknown 把所有时间标识替换成未知,loss 略高,完整度同样是 0,而且一个鼠标事件都没生成。T-Neutral 保留了时间通道但打乱了时间数字的嵌入,loss 最高,反而保住了 53.7% 的结构完整度,只是鼠标事件从 3,427 掉到 43。

图 7
图 7|三张并排的柱子说明同一件事:teacher-forced loss 最低的那一臂,生成出来的事件结构完整度是零。

这四行放在一起说明一件事:teacher-forced loss 衡量的是「在给定参考历史时猜对下一个 token」,而结构完整度、状态 F1、位移相关性衡量的是「自由生成出来的事件流长什么样」。前者低不代表后者好,两者可以完全脱钩。

把 LoRA 和时间残差拆开

作者的第二步是在同一个训练好的 T-Real 检查点上做干预:把时间残差关掉、把 LoRA 关掉、或者两个都关。在一个 60 秒前缀上,全部关掉能精确复现 H-Base 的 759 个动作事件,完整度 100%;只留 LoRA 也是 100%,事件数变 627;只留时间残差掉到 52%;两个都开,完整度归零。

图 8
图 8|把同一个检查点里的 LoRA 与时间残差分开开关:只留 LoRA 结构完好,两个都开则完整度归零。

门控扫描给了同一结论的另一个角度:把门控缩放到 0.5,两个方向的位移相关性都比零门控时更高,事件数还多了 24.1%;但缩放到 1.0,结构直接崩。所以门控不是一个「调大调小都单调变好」的旋钮,它同时改变运动一致性和输出密度,选它必须多指标一起看。

删掉时间戳反而 98.39%

最后一个对照更反直觉。No-Time 变体把每个事件后面的三位时间数字全部删掉,只保留事件顺序、按住状态和位移数字,结果结构完整度 98.39%,看起来几乎完美;但键盘 F1 从 .4942 掉到 .4633,鼠标 F1 从 .2121 掉到 .1690,平均位移相关性从 .754 掉到 .698,而鼠标事件数从 3,427 涨到 4,465,多了 30.3%。

图 9
图 9|删掉时间戳之后:语法完整度仍有 98.39%,但位移相关性与状态 F1 都下降,鼠标事件数反而多了三成。

论文在附录 H 里给了这件事一个形式化解释:如果两条录制在删掉时间戳之后完全一样,只是某个动作的时间差了 d,那么任何确定性重建都必然在其中一条上产生至少 d/2 的误差。也就是说,语法层面的完整和物理时间层面的还原是两件事,前者可以很高,后者可以同时很差。

这一节对任何做事件序列、动作 token 化、或者用 token loss 判断模型好坏的人都有直接价值:指标选错,你会得到一个 loss 漂亮但生成结果不可用的模型,而且看不出问题出在哪。

09 局限与失效场景

算力没对齐,这是最硬的一条

前面已经说过,但值得再强调一次:两臂下游预算相同、总预算不同。游戏臂多出的 12,400 步 × batch 128 是实打实的优化量,论文没有用同算力的对照组去抵消它。这意味着 +4.65 里混着「多训了」的效应,而这个效应在 VLA 微调里通常不是零。

统计上只有一次训练

每个 suite 每个初始化只训一次,评测的 50 局是同一个策略的重复采样。论文因此明确不做显著性声明,也提醒 Goal 那一局差异只能当作「小的观测变化」。如果读者要在自己的项目里复现这个结论,至少需要多种子。

数据规模有幻觉

223 小时、2,264 万条事件听起来很大,但落到可训练的样本上只有 2,072,084 个一秒锚点,而且这 12,400 步只覆盖了名义 epoch 的 76.6%——连一轮都没走完。换句话说,这条路线验证的是「在远未收敛的预训练预算下,游戏数据已经能带来可测的初始化差异」,它没有回答「如果训满三轮会怎样」。这两件事对工程决策的含义完全不同:前者说明方向可行,后者才决定值不值得投算力。

只在仿真、只在一个模型、只在一个基准

LIBERO 是桌面级抓放,相机固定、纹理简单、任务短程。换到移动操作、双臂、真实厨房,这套结论没有任何支撑。底座只有 InternVLA-A1.5 一个,换一个 VLA 架构,前瞻查询的接口、动作头的形式、视频损失的位置都要重做。

会失效的输入

从论文给的样本图上能直接看到几类风险输入:

  • 全黑或加载中的画面:Euro Truck Simulator 2 那条样本的第二帧几乎全黑,这种帧作为视觉目标会贡献纯噪声;
  • UI 密集的画面:Counter-Strike 2 与 Rainbow Six 的 HUD 占据大量像素,模型很容易把「界面变化」当成「世界变化」;
  • 鼠标事件稀疏的场景:论文附录给的 Brotato 例子里,五秒窗口参考 1,535 个鼠标事件,模型只生成 55 个,位移相关性却高达 .9932——相关性高、密度差 28 倍,说明指标本身也会骗人;
  • 长尾动作:覆盖率回补只补了 6,681 个动作里的 3,038 个锚点,虽然把覆盖率顶到 100%,但每个长尾动作平均只出现一次多一点,学不到稳定模式。

10 落地判断:谁该试,谁别碰

三种值得试的情况

  • 手里已经有一个可微调的 VLA 底座,并且有一批非机器人的交互日志(游戏、VR、遥操作仿真、网页操作都算),想把它们变成预训练信号;
  • 下游任务是桌面级、固定相机、短程抓放,和 LIBERO 的形态接近;
  • 有闲置算力能做一轮一万步级别的预训练实验,并且愿意为它配一个同算力对照组。

三种别碰的情况

  • 需要真机高可靠性的产品:论文零真机,Goal 只涨一局,十项任务退步,这些风险在产品里不可接受;
  • 期待「游戏动作直接变成机器人动作」的:这篇论文明确没有做这件事,键鼠到电机的映射仍然是空白;
  • 想用游戏泛化证明「换个没见过的游戏也行」的:切分是 within-game,没有 held-out game 实验。

一条最小验证路线

  1. 同算力对照:把游戏阶段换成「同样步数、同样 batch 的机器人数据继续预训练」,看 4.65 还剩几个点;
  2. 单目标消融:只开事件损失、只开视频损失,确认两项各自的贡献,而不是只看合起来的效果;
  3. 任务分层:先在 Spatial 和 Object 上验证,Goal 与 Long 单独看退步项,不要用 suite 平均值掩盖;
  4. 小样本真机:20 到 50 局,重点盯长程任务是否退步,而不是只看平均值。

这四步里,第一步的性价比最高——它决定了后面三步值不值得做。

11 术语速查表

术语论文里的含义
事件(event)带类型、物理时间戳与载荷的玩家输入,载荷为屏幕图像或键鼠输入
锚点(anchor)一条样本的起点屏幕帧,按 250 毫秒节奏铺开
覆盖保全采样先稀疏选锚、再为未覆盖动作回补锚点的两趟策略
前瞻查询(foresight query)50 个可学习查询,只从历史取信息,用于生成未来视频的条件向量
冻结视频教师不更新的 Wan2.2 TI2V-5B,其 VAE 与 DiT 只提供监督信号
Bridge把游戏阶段检查点整理成原生机器人前向通路的工程函数,不学动作映射
teacher-forced loss给定参考历史时的下一 token 预测损失,不等价于自由生成质量
结构完整度按住状态记录按正确顺序出现的比例,衡量输出语法是否成立
门控(gate)时间残差通道的缩放系数,同时影响运动一致性与事件密度
LIBERO下游仿真基准,四个 suite 各 10 任务、每任务 50 局
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐