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

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

手数と投了 7:floodgateにおける投了手数 改」では、floodgate棋譜集における投了手数の詳細を解析し、平均手数(読みの類似度)とレートとの関係を論じました。ここでは、さらに詳細に対局者毎に関係を整理してみたいと思います。

具体的には、floodgate棋譜集(2012~2016年版)から30手以上230手以下の投了決着棋譜に限定し、さらにレート差200以内で勝ち数と負け数が共に50以上ある対局者の組み合わせを選出しました。floodgate棋譜集については以下をご参照ください。

各組合せにおける平均手数Tから、読みの類似度Yを

\[Y = \frac{T - M}{M}\]

と定義します。ここで、Mは平均手数の平均に対応する量ですが、以下では、

\[M = 130\]

としています。また、平均手数Tは、勝ち棋譜と負け棋譜で別々に算出して、その算術平均を取ることで勝率補正を行っています(参照:「floodgateにおける手数とレート差:棋士との違いは?」)。この定義では、Yの値が正で大きい程、読みが類似しているということになり、負の値になると平均よりも読みが異なっているということになります。

誤差の目安としては、1局の標準偏差を約30手とすると、対局数nの標準誤差SEは

\[\text{SE} = \frac{30}{z \sqrt{n}} \approx \frac{0.23}{\sqrt{n}} \]

程度と見積もれます。100局なら0.023程度で、1000局なら0.007程度です。ただし、平均手数は投了設定に依存するため、読みの類似度としては投了設定が系統誤差を生むことがあり、注意が必要になります。

該当する対局者の組み合わせ毎に、対局者の平均レートと読みの類似度Yとの関係を表示したのが下図です。棋譜集の年毎に点の色を変えています。また、オレンジ色の線と点は、それぞれレート500刻み区間の平均値を表しています。

mr-ruijido

上図を見ると、対局者毎に分けて表示を行っても、全体的な傾向としては、「手数と投了 7:floodgateにおける投了手数 改」の記事の結果と同様の構造を示していることが分かります。

さらに、詳細な対局者リストを記事の最後に付記します。

リストを眺めると、2013年版の「amatyan」と「Titanda_L」の組み合わせは突出して類似度が高く、同じソフトを動かしていたのではないかと推測されます。その他の類似度の高い組み合わせは、名前を見る限り、別のソフト同士の組み合わせが多く、平均手数が長いからと言って必ずしも同一ソフトとは認定できないことが分かります。

一方で、類似度の低い組み合わせを見ると、名前から同じソフトだと思われる組み合わせはほとんど見つからず、平均手数が短い場合には同一ソフトではないだろうということは言えるかもしれません。

ただし、所々に解釈が難しい結果があります。

例えば、2012年の「gps_l (171) - gps_ (277)」は名前からしてgps同士の対局ですが、類似度は-0.072とやや低くなっています。対局数も多いので偶然とも考えづらく、「gps_」は従来のgpsとは異なる動作をしていたのではないかと考えられます。勝敗毎に類似度の内訳を見てみると、「gps_」が負けた時に-0.116と非常に低い値になっているため(※レート上位者が負ける時は本来は手数が伸びる傾向がある)、「gps_」の投了設定が低くなっていたか、予想外の進行で負けるような何かがプログラムにあったのだと思われます。

また、2013年の「gps_l (148) - bona6.0_norm (176)」は-0.097、2014年の「gps_l (128) - bonanza6.0 (365)」は-0.130と低い類似度になっていますが、一方で、2013年の「gps_l (493) - Bonanza6.0-Opteron250-2c (1032)」は+0.071、2014年の「gps_l (113) - Bonanza6.0-Opteron250-2c (229)」は+0.058と正の類似度になっており、もしどちらも「gps_l」とBonanza6.0との対局だとすると、整合的ではありません。これも勝敗毎の内訳を見てみると、Bonanza6.0側が勝った場合には大きな差はなく、負けた場合にのみ平均40手程度の大きな差がついています。もしかすると「bona6.0_norm」「bonanza6.0」の投了設定が非常に低く設定されていたのかもしれません。

また、2013年の「BlunderXX_4c (231) - BlunderXX_Q6700_2c 348)」は同じソフト同士の対局だと思われますが、類似度は+0.003と高くありません。こちらは勝敗毎の内訳を見ても不自然なところはないため、BlunderXX自体の自己対局における平均手数が短いか、両者共に投了設定を低くしていたかのどちらかだと思われます。

この辺は、平均手数しか見ていないことの限界でしょう。

