測定ノード数とレート差(その2)
前回の記事ではDolphin1+水匠改とYO485+Kristallweizenの自己対局を用いてノード数により対局結果(ソフト間のレート差)がどのように変化するのか測定を行い、ノード数によりレート差が思いの外大きく変動することを示しました。今回の記事ではその際課題として上げていた、
ノード数を更に上げるとレーティング差は収束していくのか、
別のソフトの組み合わせで計測すると振舞いがどう変わるのか
について、データを追加して考察していこうと思います。
対局条件としては前回からの継続で以下のようにしました。
一手あたりのノード数を固定する。tanuki-互角局面集を用いて25手目より開始。通常のレーティング測定方は初手から定跡切ですが、互角局面集を用いるとどう変化するか興味があるので採用。
320手で引き分け。-3000点で投了。
各ノード数で1000局(ノードが多い場合は500局)ずつ対局しレート差を計算。
今回はノード数は2,000から10,000,000の間で観測しました。両端ではおおよそR2500程棋力が離れています。ノード数1000万はレーティングサイトにおける測定条件に近い(一手1200万程度)ものです。将棋の検討で用いるノード数は一億を超えるので、できれば更に多いノードでの測定も行いたいのですが、ノード数1000万、500局で手持ちのPC(8スレ)で2~3日かかりますので、よほど高スペックのPCを用意しない限りこれ以上の測定は難しいと思われます。
[1] Dolphin1+水匠改 vs YO485+Kristallweizen
こちらは前回の測定の継続です。前回はノード数500,000まで測定を行いましたので、更にノード数1,000,000、3,000,000、10,000,000のデータを追加しレート差がどのように変化するのかを測定しました。結果は以下のようになりました。
テーブルの見方は前回と同じで各ノード数に対してDolphin1/Suisho-Kaiの勝数、引分数、Yaneuraou4.85/Kristallweizenの勝数、勝敗数から計算されるレート差が書かれています。想定レートを今回追加して12,000,000ノードでのレーティングがレーティングサイトでの値(およそR4400)に一致するように推定をおこなっています。また引き分け率もデータに含めました。こちらは後で用います。ノード数とレート差をプロットすると以下のようになります。
前回の記事では500,000ノードにおけるレート差46が、水匠改作者による測定(レート差44)に近いことからこれ以上のノード数ではこのような値に収束する可能性があると考えましたが、実測では思いの外変動が大きかったのがまず注目するべき点です。10,000,000ノードでのレート差はほぼゼロになり、水匠改作者の測定とは異なる結果になりましたが、これは測定条件が異なる(初手から定跡切、Kristallweizenと組み合わせるエンジンがDolphin1であること)ことから理解できると思われます。
[2] Yaneuraou4.86+elmo_wcsc27 vs Yaneuraou4.86+qhapaq_wcsc27
次にelmo_wcsc27とqhapaq_wcsc27でも同様の測定を行いました。これらを選んだ理由はelmo_wcsc27で学習法が大きくかわり、高ノードでのレート差が大きくなる組み合わせと考えたからです。Qhapaqは大会に出場したバージョンでelmoに追加学習を行ったelmoqhapaqとは異なります。今回は探索エンジンを揃えて計測を行いました。
対局結果は以下のようになりました。
データの見方は水匠vs Kristallweizenと同じです。想定レートは12,000,000ノードでのレーティングがR3950程度になるように設定して計算してあります。今回は探索エンジンを揃えたので低ノードにおけるレート差の大きな変動は見られなくなりました。グラフは以下のようになります。
想定通り、低ノードではqhapaqのほうが有利、高ノードではelmoのほうが有利という結果です。多少想定外だったのは3,000,000ノードでのレート差のほうが10,000,000ノードよりも大きかったことですが、統計誤差もあるので直ちに何かが言えるということではないと思われます。3,000,000ノードは4スレッドのPCでは一手1.5秒、10,000,000ノードは一手4.5秒程度の測定となります。こちらの組み合わせの場合、3,000,000ノードあたりである程度レート差が安定してきているように見えないこともないです。
レーティング測定の趣旨は大会や検討用にソフトを使うときのソフト間の差異を知ることだと思います。その場合知りたいことは、上でも述べたように一手一億ノード程度必要となりますが、測定コストの関係でそのような測定は難しいと思われます。
一般的に低ノードで対局を行うと、対局数を増やすことができるためより高精度でレーティングが測れるように思われますが、今回の測定でも明らかなように低ノードと高ノードでレート差は大きく異なるため、低ノードでの測定は間違った値を高精度で測っていることになります。
現実的な測定が可能なのはPC性能の向上を考えると、私がレーティングサイトを作った際に採用して、現在でも用いられている一手12,000,000ノードよりはやや上の値、30,000,000ノード程度だと思われます。今回の測定では探索エンジンが異なる場合、1,000,000~10,000,000ノードのレンジでもレート差は想定よりも収束しているようには見えませんでしたので、レーティングを測る際のノード数は負担にならない範囲でもう少し増やしても良いかもしれません。一方、探索エンジンが同じ場合には3,000,000ノード程度の測定でもある程度の目安が得られるような気もします。
最後に今回の測定ではノード数を大きく変化させてかなり大規模な対局を行わせました。私の以前の記事ではレートが高くなると引き分け率が高くなるという観測を行い、その傾向は最近のWCSCの対局でも顕著に見られるようになりました。今回の測定では最大手数を320手に伸ばしていること、3000点で投了するように設定しているため、引き分けは千日手によるものがほとんどとなります。今回行って二種類の組み合わせでそれぞれ想定レートを算出し、引き分け率との対応をプロットした図は以下のようになります。
このグラフでは縦軸(引分率)が対数目盛になっていることに注意してください。低レートではほとんど引き分けがないためレートが低いほど近似直線からは外れていきますが、ある程度はっきり相関が見えるように思われます。Excelが出している近似直線で外挿するとR5000における千日手の発生率は20%近くになると推定されます。一手数億ノード程度の対局ではそのあたりまで千日手が増えていく可能性があるのではないでしょうか。