IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 强化学习环境库 Gym 发布首个社区发布版,全面兼容 Python 3.9 -> 正文阅读

[Python知识库]强化学习环境库 Gym 发布首个社区发布版,全面兼容 Python 3.9

图片

作者:肖智清?

来源:AI科技大本营

强化学习环境库Gym于2021年8月中旬迎来了首个社区志愿者维护的发布版Gym 0.19。该版本全面兼容Python 3.9,增加了多个新特性。

强化学习环境库的事实标准Gym迎来首个社区发布版

Gym库在强化学习领域可以说是众人皆知。它是OpenAI于2016年推出的Python环境库,内置了冰面滑行FrozenLake、车杆平衡CartPole、小车上山MountainCar、双足机器人BipedalWalker等经典强化学习任务环境,是目前最常见的强化学习环境库。绝大多数人在学习强化学习时第一个接触到的环境库就是Gym库。Gym库也是在各类强化学习教程和学术论文中出现频率最高的环境库。它以压倒性的占有率成为强化学习环境库中无可匹敌的事实标准。

图片

OpenAI Gym徽标(图片来源:http://gym.openai.com/)

近年来,由于OpenAI投入的资源有限,Gym一直处于被动维护状态。特别是Python 3.9在2020年10月发布后,Gym迟迟未能兼容Python 3.9。由于不能兼容Python 3.9,更进一步导致不能兼容其他库的最新版本,为研发过程中采用其他库的新特性带来了困难。由于Gym已经在学术界和工业界广泛应用,希望Gym能够兼容Python 3.9的呼声一直很高。在GitHub仓库中的讨论区中常常有留言希望Gym尽早兼容Python 3.9,并对其中的bug进行修订。

2021年7月,OpenAI将Gym交给由马里兰大学(University of Maryland College Park)博士生Justin Terry(GitHub:jkterry1)领衔的社区志愿者们来维护。在志愿者的合作下,2021年8月14日发布了首个社区维护的发布版Gym 0.19。发布文件已经在2021年8月17日上传到PyPI。

图片

Justin Terry(图片来源:https://github.com/jkterry1)

众望所归,Gym 0.19兼容Python 3.9

让Gym兼容Python 3.9涉及到对其依赖的pyglet、pillow等库的兼容性维护,这也导致了Gym迟迟不能兼容Python 3.9。在Justin Terry等多名社区志愿者的通力合作下,本次发布版终于兼容了Python 3.9。这其中也不乏来自中国内地志愿者的贡献。其中,来自中国内地的GitHub用户ZhiqingXiao提交的PR#2135维护了依赖的pillow的版本。

图片

Zhiqing Xiao(图片来源:http://github.com/zhiqingxiao)

在发布版Gym 0.19中,我们已经可以在Python 3.9中采用一行简单的pip命令来安装Gym。

在Python 3.9中安装Gym的命令(在Python 3.9下,此命令仅适用于Gym 0.19,不适合更早的Gym版本)

pip install –upgrade gym

安装完后,就可以在Python中正常使用Gym了。

下面的代码给出了使用Gym的冰面滑行环境FrozenLake-v1的示例。环境FrozenLake-v1是在Gym 0.19首次出现的环境,它的前身是2016年Gym收录的冰面滑行的环境FrozenLake-v0。2021年3月,GitHub用户ZhiqingXiao发现环境FrozenLake-v0的阈值设置存在错误,提交了PR#2205修复了该问题。

使用Gym的示例代码(此代码示例仅适用于Gym 0.19,更早版本会出现运行错误):

import?numpy?as?np
import?gym
env?=?gym.make("FrozenLake-v1")
print(env.observation_space)?#?观测空间
print(env.action_space)?#?动作空间
print(env.spec.reward_threshold)?#?成功求解的阈值

obs,?reward,?done?=?env.reset(),?0.,?False
episode_reward?=?0.
while?not?done:
????action?=?np.random.randint(4)
????obs,?reward,?done,?_?=?env.step(action)
????episode_reward?+=?reward
print(episode_reward)?#?回合奖励

Gym 0.19的其他新特性

Gym 0.19还包括了其他新特性。

GitHub用户m-orsini提交的PR#2148使得类gym.spaces.MultiDiscrete类可以自定义数据类型。

为gym.spaces.MultiDiscrete类自定义数据类型的示例代码(该代码仅能用于Gym 0.19,更早版本会有运行错误)

gym.spaces.MultiDiscrete(nvec, dtype=np.bool) # dtype是新增的关键字参数,可传入数据类型。

由GitHub用户vwxyzjn提交的PR#2296使得VectorEnv类也可以使用RecordEpisodeStatistics类。

VectorEnv类和RecordEpisodeStatistics类联合使用的代码示例(该示例来源于vwxyzjn提交的PR#2296。仅适用于Gym 0.19,更早版本会出现运行错误):

import?gym
from?gym.vector?import?SyncVectorEnv

def?make_env(gym_id,?seed):
????def?thunk():
????????env?=?gym.make(gym_id)
????????env.seed(seed)
????????env.action_space.seed(seed)
????????env.observation_space.seed(seed)
????????return?env
????return?thunk

envs?=?SyncVectorEnv([make_env("CartPole-v1",?1?+?i)?for?i?in?range(2)])
envs?=?gym.wrappers.RecordEpisodeStatistics(envs)
envs.reset()
for?i?in?range(100):
????_,?_,?_,?infos?=?envs.step(envs.action_space.sample())
????for?info?in?infos:
????????if?"episode"?in?info.keys():
????????????print(f"i,?episode_reward={info['episode']['r']}")
????????????break

由GitHub用户amtamsi提交的PR#2289使得Gym在导入环境时(特别是导入外部环境时)检查导入的环境。由于检查是在库内部进行的,这个更新对用户是透明的,不需要用户修改代码。在我们导入Gym的第三方扩展库(如棋盘游戏库boardgame2等)时,相关功能会自动使用。

尘封数十年的经典环境惊现闭式解,仅需2行代码求解车杆平衡问题

Gym中收录的环境很多是数十年来反复研究的经典问题,特别是像车杆平衡CartPole、小车上山MountainCar、双足机器人BipedalWalker这样的环境更是反复出现在学术论文和教程中。从去年开始,这些环境的闭式解陆续被首次公开,引发研究人员关注。

车杆平衡CartPole是Gym中最著名的环境之一,该问题由强化学习大师级人物Andrew Barto等人在1983年的论文《Neuronlike adaptive elements that can solve difficult learning control problem》里提出,至今仍是GitHub上最受欢迎的环境之一,同时也是强化学习教程最喜欢收录的环境之一。研究人员于近40年来首次发现了能够求解车杆平衡CartPole的闭式解,并在Gym的Wiki里的Leaderboard页面公开。

图片

车杆平衡CartPole问题(图片来源:https://gym.openai.com/envs/CartPole-v0/)

Gym库收录了两个不同版本的车杆平衡CartPole环境:CartPole-v0和CartPole-v1。公开的闭式解用2行代码就可以求解两个环境,其闭式解的简洁程度着实令人感到意外。

车杆平衡CartPole的闭式解代码

position,?velocity,?angle,?angle_velocity?=?observation
action?=?int(3.?*?angle?+?angle_velocity?>?0.)

除了车杆平衡CartPole以外,还有数个经典环境如小车上山MountainCar、双足机器人BipedalWalker都在Gym的Wiki上公布了闭式解。闭式解大都形式简洁,有兴趣的读者可移步Gym的Wiki上的Leaderboard页面查阅。

作者简介

肖智清,清华大学工学博士。

著有《神经网络与PyTorch实战》《强化学习:原理与Python实战》。scipy、sklearn等开源项目源码贡献者。近7年发表SCI/EI论文十余篇,多个顶级期刊和会议审稿人。在国内外多项程序设计和数据科学竞赛上获得冠军。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 21:59:28  更:2021-08-28 21:59:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 0:52:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计