TL;DR太长不看
Why I did this为什么做这个
VLAs are usually described as “a VLM plus an action head”. The VLM sees the cameras and reads the instruction; the head turns its hidden states into a chunk of motor commands. That picture hides the interesting question: what exactly crosses the boundary between the two? Is there a compact “action space” inside the VLM that the head reads, like a bottleneck? Is it geometric, like “the cup is 12 cm to the left”? Or is it something more like a motor plan?
I started this as a quick probing exercise and it slowly turned into seven phases of experiments, a few hundred figures and a lot of failed hypotheses. I do not think it is a paper: the setting is narrow, everything is open-loop, and the most useful outcome is a list of things that do not work. But I learned a lot from it, and the story is fun, so here it is. Internally I called the object I was hunting “A-Space” (the action space inside the model).
VLA 通常被描述成“VLM 加一个动作头”:VLM 看相机画面、读指令,动作头把它的隐藏状态变成一段电机指令。这个说法掩盖了一个很有意思的问题:两者之间到底传递了什么?VLM 里面是不是有一个紧凑的“动作空间”,像瓶颈一样被动作头读取?它是几何性的吗,比如“杯子在左边 12 厘米”?还是更像一个运动计划?
一开始我只是想做个简单的探针实验,结果慢慢变成了七个阶段的实验、几百张图和一大堆被推翻的假设。我不觉得这能成为一篇论文:设定很窄,所有结果都是开环的,而且最有用的产出是一份“什么不行”的清单。但我从中学到了很多,过程也挺好玩,所以写下来。我把要找的东西叫做 “A-Space”(模型内部的动作空间)。
Setup: one backbone, three heads实验设置:一个主干,三种动作头
All three policies were fine-tuned on the RoboTwin bimanual simulation benchmark and share the same backbone: Qwen3-VL-4B, 36 decoder layers, hidden size 2560. Only the action head differs.
三个策略都在 RoboTwin 双臂仿真基准上微调,共享同一个主干:Qwen3-VL-4B,36 层 decoder,隐藏维度 2560。唯一的区别是动作头。
| Model模型 | How the head reads the VLM动作头如何读取 VLM | Decoding解码方式 |
|---|---|---|
| OFT | 32 action-placeholder tokens appended to the VLM sequence, then an MLP head在 VLM 序列末尾加 32 个动作占位 token,再接一个 MLP 头 | one forward pass一次前向 |
| GR00T | 16-block DiT (d = 768); 8 blocks cross-attend to the last VLM layer16 个 block 的 DiT(d = 768),其中 8 个 block 对 VLM 最后一层做 cross-attention | 4 Euler flow-matching steps4 步 Euler flow matching |
| PI | 28-layer action expert (d = 1024) attending to a projection of the last VLM layer28 层动作专家(d = 1024),读取 VLM 最后一层的投影 | 4 Euler flow-matching steps4 步 Euler flow matching |
The dataset is 10 tasks × 30 trajectories × 10 timesteps = 3000 samples, each with three cameras (head, left wrist, right wrist) and a language instruction, and no proprioception. Splits are trajectory-disjoint, plus a held-out-task split. I hooked every layer, every action token, every cross-attention update (called ΔZ below) and every flow step, checked that all three models are deterministic under a fixed seed, and built a small attention debugger to look at things by eye.
Three tools carry the whole story:
- Linear probes ask: can a variable be read out of this hidden state?
- Interchange interventions ask: if I take the hidden state from a donor sample B and paste it into a receiver sample A, does A's action move toward B's? I measure this with the causal agreement ratio, CAR = ⟨apatched − aA, aB − aA⟩ / ‖aB − aA‖². CAR = 1 means the action fully became the donor's; 0 means nothing happened.
- Causal subspace search asks: what is the smallest k-dimensional subspace whose patch alone reproduces the full effect? I optimize an orthonormal basis U directly for CAR, with a rule that the edited states must stay on the data manifold (median out-of-distribution ratio ≤ 1.10), validation/test splits and multiple seeds.
Most claims were preregistered as hypothesis tests with Holm correction, so that I could not quietly drop the ones that failed. Many did.
数据是 10 个任务 × 30 条轨迹 × 10 个时间步 = 3000 个样本,每个样本有三个相机(头部、左腕、右腕)和一条语言指令,没有本体感知输入。数据划分按轨迹隔离,另外还有一个留出任务的划分。我在每一层、每个动作 token、每个 cross-attention 更新(下文称 ΔZ)、每个 flow 步上都挂了 hook,确认三个模型在固定随机种子下是确定性的,还写了一个小的 attention debugger 用来肉眼检查。
整个故事靠三个工具:
- 线性探针:某个变量能不能从这个隐藏状态里读出来?
- 交换干预:把供体样本 B 的隐藏状态贴进受体样本 A,A 的动作会不会向 B 的动作移动?我用因果一致率来衡量:CAR = ⟨apatched − aA, aB − aA⟩ / ‖aB − aA‖²。CAR = 1 表示动作完全变成了供体的,0 表示没有任何影响。
- 因果子空间搜索:最小的 k 维子空间是多少,只替换它就能复现完整效果?我直接针对 CAR 优化一个正交基 U,同时要求编辑后的状态留在数据流形上(OOD 比值中位数 ≤ 1.10),并使用验证/测试划分和多个随机种子。
大部分结论都事先登记成假设检验,并做 Holm 校正,这样我就没法悄悄丢掉失败的那些。失败的有很多。

