チェッカーのようなボードゲームに最適なアルゴリズムを選択するにはどうすればよいですか?


15

チェッカーのようなボードゲームに最適なアルゴリズムを選択するにはどうすればよいですか?

これまでのところ、ミニマックス、アルファ-ベータプルーニング、およびモンテカルロツリー検索(MCTS)の3つのアルゴリズムのみを検討してきました。どうやら、アルファベータプルーニングとMCTSの両方は、基本的なミニマックスアルゴリズムの拡張機能です。

回答:


17

tl; dr:

  • これらのアルゴリズムはいずれも現代の作業には実用的ではありませんが、教育的に開始するのに適した場所です。

  • ベアミニマックス検索よりも常にアルファベータ枝刈りを使用することをお勧めします。

  • 有用なヒューリスティックを思い付くことができる場合は、何らかの形のヒューリスティックガイド検索を使用することをお勧めします。有用なヒューリスティックを思い付くには、通常、多くのドメイン知識が必要です。

  • 優れたヒューリスティックが不足している場合、計算リソースが限られている場合、およびミスが実世界の結果を上回ることがない場合は、モンテカルロツリー検索を使用することをお勧めします。

詳細:

ミニマックス検索では、あまり賢くしようとはしません。標準の動的プログラミングアプローチを使用するだけです。ゲームの終わりに近づいた場合、差の動きの値を把握するのは簡単です(ゲームは次の動きで終わるので、あまり先を見る必要はありません)。同様に、対戦相手がゲームの最後の動きで何をするかを知っていれば、最後の2番目の動きで何をすべきかを簡単に把握できます。事実上、2番目の最後の動きをより短いゲームの最後の動きとして扱うことができます。その後、このプロセスを繰り返すことができます。このアプローチを使用すると、標準の大規模なフォームゲームで最高の戦略が明らかになりますが、すべての可能な動きを考慮する必要があります。これは、最も単純なゲーム以外では実行不可能です。

アルファベータ枝刈りは、Minimax検索の厳密な改善です。いくつかの動きが他の動きより明らかに悪いという事実を利用しています。例えば、チェスでは、たとえあなたがそのポジションから他のことをすることができたとしても、私をチェックメイトにする機会を与えるような動きを考慮する必要はありません。動きが負けにつながる可能性があることがわかったら、その時点から他に何が起こるかを気にするつもりはありません。他のものを見に行きます。このアルゴリズムは正しい結果をもたらすことも確実であり、高速ですが、実際にはほとんどの動きを考慮する必要があります。

これらの種類のゲームを正確に解決するための極端な計算コストを回避するには、2つの一般的な方法があります。

  1. ヒューリスティックを使用します(A *検索は教育学的な目的のための通常のアルゴリズムですが、静止検索は2プレイヤーゲームでも同様のアイデアです)。これは、ゲームの状態の値の推定値を提供する単なる関数です。ゲーム内のすべての動きを考慮する代わりに、前方の有限距離への動きを考慮し、ヒューリスティックの値を使用して、到達した状態の値を判断できます。ヒューリスティックが一貫している場合(本質的に:常に状態の品質を過大評価している場合)、これにより正しい答えが得られますが、実際には非常に高速化されます。

  2. ロールアウトを使用します(モンテカルロツリー検索など)。基本的に、すべての動きを考慮するのではなく、ランダムに行動するプレイヤー間で数千のシミュレートされたゲームを実行します(可能なすべての動きを考慮するよりも高速です)。それから始まるゲームの平均勝率に等しい状態に値を割り当てます。これは正しい答えをもたらさないかもしれませんが、ある種のゲームでは、確実に動作します。多くの場合、単独で使用されるのではなく、より正確な技術の拡張として使用されます。


A *は、他のアルゴリズムのように2プレイヤーゲームのコンテキストに実際には収まらないようです。MCTSに関する注意:典型的な実装では、「すべての動きを一定の深さまで下ろす」ことを考慮せず、ロールアウトを開始しません。代わりに、典型的な実装では、ツリー検索ツリーが動的に徐々に成長し、より有望な部分(選択戦略によって多くのロールアウトが行われる部分)でより多く成長し、あまり有望でない部分でより少なく成長します。
デニススーマーズ

1
@JohnDoucetteは、「これらのアルゴリズムはどれも現代の作業には実用的ではありませんが、教育的に始めるのに適した場所です」と言うのはなぜですか。MCTSの場合、状態とアクションが指定されている次の状態への遷移が明確に定義されている場合、シングルプレイヤー検索であっても現代の仕事に非常に適しているようです。同意しますか?
ミゲルサライバ

1
@MiguelSaraiva単独では、MCTSは通常のアプリケーションに通常使用するものではありません。ただし、学習したヒューリスティックを提供するDNNのようなものと組み合わせると、かなり良いでしょう。
ジョンDoucette

