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

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

処理方法は「floodgateの棋譜整理とレート算出:floodgate棋譜集(2012年版)」と同じです。ただし、floodgateの仕様変更に合わせて、レートの原点をgps_normalを2150とするものから、gpsfish_normal_1cを2800とするものに変更しました。また、2016年4月11日より、持ち時間が、10分+秒読み10秒(1秒未満切捨て、256手引き分け)から、10分+10秒加算(フィッシャークロックルール)に変更され、さらに、2016年12月11日より、5分+10秒加算に変更されています。

収録棋譜数は24622、その内、投了決着が22795、千日手が385、その他が1442となっています。

対局数がやや少ないとは言え、レート4000を超えるソフト

  • ukamuse_SDT4_2697v4_36c(43局、R4137)

が出現しました(ハードがE5-2697V4だとすると、少し高めに出ている気はしますが)。

また、スマートフォンと思われるソフト

  • Gc_at_Cortex-A53_4c(R3074)
  • test_cortex-A53_4c(R3065)
  • G_512_Cortex-A7_2c(R2878)
  • Gc_Test_Cortex-A7_2c(R2834)

やタブレットと思われるソフト

  • Gikou32_z8300tablet-4c(R3060)
  • Apery32_tmmod_z8300-4c(R2930)

も高いレートを記録しています。

以下、最初に棋譜数順のリスト、続いてレート順のリストを記します。

最尤法を用いたレート推定の結果は「floodgate棋譜集レートの最尤法との比較一覧(2012~2016年版)」の記事をご覧ください。

------------------
棋譜数順位. 名前 (棋譜数): レート平均 ±標準偏差
  1. gpsfish_normal_1c                ( 7051): R2800 ±37
  2. gps_l                            ( 5356): R2323 ±36
  3. gpsfish_XeonX5680_12c_bid        ( 2158): R3268 ±38
  4. Starbound                        ( 1623): R2818 ±36
  5. nanoTwig_FX9590_4.7GHz           ( 1519): R3087 ±37
  6. Gc_Test_Cortex-A7_2c             ( 1025): R2834 ±33
  7. KifuWarabe_i7_WCSC26             ( 1014): R2543 ±37
  8. ANSM                             (  956): R3441 ±34
  9. Titanda_L                        (  897): R3381 ±37
 10. yanetest                         (  793): R3301 ±31
 11. Apery32_tmmod_3735F-4thread      (  713): R2887 ±34
 12. jsus                             (  631): R3555 ±33
 13. Ydebug185                        (  598): R2772 ±35
 14. nanopery_FX9590_4.7GHz_test      (  542): R3083 ±33
 15. dm                               (  485): R3374 ±32
 16. KifuWarabe                       (  480): R2832 ±33
 17. komasan                          (  420): R3422 ±32
 18. Apery_Twig_i7-4510U              (  402): R3197 ±31
 19. hima_for_miryoku                 (  399): R2373 ±29
 20. Apery32_tmmod_z8300-4c           (  386): R2930 ±31
 21. usapyon2_slave_USEAVX_FX9590_8t  (  362): R3361 ±31
 22. CRAZYKING                        (  353): R3119 ±32
 23. yygiko-2c                        (  333): R3314 ±28
 24. gpsfish_8n8c                     (  328): R2870 ±27
 25. KifuWarabe_NotePC                (  320): R2702 ±29
 26. Tomabechi                        (  310): R3453 ±28
 27. Gc_at_Cortex-A53_4c              (  274): R3074 ±20
 28. aggressor                        (  253): R2444 ±26
 29. GoneuraOu_i7-4770K               (  248): R3301 ±27
 30. Gikou_20160606_1c_3s             (  246): R2884 ±23
 31. yomita_6c                        (  242): R3248 ±26
 32. Adad                             (  242): R3444 ±26
 33. G_512_Cortex-A7_2c               (  241): R2878 ±23
 34. SILENT_MAJORITY_i7-3517U         (  238): R3330 ±24
 35. 6.0bookKai_4700MQ-4cHT4t         (  236): R2672 ±25
 36. Bonanza_6.1.2_core2duo_test      (  227): R3567 ±24
 37. Apery_WCSC26_0911_1c             (  221): R3059 ±20
 38. Azul_abnormalOu                  (  217): R3657 ±24
 39. nanopery_FX9590_4.7GHz_4t        (  216): R3079 ±25
 40. 6sec_1c_Rtest_G                  (  215): R3026 ±23
 41. SILENT_MAJORITY_6700K            (  214): R3446 ±24
 42. Gikou_20160606_1c                (  206): R3137 ±21
 43. SILENT_MAJORITY_i7-4510U         (  201): R3387 ±23
 44. YaneClaTce_i5                    (  201): R2966 ±19
 45. apery_twig_sdt3_duo3.2_oc        (  197): R3250 ±24
 46. YssF_6t_x1                       (  192): R3059 ±24
 47. kosotto                          (  192): R2959 ±24
 48. QWERTY                           (  185): R3342 ±25
 49. gikou-i5-5200u                   (  177): R3261 ±20
 50. BonanzaFeliz0.0MYU               (  174): R2420 ±22
 51. Gikou-5820k                      (  171): R3546 ±23
 52. NanohaSDT4                       (  170): R3113 ±18
 53. May                              (  164): R3471 ±19
 54. 2c_Rtest_G                       (  161): R3258 ±20
 55. Gikou-980X                       (  161): R3443 ±22
 56. sayapery_4c_4790K                (  159): R3168 ±23
 57. SILENT_MAJORITY_2c               (  157): R3333 ±16
 58. smmpv-1c                         (  156): R3082 ±18
 59. Apery_WCSC26_i7-3517U            (  153): R3117 ±15
 60. nozomi_i7-4510U                  (  152): R3173 ±21
 61. LL                               (  151): R3364 ±23
 62. Gikou_deth10                     (  149): R2445 ±20
 63. usapyon2_slave_TWIG_1t           (  148): R2800 ±24
 64. Celsius                          (  148): R3330 ±17
 65. gpsfish_0414                     (  145): R3118 ±21
 66. Gikou_6700K                      (  143): R3554 ±18
 67. Saya_chan0107-4iMYU              (  139): R2564 ±16
 68. komadoku_plus_kkp_6c             (  131): R3057 ±19
 69. UP2S                             (  128): R3445 ±18
 70. Gekisashi_X5590_7c               (  124): R3280 ±17
 71. moonlight_ray_04                 (  123): R3364 ±19
 72. sinbo                            (  120): R3390 ±15
 73. hamu                             (  120): R3595 ±15
 74. YSS                              (  120): R2219 ±14
 75. yomita_dynamic_margin            (  117): R3507 ±15
 76. usapyon2_slave_TWIG              (  117): R3003 ±18
 77. nozomi_i7-4790                   (  117): R3443 ±14
 78. atsm                             (  112): R3560 ±11
 79. Gikou_6950XEE                    (  112): R3680 ±11
 80. Tsukajumi                        (  111): R3094 ±17
 81. SM-980X                          (  108): R3341 ±16
 82. TvT                              (  107): R3304 ±16
 83. usapyon2dash-withBUG             (  107): R3212 ±14
 84. SILENT_MAJORITY_Kai-3517U        (  107): R3405 ±10
 85. BrilliantDisguise                (  107): R2987 ±17
 86. Celsius_0.2.2                    (  106): R3018 ±15
 87. OkaraManju                       (  105): R2747 ±14
 88. nozomi_4790K                     (  105): R3264 ±13
 89. orange2_AWS-t2.micro_YClassicTce (  105): R2695 ±13
 90. ponderman                        (  103): R3397 ±14
 91. Gikou32_z8300tablet-4c           (  101): R3060 ±11
 92. Gikou_2016_i7-3517U              (  100): R3373 ±14
 93. KBTIT                            (  100): R3271 ±16
 94. SILENT_WHALE                     (  100): R3373 ±12
 95. ShootingStar                     (   99): R2974 ±11
 96. nanoha_test                      (   97): R2743 ±17
 97. MeijinCobra_WCSC26               (   97): R2682 ±14
 98. SensitiveTraining                (   97): R2846 ±17
 99. TAKUYA                           (   95): R3321 ±15
