我刚接触深度强化学习,DQN模型。我使用Open AI gym分别重现了一些名为CartPole-v0和MountainCar-v0的实验。
我参考了Github,CartPole-v0https://gist.github.com/floodsung/3b9d893f1e0788f8fad0e6b49cde70f1 MountainCar-v0 :https://gist.github.com/floodsung/0c64d10cab5298c63cd0fc004a94ba1f的代码。
这两个模型都能成功运行,并获得预期的测试集奖励。但两种模型的每个时间步长的奖励是不同的。
对于CartPole-v0,奖励是+1和0。每一集都有300个时间步长,代理试图尽可能多地获得总奖励。源代码如下:https://github.com/openai/gym/blob/master/gym/envs/classic_control/cartpole.py
但在MountainCar-v0中,所有操作的奖励始终为-1,因此代理试图最终获得比平时更少的负奖励。它还在这里解释了How does DQN work in an environment where reward is always -1。
所以这让我感到困惑,如何确定动作或状态的奖励?在有限的时间内,无论是积极的奖励还是消极的奖励都是有意义的?选择使用哪一个的原则是什么?我发现有时候奖励可以是它们之间的浮点数。
以及如何避免“自杀本身”的情况,在这种情况下,智能体自杀而不是试图到达目标,因为“活惩罚”(智能体每一步都会收到惩罚,以加速开发阶段的探索)。>https://datascience.stackexchange.com/questions/43592/rl-weighthing-negative-rewards
提前感谢!
发布于 2020-07-21 08:47:46
有两点需要考虑:首先,在DQN中,代理试图通过以下方式最大化Q-值的近似值:
Q(s_t,a) = r(s_t,a_t) + \gamma * \max_{a} Q(s_{t+1}, a)
因此,无论奖励是什么,DQN都想学习最大化长期奖励的策略,即Q(s,a)。在你的两个例子中,DQN选择获得更高回报的动作,在CartPole中是200,MountainCar更接近于零将是最好的。
第二点是DQN使用目标网络来获得目标值并训练Q网络。在目标网络中,目标值为:
target-value = r(s_t,a_t) + (1-done)*\gamma * \max_{a} Q(s_{t+1}, a)
其中,如果为done==1,则target-value等于r(s_t,a_t)。换句话说,DQN可以访问处于终端状态的知识,并使用该知识来学习智能策略。
https://stackoverflow.com/questions/63005031
复制相似问题