在机器人学的端到端学习中,使用验证集有用吗?

社区文章 发布于2024年12月1日

引言

在经典的监督学习中,在训练期间,通常会在一个保留的验证集上计算分类的准确性或回归的均方误差等指标。这些指标是衡量模型泛化到与训练集相同上下文中收集到的未见输入的能力的强有力指标。因此,它们被用来选择最佳模型检查点或“早期停止”训练。

然而,在真实机器人端到端模仿学习的背景下,实践者对于使用验证集选择最佳检查点的最佳指标和实践没有明确的共识。这是因为机器人专家旨在优化的指标是成功率。换句话说,机器人完成任务的成功尝试百分比。这需要在测试环境中长时间在机器人上运行策略,以确保外部因素导致的低方差。例如,光照条件可能会变化,房间布局可能日复一日地变化,机器人电机的动力学可能由于使用而变化,等等。更重要的是,成功率无法在验证集上计算。只能计算验证损失或其他代理指标,例如动作空间中的均方误差。

由于计算每个模型检查点的成功率成本太高,一些实践者建议使用验证损失来选择最佳检查点。例如,ACT和Aloha的作者Zhao等人指出,“在测试时,我们加载实现最低验证损失的策略并在环境中执行”。另一方面,斯坦福大学Robomimic的作者注意到,“[在验证损失上早期停止的策略]比[我们评估所有检查点时]表现最好的策略差50%到100%”,这表明选择具有最低验证损失的检查点并不能保证最高的成功率。

有几个假设可以解释为什么低验证损失并不能预测高成功率。首先,人类遥操作训练期间收集的数据与策略控制机器人评估期间获得的数据之间可能存在分布偏移。这种偏移可能是由于我们之前列出的环境中或机器人的所有可能变化,也可能是由于策略的微小预测误差随时间累积,使机器人偏离常见轨迹。因此,策略在评估期间看到的输入可能与训练期间看到的输入大相径庭。在这种情况下,计算验证损失可能没有帮助,因为损失函数用于优化复制人类演示器轨迹,但它不考虑泛化到训练分布之外的能力。它不直接优化在可能变化的环境中完成任务的成功率。

在本研究中,我们将探讨验证损失是否可以用于选择与最高成功率相关的最佳检查点。如果事实并非如此,那么在训练集的保留子集上计算验证损失可能没有用,甚至可能损害性能,因为训练是在训练集的较小部分上进行的。我们还将讨论使用验证损失的替代方案。我们的实验在两个常用的模拟环境 PushT 和 Aloha Transfer Cube 中进行,分别使用两种不同的策略:Diffusion 和 ACT(带有 Transformer 的动作分块)。模拟使我们能够准确地计算每 1 万个检查点的成功率,这在实际环境中是具有挑战性的,如前所述。

推T

实验设置

PushT

图1:PushT环境

扩散策略在 PushT 数据集上进行训练,其中包含 206 个剧集,帧率为 10 FPS,总共产生 25,650 帧,平均剧集时长为 12 秒。

我们使用与Diffusion Policy作者相同的超参数。我们用三个不同的种子训练策略,然后计算每个指标的简单平均值。

在训练过程中,每10000步在模拟环境中进行评估。我们执行策略50次,并计算成功率。

训练10万步并每1万步进行评估大约需要5小时,使用一块标准GPU。运行评估和计算成功率是最耗时的部分,每次批量部署平均需要15分钟。

定量结果

我们计算去噪网络输出的扩散验证损失。它是预测噪声与用作训练损失的实际噪声之间的损失。我们还计算了一个更明确的指标来评估策略的动作预测性能,即均方误差 (MSE)。我们比较了 N 个动作步的预测动作和真实动作。我们复制了在推理过程中通过观察和动作队列进行的动作选择过程。

我们注意到验证损失与成功率呈现发散模式,而 MSE 与成功率之间没有相关性。

PushT Validation Loss

图2:PushT验证损失

PushT Mean Squared Error

图3:PushT均方误差

PushT Success Rate

图4:PushT成功率

从最初的 10,000 步到 60,000 步,验证损失持续增加,并且在训练结束时未能恢复到其最低水平。相比之下,尽管验证损失持续增加,但在这些步中,所有种子运行的成功率都持续提高。