100. SM-i5-5200u                      (   92): R3250 ±13
101. Okara20XX                        (   90): R2584 ±9.5
102. NanohaWCSC26                     (   90): R2991 ±8.3
103. nozomi_i5                        (   90): R3326 ±14
104. HurricaneVolt                    (   89): R2914 ±16
105. YaneuraOu_classic-tce_4790K      (   89): R3169 ±13
106. TelegraphRoad                    (   89): R2919 ±16
107. Gekisashi_X5590_1c               (   86): R3055 ±12
108. Bonanza6.0_1c_X                  (   85): R2408 ±12
109. Apery_5820K                      (   85): R3395 ±14
110. Starwheel                        (   83): R2816 ±14
111. gikou_win_20160606_i7-2600K      (   82): R3378 ±11
112. SILENT_HIRAOKA_20160803_2700K    (   82): R3522 ±13
113. ajiva                            (   80): R3424 ±13
114. SILENT_HIRAOKA_20160917_2700K    (   80): R3474 ±7.6
115. SILENT_MAJORITY_6950XEE          (   80): R3507 ±13
116. Apery_twig_i7_6700K              (   79): R3239 ±12
117. Saya_chan_WCSC25ver              (   78): R2894 ±14
118. bonanza6.0                       (   77): R2776 ±11
119. celery1_YCT                      (   77): R2731 ±9.2
120. YaneuraOuSimple                  (   77): R3534 ±13
121. Gikou_i3_5010U                   (   77): R3230 ±12
122. test_cortex-A53_4c               (   76): R3065 ±7.8
123. AperyTwig_FX9590                 (   76): R3249 ±11
124. orange_AWS-t2.micro_GPSfish      (   76): R2435 ±13
125. max                              (   74): R3085 ±11
126. SILENT_HIRAOKA_20160930_2700K    (   74): R3470 ±11
127. Renovate                         (   74): R3621 ±10
128. MAJO_6700HQ_160917               (   73): R3594 ±8.9
129. yocvp13mk2                       (   71): R3125 ±13
130. Gift                             (   71): R2765 ±11
131. Rolling                          (   71): R2906 ±13
132. apery-wcsc26-1c                  (   71): R2997 ±10
133. Blunder_6700HQ                   (   70): R2647 ±8.4
134. MAJO_1.2_161007_6700HQ           (   70): R3733 ±4.3
135. YaneuraOu-2016-Mid_6950X         (   69): R3347 ±11
136. Celsius0.2.0                     (   67): R2770 ±13
137. SolitaryWave                     (   67): R2935 ±11
138. SM_newEval_test                  (   64): R3855 ±4.6
139. WeddingSong                      (   64): R2972 ±10
140. TMOQ_64bit                       (   63): R2807 ±11
141. MAJO_160824_6950X                (   63): R3837 ±2.7
142. Apery_WC26_6950XEE               (   63): R3359 ±9.1
143. Celsius0.0.9                     (   62): R2645 ±10
144. GameoverZeus                     (   60): R3568 ±8.4
145. Apery-160917_6700HQ              (   59): R3350 ±9.6
146. s1510009                         (   59): R2372 ±9.3
147. Gikou_AperyEvalMix_i5-3317U      (   58): R3231 ±9.6
148. Gikou_AperyEvalMix_SurfacePro    (   58): R3177 ±5.8
149. ukamuse_6700K                    (   56): R3691 ±6.2
150. Nozomi_6950XEE                   (   56): R3453 ±8
151. SILENT_MAJORITY_4770K            (   56): R3373 ±5.4
152. GravityJet                       (   56): R2938 ±9.8
153. GradientWind                     (   55): R3017 ±10
154. att                              (   55): R2978 ±10
155. Bonafish_0.42                    (   54): R3237 ±10
156. Bonanza6.0_1c_systern            (   53): R2343 ±10
157. Aqours                           (   53): R3570 ±6.8
158. Gikou_20160606_i7-4510U          (   53): R3286 ±7
159. yomita_i7-6700HQ                 (   53): R3335 ±9.4
160. Apery-160908_6700HQ              (   51): R3356 ±5.4
161. MAJO-1.2_AG1.13_6950X            (   50): R3828 ±4.6
162. Apery_Kai_1.67-3517U             (   48): R3330 ±6.2
163. METEORA                          (   48): R3668 ±8.5
164. piyo_lv6_iphone6s                (   46): R1967 ±3.6
165. Yomita_SDT4_6700HQ               (   45): R3383 ±6.9
166. ukamuse_SDT4_2697v4_36c          (   43): R4137 ±8.1
167. Apery_Cus_6950XEE                (   37): R3709 ±2.8
168. Yomita_1.83_6700HQ               (   36): R3443 ±3.4
169. YaneuraOu_Kai_6950X              (   34): R3653 ±4.3
170. ukamuse_2c                       (   31): R3588 ±3.1
171. YaneuraOu_Xeon_E5_2698_v4_40c    (   27): R3541 ±3.9
------------------
------------------
レート順位. 名前 (棋譜数): レート平均 ±標準偏差
  1. ukamuse_SDT4_2697v4_36c          (   43): R4137 ±8.1
  2. SM_newEval_test                  (   64): R3855 ±4.6
  3. MAJO_160824_6950X                (   63): R3837 ±2.7
  4. MAJO-1.2_AG1.13_6950X            (   50): R3828 ±4.6
  5. MAJO_1.2_161007_6700HQ           (   70): R3733 ±4.3
  6. Apery_Cus_6950XEE                (   37): R3709 ±2.8
  7. ukamuse_6700K                    (   56): R3691 ±6.2
  8. Gikou_6950XEE                    (  112): R3680 ±11
  9. METEORA                          (   48): R3668 ±8.5
 10. Azul_abnormalOu                  (  217): R3657 ±24
 11. YaneuraOu_Kai_6950X              (   34): R3653 ±4.3
 12. Renovate                         (   74): R3621 ±10
 13. hamu                             (  120): R3595 ±15
 14. MAJO_6700HQ_160917               (   73): R3594 ±8.9
 15. ukamuse_2c                       (   31): R3588 ±3.1
 16. Aqours                           (   53): R3570 ±6.8
 17. GameoverZeus                     (   60): R3568 ±8.4
 18. Bonanza_6.1.2_core2duo_test      (  227): R3567 ±24
 19. atsm                             (  112): R3560 ±11
 20. jsus                             (  631): R3555 ±33
 21. Gikou_6700K                      (  143): R3554 ±18
 22. Gikou-5820k                      (  171): R3546 ±23
 23. YaneuraOu_Xeon_E5_2698_v4_40c    (   27): R3541 ±3.9
 24. YaneuraOuSimple                  (   77): R3534 ±13
 25. SILENT_HIRAOKA_20160803_2700K    (   82): R3522 ±13
 26. SILENT_MAJORITY_6950XEE          (   80): R3507 ±13
 27. yomita_dynamic_margin            (  117): R3507 ±15
 28. SILENT_HIRAOKA_20160917_2700K    (   80): R3474 ±7.6
 29. May                              (  164): R3471 ±19
 30. SILENT_HIRAOKA_20160930_2700K    (   74): R3470 ±11
 31. Nozomi_6950XEE                   (   56): R3453 ±8
 32. Tomabechi                        (  310): R3453 ±28
 33. SILENT_MAJORITY_6700K            (  214): R3446 ±24
 34. UP2S                             (  128): R3445 ±18
 35. Adad                             (  242): R3444 ±26
 36. Yomita_1.83_6700HQ               (   36): R3443 ±3.4
 37. nozomi_i7-4790                   (  117): R3443 ±14
 38. Gikou-980X                       (  161): R3443 ±22
 39. ANSM                             (  956): R3441 ±34
 40. ajiva                            (   80): R3424 ±13
 41. komasan                          (  420): R3422 ±32
 42. SILENT_MAJORITY_Kai-3517U        (  107): R3405 ±10
 43. ponderman                        (  103): R3397 ±14
 44. Apery_5820K                      (   85): R3395 ±14
 45. sinbo                            (  120): R3390 ±15
 46. SILENT_MAJORITY_i7-4510U         (  201): R3387 ±23
 47. Yomita_SDT4_6700HQ               (   45): R3383 ±6.9
 48. Titanda_L                        (  897): R3381 ±37
 49. gikou_win_20160606_i7-2600K      (   82): R3378 ±11
 50. dm                               (  485): R3374 ±32
 51. SILENT_MAJORITY_4770K            (   56): R3373 ±5.4
 52. Gikou_2016_i7-3517U              (  100): R3373 ±14
 53. SILENT_WHALE                     (  100): R3373 ±12
 54. LL                               (  151): R3364 ±23
 55. moonlight_ray_04                 (  123): R3364 ±19
 56. usapyon2_slave_USEAVX_FX9590_8t  (  362): R3361 ±31
 57. Apery_WC26_6950XEE               (   63): R3359 ±9.1
 58. Apery-160908_6700HQ              (   51): R3356 ±5.4
 59. Apery-160917_6700HQ              (   59): R3350 ±9.6
 60. YaneuraOu-2016-Mid_6950X         (   69): R3347 ±11
 61. QWERTY                           (  185): R3342 ±25
 62. SM-980X                          (  108): R3341 ±16
 63. yomita_i7-6700HQ                 (   53): R3335 ±9.4
 64. SILENT_MAJORITY_2c               (  157): R3333 ±16
 65. Celsius                          (  148): R3330 ±17
 66. SILENT_MAJORITY_i7-3517U         (  238): R3330 ±24
 67. Apery_Kai_1.67-3517U             (   48): R3330 ±6.2
 68. nozomi_i5                        (   90): R3326 ±14
 69. TAKUYA                           (   95): R3321 ±15
 70. yygiko-2c                        (  333): R3314 ±28
 71. TvT                              (  107): R3304 ±16
 72. yanetest                         (  793): R3301 ±31
 73. GoneuraOu_i7-4770K               (  248): R3301 ±27
 74. Gikou_20160606_i7-4510U          (   53): R3286 ±7
 75. Gekisashi_X5590_7c               (  124): R3280 ±17
 76. KBTIT                            (  100): R3271 ±16
 77. gpsfish_XeonX5680_12c_bid        ( 2158): R3268 ±38
 78. nozomi_4790K                     (  105): R3264 ±13
 79. gikou-i5-5200u                   (  177): R3261 ±20
 80. 2c_Rtest_G                       (  161): R3258 ±20
 81. apery_twig_sdt3_duo3.2_oc        (  197): R3250 ±24
 82. SM-i5-5200u                      (   92): R3250 ±13
 83. AperyTwig_FX9590                 (   76): R3249 ±11
 84. yomita_6c                        (  242): R3248 ±26
 85. Apery_twig_i7_6700K              (   79): R3239 ±12
 86. Bonafish_0.42                    (   54): R3237 ±10
 87. Gikou_AperyEvalMix_i5-3317U      (   58): R3231 ±9.6
 88. Gikou_i3_5010U                   (   77): R3230 ±12
 89. usapyon2dash-withBUG             (  107): R3212 ±14
 90. Apery_Twig_i7-4510U              (  402): R3197 ±31
 91. Gikou_AperyEvalMix_SurfacePro    (   58): R3177 ±5.8
 92. nozomi_i7-4510U                  (  152): R3173 ±21
 93. YaneuraOu_classic-tce_4790K      (   89): R3169 ±13
 94. sayapery_4c_4790K                (  159): R3168 ±23
 95. Gikou_20160606_1c                (  206): R3137 ±21
 96. yocvp13mk2                       (   71): R3125 ±13
 97. CRAZYKING                        (  353): R3119 ±32
 98. gpsfish_0414                     (  145): R3118 ±21
 99. Apery_WCSC26_i7-3517U            (  153): R3117 ±15