Act I · What can be read out第一幕 · 能读出什么
The first phase was the classic one: train linear probes on every layer for task identity, current robot state and future motor targets (the end point and displacement of the upcoming action chunk).
第一阶段是经典做法:在每一层上训练线性探针,读出任务身份、当前机器人状态和未来的运动目标(即将执行的动作块的终点和位移)。

- Task identity is trivially decodable (≈ 1.0) from layer 0. That is just the instruction words.
- The current robot state is already in the visual tokens at layer 0 (end-effector position R² ≈ 0.9). The arms are visible in the wrist cameras.
- Future-motor targets build up across depth. For OFT, the chunk-endpoint R² goes from about .61 at the embeddings to .86 around layer 32 and .94 at the head input. The last layer is always the best layer.
- Which arm the instruction refers to peaks in the middle layers (7–19) and then declines. Where the information concentrates is model-specific: in OFT text tokens beat image tokens, in PI image tokens win, GR00T is a tie.
- Each OFT action token on its own already holds almost the whole 32-step chunk. The concatenated final states of the expert heads are the best carriers overall (≈ .985) and transfer much better to a held-out task than the VLM states do (gripper .92–.94 vs .56–.71).
- Changing the flow step barely changes decodability. Remember this; it comes back in Act IV.
- 任务身份从第 0 层就能被读出(≈ 1.0)。这只是因为指令里的单词。
- 当前机器人状态在第 0 层的视觉 token 里就已经存在(末端位置 R² ≈ 0.9),因为腕部相机里能看到手臂。
- 未来运动目标随深度逐渐形成。以 OFT 为例,动作块终点的 R² 从 embedding 层的约 .61,到第 32 层左右的 .86,再到动作头输入处的 .94。最后一层永远是最好的一层。
- 指令中指的是哪只手臂,这个信息在中间层(7–19 层)最强,之后下降。信息集中在哪类 token 上因模型而异:OFT 中文本 token 强于图像 token,PI 中图像 token 更强,GR00T 两者持平。
- OFT 的每一个动作 token 单独拿出来,就几乎包含了整个 32 步动作块。专家头最终状态的拼接是整体上最好的载体(≈ .985),迁移到留出任务时也远好于 VLM 状态(夹爪 .92–.94 对 .56–.71)。
- 切换 flow 步几乎不改变可读性。记住这一点,第四幕还会用到。
Act II · Readable is not used第二幕 · 可读不等于被使用
The obvious next step: take the probe directions for future motion (an 8-dimensional subspace I called Amotor), and check whether the model actually uses them. If I swap only those 8 dimensions from a donor into a receiver, does the receiver's action follow?
Almost not at all. At the head input, patching Amotor gives CAR ≈ 0.008, against 0.002 for a random 8-dimensional subspace. Its complement, i.e. everything the probe ignored, carries nearly all of the effect. Even at OFT's action tokens it only reaches 0.115, and inside the expert heads it is no better than random. Steering along probe directions moves the gripper monotonically, but by at most about 1.5 cm, and at the expert sites it sometimes moves it the wrong way.
下一步很自然:取出未来运动的探针方向(一个 8 维子空间,我叫它 Amotor),检查模型是不是真的使用了它们。如果只把这 8 个维度从供体换到受体,受体的动作会不会跟着变?
几乎完全不会。在动作头输入处,替换 Amotor 的 CAR ≈ 0.008,随机 8 维子空间是 0.002。它的补空间,也就是探针忽略的所有东西,承载了几乎全部效果。即使在 OFT 的动作 token 上也只有 0.115,在专家头内部则和随机没有区别。沿探针方向做 steering,夹爪确实单调移动,但最多只有约 1.5 厘米,而且在专家头的位置上有时还会往反方向走。

