web-dev-qa-db-ja.com

TicTacToeのモンテカルロ木探索を実装する場合、勝った状態をシミュレートしますか?

TicTacToeのMCTS実装をデバッグしようとしています(対戦相手の明らかな勝利をブロックしません)。ゲームオーバー状態のノードに拡張した場合、アルゴリズムはどうすればよいのか疑問に思いました。そのノードを「シミュレート」し続け、結果をツリーに逆伝播するか、ノードが選択されている場合は無視する必要があります。

1
Amja

MCTSの基本的なバリアントは、端末状態の特別な管理を必要としません。

結果(勝ち/負け)に応じてスコア/訪問数を更新し、バックプロパゲーションを続行します。

これは一種の即時のプレイアウト/シミュレーションであり、スキップすることはできません(MCTSをゲーム理論値に収束させることができます)。

アルゴリズムは、大きなスコア(たとえば+∞/-∞)とアドホックバックプロパゲーション/選択スキームを使用して改善できます(例:モンテカルロ木探索ソルバー):

MCTS Solver

次に、そのような証明された値をツリーにバックアップするときに、特別な準備が行われます。図に示すように、考慮すべき3つのケースがあります(ネガマックス定式化を使用し、レベル間で符号を交互に使用します)。

まず、シミュレーションが子cから親pへの証明された損失(-∞)をバックアップすると、親ノードpは次のようになり、ラベルが付けられます。証明された勝利(∞)、つまり、プレーされた動きが勝利につながるため、pでプレーヤーのポジションが獲得されます(図の左側のバックアップ図)。

証明された勝利(∞)をcからpにバックアップする場合、ただし、pの他の子も調べてpを決定する必要があります。値。 2番目のケースでは、pのすべての子ノードも証明された勝利(∞)である場合、すべての移動が証明された損失(-∞)になるため、pの値は証明された損失(-∞)になります。 pの位置が失われました(図の中央のバックアップ図)。

ただし、3番目のケースは、証明された勝利とは異なる値を持つ子が少なくとも1人存在する場合に発生します。その場合、pを証明された損失としてラベル付けすることはできません。代わりに、pは、(証明された勝利ではなく)シミュレーションの勝利がノードcからバックアップされているかのように更新を取得します(図の右側のバックアップ図; vおよびuは証明されていない値を示します)。証明されていない値は、通常のMCTSと同様にバックアップされます。


1)詳細については 行動ラインでのモンテカルロ木探索 マークH.M. Winands、Yngvi Bjornsson、Jahn-斎藤毅。

1
manlio