コンピュータ将棋基礎情報研究所

コンピュータ将棋に関する基礎的な情報を収集し、分析し、発表する所です。英語名称はLaboratory for Fundamental Information on Computer Shogi (LFICS)。

最後まで粘り強く指す人、早投げの人、棋士には様々なタイプの人がいると言われています。それらはどのように統計量として現れてくるのでしょうか? また、粘り強さと棋力との間には何か関係があるのでしょうか?

今回は棋士棋譜集(2015年11月版)に基づいて分析します。この棋譜集の詳細については「棋士の棋譜整理とレート算出:棋士棋譜集(2015年11月版)」をご参照ください。

まず、30手以上200手以下の投了決着の棋譜に限定して、リスト上の各棋士について、勝ちの棋譜と負けの棋譜を区別してそれぞれの平均手数を算出します。ここで手数の範囲を限定するのは外れデータの影響を抑えるためです。勝ちの棋譜については、投了したのは相手の棋士であり、そのタイミングは相手次第でバラバラのはずです。一方で、負けの棋譜については、投了のタイミングに棋士の個性が反映されていると推測できます。

結果として、勝ちの棋譜については各棋士の平均手数の平均は115.0で標準偏差は5.2となり、負けの棋譜については平均は114.4で標準偏差は6.8となりました。平均と標準偏差については解説記事「平均と標準偏差:それって不偏推定値?」をご覧ください。ここで、平均が棋譜全体の手数の平均よりも僅かに下がっているのは手数の範囲を限定しているためです。また、勝ちの棋譜と負けの棋譜の平均が僅かに異なっているのはリスト外の棋士がいるためです。

この結果で注目するべきなのは、標準偏差の違いです。標準偏差の値は負けの棋譜の方が勝ちの棋譜よりも1.6大きく、これは投了のタイミングについての棋士の個性が現れていると考えられます。つまり、投了の個性が平均化されて消えてしまう勝ちの棋譜よりも、反映されている負けの棋譜の方が棋士ごとのばらつきが大きいというわけです。

それでは、平均手数とレートとの間には相関関係はあるのでしょうか?

勝ちの棋譜については、平均手数とレートとの相関係数は-0.445であり、弱い負の相関があるようです。線形回帰を行うと、\[T = -0.0181 R + 142\]となっています。ここで、Tは平均手数、Rはレートです。大雑把に言うと、レートが100上がると、平均手数が2手弱くらい下がるということになります。相関係数と線形回帰については以下の解説記事をご覧ください。
つまり、「強い人は勝つ時はあっさり勝つ」という傾向が見られるということです。この原因としては、「強い人は中終盤の寄せが鋭く、相手に中々粘らせない」というようなことも考えられますし、また、「強い人には“信用”があるために相手が無駄に粘ってこない」というようなことも考えられます。この結果からだけでは、傾向が見られるというだけで、原因を解析することまではできません。

一方で、負けの棋譜については、平均手数とレートとの相関係数は0.109であり、非常に弱い正の相関があるかどうかというところです。勝ちの棋譜と同様に線形回帰を行うと、\[T = 0.00578 R + 106\]となっています。つまり、粘る人の方が強いという傾向が僅かに見えないわけではないですが、勝ちの棋譜の場合と比較すると、相関係数の絶対値も小さく、線形回帰の係数の絶対値も小さいため、関係性としては相対的にとても弱いと考えられます。このデータによると「将棋は粘ればよいというものではない」ということのようです。

さて、上記の結果を踏まえて、棋士の粘り度を見るにはどのような値を計算して比較すればよいのでしょうか?

棋士ごとに時代や得意戦法等の違いによって平均手数が異なるため、負けの棋譜と勝ちの棋譜の平均手数の比を取るというのがまず考えられますが、これだと上で示したようにレートとの相関があるため(実際に相関係数は0.480)、棋力の差が結果に反映してしまいます。線形回帰の結果を用いて補正するというやり方も考えられますが、方法が徒に複雑になりますし、そもそもレートについての信用性にもやや疑問がありますので、あまり優れたやり方とは言えないでしょう。