The full-state patches tell a cleaner story about where the information flows:
- From layer 6 on, the full VLM state is sufficient (CAR = 1.0). Layer 0 is weak because Qwen3-VL's DeepStack re-injects the receiver's own visual features into later layers.
- In OFT, the image tokens stop mattering between layers 24 and 33: that is where the visual information gets copied into the 32 action tokens.
- OFT's action tokens are strikingly local: swapping token i changes only timestep i of the output (influence 1.52 on the diagonal vs 0.002 off it).
- In the flow heads, the cross-attention updates (ΔZ) act in a distributed, super-additive way across blocks.
- And the first hint of Act IV: replacing ΔZ only at the last flow step transfers .907 (PI) and .513 (GR00T). Replacing it at steps 0–2 transfers ≤ .03.
替换整个状态的结果,更清楚地说明了信息流向哪里:
- 从第 6 层开始,完整的 VLM 状态就是充分的(CAR = 1.0)。第 0 层效果弱,是因为 Qwen3-VL 的 DeepStack 会把受体自己的视觉特征重新注入后面的层。
- 在 OFT 中,图像 token 在第 24 到 33 层之间不再重要:视觉信息就是在这里被复制进 32 个动作 token 的。
- OFT 的动作 token 非常局部:替换第 i 个 token 只改变输出的第 i 个时间步(对角线影响 1.52,非对角线 0.002)。
- 在 flow 头里,cross-attention 更新(ΔZ)跨 block 分布式地起作用,而且是超加性的。
- 还有第四幕的第一个线索:只在最后一个 flow 步替换 ΔZ,能迁移 .907(PI)和 .513(GR00T);在第 0–2 步替换只有 ≤ .03。

Act III · Searching for the causal subspace第三幕 · 直接搜索因果子空间
If probes find the wrong directions, search for the right ones directly. For each site I optimized an orthonormal basis U (k = 1 … 256) so that patching only the U-component of the donor state maximizes CAR on held-out pairs, while keeping the edited state on the data manifold. Then I asked how many directions are needed to recover 90% of the full-state effect (k90).
既然探针找错了方向,那就直接去找对的方向。对每个位置,我优化一个正交基 U(k = 1 … 256),使得只替换供体状态在 U 上的分量时,留出样本对上的 CAR 最大,同时要求编辑后的状态留在数据流形上。然后看需要多少个方向才能恢复完整状态效果的 90%(k90)。

| Site位置 | Result结果 |
|---|---|
| OFT action tokensOFT 动作 token | k₉₀ ≈ 6.1. k = 8: CAR .972 vs PCA .80, probe .083, random .002; complement .02. Seeds agree (span overlap ≥ .95), edits stay on-manifold (OOD 1.02). The only site that passes every criterion.k₉₀ ≈ 6.1。k = 8 时 CAR .972,PCA .80,探针 .083,随机 .002,补空间 .02。不同种子结果一致(张成重叠 ≥ .95),编辑留在流形上(OOD 1.02)。唯一通过所有标准的位置。 |
| Late VLM (head input)VLM 后几层(动作头输入) | k₉₀ ≈ 20 (OFT), 16 (PI), 32 (GR00T). The effect is identified but the coordinates are not: different seeds share only 3–10 directions. PCA-32 reaches .34–.62 where the causal basis reaches .90–.97.k₉₀ ≈ 20(OFT)、16(PI)、32(GR00T)。效果是确定的,但坐标不唯一:不同种子只共享 3–10 个方向。同样 32 维,PCA 只有 .34–.62,因果基有 .90–.97。 |
| Inside the flow headsflow 动作头内部 | No low-dimensional subspace under the on-manifold rule. Without the rule, 4–8 dims “work” but only by pushing states off-manifold. GR00T blocks are cooperative: single-block patches sum to 0.14, all blocks together give 1.0.在流形约束下找不到低维子空间。去掉约束时 4–8 维“有效”,但只是因为把状态推出了流形。GR00T 的 block 之间是协作的:单个 block 的效果加起来只有 0.14,所有 block 一起替换是 1.0。 |
Two controls kept me honest here. First, shuffled donors: if you patch a state from a random other sample, CAR is still about 0.5, because every donor differs from the receiver in a shared “move toward the typical state” direction. So 0.5, not 0, is the floor for donor-specific transfer. Second, I tried nonlinear bottlenecks instead of a linear U, and they added nothing.
So my definition had to change. A-Space is not one global subspace. It is a site-specific causal interface: crisp and tiny at OFT's action tokens, broader and non-unique in the late VLM, and inside the flow heads it is not a subspace at all, but a pathway that is only active at a particular time.
这里有两个对照让我保持诚实。第一是打乱的供体:从随便另一个样本贴一个状态过来,CAR 也有约 0.5,因为每个供体和受体之间都有一个共同的“往典型状态移动”的分量。所以衡量供体特异的迁移,基线是 0.5 而不是 0。第二,我把线性 U 换成非线性瓶颈试过,没有任何提升。
所以我的定义得改。A-Space 不是一个全局子空间,而是一个依赖位置的因果接口:在 OFT 动作 token 上又小又清晰;在 VLM 后几层更宽,而且不唯一;在 flow 头内部根本不是子空间,而是一条只在特定时刻起作用的通路。
Act IV · The last flow step decides第四幕 · 最后一步 flow 才拍板
This is my favorite result. Both flow heads integrate four Euler steps from noise to action. I took the donor's cross-attention update from step s and inserted it into the receiver's run at step t, for all 4 × 4 combinations, with every other step running live.
这是我最喜欢的结果。两个 flow 头都用 4 步 Euler 从噪声积分到动作。我把供体在第 s 步的 cross-attention 更新,插入受体运行的第 t 步,遍历全部 4 × 4 种组合,其余步骤正常运行。