100. NanohaSDT4                       (  170): R3113 ±18
101. Tsukajumi                        (  111): R3094 ±17
102. nanoTwig_FX9590_4.7GHz           ( 1519): R3087 ±37
103. max                              (   74): R3085 ±11
104. nanopery_FX9590_4.7GHz_test      (  542): R3083 ±33
105. smmpv-1c                         (  156): R3082 ±18
106. nanopery_FX9590_4.7GHz_4t        (  216): R3079 ±25
107. Gc_at_Cortex-A53_4c              (  274): R3074 ±20
108. test_cortex-A53_4c               (   76): R3065 ±7.8
109. Gikou32_z8300tablet-4c           (  101): R3060 ±11
110. Apery_WCSC26_0911_1c             (  221): R3059 ±20
111. YssF_6t_x1                       (  192): R3059 ±24
112. komadoku_plus_kkp_6c             (  131): R3057 ±19
113. Gekisashi_X5590_1c               (   86): R3055 ±12
114. 6sec_1c_Rtest_G                  (  215): R3026 ±23
115. Celsius_0.2.2                    (  106): R3018 ±15
116. GradientWind                     (   55): R3017 ±10
117. usapyon2_slave_TWIG              (  117): R3003 ±18
118. apery-wcsc26-1c                  (   71): R2997 ±10
119. NanohaWCSC26                     (   90): R2991 ±8.3
120. BrilliantDisguise                (  107): R2987 ±17
121. att                              (   55): R2978 ±10
122. ShootingStar                     (   99): R2974 ±11
123. WeddingSong                      (   64): R2972 ±10
124. YaneClaTce_i5                    (  201): R2966 ±19
125. kosotto                          (  192): R2959 ±24
126. GravityJet                       (   56): R2938 ±9.8
127. SolitaryWave                     (   67): R2935 ±11
128. Apery32_tmmod_z8300-4c           (  386): R2930 ±31
129. TelegraphRoad                    (   89): R2919 ±16
130. HurricaneVolt                    (   89): R2914 ±16
131. Rolling                          (   71): R2906 ±13
132. Saya_chan_WCSC25ver              (   78): R2894 ±14
133. Apery32_tmmod_3735F-4thread      (  713): R2887 ±34
134. Gikou_20160606_1c_3s             (  246): R2884 ±23
135. G_512_Cortex-A7_2c               (  241): R2878 ±23
136. gpsfish_8n8c                     (  328): R2870 ±27
137. SensitiveTraining                (   97): R2846 ±17
138. Gc_Test_Cortex-A7_2c             ( 1025): R2834 ±33
139. KifuWarabe                       (  480): R2832 ±33
140. Starbound                        ( 1623): R2818 ±36
141. Starwheel                        (   83): R2816 ±14
142. TMOQ_64bit                       (   63): R2807 ±11
143. usapyon2_slave_TWIG_1t           (  148): R2800 ±24
144. gpsfish_normal_1c                ( 7051): R2800 ±37
145. bonanza6.0                       (   77): R2776 ±11
146. Ydebug185                        (  598): R2772 ±35
147. Celsius0.2.0                     (   67): R2770 ±13
148. Gift                             (   71): R2765 ±11
149. OkaraManju                       (  105): R2747 ±14
150. nanoha_test                      (   97): R2743 ±17
151. celery1_YCT                      (   77): R2731 ±9.2
152. KifuWarabe_NotePC                (  320): R2702 ±29
153. orange2_AWS-t2.micro_YClassicTce (  105): R2695 ±13
154. MeijinCobra_WCSC26               (   97): R2682 ±14
155. 6.0bookKai_4700MQ-4cHT4t         (  236): R2672 ±25
156. Blunder_6700HQ                   (   70): R2647 ±8.4
157. Celsius0.0.9                     (   62): R2645 ±10
158. Okara20XX                        (   90): R2584 ±9.5
159. Saya_chan0107-4iMYU              (  139): R2564 ±16
160. KifuWarabe_i7_WCSC26             ( 1014): R2543 ±37
161. Gikou_deth10                     (  149): R2445 ±20
162. aggressor                        (  253): R2444 ±26
163. orange_AWS-t2.micro_GPSfish      (   76): R2435 ±13
164. BonanzaFeliz0.0MYU               (  174): R2420 ±22
165. Bonanza6.0_1c_X                  (   85): R2408 ±12
166. hima_for_miryoku                 (  399): R2373 ±29
167. s1510009                         (   59): R2372 ±9.3
168. Bonanza6.0_1c_systern            (   53): R2343 ±10
169. gps_l                            ( 5356): R2323 ±36
170. YSS                              (  120): R2219 ±14
171. piyo_lv6_iphone6s                (   46): R1967 ±3.6
------------------

