Lizhi-sjtu / DRL-code-pytorch

Concise pytorch implements of DRL algorithms, including REINFORCE, A2C, DQN, PPO(discrete and continuous), DDPG, TD3, SAC.
MIT License
1.1k stars 179 forks source link

PPO代码存在critic loss无限增长的问题 #10

Open BroOfBallSis opened 1 year ago

BroOfBallSis commented 1 year ago

使用此处的PPO代码,训练时总是发现critic loss不断增长,甚至会增长到1e18的数量级; 经比较其他地方的PPO代码,怀疑是此处的PPO代码在计算target_value时使用了当前的critic网络来计算batch中state的value, 因此导致值估计越推越高; 将代码改为在replay buffer中存入记录的同时存入state的值估计,而不是在计算target_value时计算state的值估计, critic loss无限增长的问题得到解决。

Ethan21435 commented 1 year ago

您好,有做结果的保存吗?

RisingAuroras commented 1 year ago

@BroOfBallSis 请问,你改动后,性能有没有提升呢,critic loss有时确实会出现这种问题,但是只要expected return是上升趋势我觉得还ok

futalemontea commented 8 months ago

是的 PPO_discrete 的update函数存在问题

Starlight0798 commented 6 months ago

你好,能否要下您的修正代码?

使用此处的PPO代码,训练时总是发现critic loss不断增长,甚至会增长到1e18的数量级; 经比较其他地方的PPO代码,怀疑是此处的PPO代码在计算target_value时使用了当前的critic网络来计算batch中state的value, 因此导致值估计越推越高; 将代码改为在replay buffer中存入记录的同时存入state的值估计,而不是在计算target_value时计算state的值估计, critic loss无限增长的问题得到解决。