Hu *_*ixi 5 reinforcement-learning python-3.x openai-gym
今天在openai-gym环境下尝试实现一个rl-agent的时候,发现一个问题,好像所有的agent都是从最初始的状态开始训练的:env.reset(),即
import gym
env = gym.make("CartPole-v0")
initial_observation = env.reset() # <-- Note
done = False
while not done:
action = env.action_space.sample()
next_observation, reward, done, info = env.step(action)
env.close() # close the environment
Run Code Online (Sandbox Code Playgroud)
所以很自然地,代理可以沿着路线行事env.reset() -(action)-> next_state -(action)-> next_state -(action)-> ... -(action)-> done,这是一个插曲。但是,代理如何从特定状态(如中间状态)开始,然后从该状态采取行动?例如,我从重放缓冲区中采样了一个体验,即(s, a, r, ns, done),如果我想训练代理直接从 state 开始,然后ns使用 a 获取动作Q-Network,然后n-step向前迈出一步,该怎么办。类似的东西:
import gym
env = gym.make("CartPole-v0")
initial_observation = ns # not env.reset()
done = False
while not done:
action = DQN(ns)
next_observation, reward, done, info = env.step(action)
# n-step later or done is true, break
env.close() # close the environment
Run Code Online (Sandbox Code Playgroud)
但即使我将变量设置initial_observation为ns,我认为代理或env根本不会意识到它。我怎么能告诉gym.env我想要将初始观察设置为ns并让代理知道特定的开始状态,直接从该特定观察中继续训练(从该特定环境开始)?
AFAIK,大多数 OpenAI 健身房环境的当前实现(包括您在问题中使用的CartPole-v0)没有实现任何机制来在给定状态下初始化环境。
CartPoleEnv.reset()但是,为了接受充当初始状态的可选参数而修改该方法不应该太复杂。
| 归档时间: |
|
| 查看次数: |
5683 次 |
| 最近记录: |