liudinglldd 2021-03-19 09:51 采纳率: 22.2%
浏览 2425

强化学习DDPG算法训练总是选择边界动作是什么原因造成的?

使用DDPG算法,env文件自己写的,代码可以运行,但是训练到最后actor总是选择action_space的边界,这可能是哪些原因造成的?

之前使用DQN算法的时候,也出现了这种现象,当时是两层的网络,隐含层节点也比较少,后来增加了层数和隐含层节点数,结果有变化,但也不是好的或者说没有选择正确的动作,所以怀疑是不是因为DQN对动作空间离散化粒度太小造成的,现在换成了DDPG,想着不对动作空间进行离散化,直接使用连续动作空间会好一些,结果总是选择边界值(action_bound.high),看一些帖子说调参,也进行了尝试,发现没有多大改善。

另外,由于动作空间的上下限并不是对称的,所以尝试修改了输出层的激活函数,原来为tf.nn.tanh,修改为tf.nn.relu有些变化,但是结果也不正确。

请大神不吝赐教,拜谢。

  • 写回答

4条回答 默认 最新

  • liudinglldd 2021-05-17 15:52
    关注

    目前好像得到了解决,主要就是两点:

    1、网络的输入输出都是归一化之后的,buffer里的{s,a,r,s_}都是同一个数量级的,

    2、修改reward能指导网络正确选择动作进行输出

    以上解决方案,仅供参考。

    评论

报告相同问题?