リバーシAIはミニマックスアルゴリズムを使って将来の手の手順を探索し、アルファベータ枝刈りで負け筋を枝刈りし、角、機動性、安定石、フロンティア石を重み付けする評価関数で局面をスコアリングすることで機能します。終盤(最後の20〜25手)では、強いAIは完全なソルバーに切り替え、すべての可能な手の流れで最終的な石数の結果を計算します。 ゲームを解くこととの関連についてはリバーシは解決されているか?を参照してください。
コアアルゴリズム:ミニマックス
ミニマックスの機能
リバーシのすべての局面には合法手のセットがあります。それぞれの手は新しい局面につながり、その局面にはまた独自の手のセットがあります。これがゲームツリー——すべての可能な将来の分岐構造——を作ります。
ミニマックスはこのツリーを1つの前提で進みます:両プレイヤーが最善を尽くすという仮定。どの局面からも:
- 現在のプレイヤー(最大化者)は自分にとって最善の結果につながる手を選ぶ
- 相手(最小化者)は現在のプレイヤーにとって最悪の結果につながる手を選ぶ
評価されたリーフノード(探索の底の局面)から後ろ向きに計算することで、ミニマックスはツリー内のすべてのノードに値を割り当てます。ルートノード(現在の局面)は値を得て——AIはその値につながる手を選びます。
簡単な例
黒が2つの合法手AとBを持っているとします:
- 手Aは黒が達成できる最良スコアが+6(60%の石)の局面につながる
- 手Bは黒が達成できる最良スコアが+4(55%の石)の局面につながる
ミニマックスは手Aを選択します。ただし両方の値は白の最善の応手もシミュレートして計算されているので、希望的観測ではなく保証された結果を表しています。
探索の深さ
AIはゲームツリー全体を探索しません——それでは時間がかかりすぎます。代わりに固定された深さ(何手先まで)まで探索し、探索の底の局面を評価関数で評価します。
- 易しいAI: 2〜3手先を探索
- 普通のAI: 4〜6手先を探索
- 難しいAI: 8〜12手以上を探索(加えて完全な終盤解読)
探索が深いほど、AIは手の結果をより正確に予測できます——そしてより強くプレイします。
アルファベータ枝刈り:より賢い探索
単純なミニマックスの実装はゲームツリーのすべての可能な枝を探索します。アルファベータ枝刈りは、結果を変えられない枝をスキップすることで同じアルゴリズムをはるかに効率化します。
仕組み
アルゴリズムは2つの値を維持します:
- アルファ: 最大化者(現在のAI)がこれまでに見つけた最良スコア
- ベータ: 最小化者(相手)がこれまでに見つけた最良スコア
アルゴリズムが、すでに他で発見したものより悪いスコアになる枝を見つけた場合——その枝の探索を停止します。枝が「刈られます」。
結果: アルファベータ枝刈りは評価するノード数をほぼ平方根で削減します。実用的には、単純なミニマックスと比較して同じ時間でほぼ2倍の深さまで探索できることを意味します。
手の並べ替え
アルファベータ枝刈りは最善手を最初に探索するときに最も効果的です。AIが早期に有望な手を検討すれば、アルファとベータの境界を素早く確立でき、後の枝刈りが増えます。
強いリバーシAIは手の並べ替えヒューリスティックを使います——どの手が最善である可能性が高いかを推定して先に探索するルールです。一般的なヒューリスティック:
- 角の確保を先に探索する
- X打ちを避ける手を次に探索する
- 残りの手を推定局面価値でソートする
良い手の並べ替えにより、アルファベータ枝刈りは探索ツリーの80〜90%を刈ることができ、はるかに深い探索が可能になります。
評価関数
AIが探索ツリーの底(深さの上限)に到達すると、それ以上探索せずに局面のスコアを計算しなければなりません。これが評価関数——AIの局面価値のモデルです。
主要コンポーネント
1. 角の支配(最高の重み) 角は取ったときに極めて高い正の重みを受け、相手に与えたときに極めて低い負の重みを受けます。一つの角はほぼ他のどの陣形的要素も上回ります。人間のプレイヤーが同じマス重み付けロジックをどう使うかについては盤面の価値ガイドを参照してください。
2. 機動性スコア 各プレイヤーが利用可能な手数の差。高い相対的機動性は強く正——相手の選択肢が少ないことを意味します。
3. 安定石数 決してひっくり返せない石(角、完全に埋まったエッジ行など)は強い正の重みを受けます。安定石はその石の最終カウントを保証します。
4. フロンティア石数 空きマスに隣接する石は脆弱なターゲットです。フロンティア石が少ない方が良く——評価関数は高いフロンティア石数にペナルティを与えます。
5. マス位置の重み 各マスは静的な重みを持ちます(角 〜+20、X打ち 〜−6、辺 〜+2、内部 〜0)。これらの重みはどのプレイヤーがどのマスを占有するかに基づいて加算されます。
6. 石数のパリティ(終盤のみ) 石数の重みは序盤ではほぼゼロで、終盤では主要要因になります。
重みの調整
異なるリバーシAIプログラムは異なる評価関数の重みを使います。重みは以下の方法で決められます:
- 手動調整: 人間の専門家がどの特徴が最も重要かを推定
- 自己対局学習: AIが自分自身と何百万もの対局をして結果に基づいて重みを調整
- データベースからの学習: 何千もの高レベル対局の分析から得た重み
有名なLogistelloプログラム(1990年代)は、局面で学習した大規模な特徴データベースの使用を導入しました——手動調整関数を大きく上回る進歩でした。
終盤の完全解読
強いリバーシAIと弱いAIの最も重要な区別は終盤解読です:すべての可能な手順で最終的な石数を正確に計算する能力です。
終盤解読が起動するとき
一定数の空きマスが残ると(プログラムの速度によって通常20〜25)、AIはヒューリスティック評価から正確な計算に切り替えます。残りのすべての可能な手の手順を探索し、最終的な石数を最大化するものを見つけます。
これが可能な理由:
- 空きマスが20で、その状態から考慮すべき局面は最大で約10の20乗——効率的なアルゴリズムで管理可能
- 評価が近似ではなく正確(石を数える)
- 強い手がより予測可能な終盤では手の並べ替えと枝刈りが特に効果的
結果:強いリバーシAIは終盤を完璧にプレイします。 最後の20手で難しいAIに負けているなら、それはミスをしていないからです——すべての応手が最善です。
終盤解読テクニック
- ネガマックス: 終盤計算に使われるミニマックスの簡略化された定式化
- 最速優先ヒューリスティック: 相手の応手が最も少なくなる手を先に打つ——分岐係数を劇的に削減
- NWS(ヌルウィンドウサーチ): 狭いウィンドウ(アルファ=X、ベータ=X+1)で探索して、手が閾値より良いか悪いかを素早く判定
- 置換表: 以前に計算した局面をキャッシュして重複計算を避ける
現代のアプローチ:ニューラルネットワーク
より最近のリバーシAI実装は、DeepMindのAlphaZero(元々はチェスと囲碁用)の成功から借用してニューラルネットワークベースの評価を適用しています。
仕組み:
- ニューラルネットワークを自己対局で訓練——AIが自分自身と何百万もの対局をプレイ
- ネットワークは手動でクラフトされた特徴なしに局面を評価することを学習
- 純粋なミニマックスではなくモンテカルロ木探索(MCTS)と組み合わせて手を選択
従来のAIに対する優位性:
- 手動調整の評価関数が見逃す複雑な陣形パターンを捉えられる
- 継続的な自己対局で自動的に改善
- 特徴を設計するために人間の専門知識が不要
現在の状況: ニューラルネットワークのリバーシAIは活発な研究分野です。強い評価関数を持つ従来のアルファベータプログラムは依然として非常に競争力があり、特にリバーシの完全な終盤解読が非常に効果的なためです。
人間のプレイヤーへの意味
リバーシAIの仕組みを理解することは実用的な意味を持ちます:
AIは「ズル」をしていない——同じゲームを同じルールでプレイしています。ただより深く探索してより正確に評価しているだけです。
強いAIに対して終盤の計算では勝てない——終盤ソルバーが起動したら、AIを計算で上回ることはできません。有利な陣形で終盤に入ることに集中しましょう。
AIの弱点は計算ではなく評価にある——難しいAIは戦術的なミスをしません。ただし陣形評価は複雑な中盤局面でときどき直感に反する手を生み出すことがあります。これが人間の創造性がAIの過小評価を見つける場面です。
AI対局を研究することでAIが使う原則と同じものを学べる——角の支配、機動性、安定石、フロンティアの最小化。AIの評価関数は本質的に、すべてのリバーシ専門家がすでに知っていることの形式化です。