我正在训练一个代理来避免对象。代理可以控制其转向角和速度。转向角和速度归一化范围,其中符号编码方向(即 -1 的速度意味着它以最大单位/秒向后移动)。
我的奖励函数惩罚代理与障碍物碰撞并奖励它离开其起始位置。一次, 奖励,, 定义为
我的环境是一个未知的二维地图,其中包含圆形障碍物(具有不同的半径)。该代理配备了一个传感器,用于测量与附近障碍物的距离(类似于 2D LiDAR 传感器)。下图显示了环境和代理。
由于我正在尝试对汽车进行建模,因此我希望代理能够前进和后退;然而,在训练时,代理的动作非常生涩。它在前进(正速度)和倒车(负速度)之间快速切换。这就是我要说的。
我的一个想法是在代理反转时惩罚它。虽然这确实显着减少了紧张行为,但它也导致代理故意撞到障碍物上。事实上,随着时间的推移,平均剧集长度减少了。我认为这是代理人对反向处罚的回应。负奖励激励代理尽快到达终点。在我们的例子中,唯一的终点是障碍物碰撞。
因此,我尝试奖励代理前进而不是惩罚它倒车,但这似乎没有多大作用。显然,我不认为直接通过奖励来纠正生涩的行为是正确的方法。但我也不确定如何以其他方式做到这一点。也许我只需要重新考虑我的奖励信号希望代理实现什么?
如何重新设计奖励功能以让智能体在地图上移动,覆盖尽可能远的距离,同时保持平稳移动?