Gym由来

强化学习对标准软件环境而不是数据集的依赖为该领域带来了许多独特的问题。给定一段图像分类代码,您可以向它提供任何足够大的标记图像数据集,然后按运行,它基本上会起作用。与数据集不同,当您处理游戏等基于软件的环境时,您必须确保该环境在您的操作系统和 CPU 架构上运行,没有错误,与现代版本的底层工具一起运行(例如当前版本的Python),并具有与您的学习代码兼容的 API。您还希望它有文档,可通过包管理器安装,并具有专门的可重复性功能。

此前,强化学习环境项目一直由单独的团体或个人在 GitHub 上维护和拥有。这意味着,如果有人突然辞职,或者公司倒闭,维护工作就会完全停止。即使是有人复制环境的标准开源方法在这里也是不可取的,因为每个人都需要使用完全相同版本的环境来实现整个研究领域的可重复性和一致性。

除了这给研究人员带来的生活质量、可重复性和生产力问题之外,现实是,只要强化学习领域存在,就需要能够进行性能比较的标准维护环境。我们对此问题的长期解决方案是让存储库由一个统一的中立非营利组织(类似于 Linux 基金会或 Apache 软件基金会)管理,该组织随着时间的推移维护这些库并使它们符合一组统一且一致的标准。这是 Farama 创建的很大一部分目的。

为了拥有标准化的环境和模块化的强化学习代码,需要有一个精心设计且易于使用的标准 API 来访问强化学习环境。对于大多数用例,这已经通过名为 Gym 的 Python 库存在。 Gym 最初由 OpenAI 于 6 年前创建,它包括一个标准 API、使环境符合该 API 的工具以及一组已成为广泛使用的基准的各种参考环境。它已通过 pip 安装了超过 4300 万次,在 Google Scholar 上被引用超过 4,500 次,并被 GitHub 上超过 32,000 个项目使用。这使其成为迄今为止世界上使用最广泛的强化学习库。

但 OpenAI 除了最初的发布之外并没有投入大量资源。 Gym 的维护逐渐减少,直到 2020 年底 Gym 完全无人维护。

2021年,Farama 基金会开始接手维护、更新Gym,并更新为Gymnasium。本质上,这是未来将继续维护的 Gym 分支。通过将 import gym 替换为 import gymnasium as gym,可以轻松地将其放入任何现有代码库中,并且 Gymnasium 0.26.2 在其他方面与 Gym 0.26.2 相同。

Gym简介

gym是一个开源的强化学习实验平台,一个用于训练强化学习算法的Python库,它提供了一系列环境,让开发者可以专注于设计新的强化学习算法,而不需要从零开始搭建环境,使研究人员能够测试和比较他们的强化学习算法。gym通过提供具有各种复杂度的任务,使得研究人员可以轻松地探索强化学习的各个方面。这些任务涵盖了各种运动控制问题,例如机器人移动、游戏和许多其他类型的问题。同时,其提供了页面渲染,可以可视化地查看效果。

gym提供了一个统一的接口,使得研究人员可以使用相同的代码来解决不同的问题。它还支持多进程训练,使得研究人员可以同时训练多个智能体,从而加快实验速度。此外,gym还提供了可扩展的框架,使研究人员可以轻松地添加自己的环境和任务。

通过使用gym,研究人员可以更好地理解强化学习的工作原理,并开发出更有效的算法。此外,gym还可以用于教育和培训,使得学生和教师可以使用实际的任务来学习强化学习。

Gym主要包括以下基本组件:

-环境(Environment):Gym中的环境是一个包含状态、动作和奖励的抽象概念,用于描述强化学习问题。环境可以是离散的,也可以是连续的,同时支持多智能体(Multi-Agent)环境。

-任务(Task):任务是Gym中具体的强化学习问题,例如CartPole、MountainCar等。每个任务都对应一个特定的环境,用于评估智能体在某个任务上的性能。

-智能体(Agent):智能体是Gym中的一个抽象概念,用于表示强化学习算法。智能体通过与环境互动,学习策略,并在任务中执行策略以获得奖励。

