Gym 是一個用於開發和比較強化學習演算法的工具包。它支持教學智能體(agents)如何在各種模擬環境中做出決策。
NOASSERTIONPythongymopenai 36.4k Last Updated: October 11, 2024
OpenAI Gym 項目詳細介紹
項目概述
OpenAI Gym 是一個開源的 Python 庫,專門用於開發和比較強化學習演算法。它通過提供標準化的 API 來連接學習演算法和環境,並提供了一套符合該 API 標準的環境集合。自發布以來,Gym 的 API 已經成為強化學習領域的標準。
⚠️ 重要聲明
項目維護狀態變更:自 2021 年以來一直維護 Gym 的團隊已將所有未來開發工作轉移到 Gymnasium,這是 Gym 的直接替代品(可以使用 import gymnasium as gym
)。Gym 將不再接收任何未來更新,建議用戶儘快切換到 Gymnasium。
核心特性
標準化 API
- 提供統一的介面用於強化學習演算法與環境之間的通信
- 簡化環境創建和交互過程
- 成為強化學習領域的 API 標準
豐富的環境庫
- 包含大量預定義的強化學習環境
- 支持多種類型的任務和挑戰
- 環境遵循統一的介面標準
安裝方法
基礎安裝
pip install gym
特定環境族安裝
# 安裝 Atari 環境依賴
pip install gym[atari]
# 安裝所有環境依賴
pip install gym[all]
# 安裝 MuJoCo 環境依賴(最新版本)
pip install gym[mujoco]
# 安裝 MuJoCo 環境依賴(舊版本)
pip install gym[mujoco_py]
系統支持
- Python 版本:支持 Python 3.7, 3.8, 3.9, 3.10
- 操作系統:官方支持 Linux 和 macOS
- Windows:接受相關 PR 但不提供官方支持
基本使用示例
import gym
# 創建環境
env = gym.make("CartPole-v1")
# 重置環境
observation, info = env.reset(seed=42)
# 環境交互循環
for _ in range(1000):
# 隨機選擇動作
action = env.action_space.sample()
# 執行動作
observation, reward, terminated, truncated, info = env.step(action)
# 檢查是否需要重置
if terminated or truncated:
observation, info = env.reset()
# 關閉環境
env.close()
相關生態系統
推薦的學習庫
CleanRL - 基於 Gym API 的學習庫
- 面向強化學習新手
- 提供優秀的參考實現
Tianshou - 面向經驗豐富用戶的學習庫
- 支持複雜算法修改
- 設計靈活
RLlib - 支持分佈式訓練的學習庫
- 支持分佈式訓練和推理
- 功能極其豐富
PettingZoo - 多智能體環境庫
- 類似 Gym 但支持多智能體環境
版本管理
Gym 採用嚴格的版本控制以確保可重現性:
- 所有環境都以版本後綴結尾(如 "_v0")
- 當環境變更可能影響學習結果時,版本號遞增
- 確保實驗的可重現性和一致性
MuJoCo 環境更新
- 最新的 "_v4" 及未來版本不再依賴
mujoco-py
- 改為使用
mujoco
作為必需依賴 - 舊版本環境仍保留但不再維護
文檔和資源
- 官方文檔:https://www.gymlibrary.dev/
- Discord 伺服器:開發討論社區
- GitHub 倉庫:https://github.com/openai/gym
學術引用
項目白皮書可在 arXiv 獲取,引用格式:
@misc{1606.01540,
Author = {Greg Brockman and Vicki Cheung and Ludwig Pettersson and Jonas Schneider and John Schulman and Jie Tang and Wojciech Zaremba},
Title = {OpenAI Gym},
Year = {2016},
Eprint = {arXiv:1606.01540},
}
項目狀態總結
OpenAI Gym 作為強化學習領域的開創性工具,建立了行業標準並培育了龐大的生態系統。雖然原項目不再積極維護,但其繼任者 Gymnasium 繼承了所有核心功能,確保了社區的持續發展。對於新項目,強烈建議直接使用 Gymnasium 以獲得最新的功能和持續的支持。