1

我有一個超級極小遊戲玩法,它將不同的啓發式數據彙總在一起,爲遊戲的每個狀態返回一個值。我想實施學習。我希望程序學習每種啓發式的權重。讓程序學習每種啓發式的權重的最有效方法是什麼?當然,它只會在嘗試之後知道某個重量是否對某個啓發式算法有效。是唯一的選擇某種試驗和錯誤系統?什麼是一些有效的學習啓發式權重的技巧?

謝謝你的幫助!

回答

1

我在實踐中並沒有多少應用極小極大 - 但總的來說,它最好有一個內在的衡量得分/善良/不好的基礎。第一步是嘗試爲遊戲定義這樣一個分數 - 並將其作爲每個支持遊戲實現的接口公開。

是某種試錯系統的唯一選擇嗎?

不!遺傳算法在這類事情中很流行(至少在愛好者中),並且可以成功應用於許多問題(給定足夠的時間)。在早期人工智能研究中可以找到很多與此有關的信息,特別是與國際象棋程序相關的信息。

你可以在超參數優化查找一些研究來尋找更多的機器學習方式來做到這一點。不幸的是,它不太適合研究一個可能的區域。

根據所實施的遊戲的具體情況/啓發式的性質,還有更多的可能性。

0

強化學習(RL),特別是時間差異(TD)方法,處理非對抗設置中的啓發式學習權重。如何在遊戲設置中學習啓發式算法的權重取決於您使用什麼算法來玩遊戲。算法的主要類別是alpha-beta minimax和UpperConfidenceTree。對於極大極小,當您增加樹的深度時,您可以查看樹節點上值的更新。我建議從學習RL-TD開始,然後閱讀Joel Veness等人的Bootstrapping from Game Tree Search 。人。