チェスを最初に学ぶ人を見たことがあれば、人間のチェスプレーヤーは非常に限られた能力から始めることを知っています。プレーヤーが各ピースを制御する基本的なルールを理解すると、チェスを「プレイ」できるようになります。しかし、新しいプレーヤーはあまり良くありません。初期の敗北はそれぞれ驚きのようなものです-「ああ、私はそれについて考えていませんでした!」または「私はそれが来るのを見ませんでした!」一般的な感嘆符です。
人間の精神はこれらの経験を吸収し、さまざまなボード構成を保存し、特定のトリックや策略を発見し、通常、一度に1つの動きでゲームのニュアンスを吸収します。スキルのレベルが上がるにつれて、プレーヤーはしばしば本を読んで、最高のプレーヤーが使用する遊びのパターンを発見します。戦略と戦術は、各ゲームを通じてプレーヤーをガイドするために開発されます。
したがって、人間にとって、チェスのゲームには、ボードの位置、ルールとガイドライン、意識的な思考、さらには心理学を思い出すための視覚的なパターンマッチングなど、高度な抽象的な思考が大量に含まれます。
コンピュータはこれを何もしません。
チェスは明らかに人間の活動のように見え、知性と思考を必要とします。それでは、コンピューターはどうやってそれを行うことができるのでしょうか。
この記事では、この質問を見ていきます。あなたが見つけることは、コンピュータは人々がするように実際にはチェスを「プレイ」しないということです。チェスをしているコンピューターは「考えている」わけではありません。代わりに、それはそれが良い動きをする原因となる一連の公式を通して計算しています。コンピュータがどんどん速くなっているので、これらの計算された動きの質はますます良くなっています。コンピューターチェス計算機は、完全に盲目的にそれを行っているにもかかわらず、今や地球上で最高のチェスプレーヤーです。
コンピューターとチェス

コンピュータチェスの現在の最先端技術はかなり複雑ですが、そのすべてがコアで非常に単純なブラインド計算を伴います。
ゲームの開始のために設定されたチェス盤から始めたとしましょう。各プレイヤーは16個あります。白が始まるとしましょう。白には20の可能な動きがあります:
- 白のプレイヤーは、ポーンを1つまたは2つの位置だけ前方に移動できます。
- 白のプレイヤーは、2つの異なる方法でどちらかの騎士を動かすことができます。
白のプレーヤーはそれらの20の動きの1つを選んでそれを作ります。
黒人プレイヤーの場合、オプションは同じです:20の可能な動き。したがって、黒は動きを選択します。
これで、白が再び移動できるようになりました。この次の動きは、白が最初に行うことを選択した動きによって異なりますが、現在のボードの位置を考えると、白が行うことができる動きは約20程度あり、黒はそれが行うことができる動きが20程度あります。
これは、コンピューターがチェスを見る方法です。それは「すべての可能な動き」の世界でそれについて考え、次のようにそれらすべての動きのために大きな木を作ります:
このツリーでは、白に対して20の可能な動きがあります。白が何をするかに応じて、黒には20 * 20 = 400の可能な動きがあります。次に、白の場合は400 * 20 = 8,000になります。次に、黒の場合は8,000 * 20 = 160,000というようになります。考えられるすべてのチェスの動きに対してツリー全体を完全に開発する場合、ボードの位置の総数は約1,000,000,000,000,000,000,000,000になります。
000,000,000,000,000,000,000,000,000,000,000,000,000,000、
000,000,000,000,000,000,000,000,000,000,000,000,000,000、
000,000,000,000、または10 120、いくつかを与えるか、または取ります。それは非常に大きな数字です。たとえば、唯一の10があった26以降のナノ秒ビッグバン。宇宙全体でたった1075個の原子があると考えられています。天の川銀河には何十億もの太陽が含まれていて、何十億もの銀河があることを考えると、それは非常に多くの原子であることがわかります。その数は、可能なチェスの動きの数によって小さくなります。チェスはかなり複雑なゲームです!
ツリー全体を計算するコンピューターはありません。チェスコンピュータがやろうとしていることは、5、10、または20の動きでボードポジションツリーを生成することです。どのボード位置でも約20の可能な移動があると仮定すると、5レベルのツリーには3,200,000のボード位置が含まれます。 10レベルのツリーには、約10,000,000,000,000(10兆)の位置が含まれています。コンピューターが計算できる木の深さは、ゲームをプレイするコンピューターの速度によって制御されます。最速のチェスコンピューターは、毎秒数百万のボード位置を生成して評価できます。
ツリーが生成されたら、コンピュータは「ボードの位置を評価する」必要があります。つまり、コンピュータはボード上のピースを見て、そのピースの配置が「良い」か「悪い」かを判断する必要があります。これを行う方法は、評価関数を使用することです。考えられる最も単純な関数は、各辺のピースの数を数えるだけかもしれません。コンピューターが白で再生していて、特定のボード位置に11個の白い部分と9個の黒い部分がある場合、最も単純な評価関数は次のようになります。
明らかに、式であることをチェスのための方法いくつかの作品が他よりも価値があるので、単純すぎます。したがって、数式は各タイプのピースに重みを適用する場合があります。プログラマーが考えると、ボードの位置、センターの制御、チェックするキングの脆弱性、対戦相手のクイーンの脆弱性、その他のパラメーターを追加することで、評価関数をますます複雑にします。ただし、関数がどれほど複雑になっても、そのボード位置の「良さ」を表す1つの数値に凝縮されます。
3レベルのツリー図

