最新版gym-0.26.2下Atari环境的安装以及环境版本v0,v4,v5的说明

强化学习的游戏仿真环境可以分为连续控制和非连续控制两类,其中连续控制的以mujoco为主,而非连续控制的以Atari游戏为主,本文对gym下的Atari环境的游戏环境版本进行一定的介绍。

 

参考:【转载】【重磅】Gym发布 8 年后,迎来第一个完整环境文档,强化学习入门更加简单化!我们知道gym官方给出的gym说明地址为:

https://www.gymlibrary.dev/

 

 

 

从官方的说明中知道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

Revisiting the Arcade Learning Environment: Evaluation Protocols and Open Problems for General Agents

 
 

 

posted on 2022-11-27 12:06  Angry_Panda  阅读(1388)  评论(0编辑  收藏  举报

导航