想象一下老孙是川菜馆的大师傅,徒弟小陈想学会他的招牌回锅肉。第一种学法:小陈只看师傅做菜的录像,反复照着练,可自己真正掌勺时,肉片下锅的位置、油温、翻勺时机都和录像里不一样,顿时手足无措——这是只看示范的行为克隆(BC)。第二种学法:小陈自己炒,师傅就站在旁边,一旦他炒“偏”了,师傅立刻在当下这个乱局里给他重新示范,他再把这些新场景记下来接着练——这是在线纠正的 DAgger。第三种学法:师傅教他“一口气记下接下来十秒的完整动作流”,下锅、翻炒、加酱、关火,像背广播体操一样成套输出——这是动作分块的 ACT。第四种学法最神奇:师傅让他在脑海里先凭空造出一团乱麻般的“废动作”,再一步步去芜存菁,直到一整套行云流水的炒菜轨迹浮现出来——这是扩散策略(Diffusion Policy)。从“照抄录像”到“由乱生序”,这就是模仿学习的进化之路。

岗位关联

对 AI 从业者而言,模仿学习是机器人进厂上岗的核心训练路径,掌握 BC/DAgger/ACT/Diffusion 的差异,才能在自动化项目里选对模型、驯服机器手。

目录
  1. 可视化演示
  2. 1. 模仿学习总览
  3. 2. 行为克隆BC
  4. 3. DAgger算法
  5. 4. ACT架构
  6. 5. Diffusion Policy
  7. 6. 方法与选型
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示BC/DAgger/ACT/Diffusion Policy四种模仿学习方法的原理流程、数据分布偏移应对和动作生成方式对比。切换模式探索模仿学习发展脉络。

本节配有交互动效(进入视口后自动加载,约 3KB)。

四种模仿学习方法流程 BC:专家演示→监督学习回归动作,简单但有分布偏移问题 DAgger:迭代式在线收集专家标签,ACT:动作分块预测,Diffusion:去噪生成 BC(supervised) → DAgger(online) → ACT(chunking) → Diffusion(generative) 四种方法代表了模仿学习的发展脉络

1. 模仿学习总览

川菜馆后厨里,徒弟学艺的本质只有一件事:把师傅的本事“搬”到自己身上。模仿学习的定义与此同构——机器人不去探索试错,而是从专家示范数据里把“状态到动作的映射”学出来。这套思路让机器人先学会像人一样操作,再谈优化和创新。

从技术脉络看,模仿学习走过一条清晰的进化之路。行为克隆(BC)用监督回归直接拟合示范数据,简单但脆弱;DAgger 引入在线交互,让策略自己探索时请专家纠偏;ACT 从“单步动作预测”升级为“动作块序列生成”,一举缓解累积误差;Diffusion Policy 则把动作生成放进扩散模型的去噪框架里,获得多峰、平滑、高维轨迹表达。这条路线暗合一个规律:表达力越强,对数据与算力的胃口也越大。

学习范式从“静态克隆”走向“动态适应”。如果说 BC 是“照抄录像”,DAgger 是“现场纠错”,ACT 是“背整套广播体操”,Diffusion 就是“在杂乱素材里悟出神韵”。四种范式并没有绝对优劣,只为不同落地场景准备了不同梯度的武器。

2. 行为克隆BC

小陈看师傅炒回锅肉的视频,一份录像他能盯三天。肉片怎么下锅、豆瓣酱什么时候放、火候怎么调,他都记下来了。可轮到自己掌勺,辣椒下锅时油温偏了、肉片位置偏了、锅铲起始角度也不对——他彻底卡壳。行为克隆(BC)就是这种“看录像学艺”:把专家示范收集成数据集,训练一个策略网络直接回归每个状态下的动作。

BC 的原理假设是“训练分布等于执行分布”。它学习的是示范数据里专家行为模式的回归映射,核心做法是监督回归:对每个示范状态预测动作,最小化与专家动作的差异。数据需求上,BC 只需要离线静态数据集,不需要在线交互,部署成本极低。

但问题恰恰藏在它的假设里。专家录制视频时,肉和油都处于“理想状态”;可机器人真正执行时,任何小误差都会让状态偏离数据集覆盖范围,一步偏、步步偏,最终和专家手艺天差地别——这就是分布偏移。示意图里红色轨迹越走越偏,正是 BC 在闭环执行中的宿命。

