Gym

OpenAI 開發的強化學習環境工具包,提供標準化 RL 演算法開發介面

概述

Gym 是 OpenAI 開發的強化學習環境工具包,提供標準化的介面用於開發和比較 RL 演算法。每個環境遵循相同的 API:reset() 初始化環境並返回觀察、step(action) 執行一步動作並返回 (observation, reward, terminated, truncated, info)、render() 渲染環境視覺化。Gym 已於 2023 年更名為 Gymnasium,但 API 保持相容。

核心 API 與空間類型

環境互動流程:建立環境 (gym.make) → 重置 (env.reset) → 迴圈執行動作 (env.step)。離散空間 (Discrete):動作從有限集合中選擇,如 CartPole 的左/右。 盒子空間 (Box):連續動作或觀察,用低維和高維邊界定義。 多離散/多二元/字典空間:用於複合動作和觀察空間。包裝器 (Wrapper) 如 TimeLimit、NormalizeObservation、FrameStack、RecordVideo 可擴展環境功能。

import gym env = gym.make('CartPole-v1') observation, info = env.reset() for _ in range(1000): action = env.action_space.sample() observation, reward, terminated, truncated, info = env.step(action) if terminated or truncated: break env.close()

經典控制環境

CartPole-v1:平衡桿子,觀察為 (位置, 速度, 角度, 角速度),動作離散 2。 MountainCar-v0:爬上山頂,觀察為 2D (位置, 速度),動作離散 3。 Pendulum-v1:鐘擺直立控制,觀察為 (cos θ, sin θ, ω),動作連續扭矩。 LunarLander-v2:月球登陸,動作離散 4。 BipedalWalker-v3:雙足行走,動作連續 4。

RL 演算法範例

Gym 環境可與 Stable-Baselines3 整合使用 DQN、PPO 等演算法。DQN 使用經驗回放和目標網路穩定訓練,適合離散動作空間。PPO 通過裁剪的代理目標函數實現穩定更新,是目前最流行的策略梯度方法。自定義環境可通過 gym.envs.registration.register 註冊,需實現 step、reset 和空間定義。

from stable_baselines3 import DQN model = DQN("MlpPolicy", "CartPole-v1", verbose=1) model.learn(total_timesteps=10000)

相關連結