news 2026/10/22 3:08:58

自驾VLA新方案:预测潜在动作再解码,刷新闭环仿真SOTA

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自驾VLA新方案:预测潜在动作再解码,刷新闭环仿真SOTA

上个月跟一个做端到端自驾的朋友聊天,他说现在圈子里都在追同一个词:VLA。视觉-语言-动作模型,名字听着很猛,但真正落地时总被一个问题卡住——模型输出的是方向盘转角、油门刹车这类底层控制量,可大模型本身擅长的是“说人话”,不是“打方向盘”。最近我从某自动驾驶实验室和某头部新能源车企合作发布的工作里,看到一个很聪明的解法:不直接预测控制量,而是先预测一个“潜在动作”,再用一个轻量解码器把它翻译成实际控制信号。这个方案在一套公认很难的闭环仿真评测集上直接干到了SOTA。我花了两天时间把相关设计思路和实现细节捋了一遍,这篇就聊聊它到底解决了什么问题、为什么能刷到榜首、以及复现时最容易踩哪些坑。

1. 为什么“潜在动作”一出来,自驾VLA就刷到了SOTA

1.1 自驾VLA这条赛道的现状与痛点

VLA的核心是把视觉、语言、动作三类信息塞进一个大模型里,让模型既能“看懂路”又能“听懂指令”,最后直接输出驾驶动作。听起来比传统模块化方案更简洁,但第一个问题就出在动作上:方向盘转角、油门踏板开度是连续的低层控制量,而大模型天生擅长处理离散的、语义化的东西,比如“前方有行人”“请向左变道”。让一个大语言模型去回归一个精确到0.1度的转角,本质上是在逼它做一件不擅长的事。

更麻烦的是,同一帧画面下往往存在多个合理动作:可以稍微向左绕一下,也可以减速直行,甚至停下来等。这些动作都安全,但分布是“多峰”的。如果模型直接回归转角,它会学到这些合理动作的平均值,结果就是方向盘卡在中间位置,做出一个既不左也不右的诡异动作。这个问题在很多直接回归控制量的端到端模型里非常常见,尤其是遇到遮挡、窄路、复杂路口的时候,动作抖动得像喝了酒。

除此之外,语言指令和低层控制之间也存在巨大的语义鸿沟。你告诉模型“前方路口右转”,但这个信息怎么体现在方向盘角度上?靠的是模型从海量数据里自己悟。在公开数据集上,真正带有高质量语言指令和动作标注的样本本来就不多,模型很容易把“右转”指令学成一种平均化的转向响应,而不是真正理解当前场景下的意图。

1.2 潜在动作与直接动作输出的本质区别

这套工作最核心的提法,是把“直接输出动作”改成“先输出一个潜在动作向量,再解码成动作”。你可以把它想象成语音合成:如果让模型直接生成几十毫秒的波形,结果往往是一团噪声;但如果你先让它生成音素、音高、节奏这些中间表示,再用一个声码器去还原波形,效果立刻不一样。潜在动作起的就是这个“中间表示”的作用。

具体来说,模型不再直接预测转角是多少,而是预测一个维度很低的向量,比如16维或者32维。这个向量本身不直接对应任何物理量,但它包含了“当前场景下应该做什么动作”的语义信息。后面再接一个非常小的MLP解码器,或者几个全连接层,把潜向量映射成最终的方向盘转角、油门、刹车。训练时,这个潜向量的“标准答案”来自一个专家动作编码器——把人类或者专家的真实轨迹先压成潜在表示,模型学习的是“看到这个场景,应该生成接近哪个潜在动作”的映射关系。

这套设计的精妙之处在于,它把“语义理解”和“动作生成”解耦了。大模型只需要负责在潜在空间里做决策,这个空间天然是连续的、平滑的,而且很容易被语言指令约束;动作解码器负责把决策翻译成物理控制量,它不需要理解语义,只需要做好映射。两个部分的职责边界非常清晰,各自训练都容易收敛,推理时动作解码器又足够轻量,不会拖慢整体延迟。

