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

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

2016年06月

前回の記事「手数と投了 5:自己対局における投了手数」では、自己対局による棋譜データを用いた解析を行い、自己対局の平均手数がfloodgate棋譜集の平均手数を10手以上も上回ることを示しました。今回は、様々な連続対局の結果を解析することで、より詳細な分析を行いたいと思います。

ソフトの設定は全て前回の記事と同じです。それぞれ先後を入れ替えて500局ずつの計1000局の対局を行っていますが、解析に用いる棋譜は投了終了の棋譜のみです。

それぞれ勝敗数に依って推定レート差dRを算出し、高レート者が勝った棋譜の平均手数が(M + K dR)、負けた棋譜の平均手数が(M - K dR)となるMとKを求めて、レート補正項まで含めて平均手数を計算します。Mは勝敗数を五分にそろえた時の平均手数に対応します。Kはレート補正項の係数であり、「floodgateにおける手数とレート差:棋士との違いは?」の記事で分析した通り、floodgate棋譜集では、おおよそ-0.025程度の値となるものです。

まずは、Bonanza(6.0)で先手と後手で別々に秒読みの秒数を変えた場合の結果を示します。表の記法は、例えば、「B04」なら「Bonanzaの秒読み4秒」という意味です。

  • B04-B01: 145.2 - 0.02664 dR(棋譜数: 975、dR: 194.4)
  • B04-B02: 144.3 - 0.02895 dR(棋譜数: 968、dR: 93.3)
  • B04-B04: 145.4 + 0.00000 dR(棋譜数: 958、dR: 0.0)
  • B04-B08: 146.3 - 0.02414 dR(棋譜数: 961、dR: -115.0)
  • B04-B16: 145.0 - 0.02952 dR(棋譜数: 968、dR: -217.7)

平均手数Mは、おおよそ145手で一定しています。この145手というのは、前回の記事で示したBonanzaの秒読み2秒/4秒の時の自己対局の平均手数(145.2手/145.4手)に近い値になっています。

レート補正項の係数Kは、おおよそ-0.025強の値となっており、floodgate棋譜集の場合と大体一致しています。同じ秒数同士の対局の場合(B04-B04)は自己対局と同じですので、レート補正項はありません。

以上の結果から、Bonanzaについては、持ち時間/ハード性能の違う者同士の対局においても、通常的なレート補正項が付くだけで、基本的には自己対局と変わらない平均手数となることが分かります。

次に、Apery(wcsc25_bmi2)で同様の実験を行った場合の結果を示します。表の記法は、例えば、「A04」なら「Aperyの秒読み4秒」という意味です。

  • A04-A01: 140.2 - 0.02050 dR(棋譜数: 960、dR: 596.5)
  • A04-A02: 146.6 - 0.02669 dR(棋譜数: 951、dR: 236.5)
  • A04-A04: 150.1 + 0.00000 dR(棋譜数: 933、dR: 0.0)
  • A04-A08: 151.3 - 0.02761 dR(棋譜数: 913、dR: -209.9)
  • A04-A16: 151.2 - 0.03294 dR(棋譜数: 940、dR: -373.6)

平均手数Mは、A04-A01の時には、前回の記事で示したAperyの秒読み1秒の自己対局の平均手数(141.8手)に近い値になっており、A04-A02の時には、秒読み2秒の自己対局の平均手数(148.5手)に近い値になっており、その他は、秒読み4秒の自己対局の平均手数(150.1手)に近い値になっています。どうやら平均手数Mは、秒数が小さい方の自己対局の平均手数に近い値になっているようです。

レート補正項の係数Kは、おおよそ-0.025強に近い値となっており、floodgate棋譜集のものに近い値になっています。A04-A01とA04-A16の結果でズレが大きくなっているのは、レート差が大きく、強者が負ける棋譜が少ないため、誤差が大きくなっているのだと思われます。同じ秒数同士の対局の場合(A04-A04)は自己対局と同じですので、レート補正項はありません。

以上の結果から、Aperyにおいても、持ち時間/ハード性能の違う者同士の対局は、通常的なレート補正項が付くだけで、基本的には自己対局と変わらない平均手数となることが分かります。

上記のBonanzaとAperyの結果を見る限りでは、持ち時間/ハード性能は、探索の深さやレート差を変えるものの、本質的に自己対局の性質を変えるものではないということが推察されます。

それでは、BonanzaとAperyの両者を対局させた場合には、どうなるでしょうか?

まずは、Aperyの秒読みを2秒に固定して、Bonanzaの秒読みの秒数を変化させた時の結果を示します。表の記法は、基本的に上と同じですが、最後に、Aperyの勝利棋譜の平均手数(A)とBonanzaの勝利棋譜の平均手数(B)を追加しています。

  • a02-b02: 132.0 + 0.01660 dR(棋譜数: 991、dR: 305.0、A: 137.1、B: 127.0)
  • a02-b04: 134.4 + 0.03117 dR(棋譜数: 993、dR: 240.4、A: 141.9、B: 126.9)
  • a02-b08: 135.9 + 0.05022 dR(棋譜数: 988、dR: 177.1、A: 144.8、B: 127.0)
  • a02-b16: 136.7 + 0.14255 dR(棋譜数: 987、dR: 80.6、A: 148.2、B: 125.2)

平均手数Mは、自己対局の時に比べておおよそ10手ほど下がり、floodgate棋譜集の結果に近づいてきています。また、Bonanzaの秒読みの秒数を増やすほど、大きくなる傾向が見られます。これは、平均手数AとBの値を見てみると、Bonanzaが強くなるほど、Aperyの勝利棋譜の平均手数Aが大きくなっている一方で、Bonanzaの勝利棋譜の平均手数Bは、僅かに下がる傾向が見えるものの、ほとんど変わっておらず、このAとBの感受性の差が結果的に平均手数M(AとBの平均値)の上昇傾向に反映されていることが分かります。

ここで、問題なのはレート補正項の方です。レート補正項の係数Kは全てプラスの値になっており、また、絶対値も大きく変わっています。これは、レート補正項がまともに機能していないことを意味しています。

この理由は、AとBの値を見れば明らかであり、Aperyが勝つ時には長手数がかかり、Bonanzaが勝つ時には短手数で終わるという系統的な傾向があるためです。AとBを別々に見れば、レート差による変動は平均的には通常のレート補正項と同じ傾向を示しています。

この系統的な傾向は、新旧ソフトの評価関数の違いに由来するものと思われます。Aperyの方が評価関数の精度が高く、大局観に優れているため、長手数の将棋に強くなっており、一方で、大局観で劣るBonanzaは読みの量で勝負して、Aperyの読み抜けを咎めて短手数で勝つ場合が多くなっているのではないかと推測できます。棋士で例えると、Aperyはベテランの強豪棋士、Bonanzaは若手の新鋭棋士と言った感じでしょうか(この例えが妥当であるかは、棋士の方の棋譜も同様に解析して比較しないと分かりませんが)。こういうデータにも、単にレートの上昇だけではないコンピュータ将棋の進化の形跡が伺えます。

次は、Bonanzaの秒読みを8秒に固定して、Aperyの秒読みの秒数を変化させた時の結果です。表の記法は、上表と同じです。

  • b08-a01: 138.4 - 2.03315 dR(棋譜数: 989、dR: 6.7、A: 151.9、B: 124.8)
  • b08-a02: 135.9 + 0.05022 dR(棋譜数: 988、dR: -177.1、A: 144.8、B: 127.0)
  • b08-a04: 133.3 + 0.02247 dR(棋譜数: 994、dR: -304.2、A: 140.2、B: 126.5)
  • b08-a08: 134.1 + 0.00674 dR(棋譜数: 999、dR: -401.7、A: 136.8、B: 131.4)

この場合でも、基本的な傾向は上表と同じになっています。Bonanzaの方を強化しているのか、Aperyの方を強化しているのかの方向性の違いがあるだけです。

上の2つの表において、持ち時間が倍数の関係になっているのは、a02-b02とb08-a08(4倍)、a02-b04とb08-a04(2倍)、b08-a01とa02-b16(2倍)の3つです。

この3つの組み合わせにおいて、それぞれの平均手数を比較してみると、a02-b02とb08-a08の一組を除いて、持ち時間が増えるほど平均手数が減っています。a02-b02とb08-a08の組についても、Aの平均手数は減っており、増えているのはBの平均手数だけですが、ここではレート差が大きいため、Bの平均手数は棋譜数が少なく(それぞれ146局と90局)、あまり信用できる数字ではありません。

自己対局においては、持ち時間が増えるほど平均手数が増える傾向がありましたが、BonanzaとAperyの対局においては、そのような関係性は見られませんでした。このことは、floodgate棋譜集において平均手数の増加が見られていないことと整合しています。もしかすると、持ち時間が増える(もしくはレートが上がる)ほど平均手数が増えるというのは、自己対局に限定された話なのかもしれません。

