← 返回 2026-05-14

LLM 智能体时代下对 DAgger 算法的再探索 Revisiting DAgger in the Era of LLM-Agents

Changhao Li, Rushi Qiang, Jiawei Huang, Chenxiao Gao, Chao Zhang, Niao He, Bo Dai 📅 2026-05-13 👍 6 2026-07-13 08:36
DAgger Imitation Learning LLM Agents Post-Training SWE-Bench Software Engineering

把经典模仿学习算法 DAgger 改造为多轮 LLM 智能体的后训练范式

前置知识

协变量偏移 (Covariate Shift)

在序列决策中,模仿学习训练的 student 策略只在 teacher 诱导出的状态分布 $d^{\pi_e}$ 上学习,但部署时 student 走自己的 $d^{\pi_\theta}$,一旦中间出错,状态会偏离训练分布,导致错误随 horizon $T$ 二次累积增长。DAgger 之所以被提出,正是为了在 student 实际访问的状态上做监督。

本文的整个动机都建立在协变量偏移上:SFT 完全在 teacher 状态上训练,因此偏移最严重;RLVR/OPD 用 student 自己的 rollout 但面临冷启动失败。理解这一点才能看懂 DAgger 为何能同时缓解两边的痛点。

DAgger / AggreVaTe

DAgger(Dataset Aggregation)迭代地用混合策略 $\mu_i = \beta_i \pi_e + (1-\beta_i)\pi_{\theta_i}$ 采样轨迹,让 teacher 在 student 访问到的状态上标动作并汇入数据集,把模仿误差对 horizon 的依赖从二次降到线性。AggreVaTe 是其变种:student 跑前缀,teacher 接管续完,属于轨迹级介入。

本文把这两个 2009 年前后的经典 IL 算法直接搬到多轮 LLM 智能体场景,并提出 turn-level 混合的 DAgger-style 与 trajectory-level 的 AggreVaTe-style 两种具体 rollout 协议,是论文方法论的核心。

行为克隆 / SFT

Supervised Fine-Tuning 在专家轨迹上做 teacher-forcing 的最大似然训练,$\min_\theta \mathbb{E}_{s\sim d^{\pi_e}, a_e\sim\pi_e}[\ell(\pi_\theta(\cdot|s), a_e)]$,损失一般是 token 级的 cross-entropy。优势是 token 级密集监督,缺点是分布外问题。

SFT 是本文的基线之一,论文专门分析了它在 SWE-Bench 上的失败模式(高 syntax/runtime 错误率、submission 后仍解不出)以及在 reverse KL 上后期回升的反常现象。

RLVR / GRPO

Reinforcement Learning with Verifiable Rewards 在可验证的稀疏结果奖励下做策略梯度,GRPO 用组内相对优势替代 value network,省去了 critic。特点是 on-policy、稀疏反馈、对超参敏感。

RLVR/GRPO 是论文对比的另一类基线,作者指出它在长 horizon SWE 任务上存在稀疏信用分配、group sampling 计算昂贵、advantage collapse 等结构性问题,导致 4B 上仅 11.6%,几乎没提升。

On-Policy Distillation (OPD)

让 student 自己 rollout 轨迹,teacher 在 student 访问的状态上提供 token 级监督(一般是 reverse-KL),兼具 on-policy 覆盖与密集 token 反馈。代表工作有 [22, 2, 13]。但前提是能拿到 teacher 的 logits。

OPD 是与本文最接近的对照方法,作者用反向 KL 散度 $D_{\mathrm{KL}}(\pi_\theta\|\pi_e)$ 量化 OPD 缓解协变量偏移的程度,指出 OPD 仍有冷启动瓶颈(弱 student 早期 rollout 频繁失败),而本文 DAgger-style 借助 teacher 接管轨迹把这一缺陷显著压低。

SWE-Bench Verified / SWE-Gym

SWE-Bench Verified 是从 SWE-Bench 中筛选出的 500 个高质量、单元测试可验证的 GitHub issue 解决任务;SWE-Gym 提供 2,438 个可执行环境用于训练。任务要求 agent 在真实代码库中导航、定位、编辑、提交 patch 并通过测试。

