ブルートフォース検索を使用しないチェスエンジンはありますか?


10

私が聞いたことのあるすべてのチェスエンジン(Wikipediaにリストされているものをすべて含む)は、評価関数(minmaxアルゴリズム)を使用したブルートフォース検索を使用して、その動きを決定します。

これは、ほとんどの人間がゲームにアプローチする方法ではなく、代わりに一般的なパターン認識を使用するため、原則として、コンピューターが同じことを行うことが可能です。

その動きを見つけるために力ずくのアプローチに依存しないチェスエンジンはありますか?


9
マグナス・カールセン。;)
2014年

3
現代のエンジンは動きをプルーニングするのでブルートフォースではないと言う人々について...チェスエンジンが数千万の位置を評価するとき、誰かが描く眉に関係なく、ブルートフォースを使用していることはかなり明らかだと思いますアルゴリズムについて。
Tony Ennis

現代のエンジンは動きを見逃すことがあります。見返りがかなり深くなるまで犠牲にならない。これはおそらく剪定されて深く調べられていないためだと思います。
通行人2015

回答:


6

1980年代に、人間のように候補の動きを選択する知識ベースを備えたチェスエンジンを作成する試みがありましたが、成功しませんでした。問題は、人間のパターンマッチングを言葉にするのが難しいため、ナレッジベースのルールを作成することが非常に難しいことです。

ニューラルネットワークをトレーニングして候補の動きを選択することは、有望な研究のようです。ここここに2つの関連論文があるかもしれません。(FWIW、Comp Sciの私の分野ではありません)



3

キリンに関する@Ian_Bushの回答に詳細を追加したいと思います。

@Ian_Bushの回答では、Giraffeがブルートフォース計算を使用しないことが指摘されています。キリンはまだアルファベータ(ネガマックス)エンジンなので、これは正しくありません。標準エンジンとの唯一の違いは、評価関数がディープラーニングによって自動的に調整されることです。したがって、エンジンはそれ自体で再生する方法を学習します。

従来、エンジンプログラマーはエンジンのパラメーターを自己調整しています。私はたくさん自分でやった。たとえば、司教と騎士にどれだけの重さを与えるべきでしょうか?3.0?3.1?3.2?わかりにくいです。

キリンは、よりスマートな方法で問題に取り組みます。それはいくつかの初期値から始まります。エンジンは、勾配上昇アルゴリズムを使用して、これらの値を調整します。クイーンがコード内でどれだけのウェイトを持つべきかを明示的にコーディングする必要はありません。これが「学習」の意味です。これは、エンジンが検索せずにチェスプレイできるという意味ではありません。

編集:キリンは、主要な変動に該当する確率としてツリーノードをモデル化します。詳細については、用紙を確認してください。私は個人的にはこのアプローチを信じていません。そしてこの論文はそれがどれほど有用であるかについてほとんど証拠を示していません。


キリンが干し魚の評価をターゲットとして使用するのは本当ですか?もしそうなら、それ自体は「チェスを学ぶ」のではなく、ボード機能の上にnnetを使用してStockfish evalへの近似を学習するだけです。
フェルナンド

@Fernando Giraffeは、ストックフィッシュとは何の関係もないと私は信じています。
SmallChess 2016年

論文全体を読みますが、18ページには次のように書かれています。We evaluated board representations by training neural networks to predict the output of Stock- fish’s evaluation function in a supervised fashion, given 5 million positions as input, in the board representation under evaluation. つまり、これはセルフプレイIMOで学んでいるわけではありません。
フェルナンド

1

ヒューリスティックベースの検索を呼び出し、ブルートフォースとしてアプローチを評価できる場合、その種の議論の余地があります。今日、トップクラスのチェスエンジンのほとんどは、位置を評価するためのルールベースのアプローチと、動きを取り除くためのルールベースの検索機能に従っています。

これは実際には「グローバルに最適な」動きを選択することを保証されていませんが、これらの動きは目的には十分です。この意味で、ほとんどのチェスエンジンは、大域的な最適値の近似値を使用しており、実際に成功しています。

今日まで、少なくとも安価なハードウェアではなく、別のアプローチを使用してトップレベルで成功するチェスエンジンは多くありません。


0

クロードシャノンは、チェスエンジンを作成するための2種類のアルゴリズムを提案しました。「タイプA」エンジンは、有限の深さへのすべての可能な動きを調べ、ツリーをミニマックスし、次にミニマックスツリー(別名ブルートフォース)から最高の評価で動きを再生します。タイプBエンジンは、いくつかの基準に基づいて、検索を可能な移動のサブセットのみに制限します。私は彼がタイプBをより有望であると好んだと信じていました。

1970年代に作成されたエンジン(例:Hitech、Kaissa)は、剪定を行わないか、アルファベータのみを使用する純粋な力である傾向がありましたが、人々はすぐに、強力であるとは思えない動きと線のツリーを剪定することの価値を見ました。最近のほとんどすべてのエンジンは、明らかに弱い線のツリー(プルーナ-ベータ)をプルーニングし、ほとんどのエンジンは、さまざまなタイプのフォワードプルーニングも使用します(無益、後期移動削減、ヌル移動、かみそり)。その意味で、純粋なブルートフォースを使用するエンジンはほとんどありません。

