如何修复连续动作空间中的抖动运动

人工智能 强化学习 深度学习 深度学习 奖励 奖励塑造
2021-11-17 21:53:18

我正在训练一个代理来避免对象。代理可以控制其转向角和速度。转向角和速度归一化[1,1]范围,其中符号编码方向(即 -1 的速度意味着它以最大单位/秒向后移动)。

我的奖励函数惩罚代理与障碍物碰撞并奖励它离开其起始位置。一次t, 奖励,Rt, 定义为

Rt={rcollision,if collides,λd(ptx,yp0x,y2pt1x,yp0x,y2),otherwise,
在哪里λd是比例因子,并且pt一次给出代理的姿势t. 我们的想法是我们应该奖励离开初始位置的代理(并且在某种意义上“探索”地图——我不确定这是否是激励探索的好方法,但我离题了)。

我的环境是一个未知的二维地图,其中包含圆形障碍物(具有不同的半径)。该代理配备了一个传感器,用于测量与附近障碍物的距离(类似于 2D LiDAR 传感器)。下图显示了环境和代理。

环境

由于我正在尝试对汽车进行建模,因此我希望代理能够前进和后退;然而,在训练时,代理的动作非常生涩。它在前进(正速度)和倒车(负速度)之间快速切换。就是我要说的。

我的一个想法是在代理反转时惩罚它。虽然这确实显着减少了紧张行为,但它也导致代理故意撞到障碍物上。事实上,随着时间的推移,平均剧集长度减少了。我认为这是代理人对反向处罚的回应。负奖励激励代理尽快到达终点。在我们的例子中,唯一的终点是障碍物碰撞。

因此,我尝试奖励代理前进而不是惩罚它倒车,但这似乎没有多大作用。显然,我不认为直接通过奖励来纠正生涩的行为是正确的方法。但我也不确定如何以其他方式做到这一点。也许我只需要重新考虑我的奖励信号希望代理实现什么?

如何重新设计奖励功能以让智能体在地图上移动,覆盖尽可能远的距离,同时保持平稳移动?

1个回答

我认为您应该尝试根据代理探索的总“区域”而不是它从初始点移动的“多远”来进行推理,并且您还应该添加一些奖励条款以更频繁地推动代理转向。我认为你的设置的问题或多或少是这样的:代理尽可能地直行,因为你正在奖励它,它开始感知障碍物所以它停下来,转向没有奖励,所以最好的策略离开障碍而不结束这一集只是倒退。

考虑到您随时都有关于网格点的信息,您可以通过在每次移动时检查代理是否最终进入新的方形网格来根据探索的网格平方重写奖励函数:

Rt={rcollisionλd(ptx,yp0x,y2pt1x,yp0x,y2)+rnewsquaredexplored

此外,添加一些与智能体如何避开障碍物相关的奖励术语也会很有用,例如当传感器通过并保持在某个阈值以下时的惩罚(以使智能体学会不去并且离障碍物太近) ) 但当检测到障碍物并且代理设法与它保持一定距离时,它也是一个有益的术语(即使如果没有很好地调整这个术语可能会导致代理学习只是围绕单个障碍物转圈,但如果调整正确地,我认为这可能有助于使代理运动更顺畅)。