首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DDQN和DQN有什么区别?

DDQN和DQN有什么区别?
EN

Data Science用户
提问于 2018-09-22 05:19:54
回答 2查看 17K关注 0票数 10

我想我不明白DQN和DDQN在实现上有什么区别。我知道在DDQN运行期间我们改变了traget网络,但我不明白在这段代码中是如何实现的。

我们将self.target_model.set_weights(self.model.get_weights())放在DDQN的实现中,这是在DQN的操作完成后添加的,https://github.com/keon/deep-q-learningself.target_model.set_weights(self.model.get_weights())添加到DQN中,以便将DQN更改为DDQN!但这发生在我们出去跑步时休息一下!因为他们之间没有什么区别!

我脑子里有什么问题?(也许差别会在测试中?这是火车的代码和测试是通过设置探索rate=0,然后运行这一集与新的重量,我们发现?是对的吗?

因此,这个链接的DQNDDQN之间有什么区别。

EN

回答 2

Data Science用户

发布于 2019-01-17 03:47:26

特别是,DQN仅仅是Q学习,它使用神经网络作为策略,使用诸如经验重放、目标网络和奖励裁剪之类的“黑客”。

原纸r中,作者使用卷积网络,它获取图像像素,然后将其放入一组卷积层中。然而,有几个统计问题:

  1. DQN近似于一组相互关联的值(DDQN解决了它)
  2. DQN倾向于过于乐观。它会过度感激处于这种状态,虽然这只是由于统计错误(双DQN解决它)。

Q(s,a) = V(s) + A(s,a)

通过解耦估计,我们的DDQN可以直观地知道哪些状态是有价值的(或者没有),而不必了解每个状态下每个动作的效果(因为它也在计算V(s))。

我们可以计算V(s)。这对于那些其行动不以相关方式影响环境的国家尤其有用。在这种情况下,没有必要计算每个操作的值。例如,只有在有碰撞风险的情况下,才会向右或向左移动。

正如@emilyfy所说的,self.target_model.set_weights(self.model.get_weights()) -更新目标模型。

票数 6
EN

Data Science用户

发布于 2018-10-15 09:31:56

据我所知,DQN和DDQN之间的区别在于计算下一个状态的目标q值。在DQN中,对于所有可能的操作,我们只是取所有q值的最大值。这可能会选择过高的值,因此DDPG建议估计所选操作的值。所选择的行动是我们的政策模式选择的行动。

我仔细看了看代码,也很困惑,因为这一点没有实现。然后我意识到他们被淘汰了。这里的评论线将使用当前模型为下一个状态选择操作,并使用目标模型获取所选操作的q值。他们一段时间前就把它改了,不知道为什么。

对于代码self.target_model.set_weights(self.model.get_weights()),它是对目标模型的更新。目标模型应具有与策略模型相同的功能,但DQN算法有意将它们分离,并不时更新以稳定训练。它可以每一步完成一次,或者在这种情况下,他们似乎每一集都这么做。

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

https://datascience.stackexchange.com/questions/38632

复制
相关文章

相似问题

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