前回の記事「評価値という数値 1:一歩百点?」では、評価値が本来は順序尺度であることを指摘し、なぜ将棋の評価値が比率尺度として取り扱われているのかを説明しました。今回は、将棋の評価値を別の形で表現する方法について考えてみたいと思います。

コンピュータ囲碁においては、評価値は0~100%までの“勝率”で表現されます。囲碁では「駒得/駒損」のような分かりやすい指標がなく、また、目数の期待値を用いた従来的な形勢判断もコンピュータ囲碁では有効ではなかったため、勝率の予測値がそのまま評価値となりました。“勝率”は「ゲームの特性」や「評価関数の設計」に依存しない表現であるため、評価値の普遍的な表現方法の一つだと言えます。

コンピュータ将棋においても、評価値を“勝率”に換算して表そうという考え方があります。形式的には、評価値をVとすると、値域が[0, 1]である単調増加関数fを用いて、

\[P = f(V)\]

と変換することで、“勝率”Pに換算することができます。

ここで、“勝率”とは何を意味しているのでしょうか? この定義がはっきりしないと、関数fを具体的に定めることができません。

“勝率”の定義については、おおよそ以下のような考え方があります。

  1. シミュレーションによる勝率。
  2. 棋譜集における勝率。
  3. 自己対局による勝率。
  4. ある関数fによる換算値を“勝率”と定義して、意味は後で検証する。

