强化学习策略网络调参

传统的基于状态-动作强化学习方法会遇到维度诅咒的问题,为了解决这个问题,基于策略的强化学习方法被提出,比如经典的策略梯度方法,使用神经网络,可以用于表示高纬度的状态->动作空间的映射关系。这样可以把维度降低,实现更快的收敛。

为了找到最优解,策略的参数数量必须要足够多,以至于能够合理的表示策略空间。在策略梯度中,策略网络常常用一个 MLP 网络表示策略参数 \(\theta\)

那么是否参数越多越好?答案是否定的。

  • 参数较少时,收敛速度快,容易找到次优解;
  • 参数过多时,收敛速度慢,容易陷入局部最优;

所以需要合理设置策略参数个数,评估网络的复杂度,在强化学习任务中是非常困难的,常常需要大量实验试错调节参数。但是在许多论文中,没有提及这部分工作,只是说道根据经验值...相似的超参数还有

  • 奖励函数
  • 衰减系数
  • Exploration Noise
  • ...

上面这些超参数,调整一个,就需要从头开始训练,过去所有收集到的数据都需要扔掉,这个过程采样效率低,耗时长,如下图所示,使策略收敛,训练一个 Agent 经常需要上百万次的采样,故不能直接在实体机器人上训练策略。

So ... 怎么调参?

《Spinning Up》 中提出了一些建议,或许有用

  • 从论文中查找细节参数,比如网络的结构、奖励函数和超参数设置等等,但是注意不要陷入到论文中。
  • 在简单的强化学习环境中快速试验算法,首先要验证算法的正确性,保证在像 CartPole-v0、InvertedPendulum-v0、 FrozenLake-v0 和 HalfCheetah-v2 简单的环境中,算法可以收敛。这样只需要花几分钟就可以验证想法,而不等好几天!然后再将算法应用到像雅达利游戏和机器人这样复杂的环境中。
  • 如果在一个环境中调节超参数,始终达不到满意效果,这可能是一个 Bug,试着在别的强化学习环境中验证;
  • 测量尽可能多的结果,比如均值/方差/最小值/最大值,观察 Agent 在环境中的行为,这可能会提供一些思路;

参考