| |
|
开发:
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迎来首个社区发布版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,更早版本会出现运行错误):
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,更早版本会出现运行错误):
由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的闭式解代码
除了车杆平衡CartPole以外,还有数个经典环境如小车上山MountainCar、双足机器人BipedalWalker都在Gym的Wiki上公布了闭式解。闭式解大都形式简洁,有兴趣的读者可移步Gym的Wiki上的Leaderboard页面查阅。 作者简介 肖智清,清华大学工学博士。 著有《神经网络与PyTorch实战》《强化学习:原理与Python实战》。scipy、sklearn等开源项目源码贡献者。近7年发表SCI/EI论文十余篇,多个顶级期刊和会议审稿人。在国内外多项程序设计和数据科学竞赛上获得冠军。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/15 12:42:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |