現代将棋ソフトは神様にどのくらい近づいたか

将棋の神様

将棋の神様というのは常に最善手しか指さない架空の存在のことで、将棋というゲームを完全に解析できている存在ということもできる。

将棋が二人零和有限確定完全情報ゲームである以上、両者が最善を尽くせば「先手必勝」「後手必勝」「引き分け」のいずれかになるはずである。

二人零和有限確定完全情報ゲーム(ふたり ぜろわ(れいわ) ゆうげん かくてい かんぜんじょうほう ゲーム)は、ゲーム理論によるゲームの分類のひとつである。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

全ての局面について解析できれば将棋が先手必勝なのか後手必勝なのかはわかるのだが、将棋は少なく見積もってもおよそ10^69程度の局面が考えられるので全ての局面を解析することは不可能です。

ただし、実際に初期配置から到達可能な局面はこれよりもぐっと少ないのでいくつかの定跡に関しては先手もしくは後手の必勝形が見つかる可能性は十分あります。

コンピュータ将棋

では、現在の将棋ソフトはどのくらい強いのでしょう?

人間よりも強いのはもはや火を見るよりも明らかですが、将棋の神様からすればまだまだひよっこです。

何故なら将棋ソフトが確実に将棋の神様に勝ちきれる局面は次の三パターンのどれかしかないからです。

  • 将棋の神様の玉に詰みがある
    • 詰みがあるので明らかに勝ち
  • こちらの玉は王手がかからず、将棋の神様の玉が必至である
    • 王手がかからないので絶対に詰まない
    • 必至は解除できない詰めろなので勝ち
  • こちらの玉は詰まず、将棋の神様の玉が必至である
    • 詰みはなさそうだが、わからない
    • 神様だけがわかる詰み筋があるかも

この中で自信を持って勝ちだと言えるのは「神様の玉に詰みがある」場面だけです。

もちろん将棋ソフトはそれを読まなければいけませんが、現代ソフトであればdf-pnアルゴリズムを使って三十手程度の詰みならば読み切れるはずです。

つまり、将棋ソフトが「詰みがある」と判断した局面であれば神様が相手でも必ず勝てることになります。

同様にこちらの玉が王手がかからず(たとえば穴熊)、相手玉が必至の場合にも必ず勝つことができます。

(おそらく)こちらの玉は詰まず、相手玉が必至という状況はこちらの読みがどこまで正確かということに依存します。

ソフトは「N手詰みはない」と判断していても神様からすれば「N+2手で詰み」という可能性があるからです。

N+1じゃないのは、そうなると自分の手番じゃなくなるからです。

評価関数はどのくらい強いのか

さて、本題になりますが近年主流のNNUE評価関数は神様に比べてどのくらい強いのでしょうか?

将棋ソフトは「先手+x点で優勢」と判断していても「最善を尽くせば後手必勝」のようなソフトの判断と真の勝敗がズレるような局面はたくさんあると思います。

xの値が大きくなれば次第に神様の評価とズレる可能性は減っていきますが、どのくらい大きくなれば神様との一致率が99%を超えるでしょうか?

言い換えると、神様からどのくらい(評価値として)ハンデをもらえば勝てるかということになります。

もちろん、実際に将棋の神様がいるわけではないのでこれは単なる思考実験にすぎません。何かの役に立つというわけではないですが、将棋ソフトの展望を語る上では興味深い考察にも思えます。

200や500ではまだまだズレがあると思いますが、2000や3000になればたとえ神様でもなかなか現代将棋ソフトに勝ち切るのは難しいのではないでしょうか?

「勝ちきるのが難しい」というのは、ソフトが評価値+2000をつけた局面が実際に先手勝ちで、そこから一度も(神様の評価で)後手勝ちに転ずることなく詰めあがれるようなものが多いということを意味します。

あくまで個人的な推測ですが、評価値が5000を越えれば100局戦って99局はソフトが勝てるのではないかと思っています。

コンピュータ将棋開発者さんの意見をいろいろきいてみたい限りです。

コンピュータ将棋のギモン

そもそも、現在のコンピュータ将棋はどうやって強くなっているかを簡単に紐解いてみます。

自分がコンピュータ将棋専門ではないので間違っていたら教えてください。

評価関数

以前はKPPと呼ばれるタイプの評価関数が使われており、玉とその他二つの駒の位置関係の線形和で局面を評価していました。

これはコンピュータチェスの応用で、チェスの場合は駒の数が少ないのと持ち駒がなくだんだん駒が少なくなるので三駒関係で十分強く学習することができました。

これが将棋にも応用できることがわかり、以前は人間が手作業で駒の配置に点数をつけていたのがBonanza以降コンピュータによって自動的に評価できるようになりました。

ただし、KPPは線形和であるために一つの駒の位置の違いが実際の局面を大きく変えるようなケースにおいてうまく表現することができないなどの欠点がありました。

それを克服した評価関数がNNUEと呼ばれるニューラルネットワークを用いた評価関数です。

ニューラルネットワークといいますが、ディープラーニングのような巨大なネットワークではなくあくまでもコンセプトとしてニューラルネットワークを使っているにすぎません。

このNNUEの利点はネットワークの構造をうまく構築することで本来はGPUでしか高速に計算できなかったものをCPUでも十分速く計算することを可能にしたことです。

NNUEは非線形な評価関数なので柔軟に局面を評価できるようになりました。

NNUE自体はHarf KPと呼ばれるKPPよりも遥かに小さい(二駒)の関係性しか見ていませんが、KPP評価関数と同等以上の強さがあります。

学習方法

今のコンピュータ将棋ソフトは人間の棋譜を使わずに学習しています。

じゃあどうやって学習してるの?ってなるんですが、よく使われているのがやねうら大定跡です。

で、これがどういう仕組みでコンピュータ将棋の棋力向上に繋がっているかといいますと、次の一連の流れによります。

  • 32手目の状態で18手先まで読んで評価値が100以内の局面を用意
    • これが10818局面あるらしい
    • これらを互角局面とする
  • これらは互角のはずなのでそこからランダムに局面を選択する
    • その局面から自己対局する
    • それをくり返す

この学習方法に対するギモン

以下、やねうら王さんに寄せられたギモンとぼくなりの考え

  • 当時のソフトであるから精度的にどうなの?
    • 確かに現在のソフトでもっと深く読めば評価値が100以上離れているものも多いかもしれない
    • しかし、どちらに振れているかはわからないので相殺し合っている可能性も
    • 少々ギモンは残るが、大きなリソースを割いて最新のソフトで再び互角局面集を作るかどうかは微妙なところ
  • [-100,100]だと振り飛車が居飛車より悪いと思っているソフトだと振り飛車の局面が少ないのでは
    • これは確かにそんな気がする
    • 振り飛車不利だと学習しているソフトで局面を生成すると振り飛車が候補に含まれないため
    • 仮に振り飛車ソフトをつくるのであればそのまま互角局面集を使うとマズイかもしれない
  • 実戦で出現する確率の高い局面を選んだほうが良いのでは?
    • それはそれで面白そうである
    • 横歩取りと角換わりならかなり精度の高い定跡ができそうな気もする

現在のソフトの動向

現在のソフトは定跡研究にものすごく力を入れている印象を受けます。

考量時間を使わずに指せるのは深い読みをいれたい終盤に時間を残すことができ、非常に興味深い作戦だと思います。

最近主流の定跡生成方法としてShotgun方式が知られているので、アピール文章のリンクを貼っておきます。

本当は自分で将棋ソフトをつくるときにどうやって学習させようかということも記事にしたかったのですが、長くなりそうなのでここまでということで。