Python 3.x a3c中的收敛问题

Python 3.x a3c中的收敛问题,python-3.x,tensorflow,keras,reinforcement-learning,Python 3.x,Tensorflow,Keras,Reinforcement Learning,我在keras中构建了一个A3C实现,并将此作为参考: 我使用的是定制环境,在这个环境中,代理可以选择购买一些物品,根据它们的状态价格出售或交换它们。好的交易会得到积极的回报,坏的交易会得到消极的回报。我曾经在DQN上测试过它,它成功地收敛,显示出非常好的结果。但当我在A3C中使用相同的环境时,它会导致模型反复选择相同的动作。我试着改变一些超参数,但没有结果。我还尝试使用目标模型并每n集更新一次,这导致了与gym CartPole环境的更好融合,但仍然不会影响我的模型在我的自定义环境中的性能。我

我在keras中构建了一个A3C实现,并将此作为参考:
我使用的是定制环境,在这个环境中,代理可以选择购买一些物品,根据它们的状态价格出售或交换它们。好的交易会得到积极的回报,坏的交易会得到消极的回报。我曾经在DQN上测试过它,它成功地收敛,显示出非常好的结果。但当我在A3C中使用相同的环境时,它会导致模型反复选择相同的动作。我试着改变一些超参数,但没有结果。我还尝试使用目标模型并每n集更新一次,这导致了与gym CartPole环境的更好融合,但仍然不会影响我的模型在我的自定义环境中的性能。我在reddit上发现了一些关于同一问题的讨论,但没有一个得到回答

当前政策变化过大是A3C算法不稳定的主要原因。有一些方法可以稳定它,例如,或。我建议您看看PPO——它很容易实现,但效率较低

在PPO中,您只需将损失函数(基于博客的符号)更改为:


建议使用
e=0.2
。祝您的实施顺利

对不起,这不是一个编程问题。RL算法的收敛性是出了名的不稳定,你对一个参数做一点小的改变,整个过程就会崩溃。@MatiasValdenegro你能告诉我在哪里可以问这个问题以获得更详细的答案吗?谢谢你的回答。在我的环境中,龙舌兰总是从一个随机的地方开始玩,所以我决定在将它的位置更改为随机的地方之前,在同一个地方运行几集。它有点起作用,但非常不稳定。它有时适当地会聚,有时一次又一次地选择同样的行动。我将尝试实现PRO,希望它能有所帮助