DQN的多种改进(1)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://zhuyulab.blog.csdn.net/article/details/88358966

1.N-step DQN

N-step DQN的核心是将bellman方程展开,即 Q(st,at)=rt+γrt+1+γ2maxaQ(st+2,a)Q(s_t,a_t) = r_t + \gamma r_{t+1} + \gamma^2 max_{a'}Q(s_{t+2},a')
显然,这个式子可以进一步的拓展。 但要注意的是,这里假设了ata_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(st,at)=rt+γmaxatarget_Q(s,argmaxaQ(s,a))Q(s_t,a_t) = r_t + \gamma max_{a'}target\_Q(s', argmax_{a'}Q(s',a'))

比较一下DQN的式子:
Q(st,at)=rt+γmaxaAtarget_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. 限制高斯变量只在一个有限的随机矩阵中取。

结论: 大大加速了收敛。

展开阅读全文

没有更多推荐了,返回首页