θ∗=arg⁡min⁡θ  E(s,a)∼Ddemo[∥πθ(s)−a∥2]\displaystyle \theta^{*} = \arg\min_{\theta} \; \mathbb{E}_{(\mathbf{s}, \mathbf{a}) \sim \mathcal{D}_{\text{demo}}} \left[ \left\| \pi_{\theta}(\mathbf{s}) - \mathbf{a} \right\|^{2} \right]

1. 策略网络:$\pi_{\theta}(\mathbf{s})$ 是待训练的策略,输入状态 $\mathbf{s}$ 输出预测动作 $\hat{\mathbf{a}}$

πθ(s)=a^\pi_{\theta}(\mathbf{s}) = \hat{\mathbf{a}}

2. 专家动作:$\mathbf{a}$ 是专家在同样状态下的真实动作,取自示范轨迹

a∼π∗(⋅∣s)\mathbf{a} \sim \pi^{*}(\cdot \mid \mathbf{s})

3. 示范数据集:$\mathcal{D}_{\text{demo}}$ 包含大量成对的“状态-专家动作”样本

Ddemo={(s1,a1),(s2,a2),…,(sn,an)}\mathcal{D}_{\text{demo}} = \{ (\mathbf{s}_1, \mathbf{a}_1), (\mathbf{s}_2, \mathbf{a}_2), \dots, (\mathbf{s}_n, \mathbf{a}_n) \}

4. 最小化目标:$\arg\min_{\theta}$ 表示寻找让误差平方均值最小的参数,本质是最小二乘回归

θ∗=arg⁡min⁡θ  E[∥a^−a∥2]\theta^{*} = \arg\min_{\theta} \; \mathbb{E}\left[ \| \hat{\mathbf{a}} - \mathbf{a} \|^{2} \right]

回扣比喻:小陈如果永远只在“理想状态”下练过,那实战一偏就废。BC 的教训是——示范录像再精彩,也覆盖不了真实厨房里的千变万化。

3. DAgger算法

孙师傅发现小陈总在同一个坑里栽跟头,便换了教法:小陈自己掌勺,师傅站在旁边盯着。一旦肉片下锅位置偏了、油温不对,师傅立刻在“这个乱糟糟的现场”出手示范一次正确操作,然后让小陈把这次意外记录在册,反复练习。这种“你探索、我纠偏、再复习”的师徒互动,就是 DAgger 的核心思想。

DAgger 全称是 Dataset Aggregation(数据集聚合)。它在训练中让当前策略在环境中执行,把策略自身访问到的状态收集起来,再向专家询问这些状态下的最优动作,把它们一起加入训练集。这里的关键是“专家干预”:专家不再只在理想状态下示范,而是专门处理策略造成的“偏态”。

具体流程是:用当前策略跑出轨迹 → 记录轨迹上的所有状态 → 请专家为这些状态标注动作 → 新旧数据合并起来重新训练。如此反复多轮,策略遇到的“偏态”逐渐被专家纠正,训练分布与执行分布越来越接近。这种混合训练方式让样本效率显著提升:不是拼命扩充示范数据,而是精确定位并补齐策略自己会撞上的薄弱环节。

D←D  ∪  {(st,  π∗(st))  |  st∼πθi}\displaystyle \mathcal{D} \leftarrow \mathcal{D} \;\cup\; \left\{ \left( \mathbf{s}_t, \; \pi^{*}(\mathbf{s}_t) \right) \;\middle|\; \mathbf{s}_t \sim \pi_{\theta_{i}} \right\}

1. 策略访问的状态:$\mathbf{s}_t \sim \pi_{\theta_{i}}$ 指状态由当前策略第 $i$ 轮执行产生,而非专家示范产生

st∼πθi(⋅∣st−1)\mathbf{s}_t \sim \pi_{\theta_{i}}(\cdot \mid \mathbf{s}_{t-1})

2. 专家纠偏动作:$\pi^{*}(\mathbf{s}_t)$ 是专家面对这个“偏状态”给出的正确动作

at=π∗(st)\mathbf{a}_t = \pi^{*}(\mathbf{s}_t)

3. 数据集聚合:将新的“状态-专家动作”对并入原有数据集,下一轮训练就在更贴近真实执行分布的样本上进行

