2

我正在用神经网络驱动工业机器人,到目前为止它运行良好。我正在使用 OpenAI 基线中的 PPO 算法,到目前为止,我可以通过使用以下奖励策略轻松地从点到点驾驶:

我计算目标和位置之间的标准化距离。然后我计算距离奖励。

rd = 1-(d/dmax)^a

对于每个时间步,我给代理一个计算的惩罚。

yt = 1-(t/tmax)*b

a 和 b 是要调整的超参数。

正如我所说,如果我想从点到点开车,这真的很好。但是如果我想开车兜风怎么办?对于我的工作,我需要避免碰撞,因此代理需要绕过物体。如果物体在最近的路径上不是笔直的,它就可以正常工作。然后机器人可以适应并围绕它行驶。但是,绕着直道的物体行驶变得越来越困难,甚至不可能。

看这张图片: 在此处输入图像描述

我已经阅读了一篇将 PPO 与 NES 结合起来为神经网络的参数创建一些高斯噪声的论文,但我自己无法实现。

有没有人有一些在 PPO 算法中增加更多探索的经验?或者是否有人对我如何改进我的奖励策略有一些一般性的想法?

4

1 回答 1

1

你所描述的实际上是 Deep RL 最重要的研究领域之一:探索问题。

PPO 算法(与许多其他“标准”RL 算法一样)试图最大化回报,这是您的环境提供的(通常是贴现的)奖励总和:

在此处输入图像描述

在你的情况下,你有一个欺骗性的梯度问题,你的返回点的梯度直接在你的目标点(因为你的奖励是到你的目标的距离),这会阻止你的代理探索其他区域。

这是本文中欺骗性梯度问题的说明,奖励的计算方式与您的一样,如您所见,返回函数的梯度直接指向您的目标(本例中的小方块)。如果你的代理从迷宫的右下角开始,你很可能会陷入局部最优。

在此处输入图像描述

有很多方法可以处理 RL 中的探索问题,例如在 PPO 中,您可以为您的操作添加一些噪音,其他一些方法(例如SAC )尝试在操作空间上最大化您的策略的奖励和熵,但是在最后,您无法保证在您的动作空间中添加探索噪声会导致您的状态空间有效(这实际上是您想要探索的,环境的 (x,y) 位置)。

我建议您阅读质量多样性(QD)文献,这是一个非常有前途的领域,旨在解决 RL 中的探索问题。

这里有两个很棒的资源:

最后我想补充一点,问题不在于你的奖励函数,你不应该尝试设计一个复杂的奖励函数,以便你的代理能够按照你的意愿行事。目标是拥有一个能够解决您的环境的代理,尽管存在诸如欺骗性梯度问题之类的陷阱。

于 2020-07-23T10:29:36.420 回答