强化学习。使用PPO绕行物体

时间:2020-07-23 06:09:46

标签: neural-network reinforcement-learning openai

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

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

rd = 1-(d/dmax)^a

对于每个时间步长,我都会给代理人罚款。

yt = 1-(t/tmax)*b

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

正如我所说,如果我要点到点开车,这真的很好。 但是,如果我想四处走动怎么办?对于我的工作,我需要避免碰撞,因此代理需要四处走动。如果物体在最近的路径上不是笔直的,则可以正常工作。然后,机器人可以适应并在其周围行驶。但是,越来越难以驾驶甚至无法绕开直行的物体。

查看此图片: enter image description here

我已经读过paper,它结合了PPO和NES来为神经网络的参数创建一些高斯噪声,但我自己无法实现。

有人在增加对PPO算法的探索方面有经验吗?还是有人对我如何改善奖励策略有一些一般性的想法?

1 个答案:

答案 0 :(得分:1)

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

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

enter image description here

在您的情况下,您遇到一个欺骗性梯度问题,即收益点的梯度直接位于您的目标点(因为您的奖励是距目标的距离),这会阻止您的探员进行探索其他地区。

这里是this paper的欺骗性梯度问题的说明,奖励的计算方式与您相同,如您所见,返回函数的梯度直接指向您的目标(在此示例中为小方块) 。如果您的代理人从迷宫的右下角开始,那么您很可能会陷入局部最优状态。

enter image description here

有许多方法可以解决RL中的探索问题,例如,在PPO中,您可以给您的行为添加一些噪音,而其他SAC之类的方法则可以最大限度地提高政策的收益和熵整个动作空间,但最终您无法保证在动作空间中添加探索噪声会提高您的状态空间的效率(这实际上是您想要的)来探索您的env的(x,y)位置。

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

这里有两个很棒的资源:

最后,我想补充一点,问题不在于您的奖励功能,您不应尝试设计复杂的奖励功能,以使您的代理能够像您想要的那样工作。我们的目标是要有一个能够解决您的环境问题的代理程序,即使存在诸如欺骗性梯度问题之类的陷阱。