探索如何在OpenAI Baselines中工作?

问题描述 投票:0回答:1

我开始尝试https://github.com/openai/baselines/,特别是deepq算法。我想对传递给deepq.learn方法的参数进行自己的分析。

该方法具有与勘探有关的两个参数-exploration_fractionexploration_final_eps

我的理解方式-exploration_fraction决定算法在探索中花费了多少训练时间,exploration_final_eps决定了每次探索时采取随机动作的可能性。因此-为了探索而采取的随机动作数是exploration_fractionexploration_final_eps的乘积。正确吗?

有人可以基于这两个参数(以外行术语)解释算法的探索方式吗?

deep-learning reinforcement-learning openai-gym baseline
1个回答
0
投票

您的理解几乎是正确的。采取随机动作(即探索性动作)的概率p是一个数字,该数字通常开始时较高,但随着时间的推移而降低。这是有道理的,因为在学习阶段的开始,学习策略仍然没有用,但是随着学习的进行,它会变得更好。

考虑到这一点,exploration_fractionexploration_final_eps是控制p随时间降低的参数。浏览repo中的代码时,会发现以下几行:

# Create the schedule for exploration starting from 1.
exploration = LinearSchedule(schedule_timesteps=int(exploration_fraction * total_timesteps),
                             initial_p=1.0,
                             final_p=exploration_final_eps)

在这里更容易理解exploration_fractionexploration_final_eps的含义:

  • exploration_fraction确定p减少多长时间(以时间步长)。请注意,在这种情况下,最初是p=1,但此初始值可能会有所不同。
  • exploration_final_eps确定p的最小值。一旦在exploration_fraction指示的时间内概率降低,p将保持固定不变,其值等于exploration_final_eps

有时p线性下降,例如在LinearSchedule的情况下,但是其他方式也是可能的。

© www.soinside.com 2019 - 2024. All rights reserved.