強化學習實驗環境庫 gym/Gymnasium
Gym庫(https://gym.openai.com) 是OpenAI推出的強化學習實驗環境庫。它用Python語言實現了離散之間智能體-環境接口中的環境部分。每個環境就代表著一類強化學習問題,用戶通過設計和訓練自己的智能體來解決這些強化學習問題。
OpenAI 已經將 Gym 的維護權移交給了 FARAMA 基金會。Gym 的官方繼任者是 Gymnasium。
Gym/Gymnasium 中的主要環境類別
可以通過 gym.make('環境ID') 來創建這些環境。
1. 經典控制問題
低維、連續或離散狀態/動作空間的經典問題,非常適合算法驗證和教學。
-
CartPole-v1-
描述:控制一個小車,使其上的桿子保持直立不倒。
-
目標:保持桿子直立的時間盡可能長。
-
動作空間:離散(左推,右推)。
-
狀態空間:連續(小車位置、速度、桿子角度、角速度)。
獎勵機制:每一步桿子沒有倒下,就給予 +1 的獎勵。
終止條件:
桿子與垂直線的夾角超過 ±12°。
小車移動超出軌道邊界(x坐標超過 ±2.4)。
步數達到 500(對于v1版本,這意味著最高獎勵是500)
MountainCar-v0-
描述:一輛動力不足的小車位于山谷中,需要通過來回擺動才能爬上右邊的山頂。
-
目標:以最少的步驟到達右側標志旗處。
-
動作空間:離散(左加速,不加速,右加速)。
-
狀態空間:連續(小車位置,速度)。
-
獎勵機制:在每一步,只要沒有到達目標,就給予 -1 的獎勵。
終止條件:小車到達目標位置(x >= 0.5)。
特點:這是一個典型的負獎勵設計。智能體必須盡快到達目標,因為每一步都在“扣分”。它被迫學會“來回擺動”以積累動量,這是一種延遲滿足的經典例子。
Pendulum-v1-
描述:一個無摩擦的鐘擺,初始位置隨機。
-
目標:施加扭矩,使鐘擺保持直立,并且消耗的能量最少。
-
動作空間:連續(扭矩大小)。
-
狀態空間:連續(角度,角速度)。
-
-
獎勵機制:獎勵計算是一個聯合公式,旨在平衡角度和扭矩(能量消耗):
獎勵 = -(θ2 + 0.1 * θ?2 + 0.001 * τ2)-
θ:角度(0度是頂端,弧度表示)。越偏離頂端,懲罰越大。 -
θ?:角速度。速度越快,懲罰越大,鼓勵穩定。 -
τ:施加的扭矩。扭矩越大,懲罰越大,鼓勵節能。
-
-
特點:這是一個連續負獎勵。獎勵始終為負,智能體的目標是最大化這個負值(即讓它盡可能接近0)。這是一個多目標優化的典型設計。
Acrobot-v1-
描述:一個由兩個連桿組成的系統,像一個倒立的雙擺。
-
目標:通過擺動下方的連桿,使系統末端的點達到指定高度。
-
動作空間:離散(對下方連桿施加正向、負向扭矩或不施加)。
-
狀態空間:連續(兩個連桿的角度和角速度)。
-
獎勵機制:每一步沒有達到目標,就給予 -1 的獎勵。
終止條件:末端點的y坐標超過指定高度。
特點:與MountainCar類似,是稀疏的負獎勵。智能體需要找到一種高效的擺動策略,以最少的步驟完成任務。
2. Box2D 物理引擎環境
這些是使用 Box2D 物理引擎構建的連續控制任務,比經典控制問題更復雜。
-
LunarLander-v2-
描述:控制一個登月艙在月球表面平穩著陸。
-
目標:在著陸點平穩著陸,速度不能太快。
-
動作空間:離散(不點火,主引擎點火,左/右側引擎點火)。
-
狀態空間:連續(位置、速度、角度、角速度、腿部是否觸地等)。
-
獎勵機制:這是一個非常精細的稠密塑形獎勵,包含多個部分:
-
-
成功著陸:在著陸坪中心平穩著陸(速度慢、角度正),獎勵約 +100 到 +140。
-
墜毀:如果以過快速度撞擊地面,獎勵 -100。
-
著陸位置:離著陸坪中心越近,獎勵越高。
-
燃料消耗:使用主引擎會有一個小的負獎勵(約-0.3/幀),鼓勵節省燃料。
-
存活獎勵:每一幀智能體還“活著”(未墜毀或成功),就有一個小的正獎勵。
-
腿接觸地面:每條腿接觸到著陸坪時有一個正獎勵(約+10)。
-
特點:這是一個獎勵塑形的典范,它清晰地分解了任務目標(平穩、居中、省燃料),引導智能體學習復雜的控制策略。
-
BipedalWalker-v3和BipedalWalkerHardcore-v3-
描述:控制一個雙足機器人向前行走。
-
目標:走得越遠越好,同時消耗的能量越少越好。
-
動作空間:連續(對四個關節施加的扭矩)。
-
狀態空間:連續(身體速度,關節角度,激光雷達測距數據等)。
-
Hardcore 版本:增加了障礙物、陷阱等,難度極大。
-
獎勵機制:
-
前進獎勵:每向前移動一步,獎勵等于向前移動的距離。
-
能量懲罰:對每個關節施加的扭矩進行懲罰(
-0.001 * Σ(torque2)),鼓勵高效行走。 -
關節穩定性懲罰:對關節的角速度進行小懲罰,鼓勵平滑運動。
-
終止懲罰:如果機器人摔倒(軀干碰到地面),獎勵 -100,并且episode結束。
-
特點:這是一個典型的權衡型獎勵。智能體需要在“走得更快”和“消耗更少能量/更穩定”之間做出權衡。
-
CarRacing-v2-
描述:一個頂視角的賽車游戲,需要控制一輛車在賽道上行駛。
-
觀察空間:RGB 圖像(96x96像素)。
-
動作空間:連續(轉向,油門,剎車)。
-
3. Atari 游戲環境
這些是基于 Arcade Learning Environment (ALE) 的經典雅達利2600游戲,是測試智能體從像素中學習能力的基準。
-
特點:
-
觀察空間:通常是原始的 RGB 圖像(210x160像素),但常被預處理為灰度并下采樣(如84x84)。
-
動作空間:離散(游戲手柄的操作,如上下左右、開火等)。
-
-
常見示例:
-
Breakout-v4(打磚塊) -
Pong-v4(乒乓球) -
SpaceInvaders-v4(太空侵略者) -
MsPacman-v4(吃豆人小姐) -
Seaquest-v4(海底大戰)
-
-
獎勵機制:獎勵直接來自于游戲的原始分數變化。
-
例如,在
Pong中,贏一個球得 +1 分,輸一個球得 -1 分。 -
在
Breakout中,每打掉一個磚塊,就獲得相應的分數(如+1到+7)。 -
在
SpaceInvaders中,擊毀一個外星人獲得相應分數。
-
4. MuJoCo 物理引擎環境
MuJoCo 是一個高性能的物理模擬器,用于復雜的連續控制機器人任務。注意:MuJoCo 自 2021 年 10 月起已開源,但安裝過程可能稍復雜。
這些環境現在通常包含在 Gymnasium Robotics 或 DeepMind Control Suite 中。
-
Ant-v4-
描述:控制一個四足“螞蟻”機器人前進。
-
目標:向前移動,同時減少能量消耗和保持穩定。
-
-
HalfCheetah-v4-
描述:控制一個雙足“獵豹”機器人快速奔跑。
-
-
Hopper-v4-
描述:控制一個單足“袋鼠”機器人向前跳躍。
-
-
Humanoid-v4-
描述:控制一個仿人機器人行走,非常復雜。
-
-
Reacher-v4-
描述:一個兩關節機械臂,需要讓末端執行器觸達目標點。
-
5. 其他環境和第三方擴展
-
Toy Text環境:非常簡單的網格世界式環境,用于演示表格型方法(如Q-Learning)。-
FrozenLake-v1:智能體需要穿越一個結冰的湖面到達目標,避免掉入冰窟。 -
Taxi-v3:智能體(出租車)需要接上乘客并將其送到目的地。 -
Blackjack-v1:二十一點撲克游戲。
-
-
第三方環境:Gym 的強大之處在于其開放的接口,社區創建了大量環境。
-
procgen: OpenAI 發布的程序化生成環境,用于測試泛化能力。 -
Minigrid: 簡單的網格世界環境,包含部分可觀察性和語言指令。 -
Safety Gym: 專注于安全強化學習的環境,包含成本約束。 -
PyBullet: 一個替代 MuJoCo 的免費開源物理引擎,也提供了許多機器人環境。
-

浙公網安備 33010602011771號