今天在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 = …Run Code Online (Sandbox Code Playgroud)