導語
我最初開始研究強化學習(Reinforcement learning,簡稱RL),只是想做一個可以幫助自己在遊戲中刷幣的外掛。後來我選擇了超級瑪利歐兄弟作為實驗平台,因為我以為 AI 可以訓練到類似 Speedrun 的速度通關。
在研究過程中,我沒有找到任何 8-4 關卡的 AI 通關紀錄,所以我決定把這個項目當作第一階段目標:訓練 32 個模型分別通過瑪利歐的 32 個關卡,最終目標是用單一模型通關全部關卡。
影片展示
影片中有幾個精彩亮點:
第一次下水管:AI 成功通過起始下水管
空中水管特殊解:AI 利用烏龜彈跳,直接跳上空中水管,省去踩隱藏磚的步驟
水底障礙穿越:AI 不等待怪物散開,直接從狹窄空間穿越
踩死鐵鎚龜:AI 從幾乎自殺角度精準踩死怪物,順利通關
訓練過程概述
模型架構:使用 PPO(Proximal Policy Optimization)進行訓練。訓練過程中持續調整 reward 設計與網路參數,幫助收斂。
Reward 設計:
獲得分數 × 0.01 - 花費時間 + 往右移動距離 + 通關獎勵 - 死亡懲罰
通關獎勵和死亡懲罰 = 剩餘時間 × 0.5 (赴死會比等死的懲罰還低,避免AI恐懼死亡而空轉)
多執行序加速:使用 8 個執行序同時蒐集數據,一組可蒐集 8*1024=8192 筆數據,每組數據訓練 10 輪 × 32 批次。後期其中一個執行序專門使用最佳紀錄來蒐集後段資料。
數據量:大約蒐集 80,000,000 筆資料後(100組),模型才能穩定通關8-4。
技術亮點
研究動機與後續計畫
我最初研究 RL 只是想做遊戲外掛,但在超級瑪利歐中訓練出穩定通關 AI 後,我發現這個遊戲有一個 benchmark 可以做為比較標準。(ECS7002P-MarioAI)
結尾
如果你對 AI 訓練遊戲模型有興趣,或想分享你的訓練經驗,歡迎留言或訂閱我的博客。我也會陸續分享更多關卡的通關紀錄與分析。
留言
張貼留言