这是论文训练与评估的基准。论文使用 OpenHands 框架,把 SWE-Gym 拆成 2,338 train + 100 holdout,SWE-Bench Verified 实际可跑的是 466 个(34 个 Matplotlib 实例在 Docker 中构建失败)。

研究动机

随着 LLM 智能体在 SWE、Web 浏览、AI 研究等长 horizon 任务上落地,后训练算法的选择变得棘手。现有三种主流方法各有结构性缺陷:SFT 在 expert 诱导的状态 $d^{\pi_e}$ 上做 token 级最大似然,能提供最密集的反馈,但完全 off-policy,student 实际部署时的状态分布一旦偏移就无法挽回,论文里展示的 SFT reverse KL 在后期从 0.10 反弹到 0.126 即是证据;RLVR(如 GRPO)虽然 on-policy 训练缓解了分布偏移,但只有稀疏的 0/1 终止奖励,长 trajectory 下信用分配极差,group sampling 计算昂贵,4B 规模上 GRPO 仅把 SWE-Bench Verified 从 11.2% 提到 11.6%,几乎无收益;On-Policy Distillation(OPD)则夹在中间,student 自己 rollout、teacher 在 student 状态上做 token 级监督,但冷启动时 student 容易进入不可恢复的失败前缀,论文数据显示在 3K 有效样本下 OPD 仅 13%,而 DAgger-style 同期已达 20%。同时,OPD 还要求 teacher 提供 logits,对 Gemini、GPT 这类黑盒 API 模型完全不适用。

本文的目标是论文旨在找到一种后训练算法,同时具备以下五个性质:on-policy 状态覆盖(缓解协变量偏移)、token 级密集监督(缓解稀疏奖励)、低采样成本(区别于 GRPO 的 group sampling)、冷启动鲁棒(避免 OPD 的早期失败),以及与黑盒 teacher 兼容(teacher 只需返回文本动作而非 logits)。最终作者把目光投向了 2009 年的经典模仿学习算法 DAgger,并把它系统性地适配到多轮 LLM 智能体的训练循环中。

与已有工作不同的是,虽然 [20] 等近期工作已经在「student 前缀 + teacher 续写」的范式上做了探索,但都把 teacher 介入放在 trajectory 级的某个固定点,缺乏 turn 级的细粒度混合,也没有把 SFT / RL / OPD 统一到同一个目标函数下做严格比较。本文的两点独特切入是:(1) 同一框架下提出 turn-level 的 DAgger-style 混合(每一步独立以 $\beta_i$ 概率调用 teacher)和 trajectory-level 的 AggreVaTe-style 接管两条线,并让 teacher 在 student 实际访问的每一个状态 $s_t$ 上都标一个 $\tilde{a}_t$,实现「局部纠错 + 全程密集监督」;(2) 用统一的损失 $\theta_{i+1}=\arg\max_\theta \mathbb{E}_{s\sim\mathrm{sg}(p_s), a\sim\mathrm{sg}(p_a)}[\mathrm{sg}(w(s,a))\log\pi_\theta(a\mid s)] - \lambda \Omega_i(\theta)$ 把 SFT、OPD、RL 全框进去,把 SFT/OPD 的缺陷精确定位为 $p_s$ 的选择问题。

核心方法

方法的核心直觉是:在 student 部署时会真实访问的状态上做监督,监督信号始终由 teacher 提供,因此训练出来的 student 既能拟合 student 自己的状态分布,又能拿到 teacher 级别的动作标签。具体技术路线上,论文把 DAgger 的迭代思路改造为多轮 LM agent 训练循环:每一轮先用一条混合策略 rollout 一批轨迹(每一步以概率 $\beta_i$ 切换到 teacher),teacher 在每一个被访问的状态 $s_t$ 上额外返回一个监督动作 $\tilde{a}_t\sim\pi_e(\cdot\mid s_t)$,把这些 $(s_t,\tilde{a}_t)$ 装进训练 batch 跑 cross-entropy 更新 student,并在不同迭代之间把 $\beta_i$ 衰减到 0,让轨迹分布逐渐从「teacher 主导」漂移到「student 主导」。