以上、今回は、floodgate棋譜集(2012~2016年版)から、平均手数(読みの類似度)とレートとの関係を対局者毎に整理しました。結果として、投了設定等の系統誤差により機能していないと思われるデータも散見されるものの、全体的には平均手数から読みの類似度が推測できることが確認できました。

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

付記:floodgateにおける読みの類似度リスト(2012~2016年版)

読みの類似度: 低レート対局者 (勝利数) - 高レート対局者 (勝利数)

2012年

  • 平均レート2500以下
+0.121:         gps_normal ( 51) -                simk_test ( 82)
+0.107:               mcts (269) -               gps_normal (327)
+0.098:         gps_normal (195) - sakurapyon-2012-0.015kpp (281)
+0.066:         gps_normal (125) -                     mumu (172)
+0.061:         Kakinoki-Z (358) -               gps_normal (510)
+0.060:         gps_normal ( 57) - sakurapyon-2012-0.022kpp (134)
+0.057:         gps_normal (195) -            Kakinoki-Test (183)
+0.054:                YSS ( 55) -                    bingo ( 53)
+0.046:         gps_normal ( 67) -               kuma2_test (119)
+0.041:      Kakinoki-Test ( 51) -                simk_test ( 56)
+0.021:               mumu ( 55) -                    bingo ( 58)
+0.020:         Kakinoki-Z ( 78) -                     mumu ( 68)
+0.019:              bingo (147) -                    gps_l (524)
+0.016:         Kakinoki-Z (142) -            Kakinoki-Test (159)
+0.012:         gps_normal (203) -                    bingo (408)
+0.003:              bingo (210) -             BlunderXX_4c (248)
-0.003:      Kakinoki-Test ( 65) -                    bingo (108)
-0.005:       BlunderXX_4c (676) -                    gps_l (589)
-0.028:         Kakinoki-Z ( 55) -               kuma2_test ( 95)
-0.073:         gps_normal ( 51) -          Sunfish1.20_X6t ( 69)
  • 平均レート2500~3000
+0.127:      co-danaka-kun ( 61) -           ponanza-990XEE ( 75)
+0.009:          Titanda_L ( 69) -             PuppetMaster (135)
+0.002:   BlunderXX-2820QM ( 64) -                Titanda_L ( 53)
-0.027:          Titanda_L (136) -         Keep_firmness1.4 (168)
-0.050:          Titanda_L (112) -         Keep_firmness1.3 (136)
-0.054:              gps_l (102) -                     Keep (130)
-0.055:   BlunderXX-2820QM ( 50) -         Keep_firmness1.3 ( 78)
-0.057: Gekisashi_X5590_1c ( 50) -         Keep_firmness1.3 ( 94)
-0.059:              gps_l (215) -                  Bonanza (454)
-0.069: Gekisashi_X5590_1c ( 63) -                Titanda_L ( 73)
-0.072:              gps_l (171) -                     gps_ (277)
-0.073: Gekisashi_X5590_1c ( 88) -              bona_Sinobu (113)
-0.133:              gps_l (203) -                     poor (352)
-0.148:       BlunderXX_4c (114) -                     gps_ (122)
-0.186:               poor (154) -                  Bonanza (204)
-0.210:       BlunderXX_4c ( 57) -                     poor (180)

2013年

  • 平均レート2500以下
+0.133:                   gps_normal (141) -                      rgm_008 (128)
+0.112:                      vps_mc2 (106) -                   gps_normal (119)
+0.102:                   gps_normal (328) -             Sunfish3-trial24 (427)
+0.079:                      rgm_009 ( 65) -                   gps_normal ( 79)
+0.070:                   gps_normal (278) -                   Kakinoki-Z (318)
+0.053:                   gps_normal (453) -               sakurapyon_dti (727)
+0.053:                   gps_normal (138) -              sakurapyon_2013 (301)
+0.036:               sakurapyon_dti (157) -                sakurapyon_4G (659)
+0.030:                   gps_normal (300) -                sakurapyon_4G (922)
+0.025:              sakurapyon_test ( 91) -                   gps_normal (200)
-0.002:             Sunfish3-trial24 ( 67) -                sakurapyon_4G (292)
-0.009:                   Kakinoki-Z ( 70) -              sakurapyon_2013 ( 89)
-0.012:             Sunfish3-trial24 ( 55) -              sakurapyon_2013 (176)
-0.015:             Sunfish3-trial24 (252) -               sakurapyon_dti (269)
-0.024:                      rgm_008 ( 62) -                sakurapyon_4G (148)
-0.044:                      vps_mc2 ( 75) -               sakurapyon_dti (123)
  • 平均レート2500~3000
