一点关于强化学习算法选择的小建议(DDPG算法弊端)

从毕设开始以来,陆续学习了一些强化学习的入门知识,现在有一点小感触,在我学习过程中看过的无数大佬的教程,非常感谢这些无偿分享知识的前辈,在我抓耳挠腮肝肠寸断的时候给我指出一条明路,所以我也想把自己的一些经验写下来,以供后人参考。

不建议选择DDPG算法,理由有以下几点:

1、经过笔者实践及前辈描述,DDPG算法在训练次数增加时,actor输出绝对值也莫名其妙跟着增加,最终卡在动作边界上,导致算法不收敛,加载模型验证时也只输出边界值。

2、对环境设计要求高,不合理的奖励值或特征值输入会使网络梯度爆炸或消失,这也是导致模型总输出动作边界的原因之一。笔者使用的训练环境是从非强化学习问题中移植过来的,需要自行设定奖惩函数,对新手来说没有经验参考或数值处理工作量太大,都会导致参数数量级不一致,混合进神经网络开始计算梯度的时候就会相互影响,导致不合理的权重更新,需要对输入的样本和奖励值进行归一化处理,至少也要使它们处在1左右的同一数量级。

3、DDPG已经是旧算法了,深度学习领域还是一个很不成熟的领域,算法都在飞速更新迭代中。由于笔者入门时全靠自己摸索,所以找到了一个相对老旧的文章介绍连续动作空间的强化学习算法,就兴冲冲地拿来用,结果证明效果并不理想,浪费了几乎一个月进行改编调参,如果一开始就能走对路,会节省很多功夫,建议各位也慎重选择初始算法,不要死磕一种算法。

4、同样是critic-actor算法,建议使用PPO代替DDPG,更容易收敛,对调参要求小,适合新手使用。参考文章PPO实现(Pendulum-v0) - 知乎 (zhihu.com)

说点题外话,发现训练结果不收敛时可以检查网络参数是否初始化,强化学习经常会出现一直选择动作边界地情况,很多时候都是因为梯度消失或者爆炸,导致参数无法更新,而梯度出现问题又是因为权重本身的值有问题(参考反向更新的公式,更新幅度要乘上权重再加回权重本身),训练出现僵局的时候可以打印网络参数分析情况。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值