(续) gym atari游戏的环境设置问题:Breakout-v0, Breakout-v4, BreakoutNoFrameskip-v4和BreakoutDeterministic-v4的区别

根据前文(https://www.cnblogs.com/devilmaycry812839668/p/14665072.html)我们知道:

 

  1. 首先是v0和v4的区别:带有v0的env表示会有25%的概率执行上一个action,而v4表示只执行agent给出的action,不会重复之前的action。
  2. 带有Deterministic的env表示固定跳4帧,否则跳帧数随机从  (2, 5)  (2,4)   中采样。
  3. 带有NoFrameskip的env表示没有跳帧。

 

 

=========================================

 

 

看下主要的源代码的评论:

https://github.com/openai/gym/issues/1280

 

 

 

 

 

看下主要的源代码:

source code

 

 

v0   与     v4  版本:

 

 

 

 

 

 

 

 

 

Deterministic  下的    v0   与     v4  版本:

 

 

 

 

 

 

 

 

 

NoFrameskip  下的    v0   与     v4  版本:

 

 

 

 

 

 

 

============================================

 

 

可以看到在  Atari  游戏中, v0  v4 版本,与   Deterministic 下的  v0   v4 版本,  与   NoFrameskip 下的   v0   v4 版本  区别在于:

kwargs 字典中  键值     'frameskip'     ,      'repeat_action_probability'    

 

frameskip 是指定是否跳帧(中间帧使用重复动作),   repeat_action_probability 是指每次执行动作时重复上次选择的动作的概率  

 

 

可以看到   repeat_action_probability  主要用于区分 三类  v0  v4版本下的不同,  带有v0 的则是以概率0.25来选择上次执行的动作,  而v4则不设置该概率(以0概率执行上次动作,以1概率执行本次的动作)。

 

 

 

 

而  repeat_action_probability   只在  deterministic  和   NoFrameskip 下存在:

 

 

 

可以看到在所有游戏中frameskip默认设置为4,而只有在space_invaders中设置为3, 而这也是符合DeepMind原始论文中的设置的。

 

 

也就是说原始v0, v4版本是没有设置frameskip的,也就是说每次接收agent动作时都是随机从(2, 5)中选择跳帧数。

而Deterministic 下  除了space_invaders中frameskip设置为3其余的frameskip均设置为4。

而NoFrameskip 下所有游戏frameskip均设置为1。

注:frameskip均设置为1意味着每个帧都需要agent输入动作,不进行跳帧。跳帧的话,中间帧都是执行重复的动作。

 

举例:

fameskip=1

0帧时agent传入动作a0,         1帧时agent传入动作a1,         2帧时agent传入动作a2,         3帧时agent传入动作a3  。

 

fameskip=2

0帧时agent传入动作a0,         1帧时不需要agent传入动作而是继续执行动作a0,         2帧时agent传入动作a2,         3帧时不需要agent传入动作而是继续执行动作a2  。

 

fameskip=3

0帧时agent传入动作a0,         1帧时不需要agent传入动作而是继续执行动作a0,         2帧时不需要agent传入动作而是继续执行动作a0,         3帧时agent传入动作a3  。

 

fameskip=4

0帧时agent传入动作a0,         1帧时不需要agent传入动作而是继续执行动作a0,         2帧时不需要agent传入动作而是继续执行动作a0,         3帧时不需要agent传入动作而是继续执行动作a0 ,  4帧时agent传入动作a4。

 

 

 

============================================

 

为了更进一步了解    'frameskip'     ,      'repeat_action_probability'  的意义,  

查看链接   here  :

在  https://github.com/openai/gym/blob/master/gym/envs/atari/atari_env.py#L24  中可以知道:

 

 

 

step 函数的具体设置:

 

 

 

 

 

 

AtariEnv 类的初始化:

 

 

 

 

 从AtariEnv 类的初始化  及   step 函数的具体设置  可以看到    frameskip (跳帧) 确实为前面的分析一致。

 

 

 

 

但是很神奇的是在  step中并没有   repeat_action_probability   的设置。

但是在AtariEnv 类的初始化  中可以看到

 

 

 

也就是说,repeat_action_probability 的设置是对     self.ale   进行的。

 

 

 

 

 而  step 中具体的操作也是传给    self.ale   进行的。

 

 

 由此我们可以知道, 如果我们设置了  repeat_action_probability  ,那么对于frameskip的中间帧进行重复的动作依然进行  repeat_action_probability 操作。

 

 

 

 

举例:  (设置repeat_action_probability,即动作重复概率为0.25 )

fameskip=1

0帧时agent传入动作a0,传给ale的动作为a0,ale执行a0,   最终执行的动作记为b0;

1帧时agent传入动作a1,传给ale的动作为a1,但是ale以0.25的概率执行b0,  以0.75的概率执行a1, 最终执行的动作记为b1;

2帧时agent传入动作a2,传给ale的动作为a2,但是ale以0.25的概率执行b1,  以0.75的概率执行a2, 最终执行的动作记为b2;

3帧时agent传入动作a3,传给ale的动作为a3,但是ale以0.25的概率执行b2,  以0.75的概率执行a3, 最终执行的动作记为b3;

 

 

fameskip=2

0帧时agent传入动作a0,传给ale的动作为a0,ale执行a0,   最终执行的动作记为b0;

1帧时不需要agent传入动作,传给ale的动作为a0,但是ale以0.25的概率执行b0,  以0.75的概率执行a0, 最终执行的动作记为b1;

2帧时agent传入动作a2,传给ale的动作为a2,但是ale以0.25的概率执行b1,  以0.75的概率执行a2, 最终执行的动作记为b2;

3帧时不需要agent传入动作,传给ale的动作为a2,但是ale以0.25的概率执行b2,  以0.75的概率执行a2, 最终执行的动作记为b3;

 

 

 

fameskip=3

0帧时agent传入动作a0,传给ale的动作为a0,ale执行a0,   最终执行的动作记为b0;

1帧时不需要agent传入动作,传给ale的动作为a0,但是ale以0.25的概率执行b0,  以0.75的概率执行a0, 最终执行的动作记为b1;

2帧时不需要agent传入动作,传给ale的动作为a0,但是ale以0.25的概率执行b1,  以0.75的概率执行a0, 最终执行的动作记为b2;

3帧时agent传入动作a3,传给ale的动作为a3,但是ale以0.25的概率执行b2,  以0.75的概率执行a3, 最终执行的动作记为b3;

 

 

 

=====================================================

 

 

关于   repeat_action_probability  部分参考:

https://blog.csdn.net/qq_27008079/article/details/100126060

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

 

 

 

 

 

在论文revisiting the arcade中5.2解释的很清楚,里面图3很形象

 

 

 

 

 

 

 

 

 

=============================================

 

posted on 2021-04-16 08:44  Angry_Panda  阅读(2496)  评论(0编辑  收藏  举报

导航