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

强化学习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能指导网络正确选择动作进行输出

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

    评论

报告相同问题?

悬赏问题

  • ¥15 github上的这个C语言项目如何跑起来
  • ¥15 java 判断某个数 区间是否存在
  • ¥15 appium控制多个雷电模拟器问题
  • ¥15 C# iMobileDevice
  • ¥15 谁会做这个啊#ensp#Boson NetSim
  • ¥15 如何编写针对TPS6503320FRGE型号的电源管理芯片的编程代码?
  • ¥15 设计简单目录管理系统,要满足以下内容
  • ¥15 关于九十度混合耦合器信号分析问题
  • ¥15 Cesm如何关闭不用的模块呢
  • ¥15 vue2两层数据导出为excle