首頁  >  文章  >  後端開發  >  用Python訓練AI玩貪吃蛇遊戲的方法

用Python訓練AI玩貪吃蛇遊戲的方法

PHPz
PHPz轉載
2024-01-23 08:39:06988瀏覽

這是關於如何使用強化學習訓練AI玩貪吃蛇遊戲的簡單指南。文章逐步展示如何設定自訂遊戲環境並使用python標準化Stable-Baselines3演算法庫訓練AI玩貪吃蛇。

在本專案中,我們使用的是Stable-Baselines3,這是一個標準化的函式庫,它提供了易於使用的基於PyTorch的強化學習(RL)演算法實現。

首先,設定環境。 Stable-Baselines庫內有許多內建的遊戲環境,這裡我們使用經典貪吃蛇的修改版本,並在中間額外設置十字交叉的牆。

用Python訓練AI玩貪吃蛇遊戲的方法

一個更好的獎勵計劃是只獎勵更接近食物的步驟。這裡必須小心,因為貪吃蛇仍然只能學會繞圈走動,在接近食物時獲得獎勵,然後轉身又回來。為了避免這種情況,我們還必須對遠離食物給予等效的懲罰,換句話說,我們需要確保閉環上的淨獎勵為零。我們還需要引入對撞牆的懲罰,因為在某些情況下,貪吃蛇會選擇撞牆來接近食物。

大多數機器學習演算法都相當複雜且難以實現。幸運的是,Stable-Baselines3已經實作了幾種我們可以使用的最先進的演算法。在範例中,我們將使用Proximal Policy Optimization(PPO)。雖然我們不需要知道演算法如何運作的細節(如果有興趣,請看這個解釋影片),但我們需要對它的超參數是什麼以及它們的作用有基本的了解。幸運的是,PPO只有其中一些,我們將使用以下內容:

learning_rate:設定策略更新的步驟有多大,與其他機器學習方案相同。將其設定得太高會阻止演算法找到正確的解決方案,甚至將演算法推向永遠無法恢復的方向。將其設定得太低會使訓練花費更長的時間。一個常見的技巧是在訓練期間使用調度器函數來調整它。

gamma:未來獎勵的折扣係數,介於0(僅即時獎勵重要)和1(未來獎勵與即時獎勵價值相同)之間。為了維持訓練效果,最好將其保持在0.9以上。

clip_range1 -clip_range:PPO的一個重要特性,它的存在是為了確保模型不會在訓練時顯著改變。減少它有助於在後期訓練階段微調模型。

ent_coef:從本質上講,它的值越高,就越鼓勵演算法探索不同的非最優動作,這可以幫助該方案擺脫局部獎勵最大值。

一般來說,從預設的超參數開始即可。

接下來的步驟是針對一些預先確定的步驟進行訓練,然後親自查看演算法的運行情況,然後使用性能最佳的可能的新參數重新開始。在這裡,我們繪製了不同訓練時間的獎勵。

用Python訓練AI玩貪吃蛇遊戲的方法

經過足夠的步驟後,訓練貪吃蛇的演算法收斂到某個獎勵值,就可以完成訓練或嘗試微調參數並繼續訓練。

達到最大可能獎勵所需的訓練步驟很大程度上取決於問題、獎勵方案和超參數,因此建議在訓練演算法前先優化一下。在訓練AI玩貪吃蛇遊戲範例的最後,我們發現AI已經能做到在迷宮中找到食物並避免與尾巴相撞了。

以上是用Python訓練AI玩貪吃蛇遊戲的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:163.com。如有侵權,請聯絡admin@php.cn刪除