(续) gym atari游戏的环境设置问题:Breakout-v0, Breakout-v4, BreakoutNoFrameskip-v4和BreakoutDeterministic-v4的区别
根据前文(https://www.cnblogs.com/devilmaycry812839668/p/14665072.html)我们知道:
- 首先是v0和v4的区别:带有v0的env表示会有25%的概率执行上一个action,而v4表示只执行agent给出的action,不会重复之前的action。
- 带有Deterministic的env表示固定跳4帧,否则跳帧数随机从 (2, 5) (2,4) 中采样。
- 带有NoFrameskip的env表示没有跳帧。
=========================================
看下主要的源代码的评论:
https://github.com/openai/gym/issues/1280

看下主要的源代码:
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很形象

=============================================
(续) gym atari游戏的环境设置问题:Breakout-v0, Breakout-v4, BreakoutNoFrameskip-v4和BreakoutDeterministic-v4的区别的更多相关文章
- 强化学习-linux安装gym、atari和box2d环境
安装gym和atari环境 pip3 install gym pip3 install gym[atari] pip3 install gym[accept-rom-license] 安装box2d环 ...
- 强化学习-Windows安装gym、atari和box2d环境
安装gym pip3 install gym pip3 install gym[accept-rom-license] 安装atari环境[可选] 下载安装VS build tools 如果出现 OS ...
- Cocos开发中Visual Studio下HttpClient开发环境设置
Cocos2d-x 3.x将与网络通信相关的类集成到libNetwork类库工程中,这其中包括了HttpClient类.我们需要在Visual Studio解决方案中添加libNetwork类库工程. ...
- Cocos发育Visual Studio下一个HttpClient开发环境设置
Cocos2d-x 3.x相关类集成到网络通信libNetwork图书馆project于.这其中包括:HttpClient分类. 我们需要在Visual Studio溶液中加入libNetwork图书 ...
- cocos2d-x 3.11 游戏开发环境搭建流程
cocos2d-x 3.11.1 游戏开发环境搭建流程 1. 准备下面的软件 1) Windows7 64Bit+ VS2013 (VC++) 这个不用多说. 2) cocos2d-x-3.11.1. ...
- Google是如何教会机器玩Atari游戏的
转自:http://blog.csdn.net/revolver/article/details/50177219 今年上半年(2015年2月),Google在Nature上发表了一篇论文:Human ...
- 强化学习 平台 openAI 的 gym 安装 (Ubuntu环境下如何安装Python的gym模块)
openAI 公司给出了一个集成较多环境的强化学习平台 gym , 本篇博客主要是讲它怎么安装. openAI公司的主页: https://www.openai.com/systems/ 从主页上我 ...
- C语言/C++编程学习:C语言环境设置
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 现代3D图形编程学习-环境设置
本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...
- Python 2/3 安装与运行环境设置
Python 2/3 安装与运行环境设置: 1.Python 软件源:https://www.python.org/ 下载Win版本 https://www.python.org/downloa ...
随机推荐
- Easysearch:语义搜索、知识图和向量数据库概述
什么是语义搜索? 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术.旨在更好地理解用户的意图和查询内容,而不仅仅是根据关键词匹配,还通过分析查询的语义和 ...
- 如何将 iPhone 的照片同步到 windows 电脑上
首先在电脑上,新建一个文件夹,并把共享权限打开. 文件夹 右键 属性,共享,添加 Everyone. 然后,让手机和电脑连接到同一个局域网,手机热点即可. 在手机端看 文件 app,找到电脑的共享文件 ...
- Css var 的基础使用
Css var 语法 var(custom-property-name, value) - custom-property-name 必须 变量必须以 --开头 后面可以是英文.数字连接符,区分大小写 ...
- Task2 -- 关于Lecture3
Smiling & Weeping ---- 玲珑骰子安红豆, 入骨相思知不知. 1. 学习Git分支管理: Git分支是灵活开发的关键.创建.切换和合并分支是基础操作.使用如下命令: bas ...
- Niagara 物联网技术基础应用(文章修复中,不定时更新)
新手指南 前言 鉴于市面上有关Niagara物联网技术资料较少,笔者结合自生参加竞赛的经历编写此指南,该指南旨在让新手快速上手Niagara workbench 主要分以下几个模块讲解: 物联网软件平 ...
- oppo、一加 android14 chrome116内核 input @click不触发
// 兼容Chrome内核116及以上版本中配置disabled的input组件无法触发并冒泡click事件 .uni-input-input:disabled { pointer-events: n ...
- 使用AWS Glue进行 ETL 工作
数据湖 数据湖的产生是为了存储各种各样原始数据的大型仓库.这些数据根据需求,进行存取.处理.分析等.对于存储部分来说,开源版本常见的就是 hdfs.而各大云厂商也提供了各自的存储服务,如 Amazon ...
- Solo 开发者周刊 (第 1 期):开源产品的探索之路
产品推荐 如何着手将一个简单的想法转变为一个成熟的开源项目,以及如何在此过程中利用和贡献于开源社区.同时使其达到商业化的同时,保持原有的开源精神.这些是我们需要探索的. Spug 开源运维平台 Spu ...
- 【进阶篇】一文搞清楚网页发起 HTTP 请求调用的完整过程
目录 前言 一.HTTP协议 1.1基本概念 1.2工作原理 二.请求过程 2.1域名解析 2.2TCP 连接 2.3发送 HTTP 请求 2.4服务器应答 2.5响应内容 2.6关闭连接 三.客户端 ...
- 深度解读昇腾CANN模型下沉技术,提升模型调度性能
本文分享自华为云社区<深度解读昇腾CANN模型下沉技术,提升模型调度性能>,作者:昇腾CANN. AI模型的运行通常情况下需要CPU和NPU(昇腾AI处理器)等AI专用处理器协同工作,CP ...