DQN调整超参数体会

接上篇
(Deep Reinforcement Learning with Double Q-learning, H. van Hasselt et al., arXiv, 2015)练习

DQN有很多超参数,主要有:经验回放集合尺寸,神经网络结构,GAMMA值,学习率,e_greedy值和正负回报值。如此多的超参数,很难调好,必须认真体会总结。

=======================经验回放大小=====================
首先是经验回放集合尺寸。agent把对环境的感知,放入经验回放中,作为神经网络的样本集合。我的体会是,如果经验回放集合尺寸太小了,必然要选择丢弃部分经验,如果选择丢弃的经验是很重要的,就会给训练带来不稳定。因此,经验回放集合越大越好,如果不确定什么样的经验是可以丢弃的,就不要丢弃。但这并不是说找一大片内存作经验回放就万事大吉了,选择什么经验存储,选择什么经验回放是很重要的问题,但这里不能详细论述。

可以看到,在我的代码中,一旦经验回放满了,就会用最新的经验覆盖最旧的经验(这不是好的做法)。如果经验回放集合尺寸小了,agent就是失去在出生点附近失败的经验,结果就是在经验回放满了之后不久,agent在出生点附近失败的机会陡增,造成训练的不稳定。
如下图,输出的Q值在经验回放满之后达到最大值,之后随着经验的丢弃,Q值震荡,最后收敛到一个不好的值附近。
《DQN调整超参数体会》

====================神经网络结构==============================
我并没有尝试各种结构的神经网络。根据经验风险最小化的知识,神经网络的复杂度跟样本数量相关。因此,我想我们构造神经网络,要从任务的难度,经验回放的尺寸和e_greedy来考虑。主注意的是,如果我们按照非常注重探索的想法来设置e_greedy,那么经验回放中的经验会更加丰富,因此需要一个更加复杂的神经网络结构。

=====================GAMMA值=================================
在其他超参数都相同的条件下,分别测试了GAMMA值 = 0.9,0.95,0.99。
他们都能够收敛到同样好,但是值为0.9时,约1500次episodes就收敛了,值为0.95时,约2500次episodes收敛,而值为0.99是,6500次episodes收敛,并且过程不那么稳定。
我猜,GAMMA值越高,表示我们希望agent更加关注未来,这比更加关注眼前更难,因此训练更加缓慢和困难。

===========================学习率===============================
在其他超参数都相同的条件下,分别测试了学习率a = 0.002, 0.001, 0.0005, 0.0001
a=0.002时,过程是生存周期(每episodes)最初迅速增长,到140次(最大200次),然后下降,最终收敛到40次左右
a=0.001时,增长到140,最终收敛到50次左右
a=0.0005时,增长到180,收敛到70左右
a=0.0001时,增长到200,不下降

趋势是很明显的,过高的学习率,在初期,样本数量不多的情况下,效果是很好的(虽然明显是过拟合了)。但随着学习样本数量增加,学习任务越来越复杂,过高的学习率导致收敛不好。如下图,cost仅仅在最初阶段下降了,之后一直在震荡:
《DQN调整超参数体会》

===========================正负回报值=================================
回报值的绝对值限制在[-1,1]内,因为负回报是稀疏的,因此设定为-1。
在其他超参数都相同的条件下,分别测试了正回报值为0.1, 0.01, 0.001的情况
+r = 0.1 时,效果很差, +r = 0.01 时,效果最好, +r = 0.001时, 效果次之

我想,理想情况下,一个简单的设计,例如负回报为-1,正回报为+1,应该是可行的。因为设计回报值,只是用来区分动作的价值。然而实际操作中,并不是这样。下图是正回报为0.1时,平均意义上,输出的好的动作的Q值与不好的动作的Q值的差,与输出Q值的比值,可以看到已经接近 105 (也就是1和1.00001的差别)。这意味着一个很小的噪声,就会将其淹没,使得网络不能正确输出好的动作。《DQN调整超参数体会》

上图中输出的两个动作的Q值过于接近,原因在于负回报显得太小了。因此,将正回报降低一个数量级,即0.01(负回报被限定在-1),如下图,可以看到数量级在 102 上(1与1.01的差别),实际效果好多了
《DQN调整超参数体会》

那么,如果进一步降低正回报会怎样?
实际也是不好的,正回报太弱时,使得平均的Q值是一个较大的负值,输出Q值的差异不明显。
如下图,数量级在 103(11.001)
《DQN调整超参数体会》

体会是,设计回报值很重要。设计的目的是让正负回报能够相互对抗。
设计的准则之一是,让收敛时的Q值的均值,尽量接近0,此时各个动作的差异最容易体现。
准则之二是正回报要稍稍大一点,因为Q值的变化过程是先降低,然后慢慢提升,最初阶段是负回报统治的时期,人工的干预提升正回报,有助于训练。

    原文作者:万德1010
    原文地址: https://blog.csdn.net/qq_32231743/article/details/72809101
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