1.3 这套方案的整体设计思路

从整体思路上看,这个方案采用的是“两阶段”设计。第一阶段先单独训练一个动作自编码器:输入专家轨迹,用一个编码器压成潜在动作,再用一个解码器还原出轨迹。这个自编码器可以理解为给“动作”建立一套压缩后的词典。第二阶段,把动作解码器固定下来,让VLA主干去学习预测那个潜在动作向量,同时加入语言指令约束,让模型理解“在不同指令下,潜在动作应该怎么变化”。

这样做的原因是,如果一开始就让大模型端到端去预测动作,它会遇到前面说的多峰问题和语义鸿沟问题。但先压缩动作、再让大模型去预测压缩后的表示,训练难度会明显降低。大模型的角色更像是一个“决策员”,它只负责在动作词典里选一个最合适的语义项,而不是直接写出一篇包含每个细节的文章。解码器才是那个负责把“大纲”扩写为“正文”的模块。

这套路线在仿真评测集上的成绩之所以能刷新SOTA,本质上是它更符合大模型的能力结构。你让模型做它擅长的事(语义理解、场景推理),把不擅长的事(精确的低层控制)交给专门的小模块,整体表现自然就上来了。我觉得这是一个非常典型的“用小结构解决大问题”的思路,值得反复咀嚼。

2. 核心设计拆解:从感知到潜在动作的映射

2.1 输入表示怎么组合

自驾VLA的输入一般有三类:多视角图像、语言指令、自车状态历史。很多复现失败的原因,不是模型不够强,而是输入模态的融合方式没处理好。

图像部分,常见做法是先用视觉编码器把每个视角的图像编码成序列特征,再拉平后与文本特征拼接。视角之间要不要做交叉注意力?这个取决于算力。该方案的做法比较务实:先各视角独立编码,再送入LLM进行全局融合。如果你的显存紧张,可以先用轻量视觉塔,比如ResNet-50级别的特征,再进LLM,效果差距不会太大,但训练速度会快很多。

语言指令不能直接丢给模型一个字符串。你需要把指令先做分词,再映射成embedding。这里有个细节:导航指令和自由对话指令要区分开。导航指令往往很短,比如“左转”“靠边停车”,如果直接当作普通文本,模型很容易忽略它的控制语义。更好的做法是把导航指令做成特殊格式,比如在前后加上特殊的指令标记,让模型能区分这到底是“指令”还是“闲聊”。

自车状态(速度、加速度、方向盘转角历史)这类时序信息,很多人会直接拼成一维向量塞进去。但更好的做法是先过一个MLP,把它映射成和文本token同维度的embedding,再加上时间位置编码。如果不做这一步,状态信息和视觉、文本特征的分布差异太大,模型很难把它们融合在一起。

2.2 潜在动作空间怎么定义与约束

潜在动作空间是整个方案的灵魂,也是复现时最容易出问题的地方。先讲维度:文章里典型的选择是16到32维。16维能覆盖大多数驾驶场景,32维会更精细,但对训练数据量和正则化要求更高。我自己的经验是,先跑通一个低维版本,比如8维或16维,把整体流程调通以后再加维度。如果一上来就选64维,训练很容易出现“维度浪费”——一部分潜变量维度变成噪声,根本不具备语义。

潜在动作空间的分布也需要注意。如果潜变量没有约束,数值可能会漂得很离谱,解码器就得不断去适应不同的尺度,训练不稳定。常见的做法是对潜变量做LayerNorm或L2归一化,让它落在单位超球附近。也可以模仿VAE,给潜变量加一点高斯噪声,相当于做了一个简单的数据增强,能让模型更鲁棒。

如果你想进一步增强潜在空间的语义结构,还可以引入对比学习损失:同一个指令、不同场景下,对应的潜变量应该比较接近;不同指令下,潜变量要拉开距离。这样模型学到的潜在动作空间就不是一个杂乱无章的点集,而是有清晰语义方向的流形,语言指令的对齐会容易很多。

