Home
Login

Gym 是一個用於開發和比較強化學習演算法的工具包。它支持教學智能體(agents)如何在各種模擬環境中做出決策。

NOASSERTIONPython 36.1kopenai Last Updated: 2024-10-11

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()

相關生態系統

推薦的學習庫

  1. CleanRL - 基於 Gym API 的學習庫

    • 面向強化學習新手
    • 提供優秀的參考實現
  2. Tianshou - 面向經驗豐富用戶的學習庫

    • 支持複雜算法修改
    • 設計靈活
  3. RLlib - 支持分佈式訓練的學習庫

    • 支持分佈式訓練和推理
    • 功能極其豐富
  4. PettingZoo - 多智能體環境庫

    • 類似 Gym 但支持多智能體環境

版本管理

Gym 採用嚴格的版本控制以確保可重現性:

  • 所有環境都以版本後綴結尾(如 "_v0")
  • 當環境變更可能影響學習結果時,版本號遞增
  • 確保實驗的可重現性和一致性

MuJoCo 環境更新

  • 最新的 "_v4" 及未來版本不再依賴 mujoco-py
  • 改為使用 mujoco 作為必需依賴
  • 舊版本環境仍保留但不再維護

文檔和資源

學術引用

項目白皮書可在 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 以獲得最新的功能和持續的支持。