动作分块(Action Chunking)在模仿学习中的重要性

The Importance of Action Chunking in Imitation Learning

The Importance of Action Chunking in Imitation Learning

这是一篇博客,博客作者是 Haonan Yu,博客地址是:https://www.haonanyu.blog/post/action_chunking/

  • 前言
  • Modeling non-Markovian behaviors while avoiding causal confusion
  • Action smoothening
  • Outputting high-frequency actions
  • Handling model inference latency
  • Summary

前言

在 robot learning 范畴中,控制这个概念被作者分成了开环控制(open-loop control)闭环控制(closed-loop control)

动作分块(action chunking)是一种开环控制,在每个控制时间步(不等于自然时间),策略根据当前观测输出一个未来的动作块 / 序列。通常,动作序列会在下一步控制时间步之前被全部或部分执行。

这与闭环控制相反,对于闭环控制:策略观察当前观测值,仅输出一个动作,再观察下一个观测值,依此类推。

闭环与动作分块(开环)控制流程对比

控制类型流程示意
闭环控制(closed loop)
闭环控制流程
动作分块(开环)控制
动作分块控制流程

对于模仿学习而言,通过人类遥操作(拖拽示教 / VR 遥控等等)方式得到的数据集类型核心是“状态 - 动作”对,那么最好的训练思路就是训一个 closed-loop 策略,也就是基于当前控制时间步得到的观测与当前单时刻输出动作的映射,且这样的 closed-loop 在突然变化的环境中更有意义。也可以简单理解为 closed-loop 策略实现的是“单对单”的映射。

但在现实机器人世界中,open-loop 也有其存在意义,且越来越被重视,主要体现在以下几点:

Modeling non-Markovian behaviors while avoiding causal confusion

如果人类演示的轨迹中间有任何停顿,那么该轨迹可能是非马尔可夫(non-Markovian)的。

停顿一段时间后结束,机器人再次开始移动。当使用 closed-loop 类型的策略进行训练时,策略将基于相同的观测值 oₜ 在保持静止或移动之间做出决定。因此,仅根据当前观测来确定正确的行动在理论上是不可能的。

避免这种非马尔可夫性质的一种方法是用历史信息(如过去的行动)来扩充观测值。如果策略知道保持静止持续了多少控制时间步,那么它可能就会知道何时结束暂停,这个可以通过训练得到。

但这些历史信息会给模仿学习带来一个显著的挑战:因果混淆(causal confusion)

在模仿学习中,所谓“因果混淆”(causal confusion)指的是:模型学会了表面上的“相关性”,却没有真正理解背后的“因果关系”。 换句话说,机器人或智能体在模仿专家的行为时,并不一定明白专家为什么要那样做——它只是看到了“当相机里出现这种画面时,专家通常会这么动”,于是照着学,但并不知道这种动作是因为某个关键原因而产生的。 举个例子:假设一个机器人学习人类开车。如果它发现每次红灯亮起时,司机都会踩刹车,那么这是一种正确的因果关系——红灯导致了刹车动作。但如果它发现“每次有行人出现在画面左边,司机也常常踩刹车”,它可能误以为“画面左边出现行人”就是“该刹车”的原因,哪怕那个行人根本没要过马路。结果,机器人在实际驾驶中可能会频繁地误刹车,因为它混淆了“真正的因果因素”(红灯)和“只是同时发生的相关现象”(行人出现在画面里)。 这种“因果混淆”使得模仿学习模型在新场景或稍有变化的环境中容易出错,因为它学到的不是决策背后的逻辑,而只是视觉上或数据中的统计关联。这也是为什么越来越多的研究在尝试让模仿学习具备因果推理能力,去真正理解“为什么要这样做”,而不是仅仅“看别人怎么做”。