+0.071:                        gps_l (493) -    Bonanza6.0-Opteron250-2c (1032)
+0.068:                        ponyo (117) -    Bonanza6.0-Opteron250-2c ( 177)
+0.032:     Bonanza6.0-Opteron250-2c (461) -          BlunderXX_Q6700_2c ( 766)
+0.032:     Bonanza6.0-Opteron250-2c (226) -                BlunderXX_4c ( 289)
+0.017:                        gps_l (138) -                       ponyo ( 213)
+0.007:                        kato2 ( 65) -    Bonanza6.0-Opteron250-2c (  87)
+0.003:                 BlunderXX_4c (231) -          BlunderXX_Q6700_2c ( 348)
+0.002:                        gps_l (179) -                BlunderXX_4c ( 400)
-0.019:                        ponyo ( 65) -          BlunderXX_Q6700_2c ( 122)
-0.020:                        ponyo (126) -                BlunderXX_4c ( 181)
-0.022:                        gps_l (130) -                       kato2 ( 169)
-0.025:           BlunderXX_Q6700_2c (142) -          Gekisashi_X5590_1c ( 277)
-0.059:     Bonanza6.0-Opteron250-2c ( 71) -                      Flummi ( 113)
-0.077:                        kato2 ( 93) -          BlunderXX_Q6700_2c ( 211)
-0.078:                        kato2 ( 67) -                BlunderXX_4c (  79)
-0.097:                        gps_l (148) -                bona6.0_norm ( 176)
  • 平均レート3000以上
+0.219:                      amatyan ( 59) -                    Titanda_L (103)
+0.156:                    Titanda_L (151) -               ponanza-990XEE (411)
+0.111:                      amatyan ( 52) - NineDayFever_XeonE5-2690_16c (129)
+0.107:                   jidaiokure ( 53) -                    Titanda_L ( 76)
+0.098:           Gekisashi_X5590_7c (103) -               ponanza-990XEE (100)
+0.085:                 PuppetMaster (137) -               ponanza-990XEE (120)
+0.083:                    Titanda_L (254) - NineDayFever_XeonE5-2690_16c (566)
+0.067:               gps_f_testbook ( 73) -                 PuppetMaster ( 90)
+0.067: NineDayFever_XeonE5-2690_16c (172) -               ponanza-990XEE (217)
+0.019:                 PuppetMaster (120) -               maybe_tomorrow (161)
+0.014:            tsutsukana_1303p3 ( 52) - NineDayFever_XeonE5-2690_16c ( 73)
+0.003:                 PuppetMaster (206) -           Gekisashi_X5590_7c (252)
-0.005:           Gekisashi_X5590_1c (192) -                 PuppetMaster (430)
-0.006: NineDayFever_XeonE5-2690_16c ( 92) -                gpsfish_x5680 ( 90)
-0.070:             BlunderXX-WCSC23 ( 64) -                gpsfish_x5680 (103)

2014年

  • 平均レート2500以下
+0.103:               gps_normal (121) -             Bonanza_6.0_RPi ( 204)
+0.065:               gps_normal (842) -                  Kakinoki-Z (1183)
+0.059:               gps_normal (233) -              sakurapyon_vps ( 672)
+0.046:               gps_normal (152) -               sakurapyon_4G ( 458)
+0.034:               gps_normal (121) -      bonanza_on_RaspberryPi ( 153)
+0.020:               Kakinoki-Z (279) -              sakurapyon_vps ( 384)
+0.008:               Kakinoki-Z (116) -               sakurapyon_4G ( 246)
-0.016:          Bonanza_6.0_RPi (105) -                  Kakinoki-Z ( 129)
-0.032:          Bonanza_6.0_RPi ( 67) -              sakurapyon_vps ( 125)
  • 平均レート2500~3000
+0.068:     GPSShogi_AMD_C-60_2c ( 95) -                        gps_l ( 67)
+0.058:                    gps_l (113) -     Bonanza6.0-Opteron250-2c (229)
-0.033:                    gps_l (179) -                        kato2 (471)
-0.068: Bonanza6.0-Opteron250-2c ( 69) -                      Flummi2 (168)
-0.087:        gpsfish_normal_1c ( 62) -                     KeepTheF ( 96)
-0.093:                  flummi2 ( 79) -                        kato2 (136)
-0.099:                    gps_l ( 64) -                      flummi2 (217)
-0.107:                    gps_l (123) -                       Flummi (272)
-0.128:                    kato2 ( 81) -                      Flummi2 (112)
-0.130:                    gps_l (128) -                   bonanza6.0 (365)
  • 平均レート3000以上
