【发布时间】:2020-04-14 07:26:53
【问题描述】:
我不确定如何获取 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
我主要找到了2个版本:
版本 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://github.com/germain-hug/Deep-RL-Keras/blob/master/DDQN/ddqn.py
https://jaromiru.com/2016/11/07/lets-make-a-dqn-double-learning-and-prioritized-experience-replay/
编辑: 非常感谢,澄清这一点
Q-learning:
q_values[i][actions[i]] = (rewards[i] + (GAMMA * np.amax(tar_next[i])))
SARSA:
act = np.argmax(dqn_next[i])
q_values[i][actions[i]] = (rewards[i] + (GAMMA * tar_next[i][act]))
编辑:2020 年 3 月重新开放
对不起,我必须重新提出这个问题。也许我误解了什么,但以下来源表明我的第 2 版 (SARSA) 是双 Q 学习?
第 158 页:双 Q 学习 http://incompleteideas.net/book/RLbook2018.pdf
【问题讨论】:
标签: python deep-learning neural-network reinforcement-learning