1つ目の考え方は、モンテカルロ囲碁などで採用されている考え方です。定義はシミュレーションの手法に依存しますので、シミュレーションを1つの評価関数とした時の評価値と考えるのが妥当かも知れません。形勢判断の精確性もシミュレーションの精確性に依存します。将棋では、現在はモンテカルロ法は有効ではないされているため、この考え方は非常に少数です。

2つ目の考え方は、棋譜集内の局面の評価値と勝敗結果を結び付けたものであり、最も一般的な手法です。例えば、「勝率に基づく評価関数の評価と最適化」の論文では、将棋倶楽部24の棋譜9万局を用いて(ただし、勝敗判定には対局者自身の投了の他に簡単な詰め判定も併用)、当時のGPS将棋の静的評価値と勝率との関係を算出しています。この手法は棋譜集に大きく依存し、精確性を追求するには高品質な棋譜が大量に必要となります。

3つ目の考え方は、2つ目の考え方の亜種であり、棋譜集の代わりに自己対局の棋譜を用いるというものです。評価値は基本的に自分自身で使うためのものであるため、短時間の自己対局の勝率を用いるのは合理的です。また、自己完結した手法であるため、きれいな結果も得られるようです(参照:Ponanzaによる結果)。この手法は探索局面数/深さに依存します。また、現実的な対局時間よりも遥かに少ない時間での自己対局の場合には、実質的には1つ目のシミュレーションによる勝率に近くなっていると考えられます。