+0.160:        AWAKE_i7_2620M_2c (121) -        gpsfish_XeonX5680_12c ( 97)
+0.132:    gpsfish_XeonX5680_12c ( 69) -               ponanza-990XEE (128)
+0.130:                Titanda_L ( 70) -               Apery_2700K_4c ( 77)
+0.128:                Titanda_L (253) -        gpsfish_XeonX5680_12c (870)
+0.105:            ponax_i7_3770 ( 54) -        gpsfish_XeonX5680_12c ( 66)
+0.089:    gpsfish_XeonX5680_12c ( 77) - NineDayFever_XeonE5-2690_16c (277)
+0.052:                CrazyKing (135) -        gpsfish_XeonX5680_12c (220)
+0.039:                Titanda_L (101) -                    CrazyKing (142)
-0.035:                CrazyKing ( 60) - NineDayFever_XeonE5-2690_16c (158)

2015年

  • 平均レート2500以下
+0.060:                      acop ( 69) -                       ddd ( 58)
  • 平均レート2500~3000
+0.051:                NewMorning (123) -                  Kingfish (136)
-0.059:                     kato2 ( 90) -         gpsfish_normal_1c (238)
-0.060:         gpsfish_normal_1c ( 61) -                   suzuran ( 65)
-0.069:                NewMorning (322) -         gpsfish_normal_1c (683)
-0.071:                  Kingfish (182) -         gpsfish_normal_1c (298)
-0.110:                     gps_l ( 87) -                   flummi2 (233)
-0.120:                   flummi2 ( 51) -                     kato2 ( 72)
  • 平均レート3000以上
+0.134:                     stap5 ( 63) - gpsfish_XeonX5680_12c_bid (130)
+0.113: gpsfish_XeonX5680_12c_bid ( 87) -                      ycas ( 78)
+0.104:             tanuki-_5500U ( 97) - gpsfish_XeonX5680_12c_bid (157)
+0.099:                 Titanda_L ( 64) -     gpsfish_XeonX5680_12c (109)
+0.093: gpsfish_XeonX5680_12c_bid ( 58) -                      AUJK ( 61)
+0.092:                 Titanda_L ( 54) -              gpsfish_mini ( 65)
+0.081: gpsfish_XeonX5680_12c_bid ( 68) -             Apery_i7-5820 (136)
+0.077:            Apery_20151016 ( 53) - gpsfish_XeonX5680_12c_bid ( 60)

2016年

  • 平均レート2500以下
+0.008:                     gps_l ( 50) -                   aggressor (104)
  • 平均レート2500~3000
+0.019:         gpsfish_normal_1c (170) -        Gc_Test_Cortex-A7_2c (249)
+0.006:                 Starbound ( 59) - Apery32_tmmod_3735F-4thread (109)
-0.013:                 Ydebug185 ( 72) -           gpsfish_normal_1c ( 60)
-0.017:         gpsfish_normal_1c (200) -                   Starbound (207)
-0.097:         gpsfish_normal_1c (103) - Apery32_tmmod_3735F-4thread (151)
  • 平均レート3000以上
+0.116:    nanoTwig_FX9590_4.7GHz ( 94) -   gpsfish_XeonX5680_12c_bid (177)
+0.111: gpsfish_XeonX5680_12c_bid ( 72) -                        ANSM (164)

ブログ開始時に最初に立ち上げた本シリーズですが、思いの外、長期連載になってしまいました。

手数という簡単な情報も、調べていくと様々な将棋の性質と関係していることが分かり、話が拡がると同時に、少しずつ理解が深まってきた感じがします。

最初の「手数と投了 2:棋士の投了手数」では、棋士棋譜集の手数分布について整理しました。特に、外れデータや規格化について、注意深く議論を行いました。

続いて、「手数と投了 3:棋士の未投了率における長手数テールと冪乗則」では、棋士棋譜集の手数分布の長手数部分に冪乗則が現れることを示しました。この原因は未だに謎です。256手ルールだと長手数部分は消えてしまうため、コンピュータ将棋での検証も容易ではないと思われます。

次に、「手数と投了 4:floodgateにおける投了手数」では、floodgate棋譜集の手数分布を整理して、棋士棋譜集との平均手数の違いを明らかにしました。しかしながら、floodgateの平均手数は今後も大きく変わりそうです。

