DDPG算法中AC学习率设置对训练效果的影响

深度强化学习算法相比于深度学习,有更多的超参数需要调节,本文主要对DDPG算法中的actor网络和critic网络学习率的设置对学习效果的影响进行了探讨。

最近在复现DDPG算法时,首先根据论文的算法流程进行复现,完成后在连续环境Pendulum-v1上进行测试,但是总是训练效果不好,算法的收敛结构很差,如图1所示。

图1 actor和critic的lr均为3e-4的训练结果,左图为critic loss, 右图为reward曲线

于是找了很多该算法的复现来对比到底是哪里出了问题。花了大量的时间确认了复现的DDPG算法的决策和更新流程都没有问题之后,我把目光转向了超参数的设定上,最终发现critic的学习率通常需要设置的比actor大一点。在将critic net的学习率改大之后,DDPG算法终于表现出很好的性能,得到了漂亮的reward曲线,如图2所示。

图2 修改critic lr之后的学习效果,左图为critic loss,右图为reward曲线

在解决了该问题后,引出了一个问题,DDPG算法中的actorcritic的学习率为什么需要不同才可我使该算法很好的work。为此我也在网上找到了关于该问题的探讨。总结下来大概有如下几种解释:

  • actorcritic的学习率是两个需要调整的超参数,这样设置是在实践中发现比较好的结果
  • 如果actorcritic更新的更快,那么估计的Q值不能够真实反映动作的价值,因为critic的Q值函数是基于过去的策略估计出的
  • 因为actor输出的是具体动作,通常是bounded,因此学习率可以小一点,而critic学习的目标是折扣奖励的期望,通常是无界的,需要学习率大一点。

source: Why different learning rates for actor and critic : r/reinforcementlearning (reddit.com)

为了进一步探究这两个参数的设置对于学习的影响,我用DDPG算法在Pendulum-v1进行了一系列的实验。

  1. 固定actor的学习率为3e-4,改变critic的学习率,得到实验结果如下图:

  2. 固定critic的学习率为3e-4,改变actor的学习率,得到实验结果如下图:

  3. 保持actorcritic的学习率相同,同时改变两者的学习率,得到实验结果如下图:

由以上实验结果可以得出以下结论:

  • actor学习率不变的情况下,critic的学习率适当增大可以加快收敛速度,critic如果设置过小可能会导致收敛较慢甚至学习不收敛。
  • critic学习率过小导致网络很难收敛时,只调整actor的学习率无法使网络收敛
  • actorcritic的学习率在一致的情况下也是可以收敛的,但需要选择合适的参数才可以得到较好的学习效果。

因此,在使用DDPG算法时,critic网络相比于actor网络的学习率可以适当调大,可以得到一个较好的收敛效果。