【问题标题】:PPO algorithm converges on only one actionPPO 算法只收敛于一个动作
【发布时间】:2020-08-18 01:29:52
【问题描述】:

我已经参考了 PPO 算法的一些实现,并正在尝试创建一个可以玩太空入侵者的代理。不幸的是,从第 2 次试验开始(在第一次训练 actor 和critic N Networks 之后),动作的概率分布只收敛于动作,而 PPO 损失和批评者损失只收敛于一个值。

想了解发生这种情况的可能原因。我真的不能在我的云虚拟机中运行代码,因为我不能确定我没有遗漏任何东西,因为虚拟机的使用成本很高。我将不胜感激这方面的任何帮助或建议。如果需要,我也可以发布代码。使用的超参数如下:

clipping_val = 0.2critic_discount = 0.5 entropy_beta = 0.001 gamma = 0.99 lambda = 0.95

【问题讨论】:

  • 请看一些代码。您是否使用 CNN 的原始像素方法?如果是这样,您是否从教程中获得了这个?
  • 是的,我正在采用原始像素方法。我实际上是从多个教程中获取的,并嵌入了一些我自己的代码
  • 代码仓库:github.com/superchiku/ReinforcementLearning。代码仍然很不完善,但其中包含所有核心逻辑。无论我使用哪种 atari 游戏,问题仍然存在,我已经在 pacman 和太空入侵者上尝试过这个

标签: artificial-intelligence reinforcement-learning policy-gradient-descent


【解决方案1】:

其中一个原因可能是您没有在 [0,1] 范围内对 CNN 的输入进行归一化,从而使您的神经网络饱和。我建议您在代码中使用 preprocess() 函数将状态(输入)转换为网络。

def preprocess(self,img):
    width = img.shape[1]
    height = img.shape[0]
    dim = (abs(width/2), abs(height/2))
    resized = cv2.resize(img,(80,105) ) #interpolation = cv2.INTER_AREA)
    resized = resized/255.0 # convert all pixel values in [0,1] range
    resized = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
    resized = resized.reshape(resized.shape+(1,))
    return resized

【讨论】:

  • 感谢您的提示。是的,我开始使用它,但我仍然没有得到理想的性能......你认为还有什么可以改进的?我还注意到,评论家奖励预测也停滞在 0.99 和 1 之间...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 2020-03-08
  • 1970-01-01
相关资源
最近更新 更多