MCTSアルゴリズムがどのように機能し、AIエンジンを改善するためにカードゲームにどのように実装するかを理解しようとしています。
私はmcts.ai/のウェブサイトとそれに関する多くの論文を読みました。その中には、マジックカードゲームのAIでUCBを使用したモンテカルロ探索の成功に関するいくつかの結果を示すものも含まれています。しかし、いくつかのポイントとその適用方法を理解しようとして問題が発生しているので、必要なものを解決してください。また、私は数学の経験があまりないので、論文が複雑な数式でそれらすべてを説明していると迷子になります。
これは私がこれまでに思いついたものです:
ゲームの状態(ゲーム内のユーザーの手)を前提として、実行可能なすべての合法的なプレイを決定し、MCTSTreeのルートノードのプロパティとしてノードのリスト(すべてのプレイを表すもの)を作成し、それぞれの結果を示します(スコア値?)
ランダムなプレーヤーを使用して、これらの合法的なプレイのそれぞれについて完全な(最後まで)ゲームプレイをシミュレートし、プレーヤーが勝ったか負けたかにかかわらず、すべてのノードで結果を記録して全体像を把握します。
ここで、「私が思う」モンテカルロ+UCBを適用する必要があります。
UCBを再帰的に使用して、より有望なプレイ(ノード)を選択し、そのリーフの場合は、gameStateからのすべての可能なプレイでそのノードを展開します。
特定の時間に達するまで、選択したノードからのn回のプレイアウトをシミュレートします。
- この段階で、いくつか疑問があります...可能なプレイアウトのリストを指定してランダムなプレイアウトを試してみます...シミュレーションを続行するには、最初の結果と何をする必要がありますか?その時、私は木を成長させるべきですか?
結果を逆伝播するにはどうすればよいですか?
それで、
これは複雑なカードゲームであり、可能な動きが非常に多いことを念頭に置いて...どのノードにも非常に多くの子供がいるのに十分なパフォーマンスがありますか?
すべてのシミュレーションがゲームの状態に基づいており、プレーヤーが動きを適用するたびにゲームの状態が変化する場合、ツリーが本当に役立つかどうかをどのように知ることができますか?
これについての助けを本当にいただければ幸いです。
どうもありがとうございます!