DDPG算法中AC学习率设置对训练效果的影响
深度强化学习算法相比于深度学习,有更多的超参数需要调节,本文主要对DDPG算法中的actor网络和critic网络学习率的设置对学习效果的影响进行了探讨。
最近在复现DDPG算法时,首先根据论文的算法流程进行复现,完成后在连续环境Pendulum-v1
上进行测试,但是总是训练效果不好,算法的收敛结构很差,如图1所示。
于是找了很多该算法的复现来对比到底是哪里出了问题。花了大量的时间确认了复现的DDPG算法的决策和更新流程都没有问题之后,我把目光转向了超参数的设定上,最终发现critic
的学习率通常需要设置的比actor
大一点。在将critic net
的学习率改大之后,DDPG算法终于表现出很好的性能,得到了漂亮的reward
曲线,如图2所示。
在解决了该问题后,引出了一个问题,DDPG算法中的actor
和critic
的学习率为什么需要不同才可我使该算法很好的work。为此我也在网上找到了关于该问题的探讨。总结下来大概有如下几种解释:
actor
和critic
的学习率是两个需要调整的超参数,这样设置是在实践中发现比较好的结果- 如果
actor
比critic
更新的更快,那么估计的Q值不能够真实反映动作的价值,因为critic
的Q值函数是基于过去的策略估计出的 - 因为
actor
输出的是具体动作,通常是bounded
,因此学习率可以小一点,而critic
学习的目标是折扣奖励的期望,通常是无界的,需要学习率大一点。
source: Why different learning rates for actor and critic : r/reinforcementlearning (reddit.com)
为了进一步探究这两个参数的设置对于学习的影响,我用DDPG算法在Pendulum-v1
进行了一系列的实验。
固定
actor
的学习率为3e-4
,改变critic
的学习率,得到实验结果如下图:固定
critic
的学习率为3e-4
,改变actor
的学习率,得到实验结果如下图:保持
actor
和critic
的学习率相同,同时改变两者的学习率,得到实验结果如下图:
由以上实验结果可以得出以下结论:
- 在
actor
学习率不变的情况下,critic
的学习率适当增大可以加快收敛速度,critic
如果设置过小可能会导致收敛较慢甚至学习不收敛。 - 在
critic
学习率过小导致网络很难收敛时,只调整actor
的学习率无法使网络收敛 actor
和critic
的学习率在一致的情况下也是可以收敛的,但需要选择合适的参数才可以得到较好的学习效果。
因此,在使用DDPG算法时,critic
网络相比于actor
网络的学习率可以适当调大,可以得到一个较好的收敛效果。