- When it is inserted decides almost everything; where it came from decides almost nothing. Inserted at the last step, the donor's update transfers .91–.93 (PI) and .58–.64 (GR00T) whatever its source step. Inserted at steps 0–2 it transfers at most 3%.
- So the information that distinguishes donor from receiver is already present at step 0, but it is written into the action only at step 3.
- The sensitivity of the action to the head's internal state, ‖∂a/∂state‖, jumps 70× (GR00T) and 190× (PI) from step 2 to step 3.
- Patching only the final expert state at the last step gives CAR = 0.251 in both models, which equals the step size Δτ = 0.25. That is what an ideal rectified-flow head should do: the patch swaps exactly one step's worth of velocity.
Why the last step? Under the rectified-flow convention, the head's clean-action estimate at time τ is â = xτ + (1 − τ)v. At the last step the remaining step size equals 1 − τ, so the output is the step-3 estimate. Anything the head predicts earlier is partly re-predicted away by later steps. Late commitment is therefore a property of this 4-step integrator, and both heads show it, even though they were trained separately.
- 插在哪一步几乎决定一切,来自哪一步几乎无关。只要插在最后一步,无论来源是哪一步,供体更新都能迁移 .91–.93(PI)和 .58–.64(GR00T);插在第 0–2 步则最多 3%。
- 所以区分供体和受体的信息在第 0 步就已经存在,但直到第 3 步才被写进动作。
- 动作对动作头内部状态的敏感度 ‖∂a/∂state‖,从第 2 步到第 3 步跳升 70 倍(GR00T)和 190 倍(PI)。
- 在最后一步只替换专家头的最终状态,两个模型的 CAR 都恰好是 0.251,等于步长 Δτ = 0.25。这正是一个理想的 rectified-flow 头应有的行为:这个替换恰好换掉了一步的速度。
为什么是最后一步?在 rectified flow 的约定下,动作头在时刻 τ 对干净动作的估计是 â = xτ + (1 − τ)v。最后一步剩下的步长正好等于 1 − τ,所以输出就是第 3 步的估计。更早的预测会被后面的步骤部分覆盖掉。因此“晚决定”是这个 4 步积分器本身的性质,两个分别训练的动作头都表现出这一点。

