你有没有观察过打字高手和键盘新手的区别?新手总是一个字母一个字母地低头找键、敲下、再找下一个键;而高手的手指像“连发”一样,把一整句话的击键顺序在脑子里打包成几串,一串敲完再酝酿下一串。机器人模仿学习也面临同样的选择题:专家操作手臂时本来就是一套连贯流畅的动作,传统方法却逼着机器人“看一眼传感器、做一步动作、再看一眼”,一步错、步步错,动作僵硬得像打字新手。谷歌提出的 ACT(Action Chunking Transformer),正是要让机器人像打字高手一样,用 Transformer 一次性“成串地”预测未来一大段动作。本文会用“打字高手”这个比喻贯穿始终,带你拆解 ACT 的核心思想、CVAE 网络结构、训练与推理流程,以及部署时的注意事项,让你从零建立起对这一前沿模仿学习方案的直觉。
对 AI 从业者而言,ACT 是机器人模仿学习从“玩具级”走向“真机可用”的代表性基线。掌握它的动作分块与 CVAE 设计,你就能在灵巧操作、服务机器人等项目中快速落地高质量的示教学习方案,也是理解下一代机器人基础模型的重要台阶。
目录
可视化演示
展示ACT动作分块机制、CVAE架构与轨迹平滑对比,切换模式查看机器人模仿学习核心技术。
本节配有交互动效(进入视口后自动加载,约 3KB)。
动作分块机制 ACT一次预测未来k步动作序列,减少决策频率避免抖动 a_{t:t+k} = f(o_t, z) 分块预测使机器人动作更流畅连贯
模仿学习困境:单步决策为何失败
想象一个打字新手学盲打:他每次只敢敲一个字母,敲完低头确认键盘,再敲下一个。这种“走一步看一步”的模式有两个致命问题:一是慢,二是每步都可能错——而一旦敲错了键,接下来的手位就全乱了,后面的错误会像滚雪球一样越滚越大。传统行为克隆(Behavior Cloning,简称 BC)训练出的机器人策略,正是这样一个“打字新手”。
行为克隆的做法很直接:收集专家示教数据 $(o_t, a_t)$,训练一个策略网络去模仿“当前观测下该输出什么动作”。可问题在于,训练时模型看到的观测来自专家轨迹,而推理时模型的动作会改变实际观测,专家轨迹里从没出现过“偏离的状态”。一旦模型产生一点小偏差,它就在一个“没见过的状态”里瞎猜,偏差越来越大。
这正是模仿学习里著名的“复合误差”(compounding error)问题:误差不是固定的,而是随着执行步数不断累积放大,可以形式化地写成:
更麻烦的是,同一场景的专家示教往往不止一种“正确做法”:比如倒水,可以高抬手腕倒,也可以低抬手倒。单步 BC 把这些不同演示平均起来,最后学出一个“四不像”的动作——就像把不同人的笔迹平均成一种歪歪扭扭的字。这两个痛点,就是 ACT 要解决的核心问题。打字新手需要的不是更多次“敲一下看一步”,而是一套全新的击键策略:先把整句话在脑子里打包,再成串敲出。
- 总误差 $\mathcal{E}_T$表示从第 1 步一直执行到第 T 步后累计的位置偏差,它是每一步小误差的累加。
- 单步误差 $\varepsilon_t$第 t 次决策引入的小偏差,来自策略网络对陌生状态的猜测误差。
- 线性增长 $O(T)$总误差的期望规模随 T 线性上涨,步数越多,雪球越大。
动作分块思想:把动作打包成串
打字高手与新手的关键差异在于“打包”:高手不会在每个字母上纠结,而是先看一眼整句话,把后面几个词的手指轨迹在脑中排好,然后一口气连击一串按键。ACT 的核心思想——动作分块(Action Chunking)——正是把这个习惯搬到了机器人身上:不再每一步都做一次决策,而是每隔一段时间,一次性地预测出未来 K 步的动作序列,让机器人像“连击”一样执行完这一串,再重新规划。
为什么这一下子就避开了滚雪球?因为复合误差的前提是“每一步都重新决策、每步都可能犯错”。现在机器人一次决策只犯一次错,剩下的 K−1 步完全按既定计划执行,误差没有机会在每一步被重新注入。相当于打字新手不再每敲一个字母都低头确认一次,而是先把手位摆好、一串打完,中间就算有小误差,也不至于一步错步步错。
除了减少出错频率,动作分块还天然保证了时序一致性:因为整串动作是一起生成的,前后的动作会互相协调,不会出现“上一步要去左边、下一步突然去右边”的抖动。用数学表达,策略不再输出单步动作,而是输出一个动作块:
动作分块像给策略装了一副“远光眼镜”:不只看眼下这一毫米,而是看清楚后面一大段路。不过有了“打包”的框架,还需要一个大脑来决定“这一串到底怎么打”——当同一个场景有多种合理打法时,大脑得先选一个意图,这就引出了 ACT 的网络结构。
- 动作块 $\mathbf{A}_t$一个长度为 K 的向量序列,存放从当前时刻起的全部动作计划。
- 分块长度 K一次决策覆盖的未来步数,K 越大,决策越稀疏,动作越连贯,但闭环响应越慢。
- 策略函数 $\pi_\theta(o_t)$以当前观测为条件的条件概率模型,输出整套分块动作。
网络结构设计:CVAE Transformer 计划引擎
打字高手在出手前,脑子里会先浮现一个“意图”:这句话我要用什么词、什么语气、手指怎么排。即使面对同一段文本,不同高手也可能选择不同的击键方式。ACT 的网络结构借鉴了条件变分自编码器(CVAE),专门为这个“意图”设了一个显式的旋钮——隐变量 $z$。它把“当前该怎么完成这个任务”的各种可行方案放进一个隐空间,每次决策先采样一个 $z$,再让解码器根据 $z$ 和观测生成整块动作。
整个网络是一个 Transformer 的编码器-解码器结构:观测编码器(通常用 ResNet 提取相机图像特征)负责把当前状态压缩成上下文向量;编码器把观测和动作块编码成一个隐分布;解码器则拿着从隐分布里采样出的 $z$,通过交叉注意力机制逐帧“吐出”K 步动作序列。Transformer 的自注意力让分块内部任意两步动作都能互相“看见”,这正是时序一致性得以保证的结构基础。
训练时的总损失由两部分组成:重构损失让预测的动作块尽量贴近专家示教;KL 散度约束则防止隐变量变成“乱码”,保证它编码的是有意义的方案选择:
打个比方,这个网络就像一个“会先想后打”的打字助手:观测编码器是眼睛,隐变量是脑海里的措辞选择,Transformer 解码器则是把措辞转成手指连击的那套肌肉记忆。结构搭好了,接下来要看它怎么被“练”出来。
- 重构损失项用 L1 范数计算真实动作块 A 与预测动作块 $\hat{\mathbf{A}}$ 的差距,逐元素取绝对值再求和。
- KL 散度项衡量编码器给出的后验分布 $q_\phi(z \mid o)$ 与标准正态先验 $\mathcal{N}(0, I)$ 的距离。
- 权重系数 $\beta$控制“重构准”和“意图规整”两个目标的相对强弱,$\beta$ 太小隐变量会滥用,太大则多样性不足。
训练机制:让计划引擎学会连击
新手练盲打靠的是反复练习和纠错:打错一个字母,老师划掉,下次改正,久而久之手指形成肌肉记忆。ACT 的训练也遵循同样的逻辑——用大量专家示教去“校正”网络,只是这里有两个信号同时起作用:一个是“动作对不对”(重构损失),一个是“意图正不正”(KL 损失)。
训练时,观测图像先通过编码器得到隐分布的均值和方差,然后用重参数化技巧从分布中采样出 $z$,解码器结合 $z$ 与观测输出整块动作,最后与真实动作块算 L1 损失反向传播。KL 约束则要求隐变量编码的“方案选择”尽量靠近一个规整的标准正态分布,让每个维度只编码独立、有意义的信息,而不是把观测里的噪声原样拷贝进去。
KL 散度这一项在 ACT 里可以展开成闭式解,用均值和方差直接计算:
训练技巧上还有几个关键旋钮:隐变量维度通常取 32 左右,KL 权重 $\beta$ 在 0.01 量级,学习率用 1e-5 配合 AdamW 优化器,批大小 8 左右,训练几百个 epoch。数据增强也必不可少——给相机图像加随机噪声或轻微裁剪,就像老师让新手换着键盘练盲打,增强对环境的鲁棒性。练好之后,这个“打字高手”就要真刀真枪地上台表演了。
- 均值 $\mu_d$ 与方差 $\sigma_d^2$编码器为隐变量第 d 维输出的分布参数,决定该维意图的取值和置信度。
- 对数方差 $\log\sigma_d^2$用对数形式让方差始终为正,且数值更稳定,便于梯度传播。
- 逐维求和 $\sum_{d=1}^{D}$假设各维度独立,KL 散度等于 D 个一维 KL 之和,D 是隐变量维度。
推理与执行:整块执行再重新规划
打字高手不是把一整页文章一次性背完才动手,而是“打几句、扫一眼、再打几句”——每一串击键与下一串之间会有重叠和衔接。ACT 在推理时也是这个节奏:机器人先执行当前预测出的 K 步动作块,执行完后用最新的观测重新采样、再预测下一个动作块。这就是“整块执行 → 重新规划”的闭环循环。
这种节奏让 ACT 兼具两个优点:一方面,分块执行避免了高频决策带来的误差注入;另一方面,每次重规划都用上了最新的观测,不会因为长时间开环而彻底失控。更有意思的是,相邻两次规划的时序可以重叠——也就是说,在新计划生成前,旧计划的后半段还没执行完,两个计划对同一时刻的动作各有一个预测,可以取加权平均来平滑过渡,这被称为“时间融合”(Temporal Ensembling):
在真实机器人上,这个循环由控制频率决定:机械臂每 50 毫秒执行一个控制周期,若分块长度 K=20,则每 1 秒才做一次重规划。这个“执行-规划”的循环,正是打字高手“打几句、扫一眼”的节奏感,让机器人既连贯又能及时纠偏。
- 重叠预测数量 N覆盖同一时刻 $t+i$ 的历史规划个数,重叠越多平滑效果越强,但计算量略增。
- 第 j 个规划的预测 $\hat{a}^{(j)}_{t+i}$不同时刻启动的规划对同一未来时刻给出的动作估计。
- 求平均 $\frac{1}{N}\sum$等权平均,让相邻动作块在交界处平滑衔接,避免“两块动作各说各话”。
方法对比:为什么分块更香
把打字新手和高手放在一起比速度、比准确率,差距一目了然。ACT 与传统单步 BC 的对比同样清晰:测试相同的长程操作任务,单步 BC 的动作轨迹明显更抖、越到后面越偏;而 ACT 因为决策稀疏,误差被限制在每次重规划之间,轨迹平滑且越往后越稳。
从数学上可以很直观地看到差距。假设任务总共有 T 步,单步 BC 需要决策 T 次,每次注入一点误差;ACT 每 K 步才决策一次,总共只决策 T/K 次。如果一次决策平均引入的误差相近,那么 ACT 累积的误差规模只有单步方法的 1/K:
除了抗误差,分块还带来了另外两个红利:一是多模态能力,因为有了隐变量 z,ACT 在推理时可以采样出不同的 z,从而复现“高抬手腕”或“低抬手”等不同风格,而不是像单步 BC 那样平均出一个四不像;二是样本效率,原论文的实验表明,ACT 常常只需十几次到几十次示教就能学会一个复杂的操作任务,而单步 BC 在同样数据量下往往学不会。当然,分块也不是没有代价——它的上限取决于示教数据的质量和多样性,这也是部署时最需要留心的地方。
- 总步数 T完成一次任务所需的最小控制周期数,例如 5 秒任务、50 毫秒周期 → T=100。
- 分块长度 K一次决策覆盖的步数,K 越大,决策次数越少,误差注入越稀疏。
- 向上取整 $\lceil \cdot \rceil$当 T 不能被 K 整除时,最后一次不足一块也按一次决策算。
部署实践:从论文到真实机器人
把“打字高手”请到真实键盘上,还得考虑键盘的键程、反馈和桌面高度。将 ACT 部署到真实机器人同样有一堆工程细节:首先是分块长度 K 的选取,它是整篇故事的核心杠杆——K 太小,退化成单步决策,误差又开始滚雪球;K 太大,决策虽然稀少,但对突发扰动的响应会变得迟钝。部署时通常从 K=50 左右起步,根据任务的扰动程度和相机延迟做网格搜索。
其次是示教数据的准备。ACT 再强也是模仿学习,数据决定上限:示教要覆盖多种位姿、多种手法甚至多种失败后的重试路径,让隐变量见多识广。数据里还经常混合“夹具开关”这样的离散动作,这些也都要一并记录。训练时对图像做随机噪声增强,部署时则要保证相机视角与训练分布一致,否则再好的模型也会“水土不服”。
最后是频率匹配问题。机器人控制频率 $f_{\text{控制}}$ 与分块长度 K 共同决定了重规划频率,这个频率必须快于环境变化的速度,才能及时纠偏:
部署的环境也讲究:训练在哪块 GPU 上(常见 A100 或 RTX 4090),推理时就要保证同样的算力,否则一次重规划耗时过长,分块节奏就会被打乱。把这些细节调顺,那个“打字高手”才能真正在工厂车间或家庭客厅里行云流水地干活。
- 控制频率 $f_{\text{控制}}$机器人底层发送动作指令的频率,常见 20–500 Hz。
- 重规划频率 $f_{\text{重规划}}$策略网络重新推理动作块的频率,等于控制频率除以分块长度。
- 匹配原则$f_{\text{重规划}}$ 应明显大于任务中关键扰动的时间频率,否则机器人会“反应迟钝”。
AI 应用场景
家庭服务机器人:模仿示教学会叠衣与倒水
阶段:示教数据采集 → 策略训练 → 真机部署
解决的问题:家庭环境中叠毛巾、倒水这类任务存在“多种正确做法”,演示数据里有人高抬手腕、有人低抬手。传统单步 BC 会把多种手法平均成僵硬无效的动作,而 ACT 通过隐变量 z 保留多种方案,采样后能自然复现不同风格,同时动作分块保证整串动作连贯不抖动。
具体案例:某团队用遥操作设备采集 50 条“把毛巾对折再对折”的示教,训练 ACT 策略后部署到双臂机器人上。机器人先整体规划折叠轨迹再执行,遇到毛巾位置偏移时只在下一次重规划时修正,动作比单步 BC 平滑很多,任务成功率从 40% 提升到 85% 以上。
工业柔性装配:插拔与螺丝拧紧的平滑轨迹
阶段:模型上线部署 → 在线推理执行 → 异常重规划
解决的问题:电子元件插拔、螺丝拧紧等装配动作要求“快而稳”,传统逐点示教编程难以适应工件公差波动。ACT 的动作分块让机械臂每次决策都输出一小段平滑轨迹,配合时间融合机制,在装配过程中既保持速度又避免抖动,还能在插入受阻时通过重规划调整姿态。
具体案例:某 3C 工厂用 ACT 替代手工示教编程,让机械臂学习熟练工人的插拔手法。部署时控制频率 50 Hz、分块长度 K=25,即每 0.5 秒重规划一次,配合力传感器检测插入力异常,当力超限时立即触发新规划调整方向,良品率提升 12%。
Python 演示
import torchimport torch.nn as nn torch.manual_seed(0)K, D, T, A, W = 40, 2, 200, 1.5, 0.03BETA = 0.01 def gen(n): s = (torch.rand(n, 1) > 0.5).float() * 2 - 1 t0 = torch.randint(0, T - K, (n, 1)).float() / T idx = t0 + torch.arange(K) / T vel = s * A * W * torch.cos(W * 200 * idx) return t0, vel obs, act = gen(600)obs_v, act_v = gen(200)enc = nn.Sequential(nn.Linear(1, 32), nn.ReLU(), nn.Linear(32, D * 2))dec = nn.Sequential(nn.Linear(D + 1, 64), nn.ReLU(), nn.Linear(64, K))opt = torch.optim.Adam(list(enc.parameters()) + list(dec.parameters()), lr=1e-3) def kl(mu, lv): return -0.5 * torch.sum(1 + lv - mu.pow(2) - lv.exp()) for ep in range(150): perm = torch.randperm(len(obs)) for i in range(0, len(obs), 64): b = perm[i:i + 64] o, a = obs[b], act[b] p = enc(o) mu, lv = p[:, :D], p[:, D:] z = mu + torch.randn_like(mu) * torch.exp(0.5 * lv) pred = dec(torch.cat([z, o], dim=1)) loss = nn.functional.mse_loss(pred, a) + BETA * kl(mu, lv) opt.zero_grad() loss.backward() opt.step() bc = nn.Sequential(nn.Linear(1, 64), nn.ReLU(), nn.Linear(64, K))optb = torch.optim.Adam(bc.parameters(), lr=1e-3)for ep in range(150): perm = torch.randperm(len(obs)) for i in range(0, len(obs), 64): b = perm[i:i + 64] o, a = obs[b], act[b] loss = nn.functional.mse_loss(bc(o), a) optb.zero_grad() loss.backward() optb.step() z = torch.randn(200, D)chunk_a = dec(torch.cat([z, torch.zeros(200, 1)], dim=1))chunk_b = bc(torch.zeros(200, 1))end_a = torch.cumsum(chunk_a, dim=1)[:, -1].abs().mean().item()end_b = torch.cumsum(chunk_b, dim=1)[:, -1].abs().mean().item()target = A * torch.sin(torch.tensor(W * K)).item()print("ACT 末端摆动幅值: %.2f (期望约 +-%.2f)" % (end_a, target))print("单步BC 末端摆动幅值: %.2f (把两种模式平均成0,任务失败)" % end_b)
vel = s * A * W * torch.cos(W * 200 * idx)生成方向随机(+1 或 −1)的示教动作,模拟“同一任务多种做法”的多模态场景enc = nn.Sequential(...)观测编码器,把当前观测压缩成隐变量 z 的均值和方差z = mu + torch.randn_like(mu) * torch.exp(0.5 * lv)重参数化技巧,让采样可反向传播loss = nn.functional.mse_loss(pred, a) + BETA * kl(mu, lv)ACT 的完整训练目标:重构损失 + KL 约束bc = nn.Sequential(...)无隐变量的单步 BC 对照模型,直接观测→K 步动作chunk_a = dec(torch.cat([z, torch.zeros(200, 1)], dim=1))推理时从标准正态采样 z,解码器一次性吐出整块动作end_a = torch.cumsum(chunk_a, dim=1)[:, -1].abs().mean().item()沿时间累加得到末端位置,验证策略真的跟随了一种风格
常见误区
误区“既然动作分块能减少决策次数、让动作更平滑,那把 K 设到最大,比如一次预测 500 步,效果一定最好。”
正解K 是“平滑”与“响应”之间的天平。K 太大意味着重规划频率过低,机器人像蒙着眼睛走路,一旦出现外力扰动、物体被碰歪等情况,要等很长时间才能用上新观测来纠偏。就像打字高手如果一口气背下十页内容再动手,中途改一个字都会手忙脚乱。正确做法是让重规划频率明显高于任务中扰动的出现频率,通常从 K≈50 起步做网格搜索。
为何常见:人们容易只看到“分块能缓解误差累积”这一半,忽略了它同时放弃了每步闭环反馈的灵活性,把部分好处当成了全部。
误区“ACT 效果好是因为用了 Transformer,动作分块只是把几个动作打包输出而已,有没有都行。”
正解动作分块才是 ACT 最核心的设计,它从根源上改变了误差累积的结构;Transformer 是在“分块输出”这个前提下提供了强大的序列建模能力。如果只把 Transformer 用在单步预测上,复合误差问题依然存在,长程任务照样漂移。类比来说,打字高手厉害首先是“成串打”的策略,而不是他用的键盘品牌。
为何常见:Transformer 是明星名词,容易让人把注意力全放在网络上,忽略了真正带来数量级收益的算法结构改造。
误区“ACT 能预测未来一连串动作,说明它内部有环境模型,是在做模型预测控制(MPC)吧?”
正解ACT 不做任何显式的多步推演或搜索,它没有动力学模型,也没有成本函数优化。它只是用神经网络“背诵”了示教数据里观测到动作块的条件映射,分块内部完全是开环执行。它比单步 BC 强,是因为决策稀疏让误差没有机会频繁累积,而不是因为它会“思考未来”。
为何常见:“预测序列”在强化学习里常与 model-based planning 关联,初学者容易把“输出轨迹”误解为“内部推演轨迹”。
误区“训练时把 z 固定为零或者去掉隐变量,模型也能学得差不多,z 只是增加随机性罢了。”
正解隐变量是 ACT 处理多模态示教的命根子。没有 z,面对同一观测下多种不同的示教动作,模型只能输出它们的平均,得到“四不像”的中间动作;有了 z,模型才可能“这次选高抬手、下次选低抬手”地分别还原专家风格。去掉 z 就等于把打字高手限定成只会一种腔调,面对风格多样的示教数据必然学崩。
为何常见:隐变量在测试时会随机采样,看起来“不靠谱”,加上 KL 损失数值很小,容易让人觉得它只是个装饰品。
面试题
Q1. ACT 的“动作分块”最核心的变化是什么?
- A.用 LSTM 替代 Transformer 结构
- B.一次预测未来 K 步动作序列← 正确答案
- C.大幅提高机器人的控制频率
- D.放弃示教改用强化学习训练
答案:B。动作分块指的是策略一次输出未来连续 K 步的动作块,而不是每步只输出一个动作。它把决策频率降为原来的 1/K,误差没有机会频繁累积。A 是结构替换、C 方向相反、D 是完全不同的学习范式,均非分块的本意。
Q2. 传统单步行为克隆在长时运行中最典型的失败原因是?
- A.训练数据太少导致模型过拟合
- B.单步误差不断累积造成轨迹漂移← 正确答案
- C.模型参数过大导致无法收敛
- D.相机分辨率不足导致识别失败
答案:B。单步 BC 每一步都在陌生状态上重新决策,小偏差会被反复注入并放大,这就是复合误差。这就像打字新手每敲一个键都临时找键,一旦错一个后面全乱。其余选项是工程问题而非单步 BC 的结构性缺陷。
Q3. ACT 中 CVAE 的隐变量 z 主要编码了什么信息?
- A.表达同一任务中多种可行方案的选择← 正确答案
- B.存储机器人关节的精确质量数值
- C.记录训练环境的全部物理参数
- D.保存相机标定矩阵的所有参数
答案:A。多模态示教里同一观测对应多种专家做法,隐变量 z 就是对“这次采用哪种方案”的编码。B、C、D 都是与环境测量相关的参数,不是隐变量语义;z 来自数据驱动的隐分布,编码的是行为风格与意图。
Q4. ACT 训练损失中 KL 散度项的核心作用是?
- A.约束隐变量分布贴近标准正态先验← 正确答案
- B.惩罚动作幅度过大的抖动
- C.强制隐变量 z 恒等于零向量
- D.完全替代动作重构损失项
答案:A。KL 项让编码器输出的后验分布靠近 N(0,I),防止 z 变成无约束的乱码。B 是正则项但不由 KL 负责,C 与“采样多样性”矛盾,D 会破坏监督信号——重构损失和 KL 是互补的两个目标,不能互相替代。
Q5. 动作分块能缓解复合误差的原因有哪些?
- A.决策频率降低使误差难以持续累积← 正确答案
- B.机器人本体的运动速度大幅加快
- C.每次重规划重新观测并纠正偏差← 正确答案
- D.传感器全部噪声都被彻底消除
答案:AC。分块让决策次数降为 1/K,误差只在重规划时才可能注入,同时每次重规划都用最新观测对齐状态、纠正偏差。B 与分块无关,D 过于绝对——噪声不可能被彻底消除,分块只是限制了噪声被放大的机会。
Q6. ACT 推理时的“时间融合”(Temporal Ensembling)指的是?
- A.对多个重叠动作块的预测做加权平均← 正确答案
- B.将多个相机图像融合成一帧图像
- C.把全部训练演示压缩成一份数据
- D.用滤波算法融合关节编码器读数
答案:A。相邻两次规划的时域范围重叠,对同一时刻会有多个预测,时间融合取它们的加权平均作为最终输出,让动作块交界处平滑过渡。其余选项都是其他领域的“融合”概念,与动作块重叠无关。
Q7. 动作分块长度 K 设置过大会带来什么问题?
- A.闭环反馈延迟增大难以及时纠正偏差← 正确答案
- B.模型参数量会呈现指数级增长
- C.机器人动作速度必然变得更快
- D.训练数据质量要求反而明显降低
答案:A。K 越大,重规划越稀疏,机器人对突发扰动的响应越迟钝,相当于蒙眼走更远的路才睁眼。参数量与 K 无指数关系,速度与 K 无关,K 大对数据质量要求更高而非更低。K 是“平滑”与“响应”的折中。
Q8. 与单步 BC 相比,ACT 在哪些方面带来显著提升?
- A.长程任务的动作轨迹更加平滑← 正确答案
- B.多模态示教下行为保持多样性← 正确答案
- C.完全免除人工示教数据的采集
- D.执行阶段决策次数明显减少← 正确答案
答案:ABD。ACT 通过分块减少决策次数、提升时序一致性,轨迹更平滑;通过隐变量 z 保留多种行为模式。但 ACT 仍是模仿学习,必须依赖人工示教数据,C 说法错误。A、B、D 均为论文中验证的核心优势。
Q9. 真实机器人部署 ACT 时,保证分块执行精度的关键匹配原则是?
- A.控制频率与分块时长合理匹配重规划周期← 正确答案
- B.Transformer 的层数越多效果一定越好
- C.隐变量维度必须等于动作空间维度
- D.关闭数据增强使观测完全无噪声
答案:A。重规划频率 = 控制频率 / K,它必须明显高于任务中扰动的出现频率,机器人才能及时纠偏。层数、隐变量维度与动作维度相等与否、关闭增强都不是部署匹配的关键;盲目增加层数还会带来训练与推理负担。
Q10. 关于 CVAE 中的 KL 散度约束,正确的说法是?
- A.防止编码器把隐变量分布推得过度自信← 正确答案
- B.推理时可以从标准正态分布直接采样 z← 正确答案
- C.直接度量预测动作与真实动作的差距
- D.使得隐变量 z 与观测 o 完全无关
答案:AB。KL 把后验拉向先验 N(0,I),约束“自信程度”,也让推理时能直接从先验采样 z 来生成多样行为。C 是重构损失的任务,D 是错误说法——z 需要与观测相关以编码任务相关的方案信息,只是被 KL 约束得规整一些。