1
@JohnDoucette「MCTSは、現代のアプリケーションに通常使用するものではありません」。まず第一に、あなたが言う「近代性」は2016年に大きなブレークスルーをもたらしました(MCTS + DNN)。それまでのすべてが時代遅れになっていることを暗示しているようです(明らかに偽)。実際、MCTSは通常、反対の理由で使用されていないと言う方が妥当かもしれません。それは非常に高度です。業界では、本当に時代遅れでMCTSにアップグレードできるアプリケーションが山ほどあります。これらのMCTS + DNNの多くにとって、事前トレーニングはほとんど考えられないため、単なる夢です。
ヨハン

1
@Johanそれは産業用途にとって私に正しいように聞こえますが、質問は「チェッカーのようなボードゲーム」について尋ねています。これらの種類のおもちゃの問題については、MCTSは正しい現代的なアプローチではないと思います。ただし、既存の展開されたシステムの大幅な改善となる現実の問題は間違いなくたくさんあります。
ジョンドゥセッテ

6

NBこれら3つのアルゴリズムのみを選択した理由は、それらを理解するのに時間を費やしたためです。ちょっとした調査から、これらのアルゴリズムは基本的にミニマックスアルゴリズムに織り込まれていることがわかりました。したがって、1つを理解できれば、他の2つは適切な位置に収まります。

このコンテキストを考えると、Minimaxから始めることをお勧めします。3つのアルゴリズムのうち、Minimaxが最も理解しやすいです。

他の回答で他の人が言及したように、アルファベータはミニマックスに加えて厳密な改善です。Minimaxは基本的にAlpha-Beta実装の一部であり、Alpha-Betaを十分に理解するには、とにかくMinimaxを十分に理解することから始める必要があります。Minimaxを理解して実装した後に時間が残っている場合は、後でAlpha-Betaに進み、Minimaxの上に構築することをお勧めします。まだMinimaxを理解していない場合は、アルファベータから始めても意味がありません。

モンテカルロツリー検索は、実際には、深く理解するために、おそらくもう少し高度で複雑です。過去10年ほどで、MCTSは他の2つよりもはるかに人気が高まっているため、その観点からMCTSを理解することは「有用」である可能性があります。

MinimaxとMCTSの間の接続は、MinimaxとAlpha-Betaの間の接続より直接的/明白ではありませんが、少なくとも概念レベルでは接続が残っています。MCTSに飛び込む前に、まずMinimaxを十分に理解しておくことは有益だと思います。特に、Minimaxとその欠陥/弱点を理解することは、有用なコンテキストを提供し、MCTSが「必要」/人気となった理由を理解するのに役立ちます。


結論として、私の意見では:

  • アルファベータはミニマックスよりも厳密に優れていますが、ミニマックスの上に強く関連/構築されています。だから、ミニマックスから始めて、時間が許せばアルファベータに行く
  • MCTSにはさまざまな長所/弱点があり、「最新」の問題ではアルファベータよりも優れている場合があります(常にではありません)。

私が使用できる他のアルゴリズムはありますか?そのアルファ・ベータ法レベルのようでの
ジョーイ

@Joeyうーん、そうでもない。ミニマックスは非常に自然な出発点です。始めたばかりの場合は非常に強くお勧めします。これは基本的に、チェス/チェッカー/チックタックトーなどのゲーム用に開発された最初のアルゴリズムでした。その後、その上に数千ではないにしても数百の改善が開発されました。その多くはおそらくchessprogramming.wikispaces.com/Searchで見つけることができます。アルファベータは、ミニマックスに加えて最も自然な機能強化です。
デニススーマーズ

@Joey Monte-Carlo Tree Searchは少し異なり(必ずしもMinimaxを基礎とする必要はありません)、面白く、楽しく、人気があり、「現代の」AIに非常に関連性があります。それでも、基礎は重要です。技術的には可能かもしれませんが、Minimax + Alpha-Betaをまだ理解していない場合、すぐにMCTSから始めることはお勧めしません。
デニススーマーズ

そのサイトをありがとう。これは私が今読むことができる豊富な知識です。新しいことを学ぶのが一番難しいのは、あなたが理解するのに役立つ正しい教材を見つけることです。サイトのためもう一度感謝ので
ジョーイ

@Joeyチェスプログラミングが最も学習しやすいサイトであるかどうか、100%確信はありません(そして、7月末にサイトが消えてしまうかもしれないという恐ろしい通知があるようです)。私の記憶が正しければ、多くの説明はかなり短く、おそらくあなたがこの分野の初心者なら簡単に理解できないでしょう。ただし、少なくともすべての種類のアルゴリズム/拡張機能の名前の包括的な包括的なコレクションになります。元のソースを検索するか、すべての名前をグーグルで検索して、詳細な情報を他の場所で確認できます。
デニススーマーズ

1

ミニマックスとアルファベータのプルーニングを選択する必要があります。アルファベータを選択する必要があります。探索ツリーの大部分を切り取ることができるため、より効率的で高速です。ただし、最大または最小の観点に応じて、アクションを最高から最低の順に並べる必要があるため、アルゴリズムは探索が必要かどうかをすぐに認識できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.