5

MCTSアルゴリズムがどのように機能し、AIエンジンを改善するためにカードゲームにどのように実装するかを理解しようとしています。

私はmcts.ai/のウェブサイトとそれに関する多くの論文を読みました。その中には、マジックカードゲームのAIでUCBを使用したモンテカルロ探索の成功に関するいくつかの結果を示すものも含まれています。しかし、いくつかのポイントとその適用方法を理解しようとして問題が発生しているので、必要なものを解決してください。また、私は数学の経験があまりないので、論文が複雑な数式でそれらすべてを説明していると迷子になります。

これは私がこれまでに思いついたものです:

  1. ゲームの状態(ゲーム内のユーザーの手)を前提として、実行可能なすべての合法的なプレイを決定し、MCTSTreeのルートノードのプロパティとしてノードのリスト(すべてのプレイを表すもの)を作成し、それぞれの結果を示します(スコア値?)

  2. ランダムなプレーヤーを使用して、これらの合法的なプレイのそれぞれについて完全な(最後まで)ゲームプレイをシミュレートし、プレーヤーが勝ったか負けたかにかかわらず、すべてのノードで結果を記録して全体像を把握します。

ここで、「私が思う」モンテカルロ+UCBを適用する必要があります。

  1. UCBを再帰的に使用して、より有望なプレイ(ノード)を選択し、そのリーフの場合は、gameStateからのすべての可能なプレイでそのノードを展開します。

  2. 特定の時間に達するまで、選択したノードからのn回のプレイアウトをシミュレートします。

    • この段階で、いくつか疑問があります...可能なプレイアウトのリストを指定してランダムなプレイアウトを試してみます...シミュレーションを続行するには、最初の結果と何をする必要がありますか?その時、私は木を成長させるべきですか?
  3. 結果を逆伝播するにはどうすればよいですか?

それで、

  • これは複雑なカードゲームであり、可能な動きが非常に多いことを念頭に置いて...どのノードにも非常に多くの子供がいるのに十分なパフォーマンスがありますか?

  • すべてのシミュレーションがゲームの状態に基づいており、プレーヤーが動きを適用するたびにゲームの状態が変化する場合、ツリーが本当に役立つかどうかをどのように知ることができますか?

これについての助けを本当にいただければ幸いです。

どうもありがとうございます!

4

1 に答える 1

6

MCTSは次のとおりです。

ここに画像の説明を入力してください

私はそれを画像が示唆するものとは少し異なって説明します。それは実装の準備ができているかもしれません。

  1. ルートノード(ゲームの現在の状態)から降下し、インスタンス化されていないノードを決定するまで、各ステップでUCBを使用します。(選択する)l
  2. lツリーに追加します。(拡大)
  3. からl、ランダムゲームをプレイします。(シミュレート)
  4. lプレイアウトの結果を使用して、ルートノードに戻るパス上のすべてのノードを更新します。
  5. 時間がなくなるまで繰り返します。

あなたが述べたように、分岐係数が大きい場合は、RAVEのように、ツリーを下降するときに後継者を選択するための他の戦略を検討する必要があるかもしれません。

于 2012-09-21T08:36:44.530 に答える