datawhalechina / easy-rl

强化学习中文教程(蘑菇书🍄),在线阅读地址:https://datawhalechina.github.io/easy-rl/
Other
9.09k stars 1.82k forks source link

total_loss = actor_loss + 0.5*critic_loss? PPO中actor与critic网络更新为什么都使用total_loss #80

Open CeibaSheep opened 2 years ago

CeibaSheep commented 2 years ago

请问,在PPO代码的agent.py 文件,

为啥要算total_loss = actor_loss + 0.5*critic_loss? PPO讲解中未见分析欸,而且 PPO原文中也未看到相关操作。

另外,为什么AC网络均使用total_loss的梯度, 这个地方合理吗???

zichunxx commented 2 years ago

请问,在PPO代码的agent.py 文件,

为啥要算total_loss = actor_loss + 0.5*critic_loss? PPO讲解中未见分析欸,而且 PPO原文中也未看到相关操作。

另外,为什么AC网络均使用total_loss的梯度, 这个地方合理吗???

你好,请问你找到理论依据了吗,我也有同样的困惑。

ecsfu commented 7 months ago

请问,在PPO代码的agent.py 文件,

为啥要算total_loss = actor_loss + 0.5*critic_loss? PPO讲解中未见分析欸,而且 PPO原文中也未看到相关操作。

另外,为什么AC网络均使用total_loss的梯度, 这个地方合理吗???

我理解是不是求梯度的时候还是各求各的,不相关的视为常数,导数为0,这样就分开计算损失是一样的

severus98 commented 2 weeks ago

请问,在PPO代码的agent.py 文件, 为啥要算total_loss = actor_loss + 0.5*critic_loss? PPO讲解中未见分析欸,而且 PPO原文中也未看到相关操作。 另外,为什么AC网络均使用total_loss的梯度, 这个地方合理吗???

我理解是不是求梯度的时候还是各求各的,不相关的视为常数,导数为0,这样就分开计算损失是一样的

同意,最终还是看计算图,相当于一起优化,求导不影响,看optimizer怎么定义的就好了