Act V · Motor intent, not geometry第五幕 · 是运动意图,不是几何
Knowing where and when, I wanted to know what. My hypothesis was a “world → control” story: early layers encode absolute positions of objects in the world, and deeper layers convert them into end-effector-relative displacements that are easier to act on. To test it, I replayed seeds in the simulator and re-simulated scenes to get exact geometry labels: absolute target position, displacement from the end effector to the target, and so on.
The story mostly failed, in an informative way:
- Absolute target position is readable everywhere (≈ .98 at the head input). Relative displacement is never preferred over absolute in the full state at any depth. There is no world → control transition across depth.
- Inside OFT's 8-dimensional causal space, relative does beat absolute (+0.187, confirmed). But PCA and probe subspaces of the same size show the same preference, so this is not something special about the causal coordinates.
- The compression is motor first: going from the late VLM's 32-dim causal space to the action tokens' 8-dim one, absolute position is dropped and future action becomes the most enriched variable.
- The geometry-aligned part of the causal space behaves like a random part of the same size when patched. The causal coordinates look like a phase-conditioned motor code shared across tokens.
- Action is committed at the last flow step, but geometry is not specially committed there. And the end effector is outside the head camera in about 64% of frames, so the head camera cannot be the source of end-effector-relative geometry anyway.
In the end, 2 of 7 preregistered tests were confirmed.
知道了在哪里和什么时候,我想知道是什么。我的假设是一个“世界 → 控制”的故事:浅层编码物体在世界中的绝对位置,深层再把它转换成相对末端执行器的位移,这样更方便执行。为了检验,我在仿真器里重放随机种子、重新模拟场景,拿到精确的几何标签:目标的绝对位置、末端到目标的位移等等。
这个故事基本失败了,但失败得很有信息量:
- 目标的绝对位置在所有地方都能读出(动作头输入处 ≈ .98)。在完整状态里,任何深度上相对位移都没有比绝对位置更突出。不存在随深度从“世界”到“控制”的转换。
- 在 OFT 的 8 维因果空间里,相对位移确实比绝对位置强(+0.187,检验确认)。但同样大小的 PCA 和探针子空间也有同样的偏好,所以这不是因果坐标特有的性质。
- 压缩是运动优先的:从 VLM 后几层的 32 维因果空间到动作 token 的 8 维因果空间,绝对位置被丢掉了,未来动作成为最富集的变量。
- 因果空间中与几何对齐的那部分,替换时的表现和同样大小的随机部分一样。因果坐标更像是一个依赖动作阶段的运动编码,在 token 之间共享。
- 动作是在最后一步 flow 才确定的,但几何信息并没有特别在那里被确定。而且约 64% 的帧里末端执行器根本不在头部相机视野内,所以头部相机本来就不可能提供相对末端的几何信息。
最后,7 个事先登记的检验中有 2 个得到确认。


Act VI · Is any of this useful?第六幕 · 这些发现有用吗?
Finally, the engineer in me asked: can any of this make a frozen VLA better or faster without training? I tried five ideas. No weights were changed, all hyperparameters were chosen on validation, and every number is on held-out test pairs. Everything was open-loop, so none of this is a task-success claim.
最后,我心里的工程师问:这些发现能不能在不训练的情况下,让一个冻结的 VLA 变得更好或更快?我试了五个想法。没有改动任何权重,所有超参数都在验证集上选择,所有数字都来自留出的测试样本对。全部是开环评估,所以都不能说明任务成功率。
| Idea想法 | What happened结果 | Verdict结论 |
|---|---|---|
| Causal latent filtering: keep only the causal subspace to resist image corruption因果隐空间过滤:只保留因果子空间来抵抗图像扰动 | Corruption drift lives inside the causal subspace (24–61× chance), so keeping it keeps the corruption. Validation picks “no filter” every time.扰动造成的漂移恰好落在因果子空间里(是随机水平的 24–61 倍),保留它就保留了扰动。验证集每次都选择“不过滤”。 | negative负结果 |
| Commitment-aware flow routing: skip VLM cross-attention at early flow steps基于“晚决定”的 flow 路由:在早期 flow 步跳过对 VLM 的 cross-attention | Skipping step 0 is within seed noise; skipping the last step is catastrophic. −7.1% (PI) / −6.3% (GR00T) end-to-end GPU time; −12.7% / −11.9% with an exact KV cache.跳过第 0 步在随机种子噪声范围内;跳过最后一步则是灾难性的。端到端 GPU 时间 −7.1%(PI)/ −6.3%(GR00T);结合精确 KV cache 为 −12.7% / −11.9%。 | small positive小幅正结果 |
| Local causal action editing: nudge the action by editing causal coordinates局部因果动作编辑:通过修改因果坐标来微调动作 | Best basis at 8 dims (13.3% vs 9.3% PCA), but end-effector requests almost never succeed, and at 32 dims PCA catches up.8 维时是最好的基(13.3% 对 PCA 的 9.3%),但末端位置的编辑请求几乎从不成功,到 32 维时 PCA 追平。 | mostly negative基本负结果 |
| Causal seed selection: pick the flow noise whose causal latent is most typical因果种子选择:选择因果隐变量最“典型”的 flow 噪声 | Slightly worse than random selection; even an oracle only has ~6–7% headroom.比随机选择略差;即使是 oracle 也只有约 6–7% 的提升空间。 | negative负结果 |
| Causal latent cache: reuse the action when the causal latent barely changes因果隐变量缓存:因果隐变量变化很小时复用动作 | Recomputing every other frame on a fixed schedule saves ~50% wall-clock at similar fidelity. The causal trigger loses to it.按固定节奏隔一帧重算一次,就能在相近精度下节省约 50% 的时间,因果触发器比不过它。 | negative负结果 |


