最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明
强化学习的游戏仿真环境可以分为连续控制和非连续控制两类,其中连续控制的以mujoco为主,而非连续控制的以Atari游戏为主,本文对gym下的Atari环境的游戏环境版本进行一定的介绍。
参考:【转载】【重磅】Gym发布 8 年后,迎来第一个完整环境文档,强化学习入门更加简单化!我们知道gym官方给出的gym说明地址为:
从官方的说明中知道gym的Atari环境在V0,V4的基础上增加了V5版本。虽然V5版本是2022年gym才正式整合进gym的Atari环境并推出使用的,但是该方法在2017年就已经被正式发表并使用,V5版本的原始论文地址:
Revisiting the Arcade Learning Environment: Evaluation Protocols and Open Problems for General Agents
---------------------------------------------------------------------------------------
首先看下在之前版本的gym中V0,V4之间的区别:
从(续) gym atari游戏的环境设置问题:Breakout-v0, Breakout-v4, BreakoutNoFrameskip-v4和BreakoutDeterministic-v4的区别中可以知道:
1. 首先是v0和v4的区别:带有v0的env表示会有25%的概率执行上一次执行的action,而v4表示只执行agent给出的action,不会重复之前env所执行的action。
2. 带有Deterministic的env表示固定跳4帧,否则跳帧数随机从 (2, 5) (2,3,4) 中采样。
3. 带有NoFrameskip的env表示没有跳帧。
新版本的gym中虽然依旧保留了老版本gym中的v0,v4的版本功能,但是这里已经不建议使用了,新版本中建议在gym.make的时候使用参数来指定Frameskip的具体数值(Deterministic Fameskip、NoFrameskip、Random Frameskip)和repeat_action_probability(sticky probability)的数值,具体参数设置:
可以看到新版本gym中不像旧版本中那样不允许修改frameskip和repeat_action_probability的数值,新版本中不仅在gym.make的同时对frameskip和repeat_action_probability进行设置也可以通过指定版本V0,V4,V5的方式使用各版本中默认的frameskip和repeat_action_probability数值,这里需要注意,如果在gym.make中指定了游戏版本(v0,v4,v5)的同时也手动设定了frameskip和repeat_action_probability的数值,但是最终生效的frameskip和repeat_action_probability数值以手动设置的参数(common arguments)数值为准。
新版本的gym也将第一款DRL框架baselines中的game preprocessing的代码融合进来了,我们可以通过指定obs_type参数的方式获得灰度图(grayscale),同时也可以通过指定full_action_space的方式来指定action space的空间(Atari游戏默认有18个动作,但是实际中每个游戏都可以使用较少的动作空间来实现同样的效果,简单的来理解就是DOWNRIGHT、DOWN、RIGHT这三个动作完全可以用DOWN、RIGHT这两个动作来表示,因为DOWN+RIGHT=DOWNRIGHT,连续执行DOWN、RIGHT动作就可以实现DOWNRIGHT动作的相同效果)。
在旧版本gym中如果想绘制人类可以观看的游戏画面需要调用env.render()函数,但是在新版本的gym中可以在gym.make的时候将render_mode设置为“human”,这样再env.step(action)的时候就可以自动实现画面绘制和游戏音乐播放,该种方式可以获得更好的适合人类的游戏体验。
在新版本的gym中还提供了mode和difficulty的设置参数,具体的对应参数见官网文档:https://www.gymlibrary.dev/environments/atari/#flavors
这里需要重点说一下,在老版本的gym中是不支持Atari游戏的mode/difficulty设置的,但是Atari游戏本身是支持这个困难度设置的,由于这个困难度的设置是为迁移学习等方向使用的,因此使用度并不是很高,但是有这方面需要的researcher就可以在新版本gym中得到便利。另外需要注意的一点是同个游戏的不同困难mode下,所对应的reduce action space可能会不同,为了保证同个游戏在不同困难度下action_space保持一致可以在gym.make的时候设置full_action_space=True 。
-------------------------------------------------------------------------------------------------
关于v0,v4,v5的说明:
如同前面对v0,v4的说明:
1. 首先是v0和v4的区别:带有v0的env表示会有25%的概率执行上一次执行的action,而v4表示只执行agent给出的action,不会重复之前env所执行的action。
2. 带有Deterministic的env表示固定跳4帧,否则跳帧数随机从 (2, 5) (2,3,4) 中采样。
3. 带有NoFrameskip的env表示没有跳帧。
官网文档给出了关于v0,v4的说明表格,该表格与前面的文字说明是一致的,但是看起来更加的直观,表格如下:
说白了,在老版本的gym中,v0和v4的区别在于是否设置sticky probability,也就是这里的repeat_action_probability;而不论v0还是v4所对应的frameskip都是(2,3,4)中随机选,不论v0还是v4,如果后缀为Deterministic则代表frameskip=4(space_invaders比较特殊,在不是随机frameskip的情况下其数值不能超过3,因此在Deterministic时该游戏的frameskip=3而不是4),如果后缀为NoFrameskip则意味着frameskip=1。
注意:在论文《Human-level control through deep reinforcement learning》中指出space_invaders游戏中如果将frameskip设置为4则无法捕捉到激光发射的画面,因而不能正常的训练。
而新版本gym中所推出的V5版本则是根据论文Revisiting the Arcade Learning Environment: Evaluation Protocols and Open Problems for General Agents所来的,在该论文中经过实验及分析认为repeat_action_probability=0.25对算法训练更加公平,因为这样可以减少Atari游戏非随机的游戏环境所造成的对算法训练不公平的问题(Atari游戏在游戏状态确定和动作确定的情况下其下个状态也是确定的,这是由于Atari游戏中的dynamic是非随机的,有些算法通过对固定游戏序列的记忆就可以获得到很好的result,加入sticky probability可以很好的增加随机性,对训练算法更加公平),同时由于在该论文中将frameskip与repeat_action_probability相结合并且设置frameskip=5,因此这里的v5也采用了同样的设置。
需要注意的是,在v5中,space_invaders游戏的默认frameskip却是等于4,而不是论文中的5。
在ale_py/gym.py的代码中查看源码:
从源码中可以看到与官方文档中不同的是,V5中所对应的frameskip的默认值不是3而是4,也就是不特殊指定v5中的frameskip的话默认frameskip=4,而不是文档和论文中所说的5,为此我只能说文档和论文都是参考所用,最终的数值还是应该以源码中的为准。而且在源代码中可以看到full_action_space默认在v5中为false,而不是文档中说给的True。
还有,从源码中的信息:
可以知道,"max_num_frames_per_episode"中的数值并不是一个episode中算法传给env的动作次数,而是底层的游戏引擎真实执行的步数,因此这里再frameskip=4的情况下得到一个episode最多可以接受的动作次数为108k/4=27000 。
官方文档通过游戏Amidar做了进一步的解释:
可以看到在v5中是不可以使用后缀Deterministic和NoFrameskip的,但是需要注意的是v5下的游戏环境需要使用"ALE"作为命名空间,并且后缀“-ram”依旧可以使用,不过由于新版本中提供了obs_type的设置参数,这里后缀“-ram”的意义也不是很大了。
--------------------------------------------------------------------------------------------
附录:
gym的Atari环境安装命令:
pip install gym[atari]
pip install gym[accept-rom-license]
=========================================================
参考:
windows系统下最新版gym[atari]中的游戏环境(此时最新版的gym为0.24.0,gym==0.24.0)
(续) gym atari游戏的环境设置问题:Breakout-v0, Breakout-v4, BreakoutNoFrameskip-v4和BreakoutDeterministic-v4的区别
https://github.com/mgbellemare/Arcade-Learning-Environment
https://gitee.com/devilmaycry812839668/baselines
posted on 2022-11-27 12:06 Angry_Panda 阅读(1637) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
· 用 C# 插值字符串处理器写一个 sscanf
2021-11-27 【转载】 关于Numpy数据类型对象(dtype)使用详解
2021-11-27 【转载】 numpy数据类型dtype转换
2021-11-27 【转载】 大端模式和小端模式的区别是什么?
2021-11-27 【转载】 解决 sudo echo x > 时的 Permission denied错误
2021-11-27 EDI企业订单报文系统——冷链物流管理系统——低代码的应用
2020-11-27 强化学习中经验池的替代设计——A3C算法