如何确定DQN模型中使用正面奖励还是负面奖励?

时间:2020-07-20 23:05:29

标签: deep-learning reinforcement-learning openai-gym dqn

我是深度强化学习DQN模型的新手。我使用Open AI Gym进行了分别名为CartPole-v0MountainCar-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

谢谢!

1 个答案:

答案 0 :(得分:0)

有两点要考虑: 首先,在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)

其中target-value等于r(s_t,a_t),如果done==1。换句话说,DQN可以访问处于终端状态的知识,并以此来学习智能策略。