Dnew=Dold∪{(st,at)}\mathcal{D}_{\text{new}} = \mathcal{D}_{\text{old}} \cup \{ (\mathbf{s}_t, \mathbf{a}_t) \}

回到厨房:小陈练完后,师傅抽查——让他自己独立炒十次回锅肉,发现他在“肉片粘锅”这种新场景下也不慌了,因为他早就被师傅在类似乱局里纠正过一遍。DAgger 的这一特性,让它在机器人交互场景里成为 BC 的最强补丁。

4. ACT架构

小陈有个毛病:每次都只想“下一步动作”,导致整套操作断断续续、东一榔头西一棒。师傅决定教他“成套记忆”——下锅、翻两下、加豆瓣酱、转小火焖十秒,这一串动作一口气背下来,像广播体操一样整体输出。ACT(Action Chunking with Transformers)正是把这种思路搬进了策略学习。

ACT 的三板斧是动作分块、Transformer、条件变分。动作分块意味着策略不再是“一个状态预测一个动作”,而是“一段观察预测未来几十步的动作序列”,输出是一整块稠密轨迹。这极大减少了高频抖动和误差累积,机器人动作由此连贯丝滑。

Transformer 负责建模状态与动作之间的长程依赖,像师傅把“食材状态”和“后续动作流”的因果关系都理得清清楚楚。条件变分自编码器(CVAE)则承担多峰建模:同样一盘回锅肉,师傅可能先放肉再放酱,也可能先爆香再下肉,两种做法都正确,CVAE 用隐变量表达这种“多种合理选择”。

在实现上,ACT 常被用于机械臂操作,输出端还会接一个位姿精化模块,对生成的轨迹做微调,去掉尖锐抖动。这让 ACT 在精细操作任务上表现亮眼,比如给机器人装拉链、倒水、擦拭桌面。

LELBO=Eqϕ(z∣c,x)[log⁡pθ(x∣z,c)]−KL(qϕ(z∣c,x)  ∥  p(z∣c))\displaystyle \mathcal{L}_{\text{ELBO}} = \mathbb{E}_{q_{\phi}(z \mid c, x)} \left[ \log p_{\theta}(x \mid z, c) \right] - \mathrm{KL}\left( q_{\phi}(z \mid c, x) \;\|\; p(z \mid c) \right)

1. 条件与动作:$c$ 是观察条件(图像、关节角),$x$ 是待生成的动作块序列

c=观察,x=at:t+Kc = \text{观察}, \quad x = \mathbf{a}_{t:t+K}

2. 后验编码:$q_{\phi}(z \mid c, x)$ 是编码器,把观察和专家动作压缩成隐变量 $z$ 的分布

z∼qϕ(z∣c,x)z \sim q_{\phi}(z \mid c, x)

3. 重建似然:$\log p_{\theta}(x \mid z, c)$ 衡量解码器从隐变量和条件重建动作块的质量

\log p_{\theta}(x \mid z, c) = \text{重建动作块的\log概率}

4. KL正则:$\mathrm{KL}(q_{\phi} \| p)$ 让隐变量分布靠近先验,保证采样时不暴走

KL(qϕ(z∣c,x)  ∥  p(z∣c))→0\mathrm{KL}\left( q_{\phi}(z \mid c, x) \;\|\; p(z \mid c) \right) \to 0

小陈后来发现,成套背动作虽然要花更多脑力,但真正上灶时行云流水。ACT 的启示是:把眼光放长远一点,动作连贯性自然就来了。

5. Diffusion Policy

孙师傅压箱底的功夫,是让小陈“从一团乱麻里悟出好菜”。师傅让小陈先在脑海里凭空搅出一堆乱七八糟的动作——像搅浑的汤、像无序的色块——然后一步步把混乱减下去,最终浮现出一道完整的炒肉流程。这看似玄学,其实是扩散模型的正向加噪与反向去噪。

Diffusion Policy 不直接输出动作,而是先定义一个“动作轨迹的分布”,用扩散模型去生成这个分布。训练时给专家动作逐步加噪,直到完全变成随机噪声;推理时从一个纯噪声轨迹出发,一步步去噪,还原出专家级的动作序列。这个“由乱生序”的过程天然擅长表达多峰动作分布——不同尝试都可能是对的,模型能保留多种“美味可能”。