本文与已有方法的本质区别有两点。第一,把 teacher 介入从「trajectory 级别(跑一段前缀再切)」细化到「turn 级别(每步独立随机切换)」,在 SWE 这种 long horizon 任务里这点关键,因为 student 可能在任何一步翻车,trajectory 级介入要等 teacher 接管就太晚。第二,无论本步执行的是 student 还是 teacher 的动作,都强制收集 teacher 在该步的标签 $\tilde{a}_t$,形成「on-policy 状态 + expert 标签」的数据形态 $\mathcal{B}(\tau)=\{(s_t,\tilde{a}_t)\}_{t=1}^T$——这与 SFT(off-policy 状态 + expert 标签)和 OPD(on-policy 状态 + expert 标签但 teacher 需给 logits)形成对比,论文用统一公式 (14) 中的 $p_s$、$p_a$、$w(s,a)$ 三元组清晰区分了四类方法。

方法步骤详情

训练流程(Algorithm 1)按 iteration 循环。输入:teacher $\pi_e$、student $\pi_\theta$、prompt $x$、regime $r\in\{\text{TURN},\text{TRAJ}\}$、mixing 参数 $\beta_i$(DAgger-style)或前缀长度分布 $\rho_i$(AggreVaTe-style)、horizon $T_{\max}$。第 1 步若选 TURN 模式,按 $p^{\text{turn}}_i(b_{1:T_{\max}})=\prod_{t}\beta_i^{b_t}(1-\beta_i)^{1-b_t}$ 采样 turn-level 的 teacher/student 指示符;第 2 步若选 TRAJ 模式,先采前缀长度 $\kappa\sim\rho_i$,再令 $b_{1:\kappa}=0$、$b_{\kappa+1:T_{\max}}=1$。第 3 步初始化状态 $s_1=x$。第 4–9 步进入 rollout 循环:每个 turn 先无条件地查 teacher 拿监督标签 $\tilde{a}_t\sim\pi_e(\cdot\mid s_t)$,然后根据 $b_t$ 决定实际执行动作 $a_t$($b_t=1$ 用 $\tilde{a}_t$,$b_t=0$ 让 student 自采),环境返回观测 $o_t$,更新 $s_{t+1}=(x,a_{1:t},o_{1:t})$,遇到 finish 或 $T_{\max}$ 终止。第 10 步返回执行轨迹 $\tau$、指示符序列 $b_{1:T}$ 与数据 batch $\mathcal{B}(\tau)=\{(s_t,\tilde{a}_t)\}_{t=1}^T$。训练阶段把收集到的 $\mathcal{D}_i=\{(s_t,\tilde{a}_t)\}$ 装入 batch,用 cross-entropy 损失 $\mathcal{L}_i(\theta)=-\mathbb{E}_{(s_t,\tilde{a}_t)\sim\mathcal{D}_i}\sum_j \log\pi_\theta(\tilde{a}_{t,j}\mid s_t,\tilde{a}_{t,<j})$ 更新 $\theta$;为节省算力,共享前缀的 transitions 会被 pack 到同一条序列里并通过 loss mask 保证梯度与逐条更新等价。$\beta_i$ 与 $\rho_i$ 随迭代衰减,使得早期 teacher 主导、后期 student 主导。

技术新颖性

技术新颖性体现在三方面。其一,把 DAgger 从单步 IL 拓展到多轮、部分可观察的 LM agent setting,状态 $s_t\triangleq(x,a_{1:t-1},o_{1:t-1})$ 是不断增长的上下文,关键是 teacher 干预与状态收集都解耦到 turn 粒度,这点在原 DAgger 论文里没有处理过。其二,统一了 SFT/RL/OPD/DAgger 四种后训练方法的优化目标,论文把每种方法抽象为对 (context 分布 $p_s$、label 分布 $p_a$、重要性权重 $w(s,a)$) 的不同选择,得出表 2 的精确映射——这种「用同一损失分解」的观点是本文相对 [2, 22, 49] 的概念贡献。其三,把 Imitation Learning 的混合 rollout 与黑盒 LLM teacher 兼容,无需 teacher 暴露 logits,因此可以直接调用 Gemini/GPT/Claude 等闭源模型作为 $\pi_e$;在 OPD 必须拿到 teacher logits 的限制下,这是一个相当实用的工程突破。

