(环境跳帧)OpenAI gym Atari游戏的环境设置

原文链接:https://blog.csdn.net/clksjx/article/details/104053216

Breakout-v0, Breakout-v4, BreakoutNoFrameskip-v4和BreakoutDeterministic-v4的区别

  • v0v4是环境执行输入action的区别(即env.step(action)):

    • 带有v0的环境会有25%的概率执行上一个action75%的概率执行输入的action
    • v4表示100%执行输入的action,不会重复上一个action
  • 注意:以上解释仅适用于atari环境。在普通的cart-pole等环境中,v0v1等后缀的含义是根据环境而变化的。


  • NoFrameskipDeterministic是环境输出下一帧画面时的区别(即obs, reward, done, info = env.step(action)):
    • 带有NoFrameskipenv表示没有跳帧,环境会顺序地输出游戏中的每一帧游戏画面。
    • 带有Deterministicenv表示每4帧才输出一张游戏中的画面(即跳过3帧)。
    • 游戏名后面什么都不带的(如Breakout-v0),会随机从(2, 5)中采样一个跳帧数量。

  • 在训练agent时,如果想让环境跳帧,建议直接使用make_atari()函数对环境进行包装 make_atari() 源代码

    env = gym.make(env_id)
    assert 'NoFrameskip' in env.spec.id
    env = NoopResetEnv(env, noop_max=30)
    env = MaxAndSkipEnv(env, skip=4)
    
         
         
    • 1
    • 2
    • 3
    • 4

    从源码中我们可以看出,该函数是先定义原始atari环境中带有NoFrameskip的环境,然后使用atari_wrappers中的MaxAndSkipEnv()进行包装 (MaxAndSkipEnv() 源代码),包装后的env便会执行跳帧操作。
    此时,使用MaxAndSkipEnv()包装后的环境在跳帧时,一个action会被执行多帧(取决于跳帧数量),并且每帧获取的reward也会被累加至下一次画面输出。
    此外,跳帧时,输出画面是从每n帧中的最后2帧的像素值中的最大值来组成一张图片(即比较最后2帧的每一个对应位置的像素值,然后取较大的那个像素)。因为在Atari游戏中,有些画面是仅在奇数帧出现的,因此要对最后两帧取最大值。
    个人总结:不要轻易使用带有跳帧操作的原始环境,尽量使用NoFrameskip的环境,然后使用make_atari()进行包装,实现跳帧操作。此外,尽量使用v4环境,减少执行action的随机性。
    参考链接


Atari游戏的图片预处理

Downsampling, FrameStack等技巧。

FrameStack 源代码 以及 英文原理讲解中文原理解释

### OpenAI Gym 的定义与用途 OpenAI Gym 是一个用于开发和比较强化学习算法的工具包[^2]。它通过提供标准化的应用程序接口(API),实现了强化学习算法与环境之间的高效通信,并附带了一组符合此 API 的标准环境集合[^4]。 #### 主要功能 - **支持多种环境**:OpenAI Gym 提供了许多预定义的环境,这些环境涵盖了不同的领域,例如经典控制问题(CartPole-v1)、机器人模拟(Ant-v2)以及 Atari 游戏等。 - **促进研究与发展**:作为强化学习领域的核心工具之一,OpenAI Gym 不仅简化了实验设计过程,还促进了不同算法间的公平对比[^1]。 #### 使用场景 开发者能够利用 Python 编程语言快速构建并运行自己的强化学习项目,在虚拟环境中训练智能体完成特定目标的同时评估其表现水平[^3]。 ```python import gym env = gym.make('CartPole-v1') # 创建指定名称的经典控制任务实例 observation = env.reset() # 初始化状态观测值 for _ in range(100): # 循环执行动作交互流程 env.render() # 可视化当前画面帧 action = env.action_space.sample() # 随机选取可用操作项 observation, reward, done, info = env.step(action) # 执行选定行为获取反馈数据 env.close() ``` 上述代码片段演示了如何加载名为 `CartPole-v1` 的简单平衡杆挑战案例,并让未经过任何优化处理过的代理随机尝试各种可能的动作选项直至结束条件达成为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值