前回の記事「チェスの不正解析 2:調査手法」では、統計解析のためのデータを取得する方法を紹介しました。今回は、Regan教授らの論文(K. Regan and G. Haworth, ``Intrinsic Chess Ratings'', Proceedings of AAAI (2011); K. Regan, ``Intrinsic Ratings Compendium'', MS (2012))に基き、評価値データから固有チェスレーティング(Intrinsic Chess Ratings)を算出する方法を紹介します。
ここで、「Intrinsic」を「固有」としたのは筆者の翻訳によるものであり、別の翻訳をされている方もいるようです。物理学では「Intrinsic」を「固有」と訳すことが多いため、反射的に「固有」としてしまいましたが、「内在」等の方が相応しいかもしれません。いずれにしても「潜在的に備わっている固有の」というような意味です。プログラム関係では組み込み関数(intrinsic function)でよく目にするかもしれません。
まずは、固有レーティングの前に、通常の“レーティング”について説明します。ここでの“レーティング”というのは、イロレーティングのことを意味しており、集団内での多数の勝敗の結果から、その集団内における相対的な棋力を推定した指標のことです。将棋倶楽部24のレートのことだと言うと、分かりやすいかもしれません。詳細は以下の記事で解説しています。
ここで重要なのは、通常のレーティングは「勝敗の結果」のみで決まるという点です。すなわち「勝った者が強い」というわけですが、この理論は単純で頑強である一方で、それ故の弱点も有しています。例えば、通常のレーティングでは集団内の相対差しか推定することができず、時代や集団に依らない絶対的な棋力を推定することができません。また、棋譜の内容を一切見ていないため、本来の情報よりも遥かに少ない情報で棋力を判断することになってしまいます。当然、極端な場合を除いては、不正解析に応用することもできません。
棋力というのは本当に勝敗のみでしか分からないものなのでしょうか? 素朴な直観としては、勝敗の結果よりも棋譜の内容の方が棋力についての豊潤な情報を含んでいるように感じられます。
その直感をソフトと統計を用いて数値化しようという試みが固有レーティングです。固有レーティングにおいては、勝敗は考慮せず、棋譜の内容だけを見て、棋力を推定します。棋譜の情報を使うため、勝敗だけの情報よりも繊細な解析が可能であり、時代や集団に依らない絶対的な棋力が推定できたり、不正解析に応用できたり、トレーニングや棋譜解析に活用できたりという利点があります。一方で、ソフトに依存した手法であるため、ソフト自身の棋力を推定することができなかったり、ソフトが対象者に比べて十分に強くないと信用しづらかったりというような弱点もあります。
具体的に、固有レーティングを算出する際に用いるのは、各局面におけるMLM(マルチPV)で算出された全ての合法手の評価値(実際には50手程度で十分)と実際の指し手のデータです。探索は十分な深さ(Regan教授らの論文では13)で固定して行います。評価値の符号は手番から見たものとして、例えば、先手番で+なら先手有利、後手番で+なら後手有利にして、常に最善手の評価値が最大になるようにします。局面kにおける候補手i(i = 0, 1, 2, ...)の評価値をV(k, i)と書くことにしましょう。この時、最善手の評価値はV(k, 0)です。
データの解析は以下の2段階に分けられます。
- 棋力を直接的に反映していると思われる統計量とイロレーティングとの相関関係を調べる。
- それらの統計量をモデルに基づいて推定する。
第1段階は、言い換えると、勝敗に依らない「棋力」の再定義と言えます。ただし、再定義すること自体は自由なわけですが、新しく定義された「棋力」がイロレーティング(勝率)と強く相関していないと、指標として役に立ちません。ですから、「棋力」を表す統計量とイロレーティングとの相関関係を実際のデータに基づいて精査し、また、相互変換の関係式を推定しておく必要があります。この「棋力」を表す統計量から換算されるイロレーティングの推定値が固有レーティングです。
具体的に、Regan教授らの論文では、「棋力」を表す統計量として、最善手との一致率と平均誤差が提案され、最終的には平均誤差が採用されています。
ここで「平均誤差」というのは、最善手の評価値V(k, 0)と実際の指し手jの評価値V(k, j)から計算される誤差d(k, j)の1手あたりの平均値のことです。誤差(※正確には誤差の絶対値)は、単純な差ではデータとの整合性があまりよくないため、
\[d(k, j) = \int_{V(k, j) / u}^{V(k, 0) / u} \frac{dz}{1 + |z|}\]
\[= \frac{V(k, 0)}{| V(k, 0) |}~ \ln{[1 + | V(k, 0) | / u]} - \frac{V(k, j)}{| V(k, j) |}~ \ln{[1 + | V(k, j) | / u]}\]
という関数が使われています(※後者の論文には違う式が載っていますが、前後の記述から、誤植だと思われます)。ここで、uは評価値の単位ですが、本来はきちんと調整した方がよいという注釈付きで、論文では歩兵単位(1歩兵=1ポイント)が使われています(※論文には歩兵の百分の一という記述もあるのですが、表の数字等を見る限り、センチ歩兵単位ではないと思われます)。この関数は、形勢が傾いた局面では人間は指し手の評価値の誤差に対して“鈍感”になるという傾向を反映しています。
平均誤差とイロレーティングとの関係は線形回帰で解析できます(参考「データから線を引く 2:線形回帰と最小二乗法」)。使用する局面データは、定跡部分(論文では16手=先後8手ずつ)と大差の局面(論文では3歩兵以上)を除いた全ての局面です。
結果的に、平均誤差Aと固有レーティングIRとの関係式は、
\[IR = 3571 - 15413 A\]
となります。この式だと、誤差がない場合のレートは3571となるはずですが、チェスの世界王者クラスが2700程度であることを考えると、妥当な数字だと考えられているようです。
次に第2段階として、平均誤差の値を推定します。
ここで、「何で平均誤差を推定する必要があるのか? 生の実測値をそのまま使えばいい」と感じられる方もいるかと思います。特に自然科学分野の人であれば、「どんな理論よりも観測値が正しい」ということが身に染みついていますので、そのような感覚が普通でしょう。
実際に、実測値を用いても悪いということはありません。データが十分に多ければ、実測値も推定値も数値として大きな差はありませんので、どちらでも結果は大して変わりません。例えば、上記の手法を将棋に応用した山下宏氏の論文「将棋名人のレーティングと棋譜分析」では、実測値を用いて線形回帰を行っています(※この論文では、誤差は単純な差で定義されており、また、MLMではなくSLMのデータを用いているために誤差が必ずしも正にならず、負の誤差の平均を「平均好手」、正の誤差の平均を「平均悪手」と区別しています)。
しかしながら、データの量が有限である情報科学においては、敢えて実測値を用いずに、モデルを仮定した推定値を用いることで様々な利点が生じます(※物理学で理論値を観測値で繰り込むのと逆方向の繰り込みに対応します)。実際、もしモデルが妥当であるのならば、推定値の方が実測値よりも多くの情報を反映していますので、データが少量の場合にも対応でき、また、データの雑音に対して頑強になります。さらに、モデルを活用することで、不正解析などの様々な応用も可能になります。ただし、これらのことは「モデルが妥当である」という前提に基づくものであることに注意してください(※この前提を受け入れられるかどうかは、主観確率論を認めるかどうかに近いと思われます:「役には立つが、信用はできない?」)。
具体的には、以下のようにモデルを定めます。
- 各々の指し手が独立した確率事象であるとし(相関は無視)、その先験的な実現確率が評価値のみに依存すると仮定する。
- 局面kにおける候補手iの実現確率p(k, i)が最善手に対する評価値の誤差d(k, i)の関数であるとして、関数モデルを設定する。
- 関数モデル内の調整変数を実際のデータに基づいて推定する。
実現確率p(k, i)が求まれば、例えば、最善手との一致率Mは、
\[M = \frac{1}{N} \sum_{k = 1}^{N} p(k, 0)\]
と推定できますし、平均誤差Aは、
\[A = \frac{1}{N} \sum_{k = 1}^{N} \sum_{i} d(k, i) p(k, i)\]
と推定できます。ここで、最善手の実現確率p(k, 0)は、もし1に近ければ、“この一手”という単純な局面に対応し、もし低ければ、他に有力な候補手がある複雑な局面に対応します。また、実現確率を帰無仮説に用いて、実際の指し手を統計的に検定することで、不正解析に応用することもできます。
平均誤差が実現確率に依存していることから分かるように、実現確率は棋力や棋風に依存します。このため、推定に用いるデータは棋力や棋風を統一したものである必要があります。Regan教授らの論文では、棋風は特に考慮せず、イロレーティングで区分けされた棋譜データを用いています。
具体的に、Regan教授らの論文では、
\[\frac{\ln{[p(k, 0)]}}{\ln{[p(k, i)]}}~ = e^{-(d(k, i) / s)^{c}}\]
という関数モデルを用いています(※後者の論文では左辺の違った式が書かれていますが、誤植だと思われます)。sは評価値のスケールを決める逆感度変数であり、棋力が高い程、小さくなり、評価値の変化に対して敏感になります(※論文ではsを感度変数としていますが、意味としては逆なので、ここでは逆感度変数としました)。cは関数の形状を決める整合変数であり、棋力が高い程、大きくなり、最善手付近の手を整合的に選ぶようになります。右辺の関数の形は、連続した単調減少関数であればよいので、上記の逆指数関数の他に、逆多項式関数やロジスティック関数等も考えられますが、どれでやっても結果はさほど変わらないようです。
ちなみに、上記のような関数モデルを用いると、実現確率が分かっている場合には、逆に解いて、評価値の方を求めることもできます。例えば、激指の場合には、ロジスティック回帰を用いて、実現確率を最大化するように機械学習を行っています(最尤法)。この手法は、一見すると評価値の差を用いて学習するボナンザ系統の機械学習とは全く別のものであるように思われますが、実現確率と評価値との間の関数モデルを適切に設定すると、両者は同等(もしくは類似)のものに帰着されます。
さて、残りの作業は、sとcの2つの変数を推定するだけですが、Regan教授らはこれに意外と苦戦しています。通常的な最小二乗法や最尤法では中々上手くいかないらしく(※この時点でモデルやデータの信頼性に疑問符をつける方も多いかと思われますが)、パーセンタイルを用いた特殊な推定法を用いています。詳細は省きますが、結果的に良好な結果が得られたようです(※ただし、モデルが信用できるかは別の話です)。
以上、Regan教授らの論文に基づいて、固有チェスレーティングについて、簡単に解説しました。この考え方は、将棋にも直に応用可能なものであり、また、棋譜データを解析する上での基本知識になるかと思われます。モデルの信用性については様々な異論もあるかと思われますが、その辺の検証も含めて、“将棋メトリクス”の今後の重要な課題であると言えるでしょう。
コメント