在自动驾驶等任务中,专家演示的数据往往是连续的、重复性的——比如长时间保持匀速向前开。在这种情况下,模型(也就是策略网络)在学习时很容易“偷懒”:它发现一个简单的规律——“当前动作几乎和上一步动作一样”。于是它就学会了一个“伪规律”:下一个动作只要复制上一个动作就行了。这种学习方式虽然能让损失函数下降(因为在训练数据中确实大多数帧都满足这种规律),但它其实没有理解为什么专家在这些时刻选择了“继续前进”。

这就是“因果混淆”的体现:模型把“动作之间相似”这个表面的相关性(correlation)当成了“驾驶行为的真正原因(causation)”。正确的因果逻辑应该是:专家之所以继续前进,是因为当前相机图像显示前方道路畅通、没有障碍。可模型忽视了这一因果关系,只捕捉到了“时间步之间动作相似”这个统计规律。

当模型面对新场景,比如前方突然出现障碍物时,它就无法正确地刹车——因为在训练中它从没学会“看到障碍 —-> 刹车”的因果联系。

由于神经网络本质上是一个强大的“相关性模式捕捉器”,而不是具备理解能力的因果推理系统,它在优化过程中会选择“最容易让损失下降”的路径,也就是依赖这种表面的时间相关性。结果是,那些真正重要但出现频率低的“关键信号”(例如一次刹车动作)在训练中被忽略了,模型学到的只是“复制前一步”的惯性策略。

作者认为:神经网络是一个强大的相关性学习器。通常,SGD 优化器会驱使神经网络采取最简单的路径来最小化损失函数。当训练数据中存在简单的相关性信号时,最简单的路径就是学习这种特定的相关性。

动作序列示例(体现因果混淆)

因果混淆示例

一般来说,观测空间中包含的信息越多,模仿学习就越容易出现因果混淆。这句话的意思是:当模型能“看到”的信息越多,它反而更容易被误导,学到错误的因果关系。

原因在于,观测空间越大,包含的变量、细节、噪声和偶然相关也越多,模型就更有可能抓住那些看似相关但实际上不具因果意义的特征。

举个例子:假设一个机器人学习人类抓取桌上的杯子。它的摄像头不仅能看到杯子,还能看到桌布的纹理、背景的灯光、甚至操作者的衣服。如果这些额外信息在演示数据中恰好和抓取动作同时出现,比如“每次抓取时灯光都偏黄”,神经网络可能就会误以为**“灯光偏黄”与“需要抓取”**有因果关系,从而在新的环境(灯光变白)下表现异常。

这背后的本质原因是:神经网络并不会主动区分“哪些特征是真正导致专家动作的原因”,哪些只是偶然一起出现的“相关信息”。当输入维度高、视觉信息丰富时,模型能轻易找到很多让损失下降的“捷径”——比如根据颜色、背景、角度等无关特征去预测动作。它依然能在训练集上取得很低的误差,但这些学习到的关联并不能在新环境中泛化。

因此,观测空间越复杂,潜在的“伪相关信号”就越多,模型越可能陷入“因果混淆”——即错误地把环境中的共现特征当作决策依据,而忽略真正起决定作用的因果因素。

动作分块可以缓解非马尔可夫问题,且无需引入额外的输入信号。仅基于当前观测,动作分块策略会预测一个动作序列,该序列包含隐式的相对时间信息。直观地说,一个预测的动作序列表示“从未来的第 K 步开始,策略在 N 步内输出零动作,并在第 (K + N) 步开始移动”。因此,只要时间混杂因素(暂停)发生在一个动作分块内,行为就又具有马尔可夫性。

Action smoothening

可以通过提高策略的控制频率,让策略在执行当前动作块时捕获观测并同时预测下一个动作块,而不是在预测下一个动作块之前执行整个动作块。这样做的好处是,对于任何获得一组动作的时间步,对这些动作进行加权平均将得到更平滑的最终动作。

动作分块与动作平滑示例

动作分块与动作平滑流程