相比 BC 只能学到动作均值(把多种正确答案平均成四不像),Diffusion Policy 学到了完整分布:去噪流程能走出一条完整的轨迹,不平均、不糊弄。它的优势分析也落在实际数据上:对高维动作轨迹表达平滑,多峰建模能力强,在精细操作任务中成功率显著高于 BC 和 ACT。

L=Et∼U(1,T),  ϵ∼N(0,I)[∥ϵ−ϵθ(at,o,t)∥2]\displaystyle \mathcal{L} = \mathbb{E}_{t \sim \mathcal{U}(1,T), \; \epsilon \sim \mathcal{N}(0, I)} \left[ \left\| \epsilon - \epsilon_{\theta}\left( \mathbf{a}_t, \mathbf{o}, t \right) \right\|^{2} \right]

1. 噪声采样:$\epsilon \sim \mathcal{N}(0, I)$ 是随机高斯噪声,用于给专家动作加扰

ϵ∼N(0,I)\epsilon \sim \mathcal{N}(0, I)

2. 加噪轨迹:$\mathbf{a}_t$ 是加噪到第 $t$ 步的动作轨迹,$t$ 均匀取自 $1$ 到 $T$

t∼U(1,T)t \sim \mathcal{U}(1, T)

3. 去噪网络:$\epsilon_{\theta}(\mathbf{a}_t, \mathbf{o}, t)$ 是模型输入当前带噪轨迹、观察条件和步数,预测噪声

ϵ^=ϵθ(at,o,t)\hat{\epsilon} = \epsilon_{\theta}(\mathbf{a}_t, \mathbf{o}, t)

4. 最小化噪声误差:让预测噪声与真实噪声的平方误差最小,模型就学会了反向去噪

min⁡θ  E∥ϵ−ϵ^∥2\min_{\theta} \; \mathbb{E} \left\| \epsilon - \hat{\epsilon} \right\|^{2}

回到厨房,小陈最终悟出的不是“照着师傅做”,而是“理解了做菜的韵律”。Diffusion Policy 把这种韵律学成了一种生成式分布,这正是前沿机器人操作中它大放异彩的原因。

6. 方法与选型

四种方法摆在一起,像四个性格迥异的学徒。选谁,取决于餐厅的实际情况。数据需求对照上:BC 只要离线录像,成本最低;DAgger 需要在线环境与专家查询;ACT 需要高质量的成套示范数据;Diffusion 胃口最大,动辄需要大量轨迹数据与算力。

偏移应对能力的排序也很清晰。BC 全靠数据覆盖,面对分布偏移毫无还手之力;DAgger 用在线聚合专治偏移;ACT 用动作分块降低累积误差,但状态偏移未被根治;Diffusion 凭借生成式分布建模,在分布外状态上仍能生成合理动作,鲁棒性最强。

多峰表达力是四者的分水岭:BC 和 ACT(无变分时)只能输出单一动作均值,DAgger 依赖专家提供的样本多样性,而 Diffusion 的生成式建模天然支持多峰分布。这意味着同样的任务——“把鸡蛋翻面”和“把拉链拉上”——前者有多种方式都正确,生成式方法不会把多种答案平均成失败动作。

落地场景的选型逻辑因此清晰:预算有限、环境固定、任务单一时用 BC;机器人可以人机交互、需要在线纠偏时用 DAgger;精细操作、动作连贯性要求高时用 ACT;任务多姿态、多策略都合法、且数据充足时,直接上 Diffusion Policy。没有银弹,只有匹配。

AI 应用场景

自动驾驶的模仿驾驶训练

阶段:数据采集与策略训练

解决的问题:传统自动驾驶规则算法难以覆盖长尾路况,而纯强化学习训练成本极高。模仿学习让车辆直接学习人类驾驶行为,用 BC 快速起步,再用 DAgger 在线聚合“策略自己开偏”时的专家纠正样本,逐步补齐罕见场景。

具体案例:某园区无人车先用 500 小时人类驾驶录像训练 BC 策略,再在仿真器中让策略主动跑,遇到压线、急转弯时调取人类专家的纠正动作,聚合数据重训,最终将车道保持的分布偏移率下降约 60%。