以上の3つの考え方は、評価値が表している形勢判断について、検証的な視点が暗黙的に盛り込まれています。実際に、詳細な定義を行えば、関数fを統計的に推定することもできますし、評価値と勝率の整合性を確認することもできます(関数が単調にならなかったり、滑らかにならなかったりすると非整合的)。さらに発展させて、整合性がよくなるように強化学習を行ったり、学習時の教師局面の精査を行ったりすることも可能です。

一方で、4つ目の考え方は、評価値に完全に従属したものであり、自然科学でよく使われる手法です。定義と検証を分離することで理論の整備がしやすくなります。例えば、Ponanzaは、学習時に

\[P = f(V) = \frac{1}{1 + e^{- V / 600}}\]

という仮定をしているようです(参照)。この関数はシグモイド関数と呼ばれるもので、自然科学一般でよく使われます(これを見て「フェルミ分布」と言うのは物理学だけでしょう)。

さて、一般論として、関数f(V)はどのような形になるべきなのでしょうか?

例えば、酔歩模型ではどうなるのかを見てみましょう。酔歩模型については「将棋は酔歩ではない?:酔歩模型と手数分布」の記事をご参照ください。

棋士棋譜集(2015年11月版)とfloodgate棋譜集(2012~2015年版)で調整された変数を用いて、シミュレーションした結果を下図に示します。棋士棋譜集(黒点)とfloodgate棋譜集(青点)共に、各点1000万回の結果です。

random_walk_syouritu

結果を見ると、変数の詳細には関係なく、ほぼ比例関係になっています。変形評価値が±1のところで跳んでいるのは模型の問題です(ギリギリでも引き返して逆転する可能性があるため)。

つまり、細かいことに目をつむると、変形評価値

\[X = F(V)\]

と勝率Pとの間には、

\[P \approx \frac{1 + X}{2} = \frac{1 + F(V)}{2}\]

という近似関係式が成立していることになります。

変形評価値は、例えば、

\[X \approx \text{tanh}(\frac{V}{2 u})\]

というような関数でした。この場合、勝率は

\[P \approx \frac{1}{1 + e^{- V / u}}\]

となり、シグモイド関数になります。ここで、uは評価値のスケールを決める変数です。上記のPonanzaの例では600点(おそらくセンチポーンで)でした。

具体的に、シグモイド関数というのは下図のような関数です。

fig1

酔歩模型に依れば、評価値と勝率との関係はおおよそ上図のようになると考えられます。この結果は記事の最初に紹介した様々な結果とおおよそ整合的です。

シグモイド関数はイロレーティングでも使われています(参照:「イロレーティングにおけるレート差と勝率との関係」)。イロレーティングにおける勝率Pとレート差dRとの関係式は

\[P = \frac{1}{1 + 10^{- dR / 400}}\]

です。

上記の式をまとめると、評価値Vとレート差dRとの間には

\[dR \approx 173.7 \frac{V}{u}\]

という比例関係の近似式が導けます。例えば、u = 600の場合には、比例係数は0.29程度になります。

もし評価値とレート差との間の対応がつくと、棋力差、局面の形勢、持ち時間、平均誤差等が全てレートに統一的に換算できることになります。そうなると、勝敗以外の大量の情報を総括的に活用できるようになりますので、序盤、中盤、終盤、残り時間などの様々な状況ごとにレートを詳細に推定したり、評価値だけではなく全体のレート差を最適化するような指し回しをしたりするようなことも可能になるかもしれません。