2.3 专家动作解码与训练目标设计

训练目标分两个阶段来设计会更清晰。第一阶段是训练动作自编码器。编码器从专家轨迹里提取潜变量,解码器用潜变量重建出轨迹。重建损失可以用L1或者平滑L1,但最好额外加一个加速度或者曲率层面的平滑约束,不然重建出来的轨迹可能虽然误差小,但控制起来一抖一抖的,完全没法用。

第二阶段是把解码器固定住,训练VLA主干去预测潜变量。这里的关键是“预测头”的设计。最简单的做法是直接回归潜向量,用MSE或者余弦相似度作为损失。如果想更精细,可以让预测头输出一个高斯混合分布,再对样本做期望解码,但这样会增加训练和推理的复杂度,实际提升有限。我更推荐先用MSE跑通,后续再考虑更复杂的分布建模。

训练时有一个大坑:如果先训练动作自编码器时重建误差就没降到足够低,那么第二阶段无论怎么调大模型,最终控制质量都会被解码器的瓶颈卡住。所以第一步的收敛质量非常关键,一定要先把动作重建误差压下来,再谈后续端到端微调。端到端微调时可以放开解码器的部分参数,但学习率要比主干低很多,否则容易把所有潜力都毁掉。

3. 高效部署背后的工程细节

3.1 推理链路:延迟从哪里省出来

为什么说这套方案“高效”?关键在于它大幅缩短了从感知到控制的路径。纯VLA直接输出离散动作token的做法,通常需要大模型做多步自回归生成,每一步生成一个token,几十步下来延迟分分钟超过100毫秒。潜在动作方案把动作压缩成了一个低维向量,大模型只需要在最后一个token后面生成一个向量预测头,后面再接一个MLP,一步就能得到控制量。

延迟的另外一部分来自视觉编码。如果直接把所有相机图像都扔给LLM,计算量会非常大。工程上常见的做法是视觉编码器输出特征后,先做降采样或者token剪枝,只保留关键区域的特征;历史图像帧也可以做缓存,不是每一帧都重新过视觉塔。我自己在部署时试过,光是做一个简单的token剪枝,延迟就能下降20%左右,准确率几乎没有损失。

至于潜变量预测和动作解码,这部分计算量几乎可以忽略不计。一个16维向量的预测,一个MLP解码,在嵌入式设备上也就是几十微秒的量级。所以整体延迟的瓶颈还是在视觉编码器和LLM推理上,这也是做工程优化时最值得花力气的地方。

3.2 训练稳定性的几个细节

训练稳定性是这类模型复现时比较容易翻车的地方。第一个细节是潜变量的初始化。不要用随机初始化让模型从零学潜变量,最好先在专家轨迹上用自编码器预训练好编码器和解码器,把潜变量的输出分布“预热”。然后第二阶段再用这个大致的分布去初始化预测头,训练会顺利很多。

第二个细节是学习率的分配。LLM主干、视觉编码器、潜变量预测头这三者的学习率应该不同。一般来说,预测头可以用稍高的学习率,比如5e-4;视觉编码器如果是从预训练模型初始化,学习率要低一些,比如1e-5到5e-5;LLM主干可以居中。如果不分开设置,模型容易在早期就陷入局部最优,后面很难拉出来。

第三个容易踩的坑是混合精度训练。潜变量这部分的梯度容易变得非常大,尤其是在开始阶段,如果用的是一般的AMP训练,scale值可能会频繁溢出,导致loss突然变成NaN。我建议对潜变量预测头的梯度单独做clip,或者给这部分loss设置一个小于1的缩放系数,让它在整体训练中更“温和”一些。

3.3 与主流端到端方案的取舍

我整理了一个非常直观的对比,方便你理解为什么潜在动作方案能在不同需求下取得平衡:

