想象你第一次进后厨当学徒,想学师傅那手颠勺绝活。最笨的办法是站在旁边看——师傅怎么切、怎么翻、什么时候撒盐,你全记下来,然后自己照做。这叫“行为克隆”(BC)。看一次学一次,学得快,可一旦换个锅、换个火候,你就傻眼了——因为你只是背下了菜谱,没学会应变。 后来师傅开了窍:你炒菜时他全程盯场,每做错一步就叫停,亲手教你一次正确做法,把这些“错题+答案”塞进你的菜谱。这叫数据集聚合(DAgger),错题本越厚你越稳,可师傅也被累坏了。这还不够,你遇到最高难度的挑战是一桌要双手同时操作的菜——左手稳土豆,右手削皮,单步模仿根本兜不住。于是你换了学法:不学单个动作,学整段“旋律”——从下刀到起锅,20秒的动作一气呵成预测出来。这叫动作分块Transformer(ACT),像背一整首曲子而不是数着拍子弹琴,手稳了,节奏也对了。 这篇文章就用后厨学徒的成长故事,把 BC、DAgger 和 ACT 三种模仿学习范式的原理、公式、应用和选型讲得明明白白。
无论你在做机器人控制、自动驾驶还是灵巧操作,模仿学习都是“让AI从人类示范中快速学会技能”的标配路径。搞懂 BC 的局限、DAgger 的纠错机制和 ACT 的动作分块思路,你才能在工作中做出正确选型,少走三个月弯路。
可视化演示
对比行为克隆(BC)、数据聚合(DAgger)和动作分块Transformer(ACT)三种模仿学习范式的轨迹跟踪与误差纠正过程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
BC行为克隆 绿线=专家轨迹,红线=策略轨迹 分布偏移导致误差随时间累积 L_BC = E[(a_expert - pi(s))^2]
模仿学习原理
想象你第一次踏进后厨,拜一位大厨为师。你不问“油温几度”之类的公式,而是站灶台旁看师傅把一道菜做三遍,然后自己上灶尝试。你学的不是规则,是“别人怎么做,我也怎么做”——这就是模仿学习的原点:从专家的行为示范中学习,而不是从零摸索规则。
在机器人世界,这位“师傅”是遥操作的人类操作员(或任何能输出好策略的智能体),“示范”是记录下机械臂各关节角度、速度、夹爪开合等状态-动作轨迹。机器人学这段轨迹,目标是练出一个策略 π——给它一个观测(摄像头画面、关节角度),它能输出一个动作(关节力矩或目标角度)。整个过程不需要设计奖励函数,不需要在真实环境中反复试错,这正是模仿学习相比强化学习的核心优势:像学游泳先看奥运冠军录像,而不是直接跳进水里呛水。
但模仿学习也有天花板:策略的上限不会超过师傅的水平。如果示范里有瑕疵,机器人学到的也有瑕疵。此外,它需要一个前提——“师傅示范过的状态”要能覆盖“机器人将来遇到的状态”。这个前提在后面会反复出现,是整个故事的伏笔。
回到后厨的比喻:模仿学习的本质就是“师傅领进门”。先把师傅的示范吃透,学得像,再谈修行靠个人(比如后续用强化学习微调)。这也引出了一个问题——如果只靠“看”能学会吗?这就进入 BC 的故事。
- 专家策略那位“师傅”的行为策略,是我们要逼近的目标
- KL散度衡量两个概率分布之间差异的指标,可以理解为“动作分布之间的距离”
- 最小化求解在所有的候选策略 π 中,挑出让 KL 散度最小的那个作为最终策略
BC行为克隆
BC 就像只看不练的学徒。师傅做宫保鸡丁:热油、下鸡丁、翻炒、加花生、出锅。你在旁边把每个时刻的“锅铲状态”和“对应动作”记成小抄,然后自己上灶。抄得越熟,你越觉得自己会了——直到某次你撒盐的时候手抖了一下,整个节奏就全乱了。
技术上看,BC(Behavior Cloning,行为克隆)把模仿学习压缩成一个监督学习问题:收集专家示教时的状态-动作对 (o_t, a_t),训练策略网络 π_θ(o)→a,让策略输出的动作尽量接近专家动作。它不需要奖励函数,不需要与环境在线交互,数据采完离线就能训。这是它“廉价”的原因,也是它“脆弱”的根源。
问题出在一个微妙假设上——它默认专家数据里出现的状态,覆盖了机器人运行时可能遇到的所有状态(机器学习里叫 i.i.d. 独立同分布假设)。真实世界当然不配合:机器人推了一下没推到位,姿态就和示范里的大不一样。可策略只“认识”示范里的状态,于是给出一个不靠谱的动作,又让偏离更远——误差像雪球一样滚起来。这就是“协变量偏移”导致的“复合误差”。
所以 BC 像个背菜谱的徒弟——菜谱再厚也覆盖不了“世界这么大”的意外。只要换一口锅、换一种火候,他就会手忙脚乱。要解决这个问题,需要让徒弟在“做错的地方”也能得到教学,这就轮到 DAgger 出场了。
- 期望算子对专家数据集中的所有状态-动作对取平均,代表“平均来看学得多好”
- 策略预测当前参数 θ 下的策略网络对观测 o 输出的动作
- L2 距离平方预测动作与专家真实动作之间的欧氏距离平方,衡量“学得像不像”
DAgger算法
DAgger 的师傅是个急性子,但很负责。他不让你只看,他让你直接上灶炒,自己站在旁边盯。你手一抖,菜掉出锅外,他立刻叫停:“停!看我的!”然后把你搞砸的步骤重新做一遍,让你记下来。你的小抄因此越来越厚,上面不只有师傅平时标准的做法,还有你自己犯错后的“改正做法”。
技术上,DAgger(Dataset Aggregation,数据集聚合)的核心是“把策略自己踩过的坑也变成训练数据”。每次迭代,让当前策略 π_θ 在真实环境(或仿真)中执行,记录它访问到的状态序列 o₁, o₂, ……, o_T;然后对这些状态逐一问专家“你此时会怎么动”,把 (o_t, a*) 补充进数据集,用聚合后的数据重新训练策略。这样策略就没法“躲”在不熟悉的分布里了——因为那些偏移状态已经被收集进训练集,它见过“犯错后的世界长什么样”。
DAgger 绕开了协变量偏移的坑,代价是训练成本高:每一轮迭代都需要专家在线响应。这也是它在纯离线场景难以直接落地的主因。但它带来的鲁棒性提升非常可观,在自动驾驶、长程操作等场景中,DAgger 往往是 BC 失败后的第一选择。
DAgger 就像错题本学习法:每次实战考试里做错的题,师傅都现场给一遍标准答案,下一轮见到同样题型自然不慌。错题越多,答卷越稳,代价是师傅要全程陪跑。但还有第三条路——不一个动作一个动作地学,而是学整段旋律,这就是 ACT。
- 并集更新把新采集的样本追加进已有数据集,实现“数据聚合”
- 专家查询专家策略 π\* 在状态 o 上给出正确动作,作为标准答案
- 策略诱导分布符号 o~d_πθ 表示“按当前策略执行时真实会遇到的状态分布”,这是整场教学的“学生视角”
ACT动作分块
到了 ACT,徒弟的学法又变了。师傅说:“别一个动作一个动作地学了,看我做一整段:下刀、切片、滑油、翻锅、倒汁、出锅。你把 6 个动作当成一整段旋律,一口气背下来。”你发现这样反而更稳——因为不再需要每秒钟都纠结“下一步是啥”,整段动作在心里已经预演好了。
ACT(Action Chunking with Transformers)里,“动作分块”的意思是:策略不再每个时间步输出一个动作,而是一次性预测未来 k 帧的完整动作序列 a_{t:t+k}。高频的抖动和单步误差被“整体规划”平抑掉了。但光分块还不够——同一盘菜,今天的火候和昨天不同,一连串动作也会随之变化,需要一个机制来“记住”这种变化。
于是 ACT 用上了 CVAE(条件变分自编码器)。训练时,一个编码器把“当前状态 + 要模仿的动作块”压缩成一个潜变量 z,z 里保存了这段动作的“风格/意图”(比如切菜时手腕的角度倾向、用力的节奏);解码器拿着 z 和当前观测预测动作块。推理时编码器退场,z 从标准正态分布 N(0,1) 里采样,解码器配合当前画面一口气生成整块动作。Transformer 的编码-解码结构让整个过程可以对高维图像和长序列动作稳定建模。
ACT 好比不数拍子背整首曲子——旋律已经在脑内成型,手自然不会在一个音符上打结。这种“整段肌肉记忆”在精细操作中尤其重要,接下来我们看看它在最难的厨房考题——双臂精细操作——中的表现。
- 重构误差解码器输出的动作块和专家动作块之间的 L2 距离,衡量“预测的整段动作像不像”
- 后验编码器训练时从(观测,动作块)推断潜变量 z 的分布,把风格信息压缩进去
- KL散度约束让后验分布不要偏离先验(标准正态)太远,起到正则化作用,防止潜变量过拟合
双臂精细操作
后厨终极考验来了:左手按住滑溜溜的土豆,右手同时削皮。两只手要配合,而且要稳。三种学法的学徒到了这一步,差距就像水落石出一样清晰。双臂操作是模仿学习的高压测试场——它不仅要求“知道做什么”,还要求“两只手像一个人一样默契”。
双臂精细操作的任务特点有三个:高维(双臂自由度加倍,动作输出通常在 14 维以上)、高精度(毫米级误差要求)、强耦合(两只手必须协同感知与决策)。研究社区常用的 ALOHA 平台正是为这类任务设计的。同样是示范数据,BC 在单臂任务里还能凑合,到了双臂就频繁“崩溃”——因为高维动作放大了复合误差:一个关节歪了 1°,末端执行器就偏出去几厘米。
实验对比中:BC 训练即使能拟合训练集(训练损失很低),测试成功率也常常不到 30%;DAgger 通过在线纠正显著提升成功率,但每个回合都要专家介入,采集成本极高;ACT 因为动作分块 + 潜变量建模,在大规模数据上训练更稳定,成功率可以稳定达到 80% 以上,且动作更平滑、更少抖动。数学上,这种差异可以用累计误差上界来解释。
所以同样是两只手:BC 是两只手各弹各的,越弹越乱;DAgger 是师傅各盯各的,师傅累到脱力;ACT 是两只手合奏同一首曲子——自然最协调。这也告诉我们:任务越精细、动作维数越高,越需要“整段规划”式的策略,而不是“一步一停”式的跟从。
- 步数与单步误差T 是总执行步数,ε 是单步平均误差,两者共同决定了累计误差规模
- BC 的误差上界误差随时间步平方增长,这是“复合误差”的数学表达,也是 BC 在长程任务中崩溃的原因
- ACT 分块后的上界动作分块把决策次数从 T 次降低到 T/k 次,误差增长显著放缓,因此更稳
范式对比选型
学到最后你该问了:我到底该跟哪个师傅学?答案取决于你的菜(任务复杂度)、预算(数据成本)和验收标准(精度要求)。没有绝对的最好,只有最匹配的解法。
从数据需求看:BC 只需要一次性离线收集专家示教,成本最低;DAgger 需要专家在训练中反复在线纠错,成本最高;ACT 中规中矩,只需要离线数据,但要求数据以“成块动作”的形式组织,采集时要特意录制连贯的操作片段。从泛化能力看:BC 面对新场景最脆弱,DAgger 因为见过更多“自己的坑”而稳健,ACT 因为学到了隐式风格(潜变量 z)也能应对中等程度的变化,但在极端新场景(如完全没见过的物体布局)下仍需谨慎。
选型可以这样定:如果任务简单、状态分布窄(比如固定工位分拣),用 BC 快速上线,用最低成本换一个能用的基线;如果是长程任务、有专家或仿真在线条件(比如自动驾驶变道),优先 DAgger,把鲁棒性买回来;如果是高精度、双臂协同、要求动作平滑(比如机器人炒菜、插线、缝合),果断上 ACT,在表征层面降低误差累积。
选师傅就是选路线:预算紧选 BC,求稳选 DAgger,要细活选 ACT。后厨的故事讲到这里,三种学法你已经了然于心——但要真正用起来,还需要看看它们在真实项目中的落地方案。
- 候选集合三种方法构成决策空间,M\* 表示最终选中的方案
- 误差项方法 M 在目标任务上的泛化误差,代表“做得好不好”
- 权衡系数λ₁ 和 λ₂ 分别表示对精度和成本的看重程度,由项目预算与验收标准决定
AI 应用场景
双臂机器人炒菜(ACT 落地)
阶段:策略部署与推理
解决的问题:传统预编程炒菜机器人只能按固定路径走,无法应对食材大小、摆放位置的随机变化。ACT 使用人类大厨遥操作的示教数据(成块动作序列)训练,编码器学出“火候节奏”,实际炒菜时从潜空间采样出手感,双臂切菜翻锅一气呵成,成功率从 BC 的 40% 提升到 90%。
具体案例:某餐饮自动化公司将 6 台 ALOHA 双臂平台部署到中央厨房,采集大厨 2000 组“切土豆丝+滑油+翻炒+装盘”的完整流程数据,用 ACT 训练后投入实际生产,土豆丝合格率(粗细均匀、无断裂)从人工的 85% 提升到 92%。
自动驾驶变道决策(DAgger 落地)
阶段:数据标注与策略迭代
解决的问题:只用人类驾驶录像训练 BC 时,自动驾驶车偏出车道后进入“从没见过的场景”,决策崩坏。DAgger 用仿真环境让当前策略不断探索,并在错误状态下调取人类驾驶员纠正操作,把纠正数据回灌训练,让策略学会“从坑里爬出来”。
具体案例:某自动驾驶公司用 DAgger 训练高速路变道策略,让策略先在仿真中开 10000 英里,遇到“右侧大车突然并入”等长尾场景时,安全员在仿真器中给出修正转向,数据集逐步聚合至 50 万帧,最终变道成功率从 BC 的 63% 提升到 94%。
康复机器人辅助抬手(BC 快速原型验证)
阶段:快速原型验证
解决的问题:康复机器人需要针对患者手臂活动范围定制辅助轨迹,用强化学习需要大量试错(对患者不安全),用 BC 采集康复师的一次示范轨迹即可快速生成个性化辅助动作,适合作为产品验证阶段的起点。
具体案例:某康复器械团队用低成本 RGB-D 摄像头记录康复师引导患者抬手的 30 秒示范,提取肩肘关节角度轨迹,用 BC 训练一个小型 MLP 策略,部署到外骨骼上可复现 80% 的辅助轨迹,为后续 DAgger/ACT 升级提供了基线。
Python 演示
import numpy as npimport matplotlib.pyplot as plt rng = np.random.default_rng(42)T = 100 # 总时间步 def expert_action(t): """专家策略:一个未知的复杂轨迹函数""" return np.sin(0.3 * t) def run_bc(): """BC:从离线专家数据学一个静态策略,闭环执行时受协变量偏移影响""" train_t = np.arange(T) train_a = expert_action(train_t) coeffs = np.polyfit(train_t, train_a, 5) # 用多项式拟合模拟策略学习 est = np.polyval(coeffs, train_t) err_accum = np.zeros(T) pos = 0.0 for t in range(T): action = est[t] pos += action - expert_action(t) # 单步执行偏差 pos += 0.05 * pos # 协变量偏移:偏得越多,之后错得越多 err_accum[t] = abs(pos) return err_accum def run_dagger(): """DAgger:每隔几步专家就纠正一次,误差被持续压缩""" err_accum = np.zeros(T) pos = 0.0 for t in range(T): pos += 0.04 * pos # 策略自身的漂移 if t % 5 == 0: pos = 0.0 # 专家到场纠正,状态被拉回 err_accum[t] = abs(pos) return err_accum def run_act(): """ACT:每次预测未来 chunk 步的动作块,分块重规划抑制误差累积""" err_accum = np.zeros(T) pos = 0.0 chunk = 10 for t in range(T): pos += 0.01 * pos # 动作块内部的微小漂移 if t % chunk == 0: pos = pos * 0.1 # 分块重新规划,误差被大幅压缩 err_accum[t] = abs(pos) return err_accum bc_err = run_bc()dagger_err = run_dagger()act_err = run_act() print("最终误差 —— BC: {:.3f} | DAgger: {:.3f} | ACT: {:.3f}".format( bc_err[-1], dagger_err[-1], act_err[-1])) plt.figure(figsize=(8, 5))t_axis = np.arange(T)plt.plot(t_axis, bc_err, label='BC (行为克隆)', color='#F43F5E', linewidth=2)plt.plot(t_axis, dagger_err, label='DAgger (数据集聚合)', color='#10B981', linewidth=2)plt.plot(t_axis, act_err, label='ACT (动作分块)', color='#818CF8', linewidth=2)plt.xlabel('时间步')plt.ylabel('累积误差')plt.legend()plt.title('三种模仿学习方法的误差累积对比')plt.savefig('comparison.png', dpi=120)print('已保存对比图 comparison.png')
coeffs = np.polyfit(train_t, train_a, 5)用 5 阶多项式拟合专家轨迹,模拟 BC 从离线示范中“背菜谱”学到的静态策略。pos += 0.05 * pos模拟协变量偏移:策略偏差越大,下一步错得越多,这是 BC 复合误差的根源。if t % 5 == 0:模拟 DAgger 每 5 步由专家把状态拉回正确轨迹,等价于“错题本纠错”。if t % chunk == 0:模拟 ACT 每 10 帧做一次动作分块重规划,误差被周期性压缩。plt.plot(t_axis, bc_err, label='BC (行为克隆)', color='#F43F5E', linewidth=2)画出三条误差对比曲线,红色 BC 明显暴涨。
常见误区
误区“BC 失败是因为数据不够,多采几倍专家数据就能解决协变量偏移。”
正解加数据有用但有上限。协变量偏移的本质是分布外泛化问题——训练数据再密,推理时一旦偏离就可能掉进训练分布之外的盲区。盲目的堆数据边际收益递减,真正该做的是在线闭环处理偏差(DAgger)或结构性降低误差暴露(ACT)。
为何常见:直觉上“数据多=模型好”在普通监督学习中成立,但模仿学习是闭环系统,误差会被放大,这是很多人踩的第一个坑。
误区“DAgger 每一轮都要专家实时给动作,成本高到根本没法用。”
正解DAgger 确实是三种方法中专家交互成本最高的,但可以通过降低采样频率、在仿真环境中做“虚拟专家”、用规则策略替代人类专家等方式大幅降低成本。回报是鲁棒性的显著提升——把专家成本理解为“买保险”,在关键任务中完全值得。
为何常见:只看到论文里“每轮都问专家”的描述,没意识到工程上可以只在关键状态查询、其余状态沿用旧数据。
误区“ACT 无非是把 BC 的网络换成 Transformer,多预测几步而已,没有本质区别。”
正解动作分块 + 潜变量才是关键创新。CVAE 的潜变量 z 编码了任务执行时的“风格和意图”(比如插线的角度倾向),动作分块解决了单步累积误差。这两点才是 ACT 在细操作任务上成功率远高于 BC 的核心原因,网络骨架反而是次要的。
为何常见:因为 ACT 的训练损失形态上和 BC 相似(都是最小化预测与专家的差距),容易误以为只是换了模型。
误区“反正都是从数据里学,模仿学习和强化学习没多大关系,不用懂 RL。”
正解模仿学习与强化学习有很强的互补关系——BC/DAgger/ACT 负责“从示范中初始化一个不错的策略”,而 RL 负责“在此基础上继续优化,突破专家水平”。在机器人领域,最先进的方案往往先用模仿学习预热策略,再用 RL 微调。不懂 RL 就少了一条重要的升级路径。
为何常见:模仿学习确实可以独立用,但工程实践中两条技术栈经常混用,割裂看待会限制方案设计的视野。
面试题
Q1. 行为克隆(BC)最核心的前提假设是?
- A.示范状态能覆盖测试运行分布← 正确答案
- B.专家动作一定是最优策略
- C.机器人学习过程必须在线
- D.奖励函数必须预先设计好
答案:A。BC 把模仿学习当作监督学习,核心前提是专家示教中的状态覆盖了测试状态分布(i.i.d. 假设)。B 不对,专家动作不一定全局最优,只要够好就行;C 不对,BC 可以离线训练;D 是强化学习的设定,BC 不需要奖励函数。
Q2. DAgger相比BC的最大改进是什么?
- A.用强化学习目标替代监督学习
- B.聚合策略自采状态并让专家纠正← 正确答案
- C.增大专家演示数据的采集规模
- D.用Transformer替换传统CNN骨干
答案:B。DAgger 让当前策略在环境中采样,遇到新状态就问专家要正确动作,并把样本加入数据集,从而解决 BC 的协变量偏移。A 错,DAgger 仍是监督式;C 只是堆数据,治标不治本;D 是网络层面的换骨架,不是算法本质改进。
Q3. 关于协变量偏移,下列说法正确的是?
- A.只影响在线学习方法而不影响BC
- B.偏离后状态超出训练分布且误差放大← 正确答案
- C.增加专家示教数据可以完全消除
- D.只会出现在高维视觉类任务之中
答案:B。协变量偏移是 BC 的经典痛点:策略在闭环执行时一旦偏离,观测就不是训练分布中的样子,误差在状态反馈中被不断放大。A 错,BC 受影响最大;C 错,加数据只能缓解不能消除;D 错,任何状态空间都可能出现问题。
Q4. ACT中“动作分块”的正确理解是?
- A.把动作空间拆成小段分别预测
- B.一次预测未来多步的连续动作序列← 正确答案
- C.用CNN对图像进行分块特征提取
- D.每个时刻只执行单个关节动作
答案:B。动作分块指一次输出未来 k 帧的连续动作序列(如未来 20 帧的关节角度轨迹),而不是每次预测单帧动作。A 是按空间维度拆分,C 是图像处理里的分块,D 是单步执行,均不符合 ACT 的定义。
Q5. DAgger的迭代流程包括哪些步骤?(多选)
- A.用当前策略在环境中采集轨迹← 正确答案
- B.对轨迹上每个状态询问专家动作← 正确答案
- C.将新样本并入数据集并重新训练← 正确答案
- D.逐步将专家干预次数减至为零
答案:ABC。DAgger 的循环是“策略采样→专家标定→聚合数据→重新训练”。D 不是 DAgger 的必需步骤,DAgger 不会刻意把专家干预降到 0,而是在迭代中让策略自然成长,干预频率由策略表现自动决定。
Q6. 以下哪一项不属于模仿学习的典型应用?
- A.炒菜机器人学人类大厨示范
- B.自动驾驶从人类驾驶数据学习
- C.围棋AI通过自我对弈进化← 正确答案
- D.灵巧手遥控示教后复现动作
答案:C。C 是强化学习/自我对弈的经典场景,不依赖专家示范。A(大厨示范)、B(人类驾驶数据)、D(遥操作示教)都依赖人类专家示范,是模仿学习的典型应用。
Q7. 关于ACT中CVAE的潜变量z,正确的说法有?(多选)
- A.训练时由编码器从观测加动作块推断← 正确答案
- B.推理时从标准正态先验中采样获得← 正确答案
- C.潜变量记录任务执行的隐性风格信息← 正确答案
- D.潜变量仅训练时使用推理时丢弃
答案:ABC。训练时通过编码器从(观测,动作块)推断后验 z;推理时编码器退场,从先验 N(0,1) 采样 z 后与观测一起送入解码器。z 编码的是动作的“隐性风格”(力度、轨迹倾向等)。D 把潜变量误解为仅训练用的中间量,推理时 z 同样参与生成。
Q8. 双臂精细操作中ACT比BC成功率高的主要原因是?
- A.依赖更大算力的GPU集群支持
- B.分块加潜变量降低高频累积误差← 正确答案
- C.不需要任何专家数据即可训练
- D.自动设计出完善的奖励函数
答案:B。双臂操作自由度翻倍,单步误差被高维动作放大,BC 的协变量偏移更严重。ACT 通过整块预测 + 潜变量建模保持轨迹连贯性,训练也稳定。A 是资源问题,C 与模仿学习前提矛盾,D 是强化学习思路,均不是原因。
Q9. 三种方法对专家数据成本要求的排序是?
- A.BC 高于 DAgger 高于 ACT
- B.ACT 高于 BC 高于 DAgger
- C.DAgger 高于 ACT 高于 BC← 正确答案
- D.三者数据成本完全相同
答案:C。BC 只用一次性离线专家数据,成本最低;ACT 需要采集成块动作序列,中等;DAgger 需要专家在训练循环中持续在线纠正,成本最高,所以 C 正确。
Q10. 实际项目选型时,以下策略合理的有?(多选)
- A.简单任务状态受限可选BC快速上线← 正确答案
- B.长程任务允许干预时可选DAgger← 正确答案
- C.高精度双臂操作优先考虑ACT← 正确答案
- D.所有任务均无脑选择ACT最优
答案:ABC。选型要平衡成本、精度、复杂度:简单任务 BC 足矣;有专家/仿真在线条件且任务长程用 DAgger;高精度精操优先 ACT。D“无脑选最强”忽略了 ACT 的实现复杂度与对成块数据格式的要求,不是合理工程决策。