以上、今回は、将棋の評価値を“勝率”やレート差で表現することを考えました。酔歩模型に依れば、評価値はレート差とおおよそ比例関係になることが示されます。レート差への換算係数は、“勝率”の定義やソフトの詳細に依存しますが、思いっきり大雑把には0.3程度になりそうです。この辺の詳細な研究は今後の課題だと言えるでしょう。

コンピュータ将棋では局面の形勢を「評価値」という数値で表現します。将棋ソフトの指し手は評価値に基づいて決定され、また、検討や解析における形勢も評価値の“点数”として表示されます。今や評価値は、将棋ソフトの利用者にとって、とても身近な量になっていると言えるでしょう。

もし将棋が完全解析できたとするならば、局面は勝ち・負け・引き分けの3つの値(ゲーム値)に分類できるはずです。しかしながら、現実には完全解析は不可能なため、局面を評価するのにゲーム値の推測値が用いられることになります。これが評価値です。先を全て見通すことができないということが前提となっているため、評価値には未確定な未来への展望が織り込まれています。

評価値がゲーム値の近似値であるのならば、一見すると、ゲーム値に近い極端な値の評価関数が優れているように思えます。極論的には、ゲーム値と同じく評価値も-1、0、+1の3種類でいいのではないかと考えられるわけです。ところが、そのような評価関数では、探索を深くしても弱くなるという問題(探索の病理)が発生し、うまくいかないということが知られています。評価値はゲーム値の近似値というよりは、何らかの期待値の推測値であるわけです。

多くの将棋ソフトでは、一歩の価値を100点程度(歩を取る場合には、相手-100点、自分+100点で200点差)として、評価値は-32768から+32767の間の整数で表されます。これは16ビットの符号付き整数の範囲であり、探索の病理を避けるのに十分なだけの値の細やかさを確保しつつ、なるべく記憶容量を節約したいという実装になっています。

さて、この評価値ですが、尺度として見ると、かなり“奇妙”な量になっています。特に「一歩100点」という表現は、評価値の説明の常套句でありながら、よく考えてみると“奇妙”な表現であることに気付きます。今回は、この評価値という数値の“奇妙さ”について、少し考えてみたいと思います。

一般的に定量的な尺度には、順序尺度、間隔尺度、比率尺度があります。順序尺度は数値で大小の比較ができる量で、例えば、地震の震度です。震度は数値が大きいほど、揺れの強さが大きくなります。間隔尺度は、順序尺度に加えて、数値の間の間隔が等しく、単位(物差し)で測れる量です。例えば、長さや重さは間隔尺度ですが、震度は単位で測るものではないので、間隔尺度ではありません。比率尺度は、間隔尺度に加えて、原点の零が定まっており、数値の比にも意味のある量です。

本来、将棋の形勢を表す量は、順序尺度であって、間隔尺度や比率尺度ではないはずです。人間でもコンピュータでも複数の局面を比較して(人間の場合には局面以外の情報も加味することがありますが)優劣の順序を付けることが形勢判断の肝であり、実際、探索で指し手を決めるのは順序尺度で事足ります。もちろん、順序尺度の性質を有しているという点では間隔尺度や比率尺度でも構わないですし、また、その方が枝刈り等が効率的になるというような利点があるかもしれませんが、間隔尺度や比率尺度である必要はないわけです。

一方で、「一歩100点」という表現は、歩1枚を単位とするということを意味していますから、評価値が間隔尺度であることを暗に示唆しています。また、本来なら初期局面を評価値の原点に選んでも問題ないはずですが、実際にはそうなっておらず、評価値の原点は、その評価関数が互角と考える局面になっており、これは評価値が比率尺度であることを示唆していると考えられます。

つまり、本来は順序尺度で十分な量が、評価値では比率尺度に拡張されているわけです。

この“奇妙”な飛躍が人々に違和感を感じさせます。例えば、「歩1枚で100点なので、500点の局面は歩5枚分です」というような比率尺度に基づいた説明は、内容的には正しくても、人々を納得させることは困難でしょう。通常、人間は比率尺度で形勢を判断しないからです。

それでは、コンピュータ将棋の評価値(大元を辿れば、コンピュータチェスの評価値)はなぜ歩兵(ポーン)を単位とした比率尺度になっているのでしょうか?

理由は大きく2つあると考えられます。1つはチェスや将棋のゲームの特性に基づくものであり、もう1つは評価関数の設計に基づくものです。

チェスや将棋は「駒得/駒損」が基本となるゲームです。そのため、最も価値が低い歩兵を1点として他の駒の価値を点数化することは、コンピュータが発達する以前から、自然と行われてきました。実際に、「駒得/駒損」の評価だけでもかなり強いソフトを作ることができますし、子供に将棋を教える際にも最初に駒の機能と価値を教えることになります。

この「駒得/駒損」という考え方がチェスや将棋の評価値の背景になっています。実際、このゲームの特性から、コンピュータチェスでは歩兵を1点とし、さらに細かい表現ができるように100倍した単位(センチポーン)が標準となりました。それが将棋に輸入されて「一歩100点」となったわけです。

