跳转至

Breaking Down and Building Up: Mixture of Skill-Based Vision-and-Language Navigation Agents

会议: ACL 2026
arXiv: 2508.07642
代码: https://github.com/HLR/SkillNav
领域: 机器人 / 视觉语言导航 / 模块化 agent
关键词: VLN、技能分解、VLM router、合成数据、GSA-R2R 泛化

一句话总结

SkillNav 把视觉语言导航任务拆解成 5 个原子技能(方向调整、垂直移动、停顿、地标识别、区域识别)+ 1 个时序规划技能,每个技能用合成数据微调一个 DUET 子 agent,再用 training-free 的 VLM router 做时序重排 + 子目标定位 + 技能选择,在 GSA-R2R 上取得 SOTA 泛化能力(Test-N-Scene SPL 48% vs. 之前最高 43%)。

研究背景与动机

领域现状:VLN 主流路线两极分化——(1) 监督式黑盒 agent(DUET / BEVBERT / ScaleVLN / SRDF),在大规模合成数据上端到端训练,R2R in-domain 强但容易记忆训练轨迹;(2) zero-shot LLM/VLM agent(MapGPT / NavGPT / DiscussNav),泛化稳定但缺乏 fine-grained 视觉接地,与监督模型相比 SR 差距高达 ~36 个百分点。

现有痛点:监督模型在 GSA-R2R 这种「新建筑类型 + 新指令风格」场景下表现急剧下降;LLM 模型缺少 embodied grounding,无法精确选择 viewpoint。多 agent 协作工作(DiscussNav / FlexVLN / CLASH)虽然组合多模型,但常常每步激活多个模型造成冗余,且冲突时退回 zero-shot LLM 决策,又把 in-domain precision 牺牲掉了。

核心矛盾:「广泛泛化(需要 LLM 的世界知识)」与「精确执行(需要 fine-tune 的视觉接地)」之间的 trade-off。端到端 agent 偏后者,LLM agent 偏前者,二者无法兼得。

本文目标:(1) 找到「执行原子化的最小技能集」让每个技能可以单独训练到精;(2) 让 VLM 只在「技能选择 + 时序规划」这种高层决策上发挥推理优势,避免它直接接管低层动作;(3) 不依赖人工标注,用合成数据闭环训练每个技能 agent。

切入角度:作者复用 NavNuances 提出的 4 个原子技能(DC / VM / LR / RR)+ 自己加的 Stop 和 Temporal Order Planning 2 个技能,模仿人类「先把任务拆成可复用子动作,再按需调度」的思维方式。

核心 idea:用「skill decomposition + skill-specific synthetic data + VLM router」替代「monolithic end-to-end policy」,把高层规划与低层执行解耦,让 LLM 推理与 fine-tune 视觉接地各自发挥所长。

方法详解

整体框架

SkillNav 想解决的问题是:端到端导航 agent 在 in-domain 上很精、但换到新建筑/新指令风格就崩,而纯 LLM agent 泛化稳但接不上 fine-grained 的视觉接地。它的思路是把这两种能力解耦——先把"导航"拆成 5 个原子技能 \(\mathcal{S} = \{\pi_{da}, \pi_{vm}, \pi_{sp}, \pi_{ld}, \pi_{ar}\}\)(方向调整 / 垂直移动 / 停顿 / 地标识别 / 区域识别),每个技能用合成数据各自 fine-tune 成一个 DUET 专家,专门负责低层视觉接地与动作预测;再用一个 training-free 的 VLM router 负责高层推理,把原始指令重排成有序子目标、定位当前该执行哪个子目标、然后从 5 个专家里挑一个执行。整条 pipeline 里 LLM 只做"派谁去"的离散决策,真正预测动作的始终是 fine-tune 好的专家。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
    subgraph BUILD["6-skill 任务分解 + 反捷径合成数据"]
        direction TB
        A["Matterport3D 采 4-7 步短路径"] --> B["按各技能几何/语义启发式过滤"]
        B --> C["GPT-4o 生成 R2R 风格指令<br/>故意混入非目标关键词防词典捷径"]
        C --> D["两阶段微调<br/>通用 backbone → 各技能专精"]
    end
    D --> E["5 个 DUET 技能专家<br/>方向调整/垂直移动/停顿/地标识别/区域识别"]
    F["原始指令"] --> G
    subgraph ROUTER["VLM Router 三阶段管道"]
        direction TB
        G["① 时序重排(GPT-4o)<br/>原始指令 → 有序子目标列表"] --> H["② 子目标定位(Qwen2.5-VL)<br/>结合视觉历史定位当前子目标 p_t*"]
        H --> I["③ 技能选择<br/>在原指令上下文选最匹配专家 π_t*"]
    end
    E --> I
    I --> J["选中专家做动作预测<br/>VLM 只决策、执行接地由 DUET 兜底"]
    J -->|每步循环重新定位| H
    J --> K["导航动作 / 停止"]

关键设计

1. 6-skill 任务分解 + 反捷径合成数据 pipeline:把导航拆成能被单独训精的最小单元

