随着连续动作维度的增加,智能体的学习困难

人工智能 强化学习 Python 机器人技术
2021-10-26 14:30:35

我一直在从事一些 RL 项目,其中策略是使用其关节角度控制机器人。在整个项目中,我注意到了一些现象,这引起了我的注意。我决定创建一个非常简化的脚本来调查这个问题。它是这样的:

环境

有一个机器人,有两个旋转关节,所以有 2 个自由度。这意味着它的连续动作空间(关节旋转角度)的维数为 2。让我们用a来表示这个动作向量。我将每步的最大关节旋转角度从 11 度更改为 1 度,并确保在剧集因超时而被迫终止之前允许环境执行合理数量的步数。

我们的目标是通过使机器人当前的关节配置c更接近目标关节角度配置g(也是二维输入向量)来移动机器人。因此,我选择的奖励是 e^(-L2_distance( c , g ))。

L2_distance 越小,奖励越高,所以我确信机器人被适当地激励以快速达到目标。

奖励函数(y轴:奖励,x轴:L2距离):

奖励函数(y轴:奖励,x轴:L2距离)

所以每一步的伪代码如下:

  • 通过预测的关节角度增量移动关节

  • 收集奖励

  • 如果超时或联合过多地偏离某些不切实际的配置:终止。

非常简单的环境,在我们的问题中没有太多的活动部件。

强化学习算法

我使用 Catalyst 框架使用 TD3 算法在 actor-critic 设置中训练我的代理。通过使用我非常熟悉的经过测试的框架,我很确定没有实现错误。

该策略是目标驱动的,因此参与者使用连接的当前和目标联合配置a = policy([ c , g ])

大问题

当机器人只有两个自由度时,训练很快收敛,机器人学会高精度地解决任务(最终L2距离小于0.01)。

融合 2D 代理的性能。y 轴:关节角度值,x 轴:剧集​​数。十字表示机器人的期望目标状态:

融合 2D 代理的性能。 y 轴:关节角度值,x 轴:剧集​​数。 十字表示机器人的期望目标状态。

然而,如果问题变得更复杂——我将关节尺寸增加到 4D 或 6D,机器人最初会学习接近目标,但它永远不会“微调”它的运动。一些关节倾向于围绕端点摆动,其中一些倾向于过冲。

我一直在尝试不同的想法:让网络更广泛、更深入,改变行动步骤。我还没有尝试过优化器调度。无论代理接收多少样本或训练多长时间,它都不会以所需的准确度(L2_distance 小于 0.05)学习接近目标。

融合 4D 代理的性能。y 轴:关节角度值,x 轴:剧集​​数。十字表示机器人的期望目标状态:

融合 4D 代理的性能。 y 轴:关节角度值,x 轴:剧集​​数。 十字表示机器人的期望目标状态。

2D 代理(红色)和 4D 代理(橙色)的训练曲线。2D 代理迅速将 L2 距离最小化到小于 0.05,而 4D 代理则难以低于 0.1:

2D 代理(红色)和 4D 代理(橙色)的训练曲线。 2D 智能体迅速将 L2 距离最小化到小于 0.05,而 4D 智能体难以低于 0.1。

文献研究

我查看了描述使用 TD3 算法在关节空间中进行运动规划的论文。

与我的方法没有太大区别: Link 1 Link 2

他们的问题要困难得多,因为政策还需要学习联合空间中的障碍模型,而不仅仅是目标的概念。它们唯一的特别之处在于它们使用了相当宽和浅的网络。但这是唯一的奇特之处。我真的很感兴趣,你们会建议我怎么做,这样机器人才能在更高的关节配置维度上达到高精度?我在这里想念什么?!

感谢您在这件事上的任何帮助!

0个回答
没有发现任何回复~