次の図は、3つ先を見て、最終的なボード位置の値を評価した3レベルのツリーを示しています。
コンピューターは白いプレーヤーとして遊んでいます。黒人プレイヤーが移動し、ツリーの最上部のボード位置を離れました。この木では、白は3つの可能な動きをすることができます。これらの3つの可能な動きのそれぞれから、黒は3つの可能な動きを行うことができます。これらの9つのボード位置のそれぞれから、白は2つの可能な動きをすることができます。(実際には、どの位置からの移動の総数も20程度ですが、それを描くのは難しいでしょう。)
何をすべきかを決定するために、コンピューターはこのツリーを見て、下から上に向かって動作します。その計算は、黒がとる可能性のある各位置から最適なボード位置を見つけるように設定されています(最大になります)。

1つ上のレベルでは、黒が白に対して可能な限り最悪の位置を選択すると想定しています(最小値が必要です)。

最後に、上位3つの数字の最大値を取ります。7。それはコンピューターが行う動きです。黒が動き出すと、コンピューターはこのプロセス全体を再度実行し、新しいツリーを生成し、すべてのボード位置を評価して次の動きを把握します。
このアプローチは、ツリーを上に移動するときに最大値と最小値を交互に繰り返すため、ミニマックスアルゴリズムと呼ばれます。アルファベータプルーニングと呼ばれる手法を適用することにより、アルゴリズムは約2倍の速度で実行でき、必要なメモリが大幅に削減されます。ご覧のとおり、このプロセスは完全に機械的であり、何も考えていません。これは、特定の深さのツリー内のすべての可能なボード位置に評価関数を適用する単純なブルートフォース計算です。
興味深いのは、この種の手法が非常にうまく機能することです。十分に高速なコンピューターでは、アルゴリズムは非常に優れたゲームをプレイするのに十分な先を見据えることができます。過去のゲームに基づいて評価関数を変更する学習手法を追加すると、マシンは時間の経過とともに向上することさえあります。
ただし、覚えておくべき重要なことは、これは人間の考えとはまったく異なるということです。人間の思考がどのように機能するかを学び、それらの技術を使用してチェスをするコンピューターを作成するとき、私たちは本当に何かに夢中になります...
チェスコンピューターと関連トピックの詳細については、次のページのリンクを確認してください。
多くの詳細情報
関連記事
- ビデオゲームシステムのしくみ
- 暗号化のしくみ
- ルーティングアルゴリズムのしくみ
- 「コンピュータアルゴリズム」とは何ですか?
- コンピュータのような完全に論理的なマシンは、どのようにして乱数を生成できますか?
その他のすばらしいリンク
- カスパロフ対X3Dフリッツ
- カスパロフ対ディープブルー-ディープブルーチェスコンピューターに関するIBMのWebサイト
- カスパロフ対世界-インターネット上の革新的なチェスゲームで、世界はカスパロフに対抗するための次の動きに投票します(ゲームは1999年6月21日に開始されました)
- コンピューターチェスのリファレンス
- Yahoo! ディレクトリ:チェス
- コンピュータチェスプログラミング
- Chessopolis.com
- CNN.com:マシンが2回目の3Dチェスゲームでカスパロフを上回った-2003年11月14日
- WorldChess.com:男vsマシン:ギャリーカスパロフvsX3Dフリッツ