TicTacToeのMCTS実装をデバッグしようとしています(対戦相手の明らかな勝利をブロックしません)。ゲームオーバー状態のノードに拡張した場合、アルゴリズムはどうすればよいのか疑問に思いました。そのノードを「シミュレート」し続け、結果をツリーに逆伝播するか、ノードが選択されている場合は無視する必要があります。
MCTSの基本的なバリアントは、端末状態の特別な管理を必要としません。
結果(勝ち/負け)に応じてスコア/訪問数を更新し、バックプロパゲーションを続行します。
これは一種の即時のプレイアウト/シミュレーションであり、スキップすることはできません(MCTSをゲーム理論値に収束させることができます)。
アルゴリズムは、大きなスコア(たとえば+∞/-∞)とアドホックバックプロパゲーション/選択スキームを使用して改善できます(例:モンテカルロ木探索ソルバー):
次に、そのような証明された値をツリーにバックアップするときに、特別な準備が行われます。図に示すように、考慮すべき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-斎藤毅。