Deep Blue以降、エンジンはどのように改善されましたか?


17

1997年にDeep BlueがKasparovを破って以来、コンピューターチェスエンジンは良くなっています。

アルゴリズムは改善されましたか、それともハードウェアの高速化などにより同じアルゴリズムが高速に実行されたことが主な原因でしたか?

前者の場合、これらのアルゴリズムの改善は公開されていますか?

もしそうなら、改善は何でしたか?それらについてどこで読むことができますか?



どうやって ?劇的に。
エヴァルガロ

回答:


8

コンピュータチェス専用のフォーラムであるTalkChessをご覧ください。あなたにとって興味深いかもしれない最近のスレッドを見つけました:7-8年の4つの間隔で30年の進歩

(以前の)トップエンジン間のいくつかの一致は、同じハードウェアで再生されます。このテストは、近年(2002-2017年)に、主にソフトウェアの改善によって得られることを示唆しています。テストでは、Stockfish(2017)はRobboLito(2009)に対して94/100のスコアを記録し、RobboLitoはその順番で92/100でシュレッダー(2002)を押しつぶしました。

重要な注意点:並列コンピューティングは古いエンジンには実装されていないため、テストはシングルコアで実行されました。その結果、並列マシンによるハードウェアゲインは測定されません。一方、並列コンピューティングはソフトウェアの利点でもあると言えます。検索アルゴリズムの効率的で拡張性の高い並列化を設計および実装することは容易ではありません。

Stockfishのエンジンは、オープンソースであるため、アルゴリズムの改善が公開されています。多くのドキュメントがhttps://chessprogramming.wikispaces.comにあります。


これは彼の主張に答えます。次回質問に答えてみてください。
フレッドナイト

1
まあ、私は質問に答えたと思います:ゲインは主にアルゴリズムの改善によって行われます。さらに、この主張をサポートするデータを示し(リンクを参照)、可能性のある欠点を指摘しました(並列化は測定されません)。
Maxwell86

3

Deep Blueに使用されるアルゴリズムについて話すことはできませんが、チェスプログラミングの改善点について説明します。速度は最大の改善です。Deep Blueはマルチプロセッサ専用コンピューターを使用したため、実際に比較することはできません。

https://chessprogramming.wikispaces.com/は素晴らしいソースですが、ナビゲートするのは困難です。

チェスエンジンを改善するために調整された3つの主な機能は、評価、移動生成、および検索機能です。

ルールには多くの例外があるため、評価はプログラミングが最も困難です。ハードドライブのスペースが安くなると、eval関数はより多くの例外を評価できるようになります。

移動の生成は、移動の作成と作成解除とともに、何度も実行する必要があるため、多くのメモリを消費します。最も一般的な生成関数は、メールボックス、ビットボード、0x88、8x8、拡張ボード(10x10、10x12)、および所定の移動配列/テーブルです(*インデックス付き移動テーブルを使用します)。現在の意見では、ビットボードはより高速であり、マジックビットボードを使用するとこれが最大30%速くなります。教授であり、クレイジーチェスエンジンの作成者であるロバート・ハイアット博士は、速度の大幅な増加はないと主張しています。

初期の検索関数は、プリミティブな最小-最大関数でした。基本的には、サイドのスコアを最大化して移動し、相手のスコアを最小化しようとしました。アルファベータは最初の改善でした。転置表、カットオフ値、吸引ウィンドウ、および履歴ヒューリスティックによって検索される動きの数を減らしました。これらは深さ優先の検索です。他の動きの検索が無益であることが証明されることを期待して、「最良の」動きを最も深く検索しようとする内部反復深化検索もあります。

注:私のインデックステーブル。GNUChessとJesterはどちらもインデックス配列を使用して動きを生成します。彼らは可能な動きで配列を埋めることでエンジンを初期化します。6個のピース​​を取り、各スクエアから利用可能な合法的な動きを計算します。そのため、各ピースには[64] [8]配列がありました。このアイデアを取り入れて、2つのインデックスと1つのテーブルに圧縮しました。テーブルには16の移動が可能かどうかを示す値が保持され、1つのインデックスには移動のオフセットが保持され、もう1つのインデックスにはマスクが保持されます。

offset [] = {-8、-1、1、8、-9、-7、7、9、-17、-15、-10、-6、6、10、15、17};

mask [] = {1、2、4、8、16、32、64、128、256、...};

その後、スライド移動の生成は、移動テーブルに対する許容オフセットでマスクの有効性を調べるのと同じくらい簡単です。


7
私は答えに返事を出さないようにしますが、これはただのことです...アルファベータとビットボードはディープブルーの前に長い間発明されました。ボードevalは健全なエンジンでHDにアクセスしないこともかなり確信しています(待ち時間は非常に長いです)。第4に、RAMサイズが通常のアルファベータ検索の実装に実際の違いをもたらすことは非常に懐疑的です。
MaxB

おそらくあなたが議論しているいくつかの概念にいくつかのハイパーリンクを追加してもらえますか?コンセプトに興味があるが、用語に不慣れな人としては、ビットボードとは何なのか、クラフティチェスエンジンがわからないので、理解するのは困難です。
サンダーフォージ

ディープブルーと比較していないという点で明確だと思いましたが、簡単な歴史を述べていました。私が言及していたハードドライブはプログラム自体です。新しい評価コンセプトがチェスエンジンに組み込まれるたびに、より多くのコード、したがってより多くのHDスペースが必要になります。
フレッドナイト

