神经网络训练中Loss不下降,输出值始终在0附近的另外一种原因

在使用PyTorch进行强化学习时,作者遇到Actor网络损失不变、输出接近0的问题。尝试调整参数、更换激活函数和优化器无效。原因是将Tensor转为Numpy类型后,丢失了网络参数信息。当重新转换回Tensor时,无法恢复网络参数,导致反向传播时无法更新网络。解决方案是确保在计算Loss过程中涉及的Tensor包含网络参数信息,以确保正确更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(纯手打原创(基本思想如有雷同实属巧合),转载请注明。)

记一次本人在进行科研项目的过程中踩过的坑。本人在做基于pytorch的强化学习时(当然该情况不仅限于强化学习;另外我用到的强化学习方法是基于AC结构的DDPG算法),遇到过Actor网络的loss没什么变化,输出的action的值始终在0附近的情况,也就是说我的网络根本没学到什么东西。很奇怪,于是在网上搜寻导致该问题的原因以及解决方法(CSDN里就有很多优质的回答),我目前脑海中记得的有以下三种解决办法:

  1. 调参。调整可能会影响到网络更新的参数,比如学习率等。
  2. 换激活函数。网上有很多博客提到,如果激活函数是ReLU的话,在误差反向传播的过程中可能会造成神经元的“死掉”,因为ReLU在负半轴的导数为0,根据链式法则,有一个0的存在结果就为0了。可以采用ReLU大家族中的其他成员,比如RReLU、Leaky Relu等。
  3. 换优化器。网上有很多博客提到,可能是优化器的效果不好导致的,所以各类好用的优化器都试试,比如SGD、Adam等。

但是,以上方法可能对别的小伙伴有用,对我来说,我也试过但都没有用(不是说以上的方法不对或者不好,只是针对我的这个情况是没有用的)。这个坑可能对别人来说并不常见,但是毕竟我踩过了,也算是对这种问题贡献了另外一种可能的原因和解决方法,具体如下ÿ

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值