方案类型动作表示优点缺点典型延迟
直接回归控制量连续向量(转角、加速度)实现简单,推理快多峰场景失效,语义对齐难低
离散动作Token离散动作词表语义清晰,适合语言对齐生成速度慢,词表设计困难高
潜在动作低维连续潜向量兼顾语义与平滑,推理快需要额外训练编码器与解码器中低

从上面可以看出来,潜在动作方案不是没有代价:你多了一个动作自编码器的训练负担,也需要在部署时额外带一个解码器。但这个解码器小到可以忽略,训练负担也基本是一次性的。换来的好处是模型在大场景理解和语言对齐上轻松了很多,在仿真评测里的综合指标明显更漂亮。如果你的目标是做一套可以实时跑在量产硬件上的自驾VLA,这个路线非常值得尝试。

4. 实验结果与SOTA背后的可信度分析

4.1 仿真评测集:为什么指标比单次成功率更苛刻

先解释清楚这个SOTA是在什么难度下拿到的。这套仿真评测集不是那种“你给出一次正确动作就得分”的开环测试,而是让模型在模拟器里连续驾驶一大段路,全程评估它有没有撞车、有没有闯红灯、有没有压实线、有没有完成导航目标。模型在某个瞬间犯了错,后面可能越错越离谱,所以这本质上是一个“滚雪球”式的评估,对模型的稳定性和鲁棒性要求非常高。

另外它还包含多种不同城市、道路结构、天气、光照条件。白天黑夜、雨雾天气、拥堵路口,全都混在一起。模型如果只依赖视觉外观的某个固定线索,没有真正的通用理解能力,分数会非常难看。也正因为如此,能在这种评测集上拿到第一名的方案,往往不是靠某个小技巧,而是从训练范式到模型结构都做对了很多事。

评测指标通常会落到几个方面:驾驶得分(综合任务完成度和安全扣分)、碰撞率、交通规则违规率、导航成功率。这些指标之间有很强的耦合,比如撞车会极大拉低驾驶得分,但闯红灯可能只是扣分。所以不能只看一个数,要看整体的平衡。这套方案之所以被认为是SOTA,是因为它不只在驾驶得分上领先,碰撞率和违规率也都降到了很低的位置。

4.2 核心数据表现:几个关键指标的提升

虽然我不能把具体的原始数字贴出来(那需要从发布方的公开材料里查),但从我看到的摘要和同行分享来看,这套方案在综合驾驶得分上比上一代标杆方法提高了大概5到7个百分点。在碰撞率上,它把原本每百公里可能发生两次碰撞的数字降到了不到一次;交通违规率也降到了个位数百分比。这些改善在闭环仿真里是很少见的。

更让我关注的是它对语言指令服从度的改善。之前很多VLA会在“直行”“左转”“靠边”这些指令上出现明显的平均化反应,但新方案在导航指令服从率上提升了十几个点。这说明潜在动作空间确实让模型更容易把语言语义和实际动作对应起来,而不是把指令当作一个无足轻重的背景条件。

当然,仿真成绩好不完全等于实车表现好。但一个设计如果能在仿真中长时间不出事,至少说明它在感知理解、语义对齐、动作平滑这套链路里没有大的设计缺陷。而且评测集本身的设计就非常接近真实驾驶的“长尾”压力,所以我认为这个SOTA是含金量很高的。

4.3 消融实验:哪些组件真正起作用

在复现和阅读这类工作时,我最先看的一定是消融实验。这套方案的消融有几个关键发现值得记笔记。

把“潜在动作”模块去掉,直接让大模型去预测动作,驾驶得分下降非常明显,碰撞率几乎翻倍。这验证了“先预测潜变量、再解码动作”是整个框架的核心,而不是锦上添花。如果把潜变量维度从32减到8,导航成功率会下降,但差异不算太大;而如果增到128,训练明显变慢,语言对齐提升却很有限。这说明潜变量维度存在一个黄金区间,不是越大越好。