机械臂精细操作(ACT)

阶段:动作生成与轨迹优化

解决的问题:机械臂执行“给葡萄剥皮”“拉上拉链”等精细动作时,单步动作预测会产生抖动与累积误差。ACT 用动作分块让机械臂成套输出未来几十步动作,配合 Transformer 长程建模和 CVAE 多峰生成,解决连贯性难题。

具体案例:研究者用 ACT 在 ALOHA 双臂平台上训练“给面包抹果酱”,演示 50 次后就达到约 80% 的成功率。位姿精化模块消除了抹酱过程中手臂的微抖,让动作优雅平稳。

柔性装配线的扩散策略

阶段:策略生成与部署

解决的问题:工业插拔、切换夹具等场景中,零件姿态千变万化,同一任务存在多种合法操作路径。Diffusion Policy 从噪声出发一步步去噪,生成平滑且多峰的动作轨迹,无需为每种姿态写专门规则。

具体案例:某工厂用 Diffusion Policy 控制机械臂完成 USB 插拔,面对不同倾斜角度的插孔,模型从多峰分布中采样出各不相同的绕行轨迹,装配成功率达 95% 以上,远超 BC 的 70%。

Python 演示

python72 行
import numpy as np  class Expert:    """专家策略:根据位置给出最优反馈动作。"""    def act(self, s):        return -0.8 * s  def rollout(policy, T=40, noise=0.3):    """闭环运行一个回合,返回状态序列与动作序列。"""    s, states, actions = 1.2, [], []    for _ in range(T):        a = policy.act(s) + np.random.randn() * noise        states.append(s)        actions.append(a)        s = 0.9 * s + a    return np.array(states), np.array(actions)  def fit_linear(states, actions):    """最小二乘拟合线性策略 a = theta * s。"""    theta, *_ = np.linalg.lstsq(states[:, None], actions, rcond=None)    return theta[0]  class Learner:    """学到的线性策略,用 theta 表示反馈增益。"""     def __init__(self, theta=1.0):        self.theta = theta     def act(self, s):        return self.theta * s     def update(self, theta):        self.theta = theta  def expert_demo_data(n_episodes=20):    """专家在自己分布上采样,记录状态动作对。"""    S, A = [], []    for _ in range(n_episodes):        states, actions = rollout(Expert())        S.append(states)        A.append(actions)    return np.concatenate(S), np.concatenate(A)  def eval_shift(policy):    """评估策略闭环运行的末端状态,值越大表示偏移越严重。"""    states, _ = rollout(policy)    return round(float(np.mean(np.abs(states[-5:]))), 3)  # 1) 行为克隆:只用专家数据训练S, A = expert_demo_data()bc_theta = fit_linear(S, A)bc = Learner(bc_theta)print("BC 末端偏移:", eval_shift(bc)) # 2) DAgger:让 BC 策略探索,再向专家询问纠正动作S2, A2 = [], []for _ in range(10):    states, _ = rollout(bc)    S2.append(states)    A2.append(Expert().act(states))S_all = np.concatenate([S] + S2)A_all = np.concatenate([A] + A2)dag_theta = fit_linear(S_all, A_all)dag = Learner(dag_theta)print("DAgger 末端偏移:", eval_shift(dag))
目的:用一维线性系统直观对比 BC 与 DAgger 的分布偏移应对能力——BC 只在专家数据上训练,DAgger 聚合策略自探索状态与专家纠正动作后重新训练。
  1. states, actions = rollout(Expert())让专家闭环运行,收集“状态-动作”示范数据,这是模仿学习的起点。
  2. fit_linear(states, actions)使用最小二乘拟合线性策略,对应行为克隆的监督回归核心。
  3. class Learner定义学到的策略对象,用反馈增益 self.theta 决定动作输出。
  4. rollout(bc)让当前 BC 策略自己跑一个回合,模拟真实执行中遇到的分布偏移。
  5. Expert().act(states)在策略访问到的状态上查询专家动作,这是 DAgger 的关键“纠偏”。
  6. np.concatenate([S] + S2)聚合新旧数据,实现数据集聚合的核心逻辑。

常见误区

误区很多人以为行为克隆效果不好是因为数据量太少,只要把专家轨迹从 1 万条加到 100 万条,机器人就能学会稳健操作。

