0

我是深度强化学习 DQN 模型的新手。我使用 Open AI Gym 分别重现了一些名为CartPole-v0和的实验MountainCar-v0

我参考了 Github 的代码,CartPole-v0: https://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,因此代理试图最终获得比平时更少的负奖励。这里还解释了DQN 如何在奖励始终为 -1 的环境中工作

所以这让我很困惑如何确定动作或状态的奖励?在有限的时间步长内,似乎积极的奖励或消极的奖励都有意义?选择使用哪一个的原则是什么。我看到有时奖励可能是它们之间的浮点数。

以及如何避免“自杀”的情况,即代理自杀而不是试图达到目标,因为“活罚”(代理每一步都会受到惩罚,以加快探索阶段的利用阶段) . >https://datascience.stackexchange.com/questions/43592/rl-weighting-negative-rewards

提前致谢!

4

1 回答 1

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使用Target network获取目标值,训练Q-network。在目标网络中,目标值为:

target-value = r(s_t,a_t) + (1-done)*\gamma * \max_{a} Q(s_{t+1}, a)

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

于 2020-07-21T00:47:46.390 回答