The honest summary: a representation that is mechanistically causal is not automatically a good handle for controlling inference. The one useful thing was the temporal finding, late commitment, not the subspaces themselves.
诚实的总结:机制上“因果”的表示,并不会自动成为控制推理的好把手。唯一有用的是关于时间的发现,即“晚决定”,而不是子空间本身。
What I learned我学到了什么
- Decodability is cheap and causality is expensive, and they disagree. Probe directions were nearly orthogonal to the directions the model uses. If I had stopped after Act I, I would have written a confident and wrong story.
- “Where” and “when” mattered more than “which directions”. The cleanest results were about sites (action tokens) and time (the last flow step), not about any particular basis.
- Controls change the conclusions. Shuffled donors move the floor from 0 to 0.5. Without the on-manifold rule, the flow heads would have had a tidy 4–8-dim subspace that is really just an off-manifold artifact. Random and PCA baselines of the same size killed several “discoveries”.
- Preregistering hurts, in a good way. Writing down tests before running them meant I had to report that 5 of 7 tests in the last phase failed.
- Check the plumbing. A pooling artifact looked like a finding. “Layer 36” turned out to mean “output of decoder layer 35, before the final norm”, which is what the heads read. A verify run once silently truncated a file. All numbers here were re-checked against the result tables.
- 可读性很便宜,因果性很昂贵,而且两者结论不一致。探针方向和模型真正使用的方向几乎正交。如果我在第一幕就停下,会写出一个自信但错误的故事。
- “在哪里”和“什么时候”比“哪些方向”更重要。最干净的结果是关于位置(动作 token)和时间(最后一步 flow)的,而不是关于某个特定的基。
- 对照实验会改变结论。打乱供体把基线从 0 抬到了 0.5。如果没有流形约束,flow 头里会出现一个整齐的 4–8 维子空间,但它其实只是偏离流形造成的假象。同样大小的随机基和 PCA 基推翻了好几个“发现”。
- 事先登记假设很痛苦,但是好的那种痛苦。先把检验写下来再跑实验,意味着我必须如实报告最后一个阶段 7 个检验中有 5 个失败。
- 检查管道。一个池化假象看起来像发现;“第 36 层”实际上是“第 35 个 decoder 层的输出、在最终 norm 之前”,也就是动作头真正读取的东西;有一次验证运行悄悄截断了一个文件。这里的所有数字都对照结果表重新核对过。
Caveats局限
- One benchmark (RoboTwin, simulation), 10 tasks, 3000 samples, and one shared backbone. The three heads differ, but nothing here says how other backbones behave.
- Everything is open-loop: I measure how actions change, not whether the robot succeeds.
- Late commitment is tied to a 4-step Euler integrator. With more steps or a different solver, the picture may be smoother.
- Subspace coordinates outside OFT's action tokens are not unique across seeds, so I avoid interpreting individual directions.
If you work on VLA interpretability, or you have ideas for turning “late commitment” into something more useful, I would love to chat. My email is on the home page.
- 只有一个基准(RoboTwin 仿真)、10 个任务、3000 个样本,以及一个共享的主干。三个动作头不同,但这里的结果不能说明其它主干会怎样。
- 全部是开环评估:我测量的是动作怎么变,而不是机器人能否完成任务。
- “晚决定”与 4 步 Euler 积分器绑定。换成更多步数或不同的求解器,图景可能会更平滑。
- 除了 OFT 动作 token 以外,其它位置的子空间坐标在不同种子之间并不唯一,所以我避免解读单个方向。
如果你也在做 VLA 可解释性,或者有办法把“晚决定”变成更有用的东西,非常欢迎交流。我的邮箱在主页上。