1970年代、ボトヴィニクは、評価の指針となるであろう攻撃経路の概念に基づいて考案されたパイオニアと呼ばれるエンジンに取り組んでいました。それはチェスの完全なゲームをすることができる点に決して達しませんでした。

1990年代に、Chris Wittingtonは、より多くのチェスの知識を取り入れることを支持して発言し、当時としてはかなり強力なChess System Talというプログラムを作成しました。

Kasparov、Anand、Tord Romstadはすべて、Hiarcsは高速検索から得られるトップエンジンの多くよりも詳細な評価を持っているようだと述べています。


-2

基本的にそれらすべて!

チェスエンジンが実際にブルートフォースを使用するのは、次の場合のみです。

  • に言った
  • 位置を分析しています(問題解決)
  • チェックメイトを探す(対戦時ではなく問題解決。たとえば、「Nでメイトを見つける」スタイルの問題など)

それ以外の場合は、「選択的検索」が行われます。これにより、特定のボードレイアウトで可能なすべての動きが考慮されますが、その一部のみが探索されます。エンジンは、2つの動きを非常によく評価する場合(複数の強力な動き)、または好む動きが見つからない場合(強力な動きなし)でも、ブルートフォースに切り替わることがあります。

彼らはまた、最後の防御線としてブルートフォースになる傾向があります。チェックメイトの可能性を見た場合、それが来るのを見ることができ、描くのに一生懸命努力したくて、道を見つけることができません(「地平線効果「エンジンの問題です。それはクイーンを失うことになり、4プレイだけを深めるために制限されているとします。ポーンをトレードでき、クイーンの4ムーブの損失を延期できる場合、それはクイーンを救ったと考えます。 、その過程で少なくとも1つのポーンが失われ(次の移動で地平線が近づくため)、女王を救うためにかかる重量は、防御が犠牲になることを意味する場合があります。 。

選択的検索があまり役に立たない場合にも、総当たりになります。このため、エンジンに3個ほど残っていると、エンジンにかかる時間が長くなります。選択アルゴリズムは移動を評価できないため、ブルートフォースが必要です。選択アルゴリズムは、「おお、ポーンでこれを行うと彼の[何でも]をブロックし、私の[何でも]および[何でも]攻撃よりも防御している数が少ないものをバックアップする」のようになる可能性があるため、ゲーム中は優れています。 。

ボードの真ん中に王がいる場合、8つの手があるので、選択検索は「これらのどれも役に立たない、わかりません」のようになります。

選択的検索は2つの部分からなると考えることができます。これは、戦術的な動きを見つけて見つけるという意味で戦術的なものです。戦略に含まれていない女王には価値がないため、通常、含まれる部分の重みを無視します。それにとって不可欠なポーン以上のものです。また、防御を強化する動きを探求し、後で潜在的な攻撃に備えるという点でも戦略的です。

次に、エンジンはあなたの視点から、そして前後に、そして前後に同じことを行います。

転置テーブルと呼ばれるものは、それが考えたことの大きなリストです。そのため、すでに実行したことを考慮してしまう場合、それを認識して再評価する必要はありません。

UNLESS(selective :))それは別の方法でそこに到達するか、またはさらに探索したいと考えています。たとえば、あなたのルークが差し迫った攻撃に不可欠であることを発見した場合、エンジンはこれを発見したときにラインを再評価する場合があります。そのルークにかかった以前の重み(たとえば、5ポイント、それがあなたにとってどれほど重要であるか)は、過小評価されている可能性があります。

選択的検索は、ビショップが敵の領土に直接移動することを考慮しているように、移動セレクターに戻ることもできます。簡単に取得できることは重要ではありません。それが戦略的にそれが素晴らしい動きであることを発見したとしましょう!その後、その司教をそこに連れて行くためにその広場を保護する方法を見つけようと後退するかもしれません。そうするためにポーンが関係するとします。

総当たりの方法では、ポーンの動きと(総当たりの)ビショップの動きを含むラインが考慮され、ボードの位置を評価する同じもの(選択的検索自体)は「これは良い」と言うので、ボードはその変動を高く評価すると、どちらもそれを見つけます。

ブルートフォース法を使用してポジションを評価することは非常に困難です。これが、選択検索が非常にうまく機能する理由です。

開始位置からの力ずくで、ビショップに覆われた女王f7を含む有名なmate-in-4を見つけ、それを高く評価するとしたら(チェックメイトを見つけた!黒は明らかに対抗するので間違っているでしょう。選択的検索は、ポジションが良好であると思われるため、(さらなる評価のために)ポジションを評価します。これは、あなたの反応を検討しているときに、あなたにとって何が良いかを決定できることを意味します...

つまり、選択的検索が物事を評価するために使用するものは、とにかくブルートフォースによって使用されます。これは、「この移動に関連するチェックメイトを見つけた」だけでは移動が良いとは言えないためです。

したがって、総当たりのチェスエンジンによって最初に選択された動き(白)は何ですか?

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