-接口(Interface):Gym提供了多种接口,如Python API、TensorFlow、PyTorch等,方便研究者根据自己的需求选择合适的接口进行开发。

官方GITHUB地址:gym
文档网站:Gym Documentation

注意:
从2021年开始,Gym的团队已经转移开发新版本Gymnasium,替代Gym(import gymnasium as gym),Gym将不会再更新。请尽可能切换到Gymnasium。详情请查看这个博客文章

Gymnasium简介

Gymnasium是一个开源的Python库,用于开发和比较强化学习算法,它提供了一个标准的API,用于学习算法和环境之间的通信,以及符合该API的标准环境集。这是OpenAI的Gym库的一个分支,由它的维护者( OpenAI几年前就把维护工作交给了外部团队)来维护,这将是未来维护的发展方向。

官方GITHUB地址:gymnasium
文档网站:Gymnasium Documentation

Gymnasium包括以下几大类环境以及种类繁多的第三方环境
Classic Control - 这些是基于现实世界问题和物理学的经典强化学习。

Box2D - 这些环境都涉及基于物理控制的玩具游戏,使用基于 box2d 的物理和基于 PyGame 的渲染

Toy Text - 这些环境设计得非常简单,具有较小的离散状态和动作空间,因此易于学习。因此,它们适合调试强化学习算法的实现。

MuJoCo - 一种基于物理引擎的环境,具有多关节控制,比 Box2D 环境更复杂。

Atari - 通过 Stella 和 Arcade 学习环境模拟的一组 57 个 Atari 2600 环境,具有很高的复杂性供代理学习。

Third-party - 已经创建了许多与 Gymnasium API 兼容的环境。请注意创建软件的版本,并在必要时使用gymnasium.make 中的apply_env_compatibility。

Gym安装

安装基础 Gym 库

pip install gym

这不包括所有环境系列的依赖项(数量庞大,有些在某些系统上安装可能会出现问题)。您可以为一个系列安装这些依赖项,例如 pip install gym[atari] 或使用 pip install gym[all] 来安装所有依赖项。

pip install gym[atari]
pip install gym[all]

在 Linux 和 macOS 上支持 Python 3.7、3.8、3.9 和 3.10,但不正式支持Windows 。

Gym测试运行

Gym 界面简单、Python 化,能够表示一般的 RL 问题:

import gym
env = gym.make("LunarLander-v2", render_mode="human")
observation, info = env.reset(seed=42)
for _ in range(1000):
   action = policy(observation)  # User-defined policy function
   observation, reward, terminated, truncated, info = env.step(action)

   if terminated or truncated:
      observation, info = env.reset()
env.close()

Gymnasium安装

安装基础 Gymnasium 库

pip install gymnasium

这不包括所有环境系列的依赖项(数量庞大,有些在某些系统上安装可能会出现问题)。您可以为一个系列安装这些依赖项,例如 pip install “gymnasium[atari]” 或使用 pip install “gymnasium[all]” 安装所有依赖项。

pip install "gymnasium[atari]"
pip install "gymnasium[all]"

在 Linux 和 macOS 上支持 Python 3.8、3.9、3.10 和 3.11,但不正式支持Windows 。

Gymnasium测试运行

import gymnasium as gym
env = gym.make("LunarLander-v2", render_mode="human")
observation, info = env.reset(seed=42)
for _ in range(1000):
   action = env.action_space.sample()  # this is where you would insert your policy
   observation, reward, terminated, truncated, info = env.step(action)

   if terminated or truncated:
      observation, info = env.reset()

env.close()

创建源文件

mkdir -r ./rl/src
cd ./rl/src
touch rltest.py

将上面的代码复制到创建的rltest.py文件内,然后在该路径下打开终端,输入

python3 rltest.py

此时会报错,提示

gymnasium.error.DependencyNotInstalled: Box2D is not installed, run `pip install gymnasium[box2d]`

按照提示安装box2d库

pip install gymnasium[box2d]

在这里插入图片描述会提示一个swig错误,但会自动安装,最后提示成功安装
在这里插入图片描述

运行结果:
在这里插入图片描述
到此gymnasium安装完成。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