DQN的理解

假设从经验池中随机取出数据:
(s1,a1,r1,s2,False),
(s7,a7,r7,s8,False),
(s18,a18,r18,s19,Flase)。
- 目标值网络这边:在第一条数据中,把下一状态s2输出到神经网络中,将输出该状态下,各个动作对应的Q值,记作Q1_next。比如Q1_next=(0.5,0.6,0.9,0.2),意思是s2状态下执行a1的Q值为0.5,执行a2的Q值为0.6,执行a3的Q值为0.9,执行a4的Q值为0.2。这对应着第一张图目标值网络对应的输出。
- 当前值网络这边:第一条数据中,把当前状态s1输入当前值网络,也会输出该状态下各个动作对应的Q值,然后通过贪婪策略选择Q值最大的那一个动作作为a1,图一中最大的Q值记为Q(s, a; θ),图二中记为Q(ai) 。这和 当前网络与环境交互时选择动作 是吻合的。
- DQN误差函数里面:首先计算Q1_target = r1 + gama*Max(Q1_next) ,然后计算loss_1 =( Q1_target - Q1(s, a; θ) )^2。进而梯度下降方向传播来更新网络参数 θ。
- 同样,将第二条、第三条的下一状态都输入目标值网络,得到相应的Q7_next, Q18_next。
- …