以上、今回は、様々な連続対局における棋譜データを解析しました。先後の持ち時間/ハード性能に差をつけた対局では、探索の深さやレート差は変化するものの、本質的には自己対局の性質は変わらないということが分かりました。一方で、評価関数の違うソフト同士の対局では、平均手数が、自己対局の時に比べておおよそ10手ほど下がり、floodgate棋譜集の結果に近い値になることが分かりました。その時の平均手数には、ソフトごとに系統的な傾向が存在しており、また、持ち時間との間の正の相関も見られませんでした。平均手数には、評価関数の違いによる“主張”の対立が大きく反映されるようです。

さて、自己対局や様々な連続対局の棋譜データを解析することによって、平均手数についての理解が少し深くなってきました。次回は、改めて、floodgate棋譜集の平均手数の詳細を再解析してみたいと思います。

前回の記事「手数と投了 4:floodgateにおける投了手数」では、floodgate棋譜集の投了手数を解析し、30手以上250手以下、レート差200以内に限定した場合、平均投了手数が約132手となることを示しました。今回は、均質な環境下における自己対局による棋譜データを用いた解析を行います。

用いたソフトは、Bonanza(6.0)とApery(wcsc25_bmi2)です。Bonanzaは代表的な古典ソフトであり、Aperyは比較的新しい現代ソフト(2016年現在)になります。新旧ソフトの比較ができるように選びました。

用いた設定は以下の通りです。持ち時間は無しで秒読みのみとし、256手で引き分けになるようにしています。CPUはi7-4770K、メモリは16GBです。

  • Bonanza(6.0)
  • USI_Hash: 1024
  • USI_Ponder: False
  • Search_Control: Time
  • Limit_Time_Strict: True
  • Limit_Depth: 1
  • Limit_Nodes: 1000
  • Use_Book: True
  • Book_Type: Narrow
  • Resign: 32596
  • Threads: 1
  • Apery(wcsc25_bmi2)
  • apery_wcsc25_bmi2
  • USI_Hash: 1024
  • USI_Ponder: False
  • Best_Book_Move: False
  • Book_File: book/20150503/book.bin
  • Byoyomi_Margin: 500
  • Emergency_Base_Time: 200
  • Emergency_Move_Horizon: 40
  • Emergency_Move_Time: 70
  • Eval_Dir: 20150501
  • Max_Book_Ply: 32767
  • Max_Random_Score_Diff: 0
  • Max_Random_Score_Diff_Ply: 0
  • Max_Threads_per_Split_Point: 5
  • Min_Book_Ply: 32767
  • Min_Book_Score: -180
  • Minimum_Thinking_Time: 1500
  • MultiPV: 1
  • OwnBook: True
  • Skill_Level: 20
  • Slow_Mover: 100
  • Threads: 1
  • Use_Sleeping_Threads: False
  • Write_Synthesized_Eval:False

まずは、Bonanzaで秒読みの秒数を変えた時の結果を示します。各々1000局ずつの対局を行っていますが、今回用いる棋譜は投了終了の棋譜のみです。

  • 1秒: 平均143.3手(棋譜数965、標準偏差28.2)
  • 2秒: 平均145.2手(棋譜数965、標準偏差28.0)
  • 4秒: 平均145.4手(棋譜数958、標準偏差27.8)
  • 8秒: 平均147.9手(棋譜数963、標準偏差27.7)

平均手数は145手程度であり、floodgate棋譜集の約132手を約13手も上回っています。

また、秒読みの秒数が増える(読みが深くなる)と平均手数が大きくなる傾向も見られます。これは、評価関数が同じであることと探索の性質から、互いの読みが深くなる分だけ評価値の変動が抑えられて、結果的に平均手数が伸びたものと推測できます。この推測に基づけば、一般的に探索が深くなるほど、自己対局の平均手数は長くなるものと予測できます。

手数が定跡ファイルに依存している可能性もあるため、Bonanzaの定跡ファイルを宮本定跡改良版3に置き換えた場合も同様にやってみました。

  • 1秒: 平均141.4手(棋譜数976、標準偏差28.4)
  • 2秒: 平均141.8手(棋譜数973、標準偏差29.2)
  • 4秒: 平均142.2手(棋譜数969、標準偏差28.6)
  • 8秒: 平均145.3手(棋譜数968、標準偏差29.1)