实验结果

实验在 Qwen3-4B-Instruct-2507 与 Qwen3-8B 两个 student 规模、Qwen3-Coder-30B-A3B-Instruct 作 teacher、OpenHands 作 scaffold 的统一条件下对比 SFT、GRPO、OPD 与本文 DAgger/AggreVaTe-style。表 3 的主结果:4B student 上 DAgger-style 取得 SWE-Gym Holdout 17.0% / SWE-Bench Verified 27.3%,相对最强非 DAgger 基线 OPD(16.0% / 23.4%)分别 +1.0 与 +3.9 个百分点;AggreVaTe-style 为 16.0% / 24.5%。8B 规模差距更明显:DAgger-style 19.0% / 29.8%,相对 OPD(16.0% / 26.2%)提升 +3.0 与 +3.6;AggreVaTe-style 17.0% / 27.3%。baseline 这一侧,base model 4B 仅 5.0% / 11.2%,GRPO 几乎不动(8.0% / 11.6%),SFT 跳到 15.0% / 22.9%,OPD 再加 1.0 / 0.5 个点,DAgger-style 再补 1.0 / 3.9 个点。8B 的 base 也只有 2.0% / 7.7%,GRPO 同样几乎无效,验证了「长 horizon 任务下稀疏 RL 信用分配崩塌」这一论断。横向对比已发布系统:4B DAgger 27.3% 比 SkyRL-Agent-8B-v0 的 9.4% 高 17.9 个点,超过 7B 规模最强的 R2E-Gym-7B-Agent(19.0%)8.3 个点;8B DAgger 29.8% 比 SWE-Gym-32B(20.6%)高 9.2 个点,与 R2E-Gym-32B-Agent(34.4%)和 SWE-Dev-32B(36.6%)分别只差 4.6 和 6.8 个点,意味着 8B 模型靠算法就能逼近 32B 系统的水平。Scaling(图 1):在 4B 上把有效样本从 ~3K 扩到 ~8K,DAgger-style 从 12% / 20% 升到 17% / 26%,单调上升;SFT 在 SWE-Bench Verified-100 上从 20% 峰值回落到 19%,出现反常掉点,进一步佐证其协变量偏移后期恶化。协变量偏移(图 2)方面,4B student 在自身 rollout 上 $\mathbb{E}_{c\sim\hat d^{\pi_\theta}}[D_{\mathrm{KL}}(\pi_\theta\|\pi_e)]$,SFT 在 8K 样本时反弹到 0.126,DAgger 与 AggreVaTe 稳定在 0.10,相对 SFT 减小约 20%;在 3K 样本时 OPD 还在 0.126,本文方法已接近 0.10,验证了 teacher 接管带来的早期稳定。失败模式分析(表 4):DAgger-style 把语法/运行时错误率从 SFT 的 20.3% 压到 15.9%,把 no-submission 中的重复循环率从 OPD 的 44.3% 压到 22.7%,而「提交但未通过」的成功 patch 占比 64.4% 是各方法中最高的;其剩余失败主要来自 context overflow(57.5%),指向长上下文容量而非行为策略本身的问题。

