我想我不明白DQN和DDQN在实现上有什么区别。我知道在DDQN运行期间我们改变了traget网络,但我不明白在这段代码中是如何实现的。
我们将self.target_model.set_weights(self.model.get_weights())放在DDQN的实现中,这是在DQN的操作完成后添加的,https://github.com/keon/deep-q-learning将self.target_model.set_weights(self.model.get_weights())添加到DQN中,以便将DQN更改为DDQN!但这发生在我们出去跑步时休息一下!因为他们之间没有什么区别!
我脑子里有什么问题?(也许差别会在测试中?这是火车的代码和测试是通过设置探索rate=0,然后运行这一集与新的重量,我们发现?是对的吗?
发布于 2019-01-17 03:47:26
特别是,DQN仅仅是Q学习,它使用神经网络作为策略,使用诸如经验重放、目标网络和奖励裁剪之类的“黑客”。
在原纸r中,作者使用卷积网络,它获取图像像素,然后将其放入一组卷积层中。然而,有几个统计问题:
通过解耦估计,我们的DDQN可以直观地知道哪些状态是有价值的(或者没有),而不必了解每个状态下每个动作的效果(因为它也在计算V(s))。
我们可以计算V(s)。这对于那些其行动不以相关方式影响环境的国家尤其有用。在这种情况下,没有必要计算每个操作的值。例如,只有在有碰撞风险的情况下,才会向右或向左移动。
正如@emilyfy所说的,self.target_model.set_weights(self.model.get_weights()) -更新目标模型。
发布于 2018-10-15 09:31:56
据我所知,DQN和DDQN之间的区别在于计算下一个状态的目标q值。在DQN中,对于所有可能的操作,我们只是取所有q值的最大值。这可能会选择过高的值,因此DDPG建议估计所选操作的值。所选择的行动是我们的政策模式选择的行动。
我仔细看了看代码,也很困惑,因为这一点没有实现。然后我意识到他们被淘汰了。这里的评论线将使用当前模型为下一个状态选择操作,并使用目标模型获取所选操作的q值。他们一段时间前就把它改了,不知道为什么。
对于代码self.target_model.set_weights(self.model.get_weights()),它是对目标模型的更新。目标模型应具有与策略模型相同的功能,但DQN算法有意将它们分离,并不时更新以稳定训练。它可以每一步完成一次,或者在这种情况下,他们似乎每一集都这么做。
https://datascience.stackexchange.com/questions/38632
复制相似问题