正解分布偏移不是数据量问题,而是结构性问题。BC 的训练分布来自专家示范,执行分布来自策略自身闭环滚动,两者天然不一致。哪怕数据再多,策略积累的小误差仍会把它推出示范覆盖区。好比看一万遍师傅炒菜的录像,也改变不了你自己掌勺时油温偏了的事实——录像里根本没有这种偏态的解法。

为何常见:监督学习在大数据下表现优异,让人直觉上认为“数据万能”,忽略了模仿学习的闭环执行特殊性。

误区有初学者以为 DAgger 就是把新旧数据拼接起来多训几轮,不需要环境交互,和 BC 差别不大。

正解DAgger 的灵魂是“策略自身探索出的状态”。如果没有在线环境(或高保真仿真器)来运行当前策略,就无法产生那些偏态状态,专家也无从纠偏,数据聚合就退化成普通 BC 了。真机上可以人工干预,仿真里可以自动查询,但离线字典里翻不出新状态。

为何常见:DAgger 名字里有“聚合”,容易让人只关注数据合并,忽略了产生新样本的在线交互前提。

误区很多人以为 ACT 就是拿一张图像直接回归出每个电机的力矩,跟 BC 只是网络结构不同。

正解ACT 有三重设计:动作分块让策略一次性输出几十步的动作序列而不是单步指令;Transformer 建模长程依赖;CVAE 编码多峰动作分布。它生成的是轨迹块,再交给底层控制器执行,不是像素到力矩的直连。就像师傅让你背整套广播体操,而不是只教你“抬一下手”。

为何常见:深度学习的端到端叙事太流行,容易让人低估 ACT 在动作表征层面的结构性设计。

误区听到“扩散模型要迭代去噪几百步”,许多人直接判定它只能离线用,实时机器人肯定跑不起来。

正解现代 Diffusion Policy 在动作空间(而非图像空间)去噪,维度远低于图像,配合快速采样器只需 1-3 步就能生成动作轨迹,控制频率可达 10-50Hz,足以驱动真实机械臂。流水线上被它的多峰生成能力吸引的工程师,实测后往往发现推理延迟并不是瓶颈。

为何常见:混淆了图像扩散的高采样成本与低维动作扩散的轻量采样,经验判断取代了实测数据。

误区有人把模仿学习和强化学习混为一谈,认为只是少了奖励函数,本质都是让智能体学策略。

正解两者学习信号完全不同。模仿学习从专家示范中直接学习“该怎么做”,上限受限于示范质量;强化学习从奖励信号中探索“如何最大化回报”,能超越示范但训练不稳定。机器人领域常把两者结合——用模仿学习做预训练,再用强化学习微调超越专家。师傅领进门,修行在个人,两个阶段各有分工。

为何常见:两者都输出策略网络,容易让人忽略数据来源与优化目标的结构性差异。

面试题

Q1. 行为克隆(BC)最核心的假设是什么?

单选题 · easy

  • A.专家策略必须在线演示
  • B.训练分布与执行分布一致← 正确答案
  • C.学习过程需要策略与环境交互
  • D.动作必须用自然语言描述

答案:B。BC 的成立前提是“示范数据覆盖的状态分布 = 机器人实际执行时遇到的状态分布”。就像看师傅录像学炒菜,前提是你炒的每个状态,录像里都能找到答案。选项 B 准确,A/C 是 DAgger 的特征,D 与 BC 无关。

Q2. 分布偏移的本质是什么?

单选题 · mid

  • A.专家示范数据包含大量噪声
  • B.策略执行时的状态分布偏离训练时的状态分布← 正确答案
  • C.训练数据的特征维度不足
  • D.模型参数初始化方式不恰当

答案:B。分布偏移指训练与执行两个阶段的状态概率分布不一致。BC 在专家示范分布上训练,执行时策略自身误差把状态推向分布外,越推越远。它不是噪声问题,也不是维度问题,而是分布不匹配的结构性问题——好比录像里永远没有“油温过高”的补救教法。

Q3. DAgger 相对行为克隆的关键改进是什么?

单选题 · mid

  • A.增大策略网络的参数量
  • B.在线聚合策略探索状态下的专家纠偏样本← 正确答案
  • C.增加离线示范视频的采集数量
  • D.引入强化学习的奖励信号

