ソフト評価値による人間の対局の勝率予想について
将棋ソフトを用いると対局の各局面における優勢/劣勢の度合いを「評価値」という形で定量的に知ることができます。例えば評価値が300点以内であれば「互角」、300点から800点の間であれば「有利」、800点から1500点の間なら「優勢」、1500点を超えると「勝勢」と判断されます。これは言葉による表現ですが、実際には評価値から各プレーヤーがその局面から指し続けたときの予想勝率を計算することができて、例えば300点だと62%, 800点では79%, 1500点になると92%等となります。この計算の基礎になっているのはPonanza開発者の山本一成氏がツイッターで提案した
(勝率)=1/(1+EXP(-(評価値)/600))
という経験式です。この関数はシグモイド関数と呼ばれるものでPonanzaの開発の際に行われた(非常に持ち時間が少ない)自己対局における評価値と勝率の関係として得られたものです。
私は以前よりこの公式を人間の対局に当てはめていいのか疑問に思っていました。その根拠は、上記の経験則はソフト同士の超短時間対局という特殊な条件で導かれたもので、思考方法、棋力、持ち時間など全く異なる人間の対局の場合、設定がだいぶ違うのではと思われた点です。ネットで検索してもこれまであまり調べられたことがなかったようなので、自分で調べてみることにしました。
調査法ですが
棋譜としては手に入れやすかった2002~2003年のプロ棋士の対局約1000局を用いた。
ソフトは最近良く用いられているShogiGUI(インターフェース)+やねうら王(エンジン)+Kristallweizen(評価関数)の組み合わせを用い、棋譜解析を行った。
一手あたりの検討時間は4コアのパソコンで1秒、ノード数にして200~300万ノード。
ShogiGUIが出力する棋譜ファイルから勝った(負けた)プレーヤーの評価値をそれぞれ集め評価値別の勝率を計算。
得られた結果をグラフにしたものが下記のものです。
オレンジ色で書かれたものがPonanzaの式から予想される勝率、青い点で書かれているのが実測値となります。データ数がそれほど多くないので統計誤差もあり細かい主張はできませんが、Ponanzaの公式が数%の誤差の範囲内で当てはまっていることがわかります。この結論は意外でしたが、ソフト評価値による勝率判定が人間の対局にも当てはめることができることを確認できたことは少なくとも自分にとっては意義深いことでした。
もちろんデータを注意深く見ると細かい違いはいくつか気になる点もあります。一つは評価値が大きい場合(2000点あたり)の逆転率は人間の対局だとやや大きめなのではないかという点、Ponanzaの式のシグモント関数に現れる600という数字は数%程度の補正を行ったほうがフィッティングがより良くなる点などです(Kristallweizenの場合は580位)。将棋ソフトにより評価値の絶対値が大きめに出るものもあるのは知られているので、その場合にはこの補正が大きくなり勝率表示に使う場合には事前の調査がある程度必要になるものと思われます。
今回の調査でやや気になっている点としては、棋譜解析を行うときの思考深度がやや浅かったという点があります。実際に将棋ソフトを用いるときは一手一秒よりもずっと長い時間ソフトに検討させるはずで、その場合もPonanzaの公式がそのまま当てはまるのでしょうか。一応確認として一手5秒程度(1000~1500万ノード)の棋譜解析を同様に行いデータ化したグラフは次のものです。
こちらはデータの数がより少ない(約300局)ためかズレがやや大きめに見えますが基本的な構造は上のグラフと同じようにみえます。こちらはデータ数が十分大きくなったときに再検討してこちらに書き込むつもりです。