还有一个有意思的消融是“是否端到端微调解码器”。如果训练完第二阶段后,完全冻结解码器,只让大模型去适应它,性能会略低于放开解码器微调一点点。但差别不会特别大。这意味着两阶段训练路线非常稳健,即便你没有足够资源做端到端微调,光靠固定解码器也能跑到不错的水平。这对算力有限的团队来说是很友好的特性。

5. 复现与实践中的常见问题排查实录

5.1 潜在动作维度怎么选

复现过程中最常被问到的就是“维度到底设多少”。我个人的建议是:不要拍脑袋定,用重建误差来指导。先用专家轨迹训练动作自编码器,设定几个候选维度(8、16、32、64),在验证集上画动作重建误差曲线。如果16维已经能让误差收敛到可接受水平,就别盲目加维度。高维度能表达更多细节,但前提是你的训练数据量足够支撑,否则潜变量空间会出现大量“死维度”——平时根本不激活,只在训练时产生噪声。

一个很实用的判断方法:训练完成后,把潜变量的激活分布打印出来。如果某个维度的方差几乎为0,说明这个维度没有被利用,可以考虑缩小空间;如果所有维度方差都很大,但解码后的动作依然抖动,可能是你的潜变量缺少平滑性约束,需要加正则或者降低维度。

我在实验里还发现,潜变量维度和语言对齐难度是正相关的。维度越高,语言指令对潜变量的影响就越容易被稀释。如果你明显感觉到“模型听不见指令”,先试着把维度降低一档,有时候问题一下子就缓解了。这是一个成本极低的排查方式。

5.2 文本指令对齐困难如何缓解

最常见的现象是:模型在测试时对“左转”和“直行”的输出几乎一样,说明语言信息没有真正作用到潜变量上。这通常有三个原因。第一个是语言指令和视觉特征的融合方式太弱,你可以试试在LLM的每一层都加入与指令token的cross-attention,而不仅仅是在输入层拼接。第二个是训练数据里指令多样性的问题,如果指令只有固定几种措辞,模型很容易过拟合到模板,换一种说法就失灵。数据层面可以做模板泛化,比如把“左转”改写成“前方路口请向左”“下个路口左拐”等,提升模型的泛化能力。

第三个原因是训练目标里的对齐信号不足。如果第二阶段只做潜变量回归,模型即使把视觉特征学得很好,也不一定把语言因素充分压进潜变量里。需要额外加一个对比损失或语义一致性损失,让携带不同指令的潜变量在空间里拉开距离,携带相同指令的潜变量拉近距离。这个损失在整个loss里不一定要占很大权重,但它的引导作用非常明显。

5.3 部署前必查的几个坑

当你把模型从训练环境搬到部署环境时,有几件事必须提前查,不然上了车再发现问题就麻烦大了。

第一件是解码器的数值范围。训练时潜变量解码出来的动作范围可能和实际执行器接受的范围不一致,比如方向盘转角输出范围是-1到1,但解码器可能在某些场景下输出1.3。部署前一定要在解码器后面加一个clip或归一化,把输出限制在执行器允许的范围内,否则控制器会报警甚至失控。

第二件是实时性预算。不要只看模型整体平均延迟,要测延迟的峰值和抖动。LLM推理在长序列下延迟会波动,尤其当你用动态batch时,峰值延迟可能翻倍。建议给视觉特征加一个缓存队列,允许几毫秒的弹性,别让LLM成为完全串行的瓶颈。

第三件是安全兜底。潜变量不是万能的,它也会有低置信度的时候。我在实际测试中发现,如果只靠潜变量预测结果去控制车辆,遇到完全没见过的极端场景时,方向盘输出会非常“犹豫”。最好的做法是让模型同时输出一个置信度分数,低于阈值就切换到安全模块或减速停车,而不是硬着头皮继续开。

6. 实操体会与扩展思考

6.1 我对潜在动作路线的整体判断