この場合には、全体的な傾向は同じですが、平均で約2.8手ほど平均手数が小さくなります。やはり定跡ファイルにより、数手程度は変わるようです。定跡ファイルをさらに厳選すれば、勝率との相関はさておき、平均手数をもっと大きく変えることも可能だと思われます。

次に、Apery(wcsc25_bmi2)の場合の結果を示します。

  • 1秒: 平均141.8手(棋譜数943、標準偏差31.4)
  • 2秒: 平均148.5手(棋譜数948、標準偏差32.1)
  • 4秒: 平均150.1手(棋譜数933、標準偏差32.5)
  • 8秒: 平均153.8手(棋譜数901、標準偏差31.2)

1秒の結果は除き(この他でもAperyの1秒はイレギュラーな結果が多くなっています)、Bonanzaよりも、それぞれ3手以上、大きくなっています。また、秒読みの秒数が増えた時の平均手数の増分もBonanzaより大きくなっています。このデータにおいて、平均手数が増えると投了決着が減っているのは256手ルールのためです。一般的に、平均手数と投了決着の割合との間には負の相関があります。

Aperyは合法手がなくなるまで指す一方で、Bonanzaは詰みの数手前に投了することがあるため、平均手数の差の一部は投了手法の違いによるものですが、秒読みの秒数が増えた時の増分はそれだけでは説明がつきません。長時間のAperyには手数を長引かせる要素があるようですが、それが探索に由来するものなのか、評価関数に由来するものなのか、それとも両者の組み合わせによるものなのかは分かりません。

秒読みの秒数が増えた時の平均手数の増分は、BonanzaでもAperyでも、探索の深さ(秒数2倍で約1手弱ほど深くなる)に対して線形よりもやや大きく、非線形性を示しています。もし、ミニマックス原理に基づいて探索の深さの分だけ決着が先延ばしされるというだけの話であるのならば、この関係性は線形であるはずなのですが、実際にはそうなっていません。これについては仮説も考えられるのですが、それについてはまた別の機会に記したいと思います。

さて、ここでの最大の問題は、全ての状況において、自己対局の平均手数がfloodgate棋譜集の平均手数の約132手を10手以上も大きく上回っているという点です。

この原因としては、自己対局では評価関数が基本的に同じであるため、読み抜けによる決着が起こりにくい(読み抜け自体はあっても、相手がそれを咎めることができない)ということが考えられます。また、評価関数の違いによる“主張”の対立も起こらないため、均衡局面が長く続きやすいということも要因として考えられます。

以上、今回は自己対局による棋譜データを用いた解析の結果を示しました。自己対局の平均手数は、ソフトの種類、定跡ファイル、探索の深さ等に依存しており、それぞれ数手以上は変動することが分かりました。特に、探索の深さについては非線形な正の相関があるようです。また、自己対局の平均手数は、ソフトの新旧や棋力によらず、floodgate棋譜集の平均手数を10手以上も上回ることが分かりました。

自己対局における平均手数の大幅な上昇の原因を解析するには、もっと様々に条件を変えた場合の実験を行ってみる必要があります。次回は、その結果を示します。

-------------------

追記:技巧による自己対局(2017年1月26日)

設定は以下の通りです。

  • 技巧(20160606)
  • gikou_win_20160606
  • USI_Hash: 1024
  • USI_Ponder: False
  • BookMaxPly: 50
  • ByoyomiMargin: 100
  • DrawScore: 0
  • FischerMargin: 12000
  • MinBookScoreForBlack: 0
  • MinBookScoreForWhite: -180
  • MinThinkingTime: 1000
  • MultiPV: 1
  • NarrowBook: False
  • OwnBook: True
  • SuddenDeathMargin: 60
  • Threads: 1
  • TinyBook: False

技巧(20160606)による1000局の自己対局の投了手数は以下のようになりました。

  • 1秒: 平均162.7手(棋譜数874、標準偏差32.8)
  • 2秒: 平均167.0手(棋譜数880、標準偏差31.3)
  • 4秒: 平均172.2手(棋譜数834、標準偏差33.2)

平均手数は160手を超えており、思考時間を増やすとさらに大きくなっています。このことから、技巧の読み筋が安定しており、長く局面を均衡に保っていることが分かります。

また、自己対局は256手ルールで行っていますが、平均手数の大幅な上昇により、256手を超える対局も1割を超えています。

このページのトップヘ