そこで、個々の平均手数の差には目を瞑って、投了負けの棋譜の平均手数を115で割った値を「粘り度」として定義することにします。ここで、115は全体の平均手数ですが、棋譜集ごとに値を変えるのも徒に煩雑にするだけなので、定義の上では定数という事で固定しました。この「粘り度」は上で示したように棋力との関係は弱いですが、棋士ごとの平均手数の差の影響については考慮されていません。

「粘り度」の棋士ランキングは、以下の資料に記します。

以上、棋譜集を各棋士ごとに勝ちの棋譜と負けの棋譜に分類して、それぞれの平均手数を算出することにより、棋士の粘りと棋力との関係、並びに「粘り度」をどう定義したらよいのかということを考えました。勝ちの平均手数は棋力と弱い負の相関があり、棋力には相手の粘りを抑える作用がある可能性が考えられます。一方で、負けの平均手数は棋力との関係がとても弱く、そのまま「粘り度」の測定に利用できるだろうということが分かりました。

将棋は「二人零和有限確定完全情報ゲーム」であるとよく言われます。これは、「二人」で行い、勝ち(+1点)/負け(-1点)/引き分け(0点)の合計が「零和」で、手数が「有限」で、偶然の要素がなくて「確定」的で、相手の指し手が全て分かる「完全情報」のゲームであるということを意味しています。

しかしながら、将棋の決着が勝ち/負け/引き分けに分類できるというのは本当でしょうか? もし将棋のルールに不備があるとすると、その他の状況に陥る可能性が出てきます。その際に、例えば「両者勝ち」や「判定不能で永遠に続行」等ということになれば、「零和」や「有限」というのは成立しなくなります。あるいは「振り駒やじゃんけんで勝敗を決めよう」等ということになれば、「確定」や「完全情報」でもなくなります。あるいは「立会人らが話し合いで決める」等ということになれば、そもそも「二人」の話ではなくなってきます。もしかすると、将棋が「二人零和有限確定完全情報ゲーム」であるというのは必ずしも正しくないのかもしれません。

実際、現状の将棋のルールに不備があるということは「最後の審判」問題によって明らかにされました。この問題は1997年に発表された縫田光司氏の詰将棋(?)作品「最後の審判」に端を発したものであり、私が知る限り、2015年末の現在に至るまで未だ解決されていません。「最後の審判」については作者本人による解説「詰将棋作品?『最後の審判』」をご覧ください。

この問題の本質は「連続王手による千日手で反則負けとなる手以外に王手を外せない局面は詰みであるのか?」というものです。これは一見すると「そんなのどっちでも負けは負けだろ」と考えてしまいがちですが、打ち歩詰めがあるので勝敗にかかわる場合が出てきます。実際にそれを提示したのが「最後の審判」です。そこで提示されている局面は現状のルールでは勝敗の判定ができません。将棋のGUIソフトや対戦サーバにおいても本来はその旨を出力する実装がなされるべきでしょう(※いくつかのソフトにおけるテスト結果を記事末に付記しました)。この問題は、連続王手による千日手と打ち歩詰めという2つの珍しいルールが絡むことで発生するものであり、私が知る限りでは将棋特有の問題です。

この問題を解決する方法には大きく2つの方向性が考えられます。一つは、打ち歩詰めのルールの整備を検討することであり、もう一つは、連続王手による千日手のルールの整備を検討することです。特に後者については、他のゲームにおける同一局面反復の処理を参考にすることができます。

一般的に、将棋等のボードゲームでは、同一局面が反復されると無限に続いてしまって決着がつかないという問題が起こり得るため、「有限」のゲームにするには、ルール上で無限反復について何らかの処理を規定しなければなりません。