均方误差的变化也不能用作可靠的参考点。MSE 在 4 万到 6 万步之间增加,但成功率却提高,这与经典监督学习中较低 MSE 通常与较高性能相关的通常关联相矛盾。MSE 在 6 万到 7 万之间下降,在 7 万到 8 万之间增加,但在这两个区间内,成功率都下降了。

这仅表明,从行动预测损失的变化中无法推断出明确的信号。特别是在给定步骤的 MSE 损失的标准偏差(Std)可能与 MSE 在不同步骤中的变化具有相同量级的情况下,更是如此。

我们通过对 500 个事件进行代价高昂的评估来确认这些结果,以获得更多样本并降低方差。为了确认验证损失和成功率之间没有相关性,我们评估了 2 万步、5 万步和 9 万步的检查点。(图 5 )我们展示了相对于第一列的变化。

步骤 2万步 5万步 9万步
成功率 (%) 40.47 +55.27% +25.73%
验证损失 0.0412 +134.57% +35.94%

图5:PushT成功率和去噪验证损失随步骤变化的平均值(3个种子)

在训练5万步后,验证损失是2万步后的两倍多,而成功率平均提高了50%以上。此外,验证损失在5万步和9万步之间降低,但成功率也随之降低。

这表明仅使用验证损失来解释策略性能存在局限性。

MSE 损失的变化也不是评估成功率的指标。

为了确认均方误差与成功率之间没有相关性,我们评估了 4 万步、6 万步和 8 万步的检查点。(图 6 )我们展示了相对于第一列的变化。

步骤 4万步 6万步 9万步
MSE损失 0.02023 +3.22% +2.66%
成功百分比 (%) 61.08 +2.73% -17.82%

图6:PushT成功率和MSE损失随步骤变化的平均值(3个种子)


这些发现表明,仅靠监控指标可能不足以预测端到端模仿学习中的性能,也无法用于对停止训练做出明智的判断。

定性结果

在训练过程中,策略能够很好地适应平滑轨迹规划。

PushT

图7:PushT训练集原始示例

PushT

图8:PushT展开情节以更高分辨率渲染

我们注意到,随着训练步数的增加,策略变得不那么抖动,并且更好地适应了离群状态。它还能够规划更长的轨迹,并预测在当前位置到下一个位置的距离方面更精确的动作。

图10图11 的起始位置相同,但策略只有在 80K 步数时才能匹配准确的 T 位置。

图9:2万步后的PushT扩散策略

图10:5万步后的PushT扩散策略

图11:8万步后的PushT扩散策略

但即使在 90K 训练步之后,仍然存在一些失败案例。

图12:PushT失败案例

转移立方体

实验设置

在第二次模拟中,我们使用 Aloha 机械臂环境进行转移立方体任务,其中包含 50 个由人类记录的数据。每个剧集包含 400 帧,帧率为 50 FPS,因此每个剧集时长为 8 秒,并使用单个顶置摄像头捕获。

TransferCube

图13:Aloha转移立方体环境

我们使用与 ACT 作者相同的超参数。与 PushT 类似,我们使用三个不同的种子训练策略。

训练 10 万步加上每 1 万步评估大约需要 6 小时,使用一块标准 GPU。运行评估和计算成功率仍然是最耗时的部分,在此任务中,每次批量部署平均需要 20 分钟。

定量结果

在转移立方体的情况下,我们计算了验证损失。我们还复制了推理期间动作选择的过程,并计算了每 10,000 步预测的 N 个动作步的动作的均方误差。此处 N 个动作步等于 100,并且策略一次预测 100 个动作。

我们注意到,尽管验证损失趋于平稳,但成功率仍在持续增长。我们还注意到,MSE 损失的变化与成功率的变化不同步,并且变化过大,无法得出相关结论。

Transfer Cube Validation Loss

图14:转移立方体验证损失

Transfer Cube Mean Squared Error

图15:转移立方体均方误差

Transfer Cube Success Rate

图16:转移立方体成功率

训练期间计算的成功率变化很大(平均只有50个评估事件),不能得出结论,这就是为什么我们对500个事件进行了额外评估。

