PyR*_*red 10 python reinforcement-learning
我正在阅读原始 PPO 论文并尝试将其与稳定基线 PPO2模型的输入参数相匹配。
我不明白的一件事是方法中的total_timesteps参数learn。
论文中提到
一种策略梯度实现方式……运行 T 个时间步长的策略(其中 T 远小于剧集长度)
虽然稳定基线文档将total_timesteps参数描述为
(int) 要训练的样本总数
因此,我认为T在论文和total_timesteps文档中是相同的参数。
我不明白的是:
是否total_timesteps总是需要小于或环境中的(说如果我有帧的数量有限喜欢1,000,000)等于可用“帧”(样本)的总数。如果是这样,为什么?
通过设置total_timesteps一个小于可用帧数的数字,代理会看到训练数据的哪一部分?例如,如果total_timesteps=1000,代理是否只看到前 1000 帧?
一集是定义为可用帧的总数,还是定义为代理第一次“松动”/“死亡”的时间?如果是后者,那么你怎么能提前知道代理什么时候会死才能设置total_timesteps一个较小的值呢?
我仍在学习 RL 背后的术语,所以我希望我能够在上面清楚地解释我的问题。非常欢迎任何帮助/提示。
小智 10
根据稳定基线源代码
总时间步长参数也使用 n_steps,其中更新次数的计算如下:
n_updates = total_timesteps // self.n_batch
Run Code Online (Sandbox Code Playgroud)
其中 n_batch 是 n_steps 乘以矢量化环境的数量。
这意味着,如果您有 1 个环境在 n_step 设置为 32 且 total_timesteps = 25000 的情况下运行,则您将在学习调用期间对您的策略进行 781 次更新(不包括 epoch,因为 PPO 可以对单个批次进行多次更新)
教训是:
希望这可以帮助!