DQN的多种改进(1)

1.N-step DQN

N-step DQN的核心是将bellman方程展开,即 Q ( s t , a t ) = r t + γ r t + 1 + γ 2 m a x a Q ( s t + 2 , a ) Q(s_t,a_t) = r_t + \gamma r_{t+1} + \gamma^2 max_{a'}Q(s_{t+2},a')
显然,这个式子可以进一步的拓展。 但要注意的是,这里假设了 a t a_t 是趋近于最优动作,因此才能省略max

书中提到,该方法的优点在于可以加速Q网络的收敛。 原因在于, 由于一开始的随机数据,使得真正准确的Q值其实只存在于最后一个状态。 因为只有最后一个状态的Q值等于reward是准确的,其余的都掺杂有不准确的target_Q网络的预测值。 而准确的Q值会在第一次迭代后影响到倒数第二层, 继而在下一次迭代后影响到倒数第三层。。 而如果使用N-step DQN, 可以使得准确的Q值在第一次迭代时就影响到倒数前N层,因此起到了加速收敛的作用。但是N值不能取得太大,因为每一步的a并不是最优动作,N值太大时会使得Q的计算严重出错,因为省略了max。且由于DQN off-policy的性质,a的值很可能来源于old policy, 从而影响性能。

2.Double DQN (DDQN)

一句话概括DDQN的改变就是下面这个式子:

Q ( s t , a t ) = r t + γ m a x a t a r g e t _ Q ( s , a r g m a x a Q ( s , a ) ) Q(s_t,a_t) = r_t + \gamma max_{a'}target\_Q(s', argmax_{a'}Q(s',a'))

比较一下DQN的式子:
Q ( s t , a t ) = r t + γ m a x a A t a r g e t _ Q ( s , a ) Q(s_t,a_t) = r_t + \gamma max_{a'\in A}target\_Q(s', a')
可以发现,区别在于 DDQN通过Q网络来选取a’, 而不是完全使用target_Q。 结果显示,这样可以防止Q网络的对value的过度预测,加快收敛。

3. Noise Network

之前的 ϵ \epsilon -greedy 的探索方式其实并不好,而一种改进的策略就是在Network中加入noise。(可以认为该noise强迫网络进行探索,而由于noise也会加入后向传播的优化,所以也会逐渐收敛)。

  1. 第一种方式: 对所有全连接层的每个权重,都加上一个高斯分布的噪声项进行干扰
  2. 限制高斯变量只在一个有限的随机矩阵中取。

结论: 大大加速了收敛。

猜你喜欢

转载自blog.csdn.net/weixin_39274659/article/details/88358966
DQN