为了确认验证损失和成功率之间没有相关性,我们计算了 3 万步、7 万步和 10 万步时的成功率。(图 17 )我们展示了相对于第一列的变化。

步骤 3万步 7万步 10万步
成功率 (%) 53.33 +12.94% +16.67%
验证损失 0.2289 -2.04% -2.03%

图17:转移立方体成功率和验证损失(3个种子的平均值)


因此,虽然验证损失大致相同,或者减少了2%,但成功率却增加了15%以上。基于这种精细的信号进行早期停止具有挑战性;对于我们的任务来说,它似乎并不有效。

我们对 5 万步和 6 万步的检查点进行了额外评估,以确认 MSE 损失和成功率之间没有相关性。(图 18 )我们展示了相对于第一列的变化。

步骤 3万步 5万步 6万步
平均成功率 53.33 55.65 (+4.35%) 63.22 (+18.54%)
MSE损失 0.8178 0.8153 (-0.31%) 0.8156 (-0.27%)

图18:转移立方体成功率和MSE损失(3个种子的平均值)


虽然每次评估检查点的均方误差损失差异不大,但模型的性能却稳定提升。

定性结果

我们注意到该策略擅长完成未曾见过的轨迹,并适应非分布数据。

也就是说,训练集中很少有在抓取立方体失败后重新调整轨迹的片段,或者至少在原地进行调整,通过水平移动手臂。最接近调整的是这种类型的移动

GIF 1

图19:训练集示例

但是当在评估中展开策略时,我们注意到在许多情节中,轨迹的调整发生在手臂已经开始向上抬起时。这可能是因为我们只使用一个顶置摄像头进行训练,策略对深度没有很好的感知,因此在展开过程中错误地判断了立方体距离。策略通常会多次调整,这表明对非分布数据具有鲁棒性。

GIF 2

图20:多次调整轨迹的情节

在某些情况下,机器人即使尝试了几次,也未能抓取立方体。

GIF 3

图21:失败案例

尽管 5 万步和 9 万步之间的损失没有明显差异,但轨迹的平滑度有所改善。

图22:Aloha ACT 5万步后

图23:Aloha ACT 9万步后

结论

我们的实验揭示了验证损失和任务成功率指标之间的显著差异。在我们的任务中,显然不应使用验证损失来提前停止训练。这种策略不能保证最高的成功率。可以进行进一步的研究,以展示训练时间更长的模型的行为,因为它可能有助于减少损失和成功率的方差。在我们的案例中,我们训练模型直到达到给定架构的基线成功率。

在现实世界中,以低方差评估给定检查点的成功率极其昂贵。在训练过程中肯定无法在每个检查点都进行评估。相反,我们建议进行几次评估,主要关注定性评估,例如新能力的学习和机器人运动的流畅性。当不再观察到进展时,可以停止训练。

例如,在训练 PolleenRobotics 的 Reachy2(请参阅演示)抓取杯子并将其放在架子上,然后抓取一个苹果并递给坐在对面的人的手中,并旋转回初始位置时;我们注意到该策略逐渐学习了更高级的概念和轨迹

  • 在检查点20k时,机器人只能抓住杯子,但无法将其放在架子上。
  • 在检查点 30k,它学会了平稳地将其放置在架子上,但没有抓住苹果。
  • 在检查点 40k,它学会了抓苹果,但没有旋转。
  • 在检查点 50k,它学会了旋转并递出苹果,但没有旋转回来。
  • 最后,它学会了旋转回所需的最终位置并完成整个轨迹。

频繁进行小规模定性评估是一种有效的方法,可以发现错误,感受策略在不同检查点之间的能力和稳定性,并获得改进策略的灵感。

此外,更深入的方法包括在现实模拟中评估在真实数据上训练的策略,并使用模拟成功率作为真实成功率的替代指标。这些方法具有挑战性,因为它们需要使用高度逼真的物理引擎对机器人、环境和任务进行彻底建模。随着我们改进模拟,扩展这些方法可以带来更有效的训练,并降低真实世界评估的时间/资源成本。在此方向上的工作,我们可以引用

参考文献

社区

注册登录以评论