Comparison of post-training recipes for multi-turn LM agents
Table 1: Comparison of post-training recipes for multi-turn LM agents
Unified viewpoint of post-training methods
Table 2: Unified viewpoint of post-training methods
Main results on SWE-Gym Holdout and SWE-Bench Verified
Table 3: Main results on SWE-Gym Holdout and SWE-Bench Verified
Qualitative failure analysis on SWE-bench Verified
Table 4: Qualitative failure analysis on SWE-bench Verified
查看结构化数据
任务指标本文基线提升
SWE-Gym Holdout (100 instances) Task Resolution Rate DAgger-style 4B: 17.0% / 8B: 19.0%; AggreVaTe-style 4B: 16.0% / 8B: 17.0% SFT 4B: 15.0% / 8B: 12.0%; OPD 4B: 16.0% / 8B: 16.0%; GRPO 4B: 8.0% / 8B: 4.0%; Base 4B: 5.0% / 8B: 2.0% DAgger-style 相对最强非 DAgger 基线 OPD 在 4B +1.0 点、8B +3.0 点;AggreVaTe-style 同样优于 SFT 与 GRPO
SWE-Bench Verified (466 instances, 4B student) Task Resolution Rate DAgger-style: 27.3%; AggreVaTe-style: 24.5% SFT: 22.9%; OPD: 23.4%; GRPO: 11.6%; Base Qwen3-4B: 11.2% DAgger-style 相对 OPD +3.9 点,相对 SFT +4.4 点,相对 base +16.1 点
SWE-Bench Verified (466 instances, 8B student) Task Resolution Rate DAgger-style: 29.8%; AggreVaTe-style: 27.3% SFT: 23.4%; OPD: 26.2%; GRPO: 8.2%; Base Qwen3-8B: 7.7% DAgger-style 相对 OPD +3.6 点,相对 SFT +6.4 点,相对 base +22.1 点
4B DAgger-style vs. 已发布 7-8B SWE-Agent SWE-Bench Verified Resolution Rate 4B DAgger-style: 27.3% SkyRL-Agent-8B-v0: 9.4%; SkyRL-Agent-7B-v0: 14.6%; SWE-smith-LM-7B: 15.2%; R2E-Gym-7B-Agent: 19.0%; SWE-Gym-7B: 10.6% 相对 SkyRL-Agent-8B-v0 +17.9 点;相对 7B 区间最强 R2E-Gym-7B-Agent +8.3 点
8B DAgger-style vs. 已发布 32B SWE-Agent SWE-Bench Verified Resolution Rate 8B DAgger-style: 29.8% SWE-Gym-32B: 20.6%; R2E-Gym-32B-Agent: 34.4%; SWE-Dev-32B: 36.6% 比 SWE-Gym-32B 高 9.2 点;与 R2E-Gym-32B-Agent / SWE-Dev-32B 的差距分别缩到 4.6 / 6.8 点
协变量偏移 (100 SWE-Gym 任务, 4B student, ~8K 有效样本) Reverse KL $\mathbb{E}_{c\sim\hat d^{\pi_\theta}}[D_{\mathrm{KL}}(\pi_\theta\|\pi_e)]$ DAgger/AggreVaTe-style 稳定在 ~0.10 SFT 从 0.10 反弹到 ~0.126;OPD 在 3K 样本时仍 ~0.126 相对 SFT 减少约 20%,且没有后期反弹

局限与改进

作者明确提到三类边界。其一,SWE-Bench Verified 中有 34 个 Matplotlib 实例在作者 Docker 环境里无法构建,所以实际评估只跑了 466/500,作者估算对总分影响不到 1%。其二,DAgger-style 在 4B 上的 SWE-Bench Verified 绝对值虽然 27.3%,但与同 batch 内的 8B DAgger-style(29.8%)差距只有 2.5 个点——说明 4B 与 8B 的天花板可能更多受 SWE-Bench 任务难度分布限制,模型规模本身的边际收益在缩小。其三,剩余失败的 57.5% 都是 context overflow,意味着 teacher 接管确实教会了 student 怎么定位和编辑,但 student 自身的 long-context 容量跟不上 4B/8B 的位置编码与注意力预算。作者没讨论但同样值得注意的是:DAgger-style 把 teacher 调用次数翻倍(每步都额外查一次 $\pi_e$),算力上比纯 SFT 贵不少;同时 paper 主要在 SWE 上验证,方法对 Web browsing、AI research 等其他长 horizon 智能体场景的迁移性尚未测试;OPD 文中被反超,但作者没有做 DAgger 与 OPD 的组合(例如用 reverse-KL 加 teacher 标签)这一更直接的对照实验。

独立分析的弱点

独立观察到的三个弱点。第一个是 teacher 调用成本被低估。DAgger-style 每个 turn 无条件查一次 $\pi_e$ 拿 $\tilde{a}_t$,这意味着 teacher 推理次数近似翻倍(rollout 一次 + 标注一次),在用 Qwen3-30B-A3B 这种 MoE teacher 时,开销可能接近 student 训练本身;论文没有给出 wall-clock 训练时间或 cost-per-improvement 的对比。第二个是 teacher 切换概率 $\beta_i$ 的调度是 hand-tuned(每个 iteration 衰减一个值),并没有给出自动 schedule 的方案——这与 RL 里的 PPO clip ratio、OPD 里的蒸馏温度一样是经验敏感的 knob,但论文没做 ablation。第三个是评估单一。论文只报告了任务分辨率(pass@1 greedy)和一个 reverse KL 指标,没有覆盖 token-level 重复率、平均 trajectory 长度、API cost、人类评估等更细粒度的可用性指标;同时 SWE-Bench Verified-100 与 full Verified 之间「密切跟踪」的判断只来自一句文字,并没有给出相关系数或表格佐证。改进方向:对 $\beta_i$ schedule 做自动调节(可考虑用 student 与 teacher 之间的 reverse KL 闭环反馈来调),并把 DAgger 与 reverse-KL teacher label 显式组合(即同时做 SFT-on-student-state 与 KL-on-student-state 的 hybrid loss),可能在 GRPO 与 OPD 之间再榨出几个点。

未来方向

作者直接指出的方向包括:把 turn-level 与 trajectory-level 两种 rollout 策略自适应地结合(例如用 reverse KL 估计当前 student 偏离 teacher 的程度,超过阈值再插入 teacher 介入),并探索 decay schedule 的自动化。从结果可延伸的方向有:(1) 把 DAgger 框架搬到多模态/工具更广的 agent benchmark(如 WebArena、GAIA、AI Research Agent 任务),验证算法是否对非 SWE 类的 long horizon 任务同样有效;(2) 研究 teacher 的迭代升级——用当前 DAgger 训练出的 student 充当下一轮 teacher,观察性能是否还能继续抬升,对应经典 DAgger 的 DAGGER 风格迭代是否在 LLM 上 self-play 出新东西;(3) 在 DAgger-style 训练里加入一道 KL 约束(对应统一公式 14 的 $\lambda\Omega_i(\theta)$)防止 student 在 teacher 标签上「过度自信」,理论上能缓解论文提到的 context overflow 问题;(4) 把 prompt/context 长度作为可学习的预算管理,让 student 自己学会提前结束或切分。

复现评估

复现难度中等偏高。论文没有放出官方代码或 checkpoint 链接(arXiv 2605.12913v1 截至提交未挂 GitHub),但实验栈描述相当充分:student 用 Qwen3-4B-Instruct-2507 与 Qwen3-8B(HuggingFace 公开权重)、teacher 用 Qwen3-Coder-30B-A3B-Instruct(同样公开)、scaffold 用 OpenHands、训练数据 SWE-Gym 公开、评估 SWE-Bench Verified 公开。Appendix E–G 提到 rollout schedule、采样参数、context limit、chat template canonicalization 等实现细节,提供了「同 scaffold + 同数据下对比 SFT/GRPO/OPD」的复现路径。主要障碍在于算力:2,338 任务 + ~8K 有效样本 + 30B-A3B teacher 持续标注,保守估计需要 4B student 跑 200+ GPU·小时、8B 翻倍;而且要复现 reverse KL 评估需要 student 在自己 rollout 上跑 teacher 推理一遍,又是一笔 teacher 成本。整体而言,方法逻辑透明、数据公开,但完整复现需要非平凡的算力预算与工程实现。