首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定在DQN模型中使用正奖励还是负奖励?

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

Stack Overflow用户
提问于 2020-07-21 07:05:29
回答 1查看 408关注 0票数 0

我刚接触深度强化学习,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

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 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可以访问处于终端状态的知识,并使用该知识来学习智能策略。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63005031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档