答案:B。DAgger 的核心创新是让当前策略自己跑出状态,再请专家在这些偏态下标注动作,聚合后重训。这一“你探索、我纠偏”的在线机制直击分布偏移。加大网络、多录视频都只治标,奖励信号则属于强化学习范畴。

Q4. 实施 DAgger 算法需要哪些基本条件?

多选题 · mid

  • A.可交互的环境或高保真仿真器← 正确答案
  • B.能够随时查询专家策略的动作输出← 正确答案
  • C.完全离线的大型静态数据集
  • D.将新旧样本聚合后重新训练← 正确答案

答案:ABD。DAgger 必须让当前策略在环境中执行生成新状态(A),由专家对这些状态给出动作(B),然后合并新旧数据重训(D)。它天然需要在线查询,纯离线静态数据集无法产生新的偏态,因此 C 错误。

Q5. ACT 中“动作分块”的主要作用是什么?

单选题 · mid

  • A.降低相机的采样帧率
  • B.一次性输出平滑一致的短动作序列← 正确答案
  • C.提高机械臂的关节扭矩上限
  • D.简化传感器的标定流程

答案:B。动作分块让策略从“一帧预测一个动作”变为“一段观察预测未来 K 步动作块”,输出的一致性和连贯性大幅提升,抑制了抖动与误差累积。它不改变硬件采样率,也不涉及扭矩和标定,因此 B 正确。

Q6. 关于 ACT 架构的说法,哪些是正确的?

多选题 · hard

  • A.条件变分编码器能表达多峰动作分布← 正确答案
  • B.Transformer 用于建模长程依赖关系← 正确答案
  • C.输出端会直接回归底层电机力矩
  • D.隐变量为动作生成提供了不确定度表达← 正确答案

答案:ABD。ACT 用 CVAE 的隐变量表达多峰动作分布(A、D),用 Transformer 捕捉状态与动作的长程依赖(B)。它的输出是动作块轨迹而非直接电机力矩,位姿精化后再交给控制器执行,因此 C 错误。

Q7. Diffusion Policy 相对行为克隆的核心优势是什么?

单选题 · hard

  • A.完全不需要专家示范数据
  • B.能表达多峰且平滑的动作轨迹分布← 正确答案
  • C.只需要单帧图像即可完成训练
  • D.推理阶段完全不需要去噪迭代

答案:B。Diffusion Policy 用生成式建模取代回归式拟合,能保留多种合法动作模式,避免把多峰答案平均成失败动作;去噪过程天然生成平滑的高维轨迹。它依然需要示范数据,也需要去噪推理,因此 A、D 错误,B 为正确答案。

Q8. 以下哪种方法属于纯离线模仿学习?

单选题 · easy

  • A.DAgger
  • B.行为克隆(BC)← 正确答案
  • C.在线策略梯度
  • D.模型预测控制

答案:B。行为克隆只需收集专家示范数据离线训练,不与环境交互,属于静态监督学习。DAgger 依赖在线交互与专家查询,策略梯度属于强化学习,模型预测控制是基于动力学模型的优化方法,三者都不是纯离线模仿学习。

Q9. 关于模仿学习方法选型的说法,哪些是正确的?

多选题 · hard

  • A.有在线交互条件时优先考虑 DAgger← 正确答案
  • B.离线多峰柔顺动作任务适合 Diffusion Policy← 正确答案
  • C.动作连贯性要求高的任务适合 ACT 分块← 正确答案
  • D.固定环境单峰任务应首选 Diffusion Policy

答案:ABC。DAgger 需要在线环境(A 对),Diffusion 适合离线多峰生成(B 对),ACT 以动作分块提升连贯性(C 对)。固定环境单峰任务用简单的 BC 就足够,不必引入高成本的扩散模型,D 错误。

Q10. 以下哪种表述最符合模仿学习的本质?

单选题 · easy

  • A.从奖励信号中探索最优策略
  • B.从专家示范数据中学习状态到动作的映射← 正确答案
  • C.从无标注数据中聚出类别中心
  • D.从随机试错中积累经验

答案:B。模仿学习的本质是从专家示范中学习“什么状态做什么动作”,数据来源是示范而非奖励或随机探索。A 是强化学习,C 是聚类,D 是随机搜索,均与模仿学习定义不符。