ずっと0.00でした、とか、この手がブランダーでした、とかエンジンを見ながらいう人がいますが、本当にそれで大丈夫?と私などは思います。チェスエンジンはとてもとても強いですが、絶対ではありませんし、そもそも使い方をまちがえてしまえば有害であるとさえ言えると思っています。今回はチェスエンジンの不都合な真実についてコラムにまとめてみます。
チェスエンジン
「チェスエンジン」と聞いてピンとこない人も多そうです。チェスエンジンとはいわば、チェスの局面を評価するAIのことです。近年はAIという単語が流行りなのでこちらの方が通りが良いでしょうが、通常はチェスソフトとか呼ぶことが多いでしょうか。いずれにしろ、チェスの世界では「エンジン」という呼び方をします。チェスの世界でのチェスエンジンの歴史は長く、チェスプレイヤーならばその評価を見ない日はありません。
今回のコラムでは、このチェスエンジンについて
エンジンは正しいのか
エンジンを正しく使えているか
エンジンが役に立っているか
という3つの視点で語ってみたいと思います。
エンジンは正しいか
エンジンがどのように動いているかを理解すれば自ずとその問題点も理解できます。
エンジンは
1. 現在の局面からある手数まで先のすべての局面を再現する
2. その局面を評価関数を使って数字化する
3. 数字が高い(黒番ならば低い)順に並べる
という3つのプロセスでその局面での最善手を決めます。3つ目のプロセスは並べるだけなので、実際には2つ目のプロセスまででその評価が決まっています。エンジンに問題があるとすればこの1と2プロセスの中にあると言えるでしょう。
読みには限界がないか
チェスエンジンの評価を見たことがある方であれば、数字で書かれたエンジンの評価の横にdepthという別の数字が書かれていることに気がつくはずです。これは、そのエンジンが読んだ手数を示しています。チェスの世界では白黒双方指して1手と呼びますが、depthの数字は白1手、黒1手分をそれぞれ1と評価しているので、例えば18と表示があれば9手先まで全ての局面を評価していることになります。
この数字はエンジンを動作させている時間を長くしていくと増えていきますが、しばらくするとなかなか数字が増えなくなります。これは手数が増えるほど分岐が増えていくので、depthを増やしていくのに時間がかかるからです。
その結果、現実的な時間で読むことができるdepthには限界があり、これがエンジンにとっての読みの限界になります。
評価は正しいか
一方で、チェックメイトや理論的なドロー局面まで読み切っている場合以外は、読んだ先の局面をなんらかの評価関数を使って点数化しています。評価関数とは局面の様々な要素について定量評価を行って、白か黒どちらが有利かを評価します。通常、ポーン1個分の価値を1とし、白有利をプラス、黒有利をマイナスの数字で表します。私のブログでも、チェスのピースの点数化について説明した記事がありますが、これも一つの評価関数の一種ですし、実際にチェスエンジンも最も重要な評価指標として使っているはずです。
では、このチェスエンジンの評価はどの程度正しいと思いますか?かなり高いと思いますか?私はまぁ、たいしたことはないんだろうなと思っています。
ネットでGMのゲームを観戦していて、GMが指した瞬間にエンジンの評価が大きく振れ、すぐに元の評価に戻るのを見たことはないでしょうか?あるいは自分のゲームをエンジンで評価していて、手を進めてすぐにはおかしな評価をするのを見たことはないですか?このような評価は、エンジンがまだほとんど手を読んでいない段階で評価をしていることで起こっています。
そもそも、もしエンジンの評価関数が完璧であるならば1手も読まなくても正しい評価ができるはずです。上記のようなことが起こること自体が、エンジンの評価関数が正しい評価をしていないことの証拠です。
正しく使えているか
次に、エンジンを使う人間自体がエンジンを正しく使えているか、という問題があります。
エンジンに時間を与えているか
前項で述べたとおり、エンジンは時間とともに読む手(depth)を増やしていき、当然ながらその手が増えるほど評価も正確になります。問題は使う側がエンジンにとって必要な考慮時間を与えているか、ということです。
例えば、あなたが自分のゲームを解析をしていて、ある手でいきなり評価が動いたとします。その時、あなたはその評価がどうなるかしばらく様子を見るでしょうか?ほとんどの人が、瞬時にエンジンが表示した手を入力してその後を見てしまうのではないでしょうか?それではエンジンが正しく評価する十分な時間を与えてないかもしれません。
そもそもエンジンの解析を見ているときにほとんどの人は時間をかけていないのではないかと思います。1手1手時間をかけてもキリがないですし、PCやスマホなどにも負荷がかかるので、現実的に時間をかけることが難しいはずです。
自動解析はどうか
Chess.comやLichessには1ゲーム丸ごと自動解析してくれる機能があります。この機能を利用すると、エンジンは一定の条件の元にゲームを解析してくれるため、人間の適当な使い方に比べるとかなり客観性が保たれ、簡易評価には使えると思います。しかし、この自動解析は10秒程度から1分程度で1局を評価しており、かなり正確性が落ちます(設定により解析時間を長くできる場合もあります)。
とはいえ、これは仕方がないとも言えるかと思います。ネット対局の解析結果が30分後に送られてきたとして、みなさん見るでしょうか?私なら5分でも待てないと思います。
勝ちやすい手が選べているか
エンジンは前項で書いた手順通りに評価をします。膨大な変化の中でたとえ一つだけでもイコールになる変化があれば0.00となります。たとえそれ以外の変化が全て白勝ちだとしてもです。この例ならば「それは当然だ、正しい」と思う人が多いでしょう。
しかし、評価順3手(3つまで表記する設定になっていることが多いです)がそれぞれ3.2、3.1、3.0と記載されていた場合ではどうでしょうか。当然、客観的評価は3.2の手で、この手が最善だ、ということになります。しかし、よくよく見てみると、3.2の評価の手はこの評価を維持できる変化がただ1つしかなく、3.1の評価はこのあと何を指してもほとんど白勝ちだとすればどうでしょうか?3.1の手を選んだ方が勝ちやすいことは分かるでしょう。
「いや、それでも客観的には3.2の手の方がよい手のはずだ」という人もいるでしょう。否定はしません。しかし、それはエンジンの局面評価が絶3.1と3.2という細かな評価の違いでも絶対的に正しい場合だけです。前項でも書いたとおり、少なくとも私はそこまで信じていません。
本当に役に立っているか
チェスエンジンを使う理由を「正しい答えを見つける」ことだと思っている人も多そうですが、本当にそうでしょうか?少なくとも私にとっては(実際にできているかどうかは別として)、エンジンを利用することは「自分が強くなるための手助けをすること」です。この目的に沿っていなければ使う意味がありません。
自分を見失っていないか
ゲームを終えて試合内容を検討しようとエンジンの解析にかけた瞬間、ゲーム中に考えていたことや局面に対する印象をすっかり忘れてしまい、エンジンの評価通りにしか考えられなくなる傾向があると言われています。これは弱いアマチュアだけではなく、グランドマスター達も同じような罠に囚われてしまうことがあるそうです。
つまり、エンジンを使うことによってそのゲームの復習として本当に解決しなければならないことを見失ってしまうことがあるということです。
自分を慰めていないか
ゲーム直後の感想戦で「この手で黒よかったのでは」と提案した際には納得のいかない様子だったのに、次の日に(多分エンジンの評価を見て)、嬉々として「自分勝ってました」と報告しにくる人がいて、たまに唖然とすることがあります(いや、私は試合でも感想戦でも勝ってたよ)。ここまで極端ではなくても、ゲーム後にエンジンに掛けて意外と悪くなかったとか、ここ(ゲーム中にその1手だけなのに)では逆転できたなどと言っている人がいますが、本当に解決しなければいけないのは「意外と悪くなかったけどなぜ負けたのか」や「ゲーム中ずっと悪かった要因は何か」です。自分の負けを慰めるために時間を費やしていてはもったいないです。
まとめ
今回はチェスエンジンやエンジンによる解析が抱える問題点についてまとめてみました。
上記のようなエンジンの特性を理解した上で、私が現在どのようにエンジンを利用して自分のゲームを解析しているのかについては、また別の機会で扱おうと思います。
コメント