【转载】【重磅】Gym发布 8 年后,迎来第一个完整环境文档,强化学习入门更加简单化!
2022年11月22日 更新
gym官方地址:
=========================================
原文地址:
https://mp.weixin.qq.com/s/t2u0kSS-gxYwOFKTOx9X0g
注明:
本文为gym官方网站介绍文章的中文翻译版,如需要查看原版文件(英文原版)请转到gym官方说明文件:
============================================================
OpenAI Gym是一款用于研发和比较强化学习算法的环境工具包,它支持训练智能体(agent)做任何事——从行走到玩Pong或围棋之类的游戏都在范围中。 它与其他的数值计算库兼容,如pytorch、tensorflow 或者theano 库等。现在主要支持的是python 语言
以前官方提供的gym文档主要包含两部分:
测试问题集,每个问题成为环境(environment):可以用于强化学习算法开发,这些环境有共享的接口,允许用户设计通用的算法,例如:Atari、CartPole等。
OpenAI Gym服务: 提供一个站点和api ,允许用户对自己训练的算法进行性能比较。
其中Gym以界面简单、pythonic,并且能够表示一般的 RL 问题,而在强化学习领域非常知名。
Gym发布 8 年后,迎来第一个完整的环境文档:https://www.gymlibrary.ml/
整个文档主要包含以下几部分:
API
Vector API
Spaces
Environments
Environment Creation
Third Party Environment
Wrappers
Tutorials
API
此示例将运行 CartPole-v0 环境实例 1000 个时间步,在每一步渲染环境。您应该会看到一个弹出窗口,呈现经典的推车杆问题
Vector API
矢量化环境(Vectorized Environments)是运行多个(独立)子环境的环境,可以按顺序运行,也可以使用多处理并行运行。矢量化环境将一批动作作为输入,并返回一批观察结果。这特别有用,例如,当策略被定义为对一批观察结果进行操作的神经网络时。其中Vector API包含了:
Gym 提供两种类型的矢量化环境:
gym.vector.SyncVectorEnv,其中子环境按顺序执行。
gym.vector.AsyncVectorEnv,其中子环境使用多处理并行执行。这会为每个子环境创建一个进程。
与gym.make 类似,您可以使用gym.vector.make 函数运行已注册环境的矢量化版本。这会运行同一环境的多个副本(默认情况下是并行的)。以下示例并行运行 3 个 CartPole-v1 环境副本,将 3 个二进制动作的向量(每个子环境一个)作为输入,并返回沿第一维堆叠的 3 个观察值数组,数组为每个子环境返回的奖励,以及一个布尔数组,指示每个子环境中的情节是否已经结束。
>>> envs = gym.vector.make("CartPole-v1", num_envs=3)
>>> envs.reset()
>>> actions = np.array([1, 0, 1])
>>> observations, rewards, dones, infos = envs.step(actions) >>> observations
array([[ 0.00122802, 0.16228443, 0.02521779, -0.23700266],
[ 0.00788269, -0.17490888, 0.03393489, 0.31735462],
[ 0.04918966, 0.19421194, 0.02938497, -0.29495203]],
dtype=float32)
>>> rewards
array([1., 1., 1.])
>>> dones
array([False, False, False])
>>> infos
({}, {}, {})
Space
Space主要定义了环境的观察和行动空间的有效格式。包含了Seed函数、Sample等各种各样的函数接口:
Environments
环境部分是Gym的核心内容,其中整体分为以下几大类:
具体的包括如下:
Toy Text
所有玩具文本环境都是由我们使用原生 Python 库(例如 StringIO)创建的。这些环境被设计得非常简单,具有小的离散状态和动作空间,因此易于学习。 因此,它们适用于调试强化学习算法的实现。所有环境都可以通过每个环境文档中指定的参数进行配置。
Atari
Atari 环境通过街机学习环境 (ALE) [1] 进行模拟。
Mujoco
MuJoCo 代表带接触的多关节动力学。它是一个物理引擎,用于促进机器人、生物力学、图形和动画以及其他需要快速准确模拟的领域的研究和开发。
这些环境还需要安装 MuJoCo 引擎。截至 2021 年 10 月,DeepMind 已收购 MuJoCo,并于 2022 年将其开源,对所有人免费开放。可以在他们的网站和 GitHub 存储库中找到有关安装 MuJoCo 引擎的说明。将 MuJoCo 与 OpenAI Gym 一起使用还需要安装框架 mujoco-py,可以在 GitHub 存储库中找到该框架(使用上述命令安装此依赖项)。
有十个 Mujoco 环境:Ant、HalfCheetah、Hopper、Hupper、Humanoid、HumanoidStandup、IvertedDoublePendulum、InvertedPendulum、Reacher、Swimmer 和 Walker。所有这些环境的初始状态都是随机的,为了增加随机性,将高斯噪声添加到固定的初始状态。Gym 中 MuJoCo 环境的状态空间由两个部分组成,它们被展平并连接在一起:身体部位 ('mujoco-py.mjsim.qpos') 或关节的位置及其对应的速度 ('mujoco-py.mjsim. qvel')。通常,状态空间中会省略一些第一个位置元素,因为奖励是根据它们的值计算的,留给算法间接推断这些隐藏值。
此外,在 Gym 环境中,这组环境可以被认为是更难通过策略解决的环境。可以通过更改 XML 文件或调整其类的参数来配置环境。
Classic Control
有五种经典控制环境:Acrobot、CartPole、Mountain Car、Continuous Mountain Car 和 Pendulum。所有这些环境在给定范围内的初始状态都是随机的。此外,Acrobot 已将噪声应用于所采取的操作。另外,对于这两种山地车环境,爬山的车都动力不足,所以要爬到山顶需要一些努力。在 Gym 环境中,这组环境可以被认为是更容易通过策略解决的环境。所有环境都可以通过每个环境文档中指定的参数进行高度配置。
Box2D
这些环境都涉及基于物理控制的玩具游戏,使用基于 box2d 的物理和基于 PyGame 的渲染。这些环境是由 Oleg Klimov 在 Gym 早期贡献的,从那时起就成为流行的玩具基准。所有环境都可以通过每个环境文档中指定的参数进行高度配置。
Environment Creation
如何为Gym创造新环境
本文档概述了为创建新环境而设计的 OpenAI Gym 中包含的创建新环境和相关有用的包装器、实用程序和测试。
示例自定义环境
这是包含自定义环境的 Python 包的存储库结构的简单骨架。更完整的例子请参考:https://github.com/openai/gym-soccer。
Third Party Environments
第三方环境主要包括了61种:
最后提供了部分入门教程
======================================================
【转载】【重磅】Gym发布 8 年后,迎来第一个完整环境文档,强化学习入门更加简单化!的更多相关文章
- 一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档
接触Power BI的时间也只有几个月,虽然花的时间不多,但通过各种渠道了解收集,谈不上精通,但对一些重要概念和细节还是有所了解.在整理官方文档的过程中,也熟悉和了解了很多概念.所以从前到后把微软官方 ...
- [转载]ExtJs4 笔记(1) ExtJs大比拼JQuery:Dom文档操作
出处:[Lipan] (http://www.cnblogs.com/lipan/) 现在主流的JS框架要数ExtJs和JQuery应用的比较广泛.JQuery属于轻量级的,一般做网站应用比较常见,可 ...
- gym强化学习入门demo——随机选取动作 其实有了这些动作和反馈值以后就可以用来训练DNN网络了
# -*- coding: utf-8 -*- import gym import time env = gym.make('CartPole-v0') observation = env.reset ...
- 【HTML&CSS】 第一章:DTD文档声明
<!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE> 声明不是 HTML 标签:它是指示 web 浏览器关 ...
- [转载]—Health Check Reports Problem: Dependency$ p_timestamp mismatch for VALID objects (文档 ID 781959.1)
Health Check Reports Problem: Dependency$ p_timestamp mismatch for VALID objects (文档 ID 781959.1) AP ...
- 【转载】 DeepMind发表Nature子刊新论文:连接多巴胺与元强化学习的新方法
原文地址: baijiahao.baidu.com/s?id=1600509777750939986&wfr=spider&for=pc 机器之心 18-05-15 14:26 - ...
- PyRevit开发第一步:获取Revit文档Document
1.安装PythonShell插件 PythonShell 2018 插件下载 交流QQ群: 17075104 新建项目后,运行功能Python Shell, 在弹出的窗口中复制或输入以下引用代码模块 ...
- Excelize 发布 2.3.0 版本, Go 语言 Excel 文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...
- Excelize 发布 2.2.0 版本, Go 语言 Excel 文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...
- 【转载】 强化学习(五)用时序差分法(TD)求解
原文地址: https://www.cnblogs.com/pinard/p/9529828.html ------------------------------------------------ ...
随机推荐
- BC6-牛牛的第二个整数
题目描述 牛牛从键盘上输入三个整数,并尝试在屏幕上显示第二个整数. 输入描述 一行输入 3 个整数,用空格隔开. 输出描述 请输出第二个整数的值. 示例 1 输入:1 2 3 输出:2 解题思路 方案 ...
- 判断日期是否为周六周日,BigDecimal比较大小
判断日期是否为周六周日,BigDecimal比较大小 package com.example.core.mydemo.date; import java.math.BigDecimal; import ...
- Go1.13的坑:无法结束Goroutine
背景 本人作为一名SRE,想用Go模拟Cpu占用100% 1秒钟,但是在Go1.13上遇到了问题,1s后Goroutine不会停止. 只要用了for{},Goroutine就无法结束,即使主Gorou ...
- FEDORA 显卡驱动安装
FEDORA 显卡驱动安装 在fedora中akmod-nvidia包可以自动的处理开源驱动屏蔽等各种问题, 强烈推荐用这个安显卡驱动. -1. 在 BIOS 中关闭安全启动 0. 切换桌面环境至 X ...
- vim 中代码的折叠和打开
# vim 中代码的折叠和打开 reference: vim中代码的折叠和打开(有删改) https://www.cnblogs.com/xuxm2007/archive/2011/11/10/224 ...
- 全志科技T3国产工业评估板规格书(四核ARM Cortex-A7,主频1.2GHz)
1 评估板简介 创龙科技TLT3-EVM是一款基于全志科技T3处理器设计的4核ARM Cortex-A7高性能低功耗国产评估板,每核主频高达1.2GHz,由核心板和评估底板组成. 评估板接口资源丰富, ...
- Java项目静态资源映射的几种方式
一.Springboot 1.webjars方式 我们之前使用Maven构建一个Web项目时,在main目录下会存在一个webapp的目录,我们以前都是将所有的页面或静态资源导在这个目录下,但现在使用 ...
- SpringBoot排查自动装配、Bean、Component、Configuration配置类
排除自动装配AutoConfiguration @SpringBootApplication( exclude = { DataSourceAutoConfiguration.class, Mybat ...
- Mybatis 二级缓存的使用
Mybatis二级缓存 简介:二级缓存是namesace级别的,多个SqlSession去操作同个namespace下的Mapper的sql语句,多个SqlSession可以共用二级缓存,如果两个ma ...
- sshd管理限制登录配置(centos7.9)
背景情况:为了公网的主机,被无限的密码爆破,需要对主机的ssh进行安装加固 1.首先要禁用root的远程登录和修改ssh的端口 vi /etc/ssh/sshd_config# 修改端口,不适用22端 ...