また、「手数と投了 5:自己対局における投了手数」では、BonanzaとAperyの自己対局棋譜における平均手数を解析し、自己対局においては平均手数が大幅に上昇することを示しました。また同時に、思考時間の増加により、平均手数が伸びるという傾向も示しました。

さらに、「手数と投了 6:様々な連続対局における投了手数」では、BonanzaとAperyの様々な連続対局における平均手数を解析し、平均手数が読みの類似性を反映していることを明らかにしました。

この新たな知見に基づき、「手数と投了 7:floodgateにおける投了手数 改」では、改めてfloodgate棋譜集の平均手数の詳細を再解析し、平均手数とレートとの間の詳細な関係構造を明らかにしました。

手数については、まだまだ他に論点もあるでしょうし、また、本シリーズから派生したコラム記事も多数ありますが、区切りもいいところですので、本シリーズは一旦ここで締めたいと思います。

なお、当初予定していた投了条件の評価値閾値の話は、評価値と勝率との関係から議論した方がよいと思い直しましたので、改めて別のところで論じたいと思います。

前回の記事「手数と投了 6:様々な連続対局における投了手数」では、様々な連続対局における棋譜データを解析し、平均手数にはソフト間の“主張”の対立が反映されていることを示しました。すなわち、読み筋が合う(読みの類似性が高い)程、平均手数が長くなる傾向があるということです。今回は、その点を踏まえて、改めてfloodgate棋譜集の平均手数の詳細を再解析してみたいと思います。

今回、特に注目するのは、floodgate棋譜集(2012~2016年版)における平均手数(読みの類似度)とレート(両対局者の平均レート)との関係です。この関係を調べることで、全体の平均値からは見えない詳細な関係構造が明らかになり、また、2016年版における平均手数の大幅な上昇の原因も推測できるようになります。

手法としては、両対局者の平均レートをレート100刻みの区間に分割して(2000~2100、2100~2200等)、区間内の平均手数とレートの平均を算出します。採用するのは、30~230手まで、レート差200以内の対局に限ります。

2012~2015年版の結果を下図に示します。区間内のデータ数が10個以上の結果のみを黒点で表示し、また、レート500刻みの区間における平均を青線と青字で示しています。

mrate-tesuu_m

各点はばらついているものの、500刻みの区間の平均で見ると、大まかな傾向があることが分かります。2000~2500の区間では平均よりやや高めの平均手数であり、2500~3000の区間では平均手数が低くなり、3000~3500の区間では平均手数が高くなります。

2000~2500の区間は、弱くしたGPSやBonanza系統のソフトが多い領域であり、これらのソフトの読みの類似度が比較的に高いことから、少し高めの平均手数になっているようです。

2500~3000の区間は、種類の豊富なソフトが混在している領域であり、全体的に読みの類似度が下がり、平均手数が低くなっています。ソフトの“進化論”として眺めると、この領域は様々な手法が試行されている混雑期だと言えるかもしれません。

3000~3500の区間になると、読みの類似度が上がり、平均手数が上昇します。これは必ずしも同系統のソフトが増えているというわけではなく、異なるソフト間の読みの類似度も向上しているようです。この領域においては、現在の枠組みにおける手法の可能性がやや煮詰まってきているのかもしれません。

これらの傾向は、下図の2016年版の結果でも明確に現れています。

mrate-tesuu_m_2016

特に、3000~3500の区間の平均手数が大きく向上し、また、新しく出現した3500~4000の区間の平均手数はさらに増えています。そして、これらの区間の棋譜が増えたことが、全体の平均手数の向上の原因となっています。

この結果は、同系統のオープンソースソフト(Apery系、技巧)の放流が増えていることを差し引いても、レート上昇と読みの類似度との間に正の相関があることを示唆しています。この相関関係は“ある枠組みの中で最適化を目指していくと手法の詳細に依らずに類似性が増していく現象”として解釈できるかもしれません。

以上、今回は、floodgate棋譜集の平均手数の詳細を再解析しました。平均手数(読みの類似度)は対局者のレートに依存した詳細な構造を持っており、特にレート3000以上の領域においてはレート上昇と読みの類似度との間に正の相関が見られることが分かりました。

もしこの原因が手法の最適化にあるのだとすれば、今後もこの傾向は進んでいくと思われます。256手ルールの改善等も必要になるかもしれません。また、もしかすると新たな枠組みが開発されて、再び平均手数が大きく下がる混雑期に戻るという可能性もあります。未来のことは誰にも分かりません。

この論稿シリーズは一旦ここで締めたいと思います。次の記事でまとめます。

このページのトップヘ