@Thunderforge、私が提供した1つのリンクは、チェスプログラミングに対処したいすべての側面を説明していますが、ナビゲートするのは難しいと認めています。私は他のソースコードを読むことで学びましたが、最もコメントされているのはハイアット博士のクラフティエンジンです。スペースの制限と、プラットフォームやコンパイラーの違いのために、あまり包括的ではないことを選択します。Wikiチェスのページを読んでもまだ混乱している場合は、質問をしてください。多くの人がより良い答えを提供するでしょう。
フレッドナイト

1
Every time that a new eval concept in included into a chess engine, more code, and therefore more HD space is required.ボード評価関数は通常、CPUキャッシュに収まるように設計されています。CPUキャッシュ<< RAM << HD。HDサイズに違いはありません。
MaxB

2

アルゴリズムは改善されましたか?

明らかに、少しはい。

または、ハードウェアとソフトウェアの高速化により、同じアルゴリズムがより高速に実行されたことが主な原因でしたか?

マイナー:アルゴリズムが良くなった場合、それはソフトウェアが良くなったため、「または」はありません。

ムーアの法則によれば、プロセッサの速度は約18か月ごとに2倍になります。つまり、20年で約13倍になりました。これにより、最新のプロセッサは約8,000倍の速度になります。そのため、エンジンパフォーマンスの最大の改善は、ハードウェアの高速化によるところが大きいです。

前者の場合、これらのアルゴリズムの改善は公開されていますか?

もしそうなら、改善は何でしたか?それらについてどこで読むことができますか?

まあ、それは前者ではなく、後者でした。それにもかかわらず、改善は主にオープンソースであり、Stockfishのようなエンジンのソースをダウンロードすることで自由に見ることができます。特定のソースコードリンクはバージョン9のリリース時に期限切れになる可能性が高いため、おそらく一般的なStockfishダウンロードリンクを提供する価値もあります


2
That means it has doubled roughly 13 times in 20 years.ムーアの法則を誤って引用していると思います。プロセッサの速度については何も言いません。実際、しばらくの間は倍増していません。
MaxB

hardware and softwareアルゴリズムの実装(ASMとC ++)のようにソフトウェアを意味しましたが、それがどのように混乱しているのかがわかります。修繕。
MaxB

1
彼は「次の10年」というフレーズを含むことを除き、ムーアの法則は正しい。これは1975年のことであり、彼は正しかった。
フレッドナイト

-1は答えが間違っているためです。同じハードウェア上で、現在のエンジンは以前のトップエンジンを引き続きクラッシュさせます。
アリュール

0

アルゴリズムがすべてです。

人間のチェスプレーヤーに挑戦したのは、当時世界で最も強力なコンピューターの1つでした。このブルートフォースコンピューティングアプローチにより、Deep Blueは6〜8歩先を見据えることができました。密接に戦ったコンテストでは、マシンは最終的にカスパロフを3 1/2ゲームで2 1/2に敗北させました。

6年後、Kasparovは人間対機械の別のコンテストに参加しました。今回、彼はディープブルーの後継者であるディープジュニアと対戦しました。その結果、3ゲームすべてで描かれたシリーズができました。最大の違いは、Deep JuniorがDeep Blueの計算能力の約1%のマシンで実行されたことです。チェスのアルゴリズムは、100分の1の計算能力でほぼ同じ結果を達成するまで改善されていました。


4
チェスへようこそ!あなたは答えの大部分を引用のように書きました。ソースを提供してもらえますか?
グロルフィンデル

0

免責事項:専門家ではありません。

アルゴリズムは改善され、1995年に実行された現在の最高のエンジン(Deep Blueは1999年だったことを思い出してください)ハードウェアはKasparovを手軽に打ち負かすことができます。私が理解しているように、アルゴリズムには2つの側面があります。

検索します。例えば、私があなたの女王を私の女王と連れて行った場合、人間の対戦相手は自動的に最初の再捕を見るでしょう。ただし、コンピューターの場合は、QxQへのすべての可能な応答を評価します。ほとんどの場合、これは処理能力の無駄です。良い検索アルゴリズムは、これらの「ブランチ」がとにかく無関係なので、それらをすべて削減します。

標準の検索アルゴリズムはalpha-beta pruningであり、初期のチェスコンピューターで使用されていました。Deep Blueがアルファベータプルーニングを使用したかどうかはわかりませんが、最新のエンジンは使用しません。その結果、彼らの検索は「安全ではない」-たとえば、女王を奪還する以外のいくつかの動きがゲームに勝ったことを逃す可能性があります。しかし、これが起こることはまれであり、見返りに彼らは深さを非常に高く押します。(「深さ」は、エンジンがどのくらい深く検索するかを表す専門用語です。たとえば、深さ30まで検索するエンジンは、深さ20まで検索するエンジンに勝る可能性があります。

評価。これは、エンジンコードのもう1つのプロングです。特定の位置が与えられた場合、白、黒、または同等のどちらが良いですか?これには、あらゆる種類の機能が含まれます。たとえば、

  • 片側に余分なマテリアル/スペースがある場合、evalにボーナスを与えます。
  • 白にポーンによってサポートされる高度なナイトがいる場合、白にevalにボーナスを与えます。
  • 黒の王が行き詰まっている場合、白にevalにボーナスを与えます。
  • 白のランクが7位のルークがある場合、白にevalにボーナスを与えます。
  • それがエンドゲームであり(そしてポジションがエンドゲームであるかどうかを決定するアルゴリズムがある)、両側に反対の色の司教がいる場合、evalにペナルティを課します(つまり、0.00に向かってプッシュします)。

今日のエンジンは、ディープブルーよりもはるかに優れたポジションを評価します。

アルゴリズムが公開されているかどうかについては、Stockfishは現在世界で最も強力なエンジンであり、オープンソースです。Githubから自分でコードをダウンロードできます。

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