同一局面反復の処理には、大きく分けて、以下の2つの方法があります。
  1. 同一局面の反復を禁止して手を変えさせる方法。
  2. 無限反復を禁止せずに引き分けとする方法。
例えば、囲碁は基本的に1の方法を取っており、無限反復可能な局面(コウ)が現れると、同一局面の反復を禁止することで処理します。通常は直前の局面に戻すことのみを禁止していますが、これだと三コウ等で無限反復が発生してしまう余地があります。このため、より徹底して、一局中で同一局面を作ったら負けというルール(スーパーコウ)もあります。コンピュータ囲碁ではスーパーコウを採用していることが多いようです。一方で、例えば、チェスは2の方法を取っており、スリーフォールド・レピティションと言って、同一局面3回で引き分けとなります。また、連続王手による千日手(パーペチュアル・チェック)も特に負けとはならず、引き分けになります。

将棋の場合には、歴史的な変遷があり、昭和になるまでは暗黙的に1の方法が取られていたようです。昭和2年以降にルールが整備され、そこでは基本的に2の方法が採用されました。ただ、ルール整備後も1の方法に基づく考え方は根強く残っており、千日手は打開するべきものという意識は特に昭和の時代には色濃く残っていたようです。現状のルールが「同一局面4回出現で千日手となり、無勝負の引き分けとなる」という2の方法を基本としながらも、「ただし、4回の反復の間、一方の指し手が全て王手である場合には、連続王手による千日手となり、王手をかけていた方が負けとなる」という1の方法を折衷的に残しているというのは、このような歴史的な変遷によるものと思われます。

千日手周りのルール整備については意外と歴史が浅く、今後さらに時間をかけて整備が進んでいくものと予測されます。その中で「最後の審判」問題も自然と解決されるのかもしれません。

------------------------------
「最後の審判」を手動対局した時の60手目、3回目の5六歩以下の判定結果一覧。
  • 将棋所(ver. 3.4.0):5六歩は打ち歩詰めにならず、同角で連続王手による千日手。
  • ShogiGUI(ver. 0.0.4.16):5六歩は打ち歩詰めにならず、同角で後手の反則勝ち。
  • 激指14(ver. 1.0):5六歩は打ち歩詰めにならず、同角で連続王手による千日手。
  • 柿木将棋IX(ver. 9.04):5六歩は打ち歩詰めにならず、同角で千日手と表示。

前回の記事「手数と投了 2:棋士の投了手数」では、投了手数の分布を規格化して、投了決着棋譜における未投了率を導くところまでを記しました。今回は、長手数の領域における未投了率の振る舞いについて考えていきます。

長手数の将棋においては、熱戦の結果として、互いに決め手に乏しく、局面が“泥沼化”していることが多いと推測されます。“泥沼化”というのは、言い換えると、数手進んでも局面がほとんど進行しない、つまり統計的に見ると数手前とほぼ状態が変わらないということを意味しています。ここでは最終的に投了決着となる棋譜を解析していますので、手数ごとに残った棋譜の中から何らかの割合で決着する棋譜が出てくるわけですが、“泥沼化”を仮定すると、その割合は手数に依らずにほぼ一定であると推測できることになります。

このように一定の割合で減衰していく量は、数学的には指数関数で\[M = A 10^{B T}\]のように表現することができます。ここで、Mは未投了率、Tは手数、AとBは定数です。この式は、\[M = A C^{T},~~ C = 10^{B}\]と書き換えられ、一手進むごとに、Cの割合で減衰していくという式になっています。最初の式の両辺の常用対数を取ると、\[\log_{10}(M) = B T + \log_{10}(A)\]となるので、もしも指数関数が正しい推測になっているのならば、片対数グラフを描くと線形になっているはずです。

下に長手数の領域の未投了率の片対数グラフを示します。黒点が棋譜データです。
kishi_tesuu_mitoryo_l_151124