さらに、チェスや将棋の評価関数は、評価項目ごとの点数の足し算(線形和)が基本になっています。例えば、歩(100点)3枚と銀(400点)1枚なら合計は700点になるというわけです(駒の位置関係等も同様)。習甦などの一部のソフトは非線形な評価関数(つまり線形和ではない一般の関数)を採用していますが、ボナンザ系や激指(実現確率探索)系など、ほとんどのソフトは線形和を採用しています。これは取り扱いが簡単であることに加えて、実際にそれで上手く行っているという経験的な理由に依っています。

評価関数が線形和であるのならば、評価値が比率尺度になるのは自然なことになります。「500点の局面は歩5枚分」という説明も内部の仕組みとして実は正しかったということになるわけです。

しかしながら、これら「ゲームの特性」や「評価関数の設計」に依存する表現は、あまり美しくないと感じられる方もいるかもしれません。実際に、現在でも非線形な評価関数のソフトは存在しますし、将来、それが主流になる時代が来ないとも限りません。また、大体「一歩100点」と言っても、ソフト毎に微妙に異なりますし、一歩の価値をどう見るかも高度な棋力になってくるとばらついてきて、評価関数の規格化がソフトやバージョンで大きく変わるということも発生しています。去年のPonanzaは評価値が高めに出ていたが、今年の評価値は何故か低めに出るなんてことも起こるわけです。

いずれにしても、「評価値は本来は比率尺度ではない」というのは注意が必要なことですし、比率尺度としての評価値に対しても、できるだけ「ゲームの特性」や「評価関数の設計」に依存しないようにするのには意味があります。例えば、評価関数の規格化は「多数の標準局面を標準的な手法で評価して、その統計平均を標準値に合わせるようにする」というような形で統一すれば、ソフトやバージョン毎のばらつきを減らせるかもしれません。また、標準規格化への換算係数をGUI側で設定できるようにして、評価値の出力の際にGUI側で換算することにすれば、ソフト開発側の負担も軽減できるかと思われます。

コンピュータ将棋においては、評価値は暗黙に比率尺度として取り扱われています。本ブログの記事でも同様です。評価値を比率尺度として取り扱う以上は、“標準化”が課題になるのは避けられないことでしょう。

以上、今回は、評価値という数値の“奇妙さ”について考えました。「評価値は本来は比率尺度ではない」ということを鑑みると、何らかの変数変換を行えば、別の評価値表現が可能になります。例えば、囲碁では評価値を“勝率”として表現していますが、これは将棋でもできることです。次回は、その辺の話を書きたいと思います。

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

追記:USIプロトコルにおける評価値情報について(2017年1月3日)

「うさぴょんの育ての親」様のコメントで気付いたのですが、評価値の話を書いているのにUSI(Universal Shogi Interface)のことに触れなかったのは手抜かりでした。追記します。

GUIソフト(将棋所やShogiGUI等)と思考エンジンとの通信に標準的に使われているのが、USIプロトコルです。ソフトによっては元のプロトコルを一部拡張して用いていることもあります。将棋所のサイトに詳細な説明があります。

USIでは、評価値の通信は「info score」で行います。上記のサイトでは、以下のように説明されています。

エンジンによる現在の評価値を返します。score cpで評価値を返す場合、歩1枚の価値を100とした値を返すことになります。(cpというのは、centi pawnの略です。)この値は、エンジンの側から見た値となり、エンジンが有利ならプラス、エンジンが不利ならマイナスの値になります。エンジンが50点有利と判断しているならscore cp 50となります。

つまり、「info score cp 50」と送ると、「1歩100点の単位で50点有利」という意味になるということです。これは、元のUCI(Universal Chess Interface)の仕様をそのまま引き継いでいます。

通常、GUIソフトはこの点数をそのまま表示しますので、USIの仕様通りであれば、1歩100点の単位で表示されるはずです。ただし、非USIソフトやUSIであっても仕様通りの実装になっていないソフトの場合には必ずしもその限りではありません。

さらに、「info score mate」というものもあります(通称mate)。これは詰みに関するもので、以下のように説明されています。

エンジンが詰みを発見した場合は、score mateによって詰み手数を返すことができます。詰み手数に入れる数字は、エンジンの勝ちならプラス、エンジンの負けならマイナスになります。エンジンが6手後に詰まされて負けると判断した場合はscore mate -6となります。

つまり、勝ち/負けが確定した時、評価値は最大値/最小値になるわけですが、それでは「詰み手数」の情報が入らないため、別の通信手段を用意しているというわけです。ちなみに、この場合の「詰み手数」というのは、王手だけに限らず、片方の合法手がなくなるまでの手数であり、また、思考エンジンによっては必ずしも最短手数とは限りません。元のUCIでは先後の応手のセット数(move = 2手)で数えますが、USIでは手数で数えます。この辺はチェスと将棋の慣習的な違いに依ります。

この勝敗確定時の場合分けは、理論的には明解なものですが、実装的には手間がかかるものであるため、思考エンジンによっては採用していない場合があります。3万点程度の十分に大きい最大値を決めておいて、そこから「詰み手数」分を引いた値を評価値とするというのもよく行われることです。この場合の評価値は、比率尺度ではなく、順序尺度になります。

このページのトップヘ