监督模型在 GSA-R2R 上崩,很大原因是单一巨型 policy 把所有子能力混在一起学、又容易记忆训练轨迹。SkillNav 复用 NavNuances 的 4 个原子技能(DC / VM / LR / RR)再补上 Stop 和 Temporal Order Planning,把任务切成 6 个语义独立的单元,让每个 agent 只专注学一件事。数据靠合成而非人工标注:从 Matterport3D 随机采 4-7 步短路径,按每个 skill 的几何/语义启发式过滤(如 Direction 要求频繁转向、Vertical 要求高度差 \(>2\) 单位且必经楼梯),再让 GPT-4o 根据轨迹观测生成 R2R 风格指令,每个 skill 产 450 条(Temporal 单独 2,000 条)。关键是这套数据刻意"反捷径"——Vertical Movement 的数据里故意混入大量非垂直关键词(Landmark 18.72% + Direction 8.05%),逼模型从视觉上下文而非词典学习,因为同一个 "down" 在不同 dataset 里含义不同,靠关键词必然学歪。

2. VLM Router 三阶段管道:让 LLM 只在该切换技能时介入,而不是每步都跑

把高层规划交给 VLM 的难点是开销和时序推理——如果每步都让 VLM 接管低层动作,既慢又容易把推理错误和接地错误耦在一起。SkillNav 的 router 拆成三阶段流水:先用 GPT-4o 把"先 X 然后 Y 再 Z"这类带时序词的原始指令显式重排成有序子目标列表,把隐式的时序推理外化成结构脚手架;再用 Qwen2.5-VL-7B 结合视觉历史和已执行子目标,定位当前应执行的子目标 \(p_t^*\) 并给出 reasoning trace \(r_t\);最后由 Skill Router 在原指令上下文里选最匹配的专家 \(\pi_t^* = \arg\max_{\pi \in \mathcal{S}} \text{Router}(I, p_t^*, r_t)\)。三阶段分工让每次 VLM 调用任务专一、错误可定位,消融也证实显式时序重排是必要的——禁用它会让 Test-N-Scene SPL 掉 2.5%。

3. VLM 推理与 fine-tune 执行的彻底解耦:让错误被局部化在"派错专家"而非"动作错"

端到端 VLM agent 的通病是把推理和视觉接地的错误全耦合在一起,一处出错就整步崩。SkillNav 把 VLM 严格限制在"选哪个 skill"这个离散决策上,不让它直接预测动作;被选中的专家用自己的 DUET 权重 + 原始指令 + 当前观测 + 拓扑图做最终动作预测。这样 VLM 即使判断失误,最坏也只是"派错专家",执行接地仍由训练好的 DUET 兜底,错误被限制在一个可解释的环节里。专家激活频次也印证了这种 precision-first 策略:控制类技能(\(\pi_{sp}\) 34.42% + \(\pi_{da}\) 23.61% = 58%)被频繁调用,而语义类技能(\(\pi_{ld}\) 14.23% + \(\pi_{ar}\) 18.75%)只在需要识别特定物体时才激活,说明导航里"持续状态校验"比"稀疏语义锚定"发生得更频繁。

损失函数 / 训练策略

两阶段 fine-tuning:Stage 1 在 ScaleVLN 增强数据 + R2R + Temporal 合成上 50,000 iter(batch 32, lr 5e-5)训出 skill-agnostic backbone;Stage 2 在每个 skill 专属数据集上 30,000 iter(batch 16)各自专精成 5 个专家。Router 用 vLLM + greedy decoding(temperature 0, max length 40,960),每步 top-1 选一个 skill。

实验关键数据

主实验:R2R + GSA-R2R 对比

方法 R2R Val-Unseen SPL R2R Test-Unseen SPL GSA-R2R Test-R-Basic SPL GSA-R2R Test-N-Basic SPL GSA-R2R Test-N-Scene SPL
DUET 60 59 47 37 30
BEVBERT 64 62 45 35 27
ScaleVLN † 70 68 67 57 43
SRDF † 78 77 63 49 43
MapGPT (LLM) 35 30 23 23
NavGPT-2 (FlanT5-5B) 61 60 45 35 43
SkillNav (ScaleVLN-Aug) † 77 (+6.54) 70 (+1.80) 69 (+2.18) 61 (+4.18) 48 (+5.26)
SkillNav (SRDF-Aug) † 78 77 64 50 45

†=用大规模合成数据增强。GSA-R2R 上 SkillNav 把 SPL 推上了新 SOTA,Test-N-Scene SPL 比 ScaleVLN 涨 5.26 个百分点。

消融:Action Router 的两个机制

