我已经看到,OpenAI健身房环境可以使用可选的奖励阈值(reward_threshold)注册,该阈值代表:
任务被认为解决之前的奖励阈值。
这种价值是如何影响学习过程的?还是一个人必须手动比较在每一集中获得的奖励与reward_threshold,并停止学习过程,如果它超过它?
发布于 2021-01-15 21:22:53
reward_threshold (浮子)- Gym环境参数,任务解决前的奖励阈值,[1]
从这句话的定义来看,这听起来就像一个代理人在任务完成之前必须赚取的全部报酬,然后就这样结束了。
如果这是一个任务,例如由cartpole代理保持直立/垂直,它可以被表示为帧数,所以1帧=1分奖励,如果reward_threshold = 200,代理必须平衡该极点才能使200帧成功。
请看一下OpenAI健身网站上的卡塔杆实例:
while True:
candidate_model = model.symmetric_mutate()
rewards = [run_one_episode(env, candidate_model, False) for _ in range(5)]
reward = np.mean(rewards)
if reward >= env.spec.reward_threshold:
print "Reached reward threshold!"
rewards2 = [run_one_episode(env, candidate_model, False) for _ in range(env.spec.trials)]
if np.mean(rewards2) >= env.spec.reward_threshold:
break
else:
print "Oops, guess it was a fluke"因此,代理运行5集(for _ in range(5)),每集返回一个奖项。我们计算平均奖励超过5集(reward = np.mean(rewards)),然后引入所需的控制流,根据这一结果。
在这种情况下,他们使用默认的reward_threshold从环境(env.spec.reward_threshold),打印一个成功的消息,并做最后的检查,以确定代理是否真的学到了一致或不一致的东西,再次检查一个新的插曲(for _ in range(env.spec.trials))。
发布于 2021-01-15 20:02:54
我在健身房代码库中做了一些调查,至少在0.18.0版本中,健身房本身似乎根本没有使用reward_threshold (而不是max_episode_steps,后者用于在环境中计算Done信号)。
因此,如果要使用该字段,就必须从env手动访问该字段。
https://datascience.stackexchange.com/questions/73255
复制相似问题