zl程序教程

您现在的位置是:首页 >  Java

当前栏目

强化学习调参技巧一: DDPG算法训练动作选择边界值_分析解决

2023-02-18 16:37:20 时间

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