Reorder Router Test-R-Basic SPL Test-N-Basic SPL Test-N-Scene SPL
Qwen 67.80 59.62 45.43
Qwen 68.88 61.34 47.96
GLM 66.27 58.63 42.64
GLM 67.93 59.73 46.51
Random skill (no router) 67.46 59.71 43.17
GPT-4o 69.18 62.48 48.96
Method DC SR VM SR LR SR RR SR
ScaleVLN 68.39 81.76 28.32 82.91
SRDF 59.93 82.94 26.28 77.09
Direction Adjustment agent 70.81 81.76 31.39 81.82
Vertical Movement agent 70.68 87.65 30.22 82.18
Landmark Detection agent 70.29 82.35 31.53 83.64
Area and Region Ident. agent 67.53 84.12 29.20 85.09

关键发现

  • 去掉 Temporal Reordering → Test-N-Scene SPL 掉 2.5%,证明显式时序结构脚手架不可或缺。
  • 5-skill 子集消融:用 2-4 个 skill 的所有组合都比 5 个 skill 差(如 4 skill 最佳 80.80 SR,5 skill 82.59 SR),证明分解的"完备性"重要。
  • 专家激活频次:控制类(\(\pi_{sp}\) 34.42% + \(\pi_{da}\) 23.61% = 58%)远高于语义类,说明"continuous state verification"比"sparse semantic anchoring"在 navigation 里更频繁。
  • Inference 开销:SkillNav 9.69s/case,比 NavGPT/FlexVLN 快 2-4×,但仍比 ScaleVLN (28 inferences/s) 慢约 50×。

亮点与洞察

  • 「skill 是高层语义概念,不是低层动作」的精确定位:作者在附录 A.1 明确说原子 skill 定义在 semantic intent 层面,而非 motor execution 层面(如 "walk to the far end of the room" 是一个 Region Identification skill,即使底层执行多个 forward + 转向)。这种分层避免了"过度拆解"和"拆解过粗"两个极端。
  • VLM 只决策不执行:把 VLM 限制在"选 skill"这一离散决策上,错误被局部化,而执行接地交给 fine-tune 好的 DUET。这种"high-level reasoning + low-level grounding"解耦是泛化的关键。
  • two-stage 微调防止 catastrophic forgetting:Stage 1 先用大规模通用数据训得 backbone,Stage 2 再分支到 skill 专精,相比单阶段直接训 5 个 skill 更稳定。
  • 合成数据的"反捷径"设计:Vertical Movement 数据里故意包含大量非垂直关键词(Landmark 18.72% + Direction 8.05%),强迫模型从视觉而非词典学习;这种 anti-shortcut 数据构造值得借鉴。

局限与展望

  • 只在离散 viewpoint 模拟器上评估:未在 VLN-CE / Habitat 连续控制 / 真实机器人上验证,连续动作空间需要新的 skill executor。
  • Inference 开销仍较高:比纯监督模型慢 50×,部署到 latency-constrained 场景需要 router 蒸馏或缓存。
  • 技能库不完备:未涵盖 object manipulation / 透明材质 / 人类感知导航等更专业场景,需要按需扩展。
  • GPT-4o + Qwen2.5-VL 闭源/开源混搭:复现成本较高;如果 GPT-4o API 停用会影响 Temporal Reordering 质量。
  • 错误分析揭示瓶颈在视觉接地:作者人工分析 17 个失败案例发现,主要不是 router 推理错,而是 VLM 在杂乱场景里把"sink"绑定到错误物体——这暗示下一步要强化视觉 grounding 模块。

相关工作与启发

  • vs DUET (backbone):本文以 DUET 为基础,但把单个 DUET 拆成 5 个 skill-specific DUET + 一个 VLM router,泛化能力大幅提升。
  • vs ScaleVLN / SRDF:同样用大规模合成数据增强,但本文进一步按 skill 分桶 + Stage 2 专精,比单一巨型 model 强。
  • vs MapGPT / NavGPT / DiscussNav:纯 LLM 路线,零样本但缺乏视觉接地;本文用 VLM 只决策不执行,融合两边长处。
  • vs FlexVLN / CLASH (planner-executor):同样有 hierarchical 思想,但他们每步可能激活多个模型造成冗余,且冲突时退回 zero-shot;SkillNav 总是 top-1 选一个 best-fit specialist。
  • vs SAME (state-adaptive MoE):类似 MoE 思想,但 SAME 是隐式专家路由,SkillNav 是显式 skill semantic 路由,可解释性更强。

评分

  • 新颖性: ⭐⭐⭐⭐ 「skill 分解 + VLM router + 合成数据闭环」组合,每个组件不算全新,但组合 + 跨 R2R/GSA-R2R 的稳定泛化收益是真实的
  • 实验充分度: ⭐⭐⭐⭐⭐ R2R / GSA-R2R / RxR / NavNuances 4 个 benchmark + skill subset 消融 + temporal 消融 + router VLM 对比 + 失败案例分析 + leakage 分析 + inference 开销分析
  • 写作质量: ⭐⭐⭐⭐ 附录极其详尽(Skill 定义 / Data 构造 / 偏见检查 / Hyperparams 全公开)
  • 价值: ⭐⭐⭐⭐ 代码开源 + 项目页 + 合成数据 pipeline 都可复用;为 VLN 社区提供了一条「模块化 + LLM 推理」的可行路径