强化学习环境学习-gym[atari]-paper中的相关设置

本文详细介绍了强化学习在Atari游戏环境中的配置,包括环境名、reset规则、Episode termination、Fram skipping、reward和observation裁剪以及Frame Stacking等关键设置。通过这些配置,可以调整环境以适应不同的强化学习算法需求。
摘要由CSDN通过智能技术生成

0. gym 核心

这部分的代码在gym/core.py中,

原始基类为Env,主要可调用step,reset,render,close,seed几个方法,大体框架如下

class Env(object):
    def reset(self):
        pass
    def step(self, action):
        pass
    def render(self, mode='human'):
        pass
    def close(self):
        pass
    def seed(self, seed=None):
        pass

同时Wrapper包装器继承Env类

class Wrapper(Env):
    def step(self, action):
        return self.env.step(action)

    def reset(self, **kwargs):
        return self.env.reset(**kwargs)

    def render(self, mode='human', **kwargs):
        return self.env.render(mode, **kwargs)

    def close(self):
        return self.env.close()

    def seed(self, seed=None):
        return self.env.seed(seed)

包装器的作用在于我们想定制新的环境配置时可以直接继承Wrapper,重写其中的部分方法,使用时将选择的游戏env作为参数传递进去,即可更改相应游戏环境的配置.

相应的也有observation,reward,action的包装器,更改对应方法即可

class ObservationWrapper(Wrapper):
    def reset(self, **kwargs):
        observation = self.env.reset(**kwargs)
        return self.observation(observation)

    def step(self, action):
        observation, reward, done, info = self.env.step(action)
        return self.observation(observation), reward, done, info

    def observation(self, observation):
        raise NotImplementedError

1. 环境名

atari中的每个游戏环境通过后缀名来区分内部的细微区别.

以Pong游戏为例,Pong-ram-v0表示其observation为Atari机器的内存情况(256维向量表示).其它的环境表示observation来自一个210*160的输入图片,具体区别可以细分为下(来自https://www.endtoend.ai/envs/gym/atari/)

Name Frame Skip k Repeat action probability p
Pong-v0 2-4 0.25
Pong-v4 2-4 0
PongDeterministic-v0 4 0.25
PongDeterministic-v4 4 0
PongNoFrameskip-v0 1 0.25
PongNoFrameskip-v4 1 0

其中带有V0后缀的表示以一定的概率p重复之前动作,不受智能体的控制(sticky actions,增加环境的随机性,[Revisiting the Arcade]),v4后缀表示这个概率p为0.中间字段的不同表示智能体每隔k帧做一个动作(同一个动作在k帧中保持,这种设置可以为避免训练出的智能体超出人类的反应速率).

使用如下代码可以看到所有环境:

from gym import envs
env_names = [spec.id for spec in envs.registry.all()] 
for name in sorted(env_names): 
	print(name)

在这里插入图片描述

2.增加配置

除了环境自带的配置外,实验前常常对环境进行一系列新的配置,通常对gym.Wrapper进行继承重写其中的方法

2.1 reset规则

整个Atari游戏环境是一个确定性的环境,一个智能体可能在确定性环境中表现良好,但可能对一点细小的扰动高度敏感,所以常在设置中增加随机性

class NoopResetEnv(gym.Wrapper):
    def __init__(self, env, noop_max=30):
        """Sample initial states by taking random number of no-ops on reset.
        No-op is assumed to be action 0.
        """
        gym.Wrapper.__init__(self, env)
        self.noop_max = noop_max
        self.override_num_noops = None
        self.noop_action 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值