在上述示例中,策略推理每两步执行一次,但每次预测三个动作。因此,每两步会得到两个重叠的预测动作(如 a₃,一个是 o₁ 观测的输出,另一个是 o₃ 观测的输出,两个观测都能对同一个时刻做输出),便可以引入一些权重参数,将这两个观测的输出进行加权。可以对这两个动作求平均值,以产生一个可能更好的动作。在实践中,可以进一步增加两个动作块之间的重叠窗口,并在每个时间步得到一个更大的集合。

一个实际的例子,比如策略预测某个关节的转动角度: o₁ 时刻的输出:1.0 –> 2.0 –> 3.0 –> 4.0 o₃ 时刻的输出:xx –> xx –> 3.6 –> 4.8 –> 6.0 –> 7.2 如果真实机器人直接在 a₃ 使用 o₃ 时刻的输出,那么就会导致轨迹的不平滑性:从 2.0 跳到 3.6 的幅度大于 1.0 跳到 2.0 的幅度,因此可以对两个 a₃ 的数值进行线性加权:取 70% o₁ 时刻的输出和 30% o₂ 时刻的输出,进行加权平均,得到 3.18 将减小跳动幅度。

Outputting high-frequency actions

对于一些需要高精度或灵活性的任务,像 50Hz 这样的高动作频率是必要的。

然而,期望视觉运动策略以如此高的频率运行是不切实际的,尤其是在有多个摄像头的情况下。因此,closed-loop 策略在这种情况下肯定是不可取的,因为它要求网络在接收到输入后 20 毫秒内生成一个动作,以便当前的推理不会阻塞下一个推理。

通过动作分块,可以让策略以低得多的频率(如 1Hz)运行,但要求它一次输出一个包含 50 个动作的块。这本质上是利用更大、更强的模型预测未来 1 秒的动作,同时拥有更高的推理预算。

Handling model inference latency

Handling model inference latency
最后一个好处也与模型推理延迟有关。到目前为止,对模仿学习的讨论都忽略了实际部署场景,而该场景总会导致观测序列和动作序列之间出现偏差。为了理解为什么会这样,假设有一个 closed-loop 策略,它能够在 50 毫秒内生成一个动作,并且以 10Hz 的频率运行。

通过演示轨迹 (o₁, a₁), (o₂, a₂), … 期望该策略能够正确学习映射关系 oₜ → aₜ,这样,当它在实际中进行推理时,理想情况下将重现相同的训练轨迹。

闭环控制(含推理延迟)与动作分块控制(含推理延迟)流程对比

然而,尽管在这个例子中 50 毫秒小于控制间隔 100 毫秒,a₁ 不会在 o₁ 步骤执行,因为它要在 50 毫秒后才可用。所以最早的步骤 a₁ 将在 100 毫秒后执行。这改变了环境动态,并且策略行为可能不是最优的。根本原因在于计算机输出控制信号是有时间间隔的。

基本上,在考虑推理延迟的情况下,闭环控制中的策略总是在为过去生成动作而不是真实的当前时刻。为了弥补这一点,可以使用动作分块技术,通过生成更多未来的动作来提前规划,以便未来的时间步可以使用这些前瞻动作来实现适当的动态转换。

在上述示例中,策略会一次性生成四个动作 a₁/a₂/a₃/a₄,但由于推理延迟,这些动作在 o₂ 之后将不可用。为了保持从 o₁ 到 o₃ 的转换,可以从上一个分块中获取 a₁ 和 a₂ 并执行它们。然后,在当前分块中的 a₃ 和 a₄ 将在 o₃ 处的下一次策略推理期间使用。通过这种方式,可以恰当地维持环境动态转换,并保证策略性能。

Summary

在本文中,回顾了动作分块对模仿学习的若干益处。因此,作者认为在从演示数据中训练良好策略时,默认应采用动作分块。有多种方法可以让网络一次输出一系列动作,例如扩散策略(Diffusion Policy)和流匹配(Flow Matching)。

郑立
郑立
Researcher