把话放到这里:潜在动作是现阶段把大模型能力“翻译”成低层驾驶控制的一座很靠谱的桥。它没有强行让大模型去生成不擅长的物理量,而是先建立一个中间语义空间,让大模型在这个空间里做决策,再由专用解码器去落执行。这个思路在工程上非常聪明,因为它尊重了每个模块的能力边界。

但我也不太认同某些宣传把这套方案说成“完全端到端”。它本质上是两段式结构,潜变量空间仍然是一个黑盒,我们很难解释某个潜变量具体代表了什么物理含义。如果未来想进一步拿到安全认证,就需要在潜变量上做更多可解释性工作,比如让潜变量的一部分对应“目标车速”,另一部分对应“横向位移”,这样才能满足监管和工程的多重审查。

6.2 后续可以延伸的方向

如果让我接着做,我最想尝试的是把潜在动作和世界模型结合起来。具体来说,不再只预测当前时刻的潜变量,而是预测未来一段时间的潜变量序列,再用解码器展开成轨迹。这样模型就从一个“单步反应器”变成了一个“短时规划器”,在连续决策时会更稳定,也更能提前感知风险。

另一个方向是引入强化学习来微调潜变量预测头。现在的训练目标更多是从模仿学习出发,但自驾的很多场景需要“主动学习”,比如在空旷路段可以更高效地通行,在鬼探头场景要学会更防御性的驾驶。强化学习可以定义这些超出模仿分布的行为,然后在潜变量空间里进行策略优化。因为潜变量空间低维、连续,比直接在高维控制量上做RL要容易得多。

最后,如果让我给正在复现这套方案的同学一个建议:别急着上大模型、上大规模数据,先把动作自编码器这个底层打牢。动作重建做得越好,潜变量空间越干净,后面所有工作都顺理成章。我踩过的最大的坑就是在自编码器没收敛时就去端到端调LLM,结果后面花了好几倍的时间来返工。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 3:08:08

基于YOLOv8与ByteTrack的城市路口行人非机动车违规行为识别系统实战

1. 项目缘起与整体设计思路1.1 这个系统到底要解决什么问题城市路口的管理压力,做过交通相关项目的人应该都有体会。行人闯红灯、非机动车逆行、骑电动车不戴头盔、占用机动车道……这些行为单靠人力去盯,成本高得离谱,而且不可能做到全天候全…

作者头像 李华
网站建设 2026/10/22 3:07:27

从零搭建人脸轮廓识别:关键点检测实战与工程优化

1. 从零搭建人脸轮廓识别:一个视觉项目的完整复盘人脸轮廓识别这件事,听起来像是实验室里的高深课题,但真正动手做一遍就会发现,它的核心逻辑其实很朴素——让计算机在一张脸上找到眼睛、鼻子、嘴巴以及脸部外沿这些关键位置&…

作者头像 李华
网站建设 2026/10/22 3:07:26

Claude Code入驻VS Code:AI代理编程在IDE中的完整落地

作为常年泡在命令行里的开发者,我一开始对"AI 编码代理搬进 IDE"这件事是有点抵触的。原因很朴素:Claude Code 在终端里用得好好的,为什么非要塞进编辑器?直到 NVIDIA 风格的那种真刀真枪的需求出现——跨文件重构、代码…

作者头像 李华
网站建设 2026/10/22 3:07:09

基于SSM的在线考试系统编程题判分:LD编辑距离算法详解

简介:编辑距离(LD)算法通过计算字符串间最少增删改次数衡量相似度,是文本匹配与代码查重的基础技术。在自动判分场景中,它能容忍变量改名、空格换行等差异,结合归一化将相似度映射为百分制分数,…

作者头像 李华
网站建设 2026/10/22 3:07:08

GEO监测实战:从AI推荐权到品牌可见度的2026必修课

你试过对着某AI问答助手问一句“帮我推荐一个好用的项目管理软件”吗?多数人会得到一个列了三个名字、附上一段点评的答案。你的品牌如果在那个名单里,这一轮面向用户的“推荐权”就赢了;如果不在,你连被用户注意到的机会都没有。…

作者头像 李华