データから直線を推定するには線形回帰を用います。使用するデータの範囲には任意性があるのですが、ここでは200手から300手までのデータを用いて線形回帰を行いました。結果的に、-0.01803 x + 1.520の直線(グラフの青線)が得られ、その時の相関係数rは-0.9968となりました。線形回帰と相関係数については以下の解説記事をご覧ください。

この結果を用いると、A = 33.12、B = -0.01803、C = 0.9593となり、一手ごとに残っている棋譜の大体4%の棋譜が決着していくという計算になります。棋譜の数が半分になる手数(半減期)は16.68手です。

相関係数の絶対値は0.9968と1に近く、この指数関数による推測はそれなりに妥当であったようです。しかしながら、グラフをよく見てみると、直線とデータとが系統的にズレているように見えます。すなわち、一手ごとの決着する割合は必ずしも一定ではなく、手数が増えるごとに微妙に割合が減っているという傾向が見て取れます。実際に、200手より下では、長手数と言えるかが問われるとは言え、棋譜の減衰割合は直線よりも大きいですし、300手より上では、データの数が少なく信頼性が低いとは言え、棋譜の減衰割合は直線よりも小さくなっています。また、手数が増えるごとになんとなく終わりが見えなくなってくるというのは我々の実感とも一致している気もします。

このように割合が一定ではなく、データが長いテールを有しているような場合には、指数関数の代わりに、冪(べき)関数を用いて、\[M = a T^{b}\]のように表現することがあります。ここで、Mは未投了率、Tは手数、aとbは定数です。指数関数が手数が増えるごとに一定の割合で減衰していったのに対して、冪関数では手数が何倍かになるごとに一定の割合で減少していきます。両辺の常用対数を取ると、\[\log_{10}(M) = b \log_{10}(T) + \log_{10}(a)\]となるので、もしも冪関数が正しい推測になっているのならば、片対数グラフではなく、両対数グラフが線形になるはずです。

下に長手数の領域の未投了率の両対数グラフを示します。黒点が棋譜データです。
kishi_tesuu_mitoryo_ll_151124

片対数グラフの時と同様に200手から300手までのデータを用いて線形回帰を行うと、-10.30 x + 21.67の直線(グラフの青線)が得られ、その時の相関係数rは-0.9985となります。

結果的に、相関係数の絶対値は指数関数よりも冪関数の方が1に近く、直線の当てはまりがよいことが分かります。また、200手より下の領域や300手より上の領域への外挿でも、冪関数の方がデータに近い結果になっています。スケーリング指数bは-10.30となっており、棋譜の数が半分になる手数倍は1.070倍で、200手なら14手、300手なら21手ということになります。

このようにテール部分が指数関数的に減衰せずに、冪関数的に減少することを冪乗則と呼びます。冪乗則は様々な場面で観測されており、時にはフラクタル構造を有する機構や次元解析を反映したものになっていることがあるため、注目されることが多い現象です。

それでは、今回の冪乗則の原因はなんでしょうか? 原因を調べるためには、もっとデータを集めて精査しないとならないので、現状では「分からない」というのが答えです。単なる偶然で、たまたま減衰割合の減少分をフィットするのに冪関数が悪くなかったという可能性も考えられます。もしくは、人間の心理や将棋のゲーム木の構造に由来する何らかの機構が関与している可能性もあります。「人間は“泥沼”にはまると現実の手数進行が把握できなくなり、手数次元のスケールが消失するのだ」等という今思いついた適当な冗談が実は正しいという可能性も皆無ではないかもしれません。これは今後の課題です。

それでは次回は、棋士の棋譜ではなく、コンピュータ将棋対局場floodgateの棋譜における投了手数を解析したいと思います。

次の記事:「手数と投了 4:floodgateにおける投了手数
インデックス:「手数と投了 1:序論と目次

このページのトップヘ