使用多个具有 actor-critic 优势的环境有什么优势?

人工智能 强化学习 演员批评方法 环境 优势-演员-评论家
2021-11-01 13:08:08
 make_env = lambda: ptan.common.wrappers.wrap_dqn(gym.make("PongNoFrameskip-v4"))
 envs = [make_env() for _ in range(NUM_ENVS)]

这是您可以查看的代码。

以上两行代码使用A2C算法为Atari Pong游戏创建了多个环境。

我理解为什么让多个代理在 A3C 中呈现的相同环境的不同实例上工作非常有用(即 A2C 的异步版本)。但是,在上面的代码中,它有一个代理在同一环境的不同实例上工作。

将多个环境与单个代理一起使用有什么优势?

更新

class GymEnvVec:
    def __init__(self, name, n_envs, seed):
        self.envs = [gym.make(name) for i in range(n_envs)]
        [env.seed(seed + 10 * i) for i, env in enumerate(self.envs)]

    def reset(self):
        return [env.reset() for env in self.envs]

    def step(self, actions):
        return list(zip(*[env.step(a) for env, a in zip(self.envs, actions)]))
1个回答

将多个环境与单个代理一起使用有什么优势?

这种方法有两个主要优点:

  • 用于训练的数据集更接近于独立同分布 (iid) 理想,这在训练神经网络时出于理论和实践原因很重要。从单个轨迹中获取的样本不是独立的,而是由于环境规则而相互关联——因此使用单个轨迹与 iid 最远。这与将经验重放表用于 Q-learning 的 DQN 变体的动机相似。但是,体验回放本质上是脱离策略的,因此不适合在当前策略下进行操作时需要采样的 A2C 或 A3C。

  • 收集经验通常是训练 RL 代理的主要瓶颈。能够在分布式环境中并行执行可以显着加快训练过程。