前回の記事「手数と投了 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割を超えています。