PaddlePaddle / PARL

A high-performance distributed training framework for Reinforcement Learning
https://parl.readthedocs.io/
Apache License 2.0
3.24k stars 819 forks source link

关于的PPO Mujoco 环境 代码的 奖励计算 疑问? #947

Closed A5230171 closed 2 years ago

A5230171 commented 2 years ago

首先感谢PARL团队的代码分享,我想请教的问题是 在mujoco_wrappers.py档案中,第120行的位置,在智能体和环境交互的每个步骤获得的当前奖励时,会使用 RunningMeanStd 标准化。

但是为什么,当前步的奖励,是要加上过去奖励的折扣呢(120行)? 即 $r_3=\gamma ^2r_1+\gamma r_2+r_3$

ShuaibinLi commented 2 years ago

你好,mujoco_wrapper 120行计算的是当前 episode 的 return(ret)而不是当前步的 reward。126行对应当前步 reward(rew)的归一化,使用当前 episode 的平均奖励及其方差进行归一化(可参考原论文及openai gym的开源代码171行

A5230171 commented 2 years ago

你好,mujoco_wrapper 120行计算的是当前 episode 的 return(ret)而不是当前步的 reward。126行对应当前步 reward(rew)的归一化,使用当前 episode 的平均奖励及其方差进行归一化(可参考原论文及openai gym的开源代码171行

感谢您的耐心解答,我看明白我了,但是我想提一句。

mujoco_wrapper 126行 应该是 只有使用到 当前 episode 奖励的方差进行归一化。并没有 用到 episode的平均奖励吧?

126 行 对应公式为: ${\huge rew_t = \frac{rewt}{retRMS{var}+\epsilon } } $

mujoco_wrapper 146行
针对观测值obs的更新,观测值的运行均值和方差对观测值进行归一化 146 行 对应公式为
${\huge ob_t = \frac{obt-obRMS{mean}}{obRMS_{var}+\epsilon}}$

A5230171 commented 2 years ago

我想说的是,我的理解应该没有问题吧,再请您帮我看看对嘛?

A5230171 commented 2 years ago

你好,mujoco_wrapper 120行计算的是当前 episode 的 return(ret)而不是当前步的 reward。126行对应当前步 reward(rew)的归一化,使用当前 episode 的平均奖励及其方差进行归一化(可参考原论文及openai gym的开源代码171行

原始论文可以问一下,在哪儿嘛

TomorrowIsAnOtherDay commented 2 years ago

我们一般不进行代码的解读:)在issue主要是讨论框架的使用问题。