强化学习调参技巧一: DDPG算法训练动作选择边界值_分析解决
1.原因:
选择动作值只在-1 1之间取值
actor网络输出用tanh,将动作规范在[-1,1],然后线性变换到具体的动作范围。其次,tanh激活区是有范围的,你的预激活变量(输入tanh的)范围太大,进入了tanh的饱和区,会导致梯度消失,而且tanh输出的自然就靠近边界了
2.解决方案:
1、网络的输入输出都是归一化之后的,buffer里的{s,a,r,s_}都是同一个数量级的,
2、修改reward能指导网络正确选择动作进行输出
3.输入的数据要标准化或者归一化,然后学习率调小一点。
建议换算法,DDPG改成TD3改动很小,SAC对超参数没这么敏感,不要死磕DDPG,可以参考曾伊言:如何选择深度强化学习算法?MuZero/SAC/PPO/TD3/DDPG/DQN/等(已完成)
3.个人最终解决方案:
之前设置隐藏层大小都是一致的,现在把神经元个数增加,然后输入大于输出就好了!
输入256 输出128