gpt4 book ai didi

python - 了解稳定基线模型中的total_timesteps参数

转载 作者:行者123 更新时间:2023-12-02 03:21:05 25 4
gpt4 key购买 nike

我正在阅读 original PPO paper并尝试将其与 stable-baselines PPO2 的输入参数相匹配型号。

我不明白的一件事是 learn 中的 total_timesteps 参数方法。

论文提到

One style of policy gradient implementation... runs the policy for T timesteps (where T is much less than the episode length)

虽然 stable-baselines 文档将 total_timesteps 参数描述为

(int) The total number of samples to train on

因此我认为论文中的T和文档中的total_timesteps是同一个参数。

我不明白的是:

  • total_timesteps 是否始终需要小于或等于环境中可用“帧”(样本)的总数(假设我有有限数量的帧,例如 1,000,000 )。如果是这样,为什么?

  • 通过将 total_timesteps 设置为小于可用帧数的数字,代理会看到训练数据的哪一部分?例如,如果total_timesteps=1000,代理是否只能看到前 1000 帧?

  • 情节是定义为可用帧的总数,还是定义为代理首次“丢失”/“死亡”的时间?如果是后者,那么您如何提前知道代理何时死亡才能将 total_timesteps 设置为较小的值?

我仍在学习强化学习背后的术语,所以我希望我能够在上面清楚地解释我的问题。任何帮助/提示将非常受欢迎。

最佳答案

根据stable-baselines源码

  • total_timesteps 是代理在任何环境下总共执行的步数。 Total_timesteps 可以跨越多个剧集,这意味着该值不受某个最大值的限制。
  • 假设您的环境具有超过 1000 个时间步。如果您调用一次学习函数,您只会体验到前 1000 帧,而该片段的其余部分是未知的。在许多实验中,您知道环境应该持续多少个时间步(即 CartPole),但对于长度未知的环境,这变得不太有用。但。如果您调用学习函数两次并假设环境片段有 1500 帧,您将看到完整的片段 + 第二个片段的 50%。
  • 一个episode被定义为当终端标志设置为true时(在gym中,这通常也是在最大时间步之后设置)许多其他RL实现使用total_episodes来代替,这样你就不必关心考虑时间步长,但同样,缺点是如果您达到吸引人的状态,您可能最终只能运行 1 集。

总时间步长参数还使用 n_steps,其中更新次数的计算如下:

n_updates = total_timesteps // self.n_batch

其中 n_batch 是矢量化环境数量的 n_steps 倍。

这意味着,如果您有 1 个环境运行,n_step 设置为 32,total_timesteps = 25000,则您将在学习调用期间对您的策略执行 781 次更新(不包括纪元,因为 PPO 可以在单个批处理中执行多次更新) )

教训是:

  • 对于未知大小的环境,您必须使用此值。也许创建一个运行平均剧集长度并使用该值
  • 如果剧集长度已知,请将其设置为您想要训练的所需剧集数。但是,它可能会更少,因为代理可能不会(可能不会)每次都达到最大步数。
  • TLDR 发挥该值(将其视为超参数)

希望这有帮助!

关于python - 了解稳定基线模型中的total_timesteps参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56700948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com