(續) 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很形象

 

 

 

 

 

 

 

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM