我不知道如何得到DDQN的Q值。你知道吗
DQN是普通网络,TAR是目标网络。你知道吗
q_values = self.DQN.predict(c_states) # DQN batch predict Q on states
dqn_next = self.DQN.predict(n_states) # DQN batch predict Q on next_states
tar_next = self.TAR.predict(n_states) # TAR batch predict Q on next_states
我主要发现了两个版本:
第1版:
q_values[i][actions[i]] = (rewards[i] + (GAMMA * np.amax(tar_next[i])))
第2版:
act = np.argmax(dqn_next[i])
q_values[i][actions[i]] = (rewards[i] + (GAMMA * tar_next[i][act]))
哪一个是正确的?为什么?你知道吗
版本1链接:
https://github.com/keon/deep-q-learning/blob/master/ddqn.py
https://pythonprogramming.net/training-deep-q-learning-dqn-reinforcement-learning-python-tutorial
版本2链接:
https://pylessons.com/CartPole-DDQN/
https://github.com/germain-hug/Deep-RL-Keras/blob/master/DDQN/ddqn.py
https://github.com/rlcode/reinforcement-learning/blob/master/3-atari/1-breakout/breakout_ddqn.py
https://jaromiru.com/2016/11/07/lets-make-a-dqn-double-learning-and-prioritized-experience-replay/
编辑: 非常感谢,澄清这一点
SARSA:
q_values[i][actions[i]] = (rewards[i] + (GAMMA * np.amax(tar_next[i])))
Q-learning:
act = np.argmax(dqn_next[i])
q_values[i][actions[i]] = (rewards[i] + (GAMMA * tar_next[i][act]))
非常有用的链接,阅读萨尔萨在我的名单上,但后来;)。。。你知道吗
这是Q-learning(带有max操作符的版本)与SARSA(没有max操作符)。你知道吗
简而言之,您使用e-greedy策略收集样本:这是您的行为(或探索)策略。您要学习的策略称为“目标”,可以不同。
在Q-learning中,使用max操作符,因此根据贪婪(target)策略选择目标。这被称为关闭策略学习,因为您使用不同策略(行为)收集的样本学习策略(目标)。
在SARSA中,没有max,因此在实践中,您只需使用由行为策略选择的示例中的操作。这是在策略上,因为目标和行为是相同的。你知道吗
选择哪一个取决于你,但我认为Q-learning更常见(DQN使用Q-learning)。你知道吗
更多关于这个的阅读
What is the difference between Q-learning and SARSA?
Are Q-learning and SARSA with greedy selection equivalent?
https://stats.stackexchange.com/questions/184657/what-is-the-difference-between-off-policy-and-on-policy-learning
http://incompleteideas.net/book/RLbook2018.pdf
相关问题 更多 >
编程相关推荐