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

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

カテゴリ: コラム

2017年12月5日に投稿されたGoogle DeepMind社のグループによるプレプリント論文「Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm」(以下、Silver論文)が大きな話題となっています。DeepMind社は、以前、深層学習と強化学習により、囲碁の専門知識を使わずに最強の囲碁ソフトAlphaGo Zeroを作り上げて、大きな衝撃を与えました。今回の論文では、AlphaGo Zeroと同様の手法(以下、AlphaZero)をチェスと将棋に適用し、それぞれ“世界最強”ソフトを作成したということを報告しています。この“世界最強”の部分については、現在、様々な論議がなされているところでありますが、この論文で重要なのは「汎用的な枠組みによって専用系に匹敵する結果が得られた」という点であろうかと思われますので、この部分は論文の重要性には影響しないと思われます(正確性には影響するかもしれません)。

今回は、取り急ぎ、Silver論文で個人的に衝撃を受けたことについて書いておきたいと思います。論文を読んで半ば衝動的に書いている記事ですので、いつも以上に“あわてんぼう”な内容を含んでいるかもしれませんが、ご容赦ください。

深層学習による評価関数は多層のネットワークで表現されるような大量の計算を伴う関数(少し専門的な書き方では非線形関数)になっています。ここで、関数というのは変数(局面等の情報)を入力すると値(評価値)を返すもののことです。従来の将棋の評価関数も“大量の計算を伴う関数”という点では同じなのですが、こちらは線形和(係数をかけて足し合わせる計算、ネットワークでいうと1層に相当)が基本であり、深層学習によるものは非線形であることが特徴になります。

このため、深層学習による評価関数は大量の並列的な計算を行わなければならず、コア数の多い特殊な計算機(GPU)で計算を行うわけですが、それでも従来の評価関数よりも計算に時間がかかります。計算機自体の作りが違うので単純な比較は難しいのですが、例えば、Silver論文の計算機環境では、1秒間に読める局面の数(NPS)はelmoが3500万程度であるのに対し、AlphaZeroは4万程度であり、千倍くらいの違いがあります。

NPSが千倍も違うのに強さが互角(※細かいことは置いておいて大雑把に書きます)だというのは驚きの結果であり、深層学習の優秀さを示していると感じられる方が多いかと思われますが、筆者が衝撃を受けたのは実はその点ではありません。

elmo等の従来の将棋ソフトはミニマックス探索(アルファベータ探索)を行って、評価値を改善しています。ミニマックス探索については、以下の解説記事をご参照ください。

ここで見方を変えて、探索による改善までを含めて“評価関数”だとして再定義すると、実は従来の将棋ソフトの“評価関数”も膨大な計算の非線形関数であったと再解釈することができます。この定義なら、同じような規模の非線形関数として、AlphaZeroの評価関数との比較がしやすくなります。

この観点から、Silver論文の結果を見ると(※AlphaZeroの探索部分がelmoの探索の一部と打ち消すようにelmoの“評価関数”の定義を調整したとして)、AlphaZeroの深層学習による評価関数と探索(の一部)を含めて再定義されたelmoの“評価関数”が、ものすごく大雑把に書いて、同程度の計算量で同程度の精度であったと解釈することができると思われます(※詳細には実物で検証しないと何とも言えませんが)。

ここで注意しなければならないのは、深層学習のものは将棋専用の設計が行われていない一方で、従来の将棋ソフトのものは将棋専用に作られているという点です。通常、特化/専門化による最適化は改良する方に働くはずであり(そうでなければ最適化として機能していません)、大幅な改良になることもよくあります。

このため、もし将棋においてミニマックス探索が十分に有効であるのならば、深層学習による汎用型評価関数はミニマックス探索による改善を含む従来型の“評価関数”には及ばないはずなのですが(※これまで筆者が将棋における深層学習の有効性にやや否定的であったのは、これが理由です)、Silver論文の結果はそうなっていません。

すなわち、Silver論文の結果は、将棋(やチェス)におけるミニマックス探索の有効性に疑問を投げかけるものであると解釈することができると思われます。

従来、将棋ソフトにおいて、ミニマックス探索は経験的に優れた手法であると信じられていました。これは、先駆者であるチェスソフトでも同様です。実際に探索を深くしていく(思考時間を増やしていく)とレートが向上するということは、このブログでも紹介してきた通りです。

この定説的な知見を見なさなければならないかもしれないというのは、個人的に非常に衝撃的であり、エキサイティングな結果であると感じています。

さて、Silver論文の5頁では、ミニマックス探索よりもモンテカルロ木探索(MCTS)が優れているとして、思考時間に対するレートの伸びを比較しています(図2)。ただ、これは評価関数の精度やNPSが全く異なるものの比較であり、探索部以外の条件が著しく異なってしまっているため、この主張は論理的に成立しないものと思われます。もしかすると出版される際には消えているかもしれません。

ただ、論文執筆側からすると、このように少し無理がある主張というのは、はっきりとは言えない(すぐにデータで証明できない)が研究過程での経験的に何らかの確からしい感覚があって主張しておきたいという場合があり、後で結果的に重要になることがあります。研究においては、科学的な正確性と重要性が異なることがあるわけです。

ミニマックス探索の有効性について、DeepMindグループの疑問と筆者の私的解釈における疑問がどの程度、重なっているのかは分かりませんが、いずれにしても今後、この問題は大いに議論され、研究されることになるかと思われます。

以上、今回は、取り急ぎ、Silver論文で個人的に衝撃を受けたことについて記しました。

次回は、簡単な数理模型を使って、ミニマックス探索の有効性について改めて考え直してみたいと思います。

  • 次の記事:「ミニマックス法の有効性 2:誤差を含む模型解析例」

二者で行う勝負事には相性というものがあります。二者間の勝率の期待値は必ずしも両者の実力差のみに依って決まるものではなく、相性にも依存するというわけです。極端な場合には、「AはBに勝ち越し、BはCに勝ち越すが、AはCに負け越す」といったような実力だけでは説明できない“じゃんけん”のような状態が出現することもあります。

イロレーティングにおいては、相性という要素は考慮されていません。相性を調べるにはイロレーティングを超えた解析が必要になります。イロレーティングについては「イロレーティング 1:棋力ってなんだ?」「2:あなたのレートは……」の解説記事をご参照ください。

相性を考慮すると、AのBに対する勝率の期待値P(A, B)から計算されるレート差

\[dr(A, B) = 400 \log_{10}(\frac{P(A, B)}{1 - P(A, B)})\]

は、両者のレートR(A)、R(B)のレート差

\[dR(A, B) = R(A) - R(B)\]

とは異なっているはずです。その差

\[x(A, B) = dR(A, B) - dr(A, B)\]

を“相性によるレート補正”と定義しましょう。イロレーティングの立場から見ると、この相性による系統的なずれは系統誤差ということになります。

今回は、floodgate棋譜集(2012~2016年版)において、この“相性によるレート補正”の大きさがどの程度であるのかを見積もりたいと思います。

もし勝率の期待値や両者のレートが精確に分かっているのであれば、上の式をそのまま計算することで、補正値を精確に算出することができます。しかしながら、現実のfloodgate棋譜集においては勝率の期待値もレートもそれなりに大きな不確かさを有しており、補正値を精確に求めることはできません(※補正値の不確かさは、各々の不確かさの二乗和の平方根)。

そこで、今回、考えるのは、個々の補正値ではなく、補正値の分布のばらつきの大きさです。個々の補正値の不確かさが大きくても、全体の分布のばらつきについてなら、ある程度は精度良く見積もることができます。

一般的に分布のばらつきの大きさDの二乗は、

\[D^{2} = \sum_{a, b} w(a, b) [x(a, b)]^{2}\]

と書くことができます。ここで、aとbについての和はデータがある全ての組み合わせについての和です。また、重み関数w(a, b)は

\[\sum_{a, b} w(a, b) = 1\]

のように規格化されています。

もし重み関数が定数であるならば、Dは標準偏差に該当します。しかしながら、x(a, b)は、aとbの組み合わせ毎に異なる不確かさs(a, b)を有しているため、不確かさの大きなデータと小さなデータを対等に取り扱うことは合理的ではありません。

このような時、(古典的な)統計学では、Dの不確かさUを最小にするように重み関数を決定します(※詳細は記事の最後に付記)。結果的に、不確かさの大きなデータの重みは小さくなり、不確かさの小さなデータの重みは大きくなります。

実際に用いるデータは、30手以上の投了決着棋譜に限定し、それぞれの組み合わせにおいて30勝以上かつ30敗以上のデータのみを採用します。また、計算に使用するレートの数値は最尤法によるものです。具体的には「floodgate棋譜集レートの最尤法との比較一覧(2012~2016年版)」をご覧ください。

結果は以下の通りです。レート毎の分類は、各組合せの平均レートで行っています。

  • 全体:D±U = 33.2±1.4
  • レート2000~2500:D±U = 33.5±2.0
  • レート2500~3000:D±U = 31.3±2.2
  • レート3000~3500:D±U = 39.5±4.0

結果的に、相性によるレート補正値の分布のばらつきの大きさは大体33程度だということが分かります。また、レート3000以上に限定すると、やや不確かさは大きいですが、40程度に上昇しています。

(以下、加筆と修正[2017年2月16日])

さて、上記のように単純に不確かさUを最小化してしまうと、重み関数w(a, b)が補正値x(a, b)に依存してしまいます。これはあまり性質がよくないので、重み関数が補正値に依存しないように、重み関数内の補正値の二乗をDの二乗で置き換えるという方法も考えられます(※詳細は記事の最後に追記)。

そのように重み関数を定数化した時の結果は以下の通りです。

  • 全体:D±U = 47.3±1.6
  • レート2000~2500:D±U = 50.0±2.5
  • レート2500~3000:D±U = 43.1±2.5
  • レート3000~3500:D±U = 50.6±4.4

この方法においては、補正値の大きなずれに対する抑制がかからないため、ばらつきの大きさが大きめに出る傾向があり、全体でも50弱の数値になっています。また、不確かさを最小にした場合に比べて、当然ですが、不確かさも大きくなっています。

この2つの方法は、それぞれ別の量を測っていますので、どちらが正しいというわけではありません。ものすごく大雑把に捉えると、方法に依りますが、レート補正値の分布のばらつきの大きさは大体30~50程度であるということは言えるでしょう。

以上、今回は、floodgate棋譜集(2012~2016年版)における“相性によるレート補正”の分布のばらつきの大きさを統計学的に見積もりました。結果として、方法に依りますが、大体30~50程度という数値が得られました。

もし仮に分布が正規分布であるとするならば、ばらつきの大きさの2倍であるレート60~100以上の相性差となる相手は22人に1人となり、3倍のレート90~150以上の相性差となる相手は370人に1人となります。

この結果は、あくまでもfloodgateの参加者に限定されたものであり、また、floodgate棋譜集のレート推定における理論誤差を含んだものであるという点には注意が必要です。

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

付記:重み関数の計算

補正値x(a, b)が不確かさs(a, b)を有するということは、補正値は平均x(a, b)、標準偏差s(a, b)の確率分布に従う確率的な量であると考えることができます。以下の計算では、この確率分布を正規分布であると仮定します(※元々、補正値は3つの量の和/差であるため、中心極限定理を鑑みると、この仮定はそんなには悪くはないはずです)。

確率的な期待値として、Dの二乗を書き直すと、

\[D^{2} = \sum_{a, b} w(a, b) < [X(a, b)]^{2} - [s(a, b)]^{2} >\]

となります。ここで、X(a, b)は補正値の確率変数を表し、アングルブラケットは期待値を表しています(※確率分布の重みを付けての積分)。実際に、期待値を計算してみると、

\[D^{2} = \sum_{a, b} w(a, b) [x(a, b)]^{2}\]

となっています。

Dの不確かさUの二乗は、Dの二乗の不確かさを

\[u^{2} = < [ \sum_{a, b} w(a, b) [ [X(a, b)]^{2} - [s(a, b)]^{2} - D^{2} ] ]^{2} >\]

とすると、

\[D + U \approx \sqrt{D^{2} + u^{2}} \approx D + \frac{u}{2 D}\]

ですので、

\[U^{2} = \frac{u^{2}}{4 D^{2}}\]

となり、この期待値を注意深く計算すると、

\[U^{2} = \frac{1}{2 D^{2}} \sum_{a, b} [w(a, b)]^{2} [s(a, b)]^{2} [ 2 [x(a, b)]^{2} + [s(a, b)]^{2} ]\]

となります。

これを、規格化条件の下、重み関数w(a, b)について最小化すると(※ラグランジュの未定乗数法)、

\[D^{2} = \sqrt{\frac{V(4)}{V(0)}}\]

が得られ、また、

\[U^{2} = \frac{1}{V(2) + \sqrt{V(0) V(4)}}\]

も得られます。ここで、

\[V(n) = \sum_{a, b} \frac{[x(a, b)]^{n}}{[s(a, b)]^{2} [ 2 [x(a, b)]^{2} + [s(a, b)]^{2} ]}\]

を導入しました。

この時、重み関数w(a, b)は、

\[w(a, b) = \frac{(1 - U^{2} V(2)) / V(0) + U^{2} [x(a, b)]^{2}}{[s(a, b)]^{2} [ 2 [x(a, b)]^{2} + [s(a, b)]^{2} ]}\]

となります。

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

追記:重み関数の定数化(2017年2月16日)

重み関数が補正値に依存しないように、重み関数内の補正値の二乗をDの二乗で置き換えると、

\[w(a, b) = \frac{1}{v(0) [s(a, b)]^{2} [ 2 D^{2} + [s(a, b)]^{2} ]}\]

と書くことができます。ここで、

\[v(n) = \sum_{a, b} \frac{[x(a, b)]^{n}}{[s(a, b)]^{2} [ 2 D^{2} + [s(a, b)]^{2} ]}\]

です。

この重み関数を用いると、Dの大きさは、

\[D^{2} = \sum_{a, b} w(a, b) [x(a, b)]^{2} = \frac{v(2)}{v(0)}\]

をDについて解くことで求めることができます。

適当な最尤法を用いると、大体はこの方法に近くなります。

将棋のような二人で行う順番制のゲームでは、最初の手番をどちらにするかで“先手”と“後手”とに分かれます。一般的に、先手と後手では初期条件が違いますので、ゲームの結果にも影響があります。

通常は、先に行動して利益が得られる先手が有利だとされていますが、例外もあります。例えば、どうぶつしょうぎは後手必勝であり、初期局面がzugzwang(できればパスしたい局面)になっています(参照:『「どうぶつしょうぎ」 の完全解析』)。また、リバーシ(オセロ)では、初期局面での先手の合法手は対称性を考慮すると実質的に1つだけですが、その手が得かどうかは定かではありません。6×6では後手必勝が確定していますが、8×8以降は不明であり、棋譜集に依りますが、勝率的にも互角に近いようです(例えば、「オセまにあ」では、10000局で先手の勝率49.8%)。

チェスでは先手の勝率が高く、先手有利と言われています(「first-move advantage」という)。例えば、「A Visual Look at 2 Million Chess Games」では、先手勝率38.8%、後手勝率29.8%、引き分け31.4%であり、引き分けを除くと、先手勝率56.6%、後手勝率43.4%になります(※チェスでは引き分けを0.5勝0.5敗として勝ち点率を計算するのが通例ですが、ここでは他と合わせるために引き分けを無視した場合の数値を記しています)。他の棋譜集でも似たような数字ですが、コンピュータチェスでは引き分けと先手勝率が少し上がるようです。例えば、「CCRL 40/40」では、執筆時点(2017年1月)で先手勝率34.5%、後手勝率25.6%、引き分け39.9%であり、引き分けを除くと、先手勝率57.4%、後手勝率42.6%(レート差51.8)となっています。

この有利/不利が存在するため、チェスの公式戦等では、両者が先手・後手を交互にもち、2局をセットにして偶数回の対局を行うのが通例です。互いに機会を平等にすれば、乱数を入れずに公平性が確保できます。ただし、偶数回の対局では五分五分の結果が出ることがあり、状況によっては大会運営を悩ませることにもなります。

囲碁でも先手が有利だと言われており、先手と後手を公平にするために「コミ」と呼ばれるハンデをつけています(日本ルールでは6目半)。コミの大きさが適切であるかは議論の余地のあるところであり、特にコンピュータ囲碁においては技術の進化と共に今後、変わっていくかもしれません。

将棋では、やや先手有利というのが定説であり、入玉等の一部のルールにおいては先手有利を前提としているかのような取り決めも見られます。ただし、ほとんどのルールにおいては先手と後手を平等なものとして取り扱っており、大会の運営においても先手と後手の差が考慮されることは通常はありません。この辺りは、コンピュータ将棋の大会等においても議論になることがあり、現在のルールには“本音と建前”の乖離があるのかもしれません(※)。

※ もし、将棋でも先手と後手を公平にしようとするのであれば、チェスのように偶数局にしたり、入玉宣言の点数に「コミ」を出したりするというようなことも考えられますが、副作用もありますので熟慮が必要になります。また、乱数を含めた公平性ということであれば、「振り駒」で確保できているとも言えますが(記事の最後に付記)、“運”の要素をどのように認めるのかについても議論の余地がありそうです。

さて、コンピュータ将棋における先手有利というのは実際にどの程度の有利さなのでしょうか? 今回は、この点を検証してみたいと思います。

まずは、単純に勝率を見てみましょう。

棋士棋譜集(2015年11月版)では、先手の22256勝19634敗であり、勝率53.13%(標準誤差0.24%)となっています。これをイロレーティングのレート差に換算すると、21.8(標準誤差1.7)となります。棋士における先手勝率は、棋譜集に依りますが、大体この程度の数値になります。

floodgate棋譜集(2012~2016年版)における結果は以下の通りです。

  • 全体:57900勝51931敗、勝率52.72%±0.15%、レート差18.9±1.0。
  • 2012:14611勝13311敗、勝率52.33%±0.30%、レート差16.2±2.1。
  • 2013:19241勝17333敗、勝率52.61%±0.26%、レート差18.1±1.8。
  • 2014:11729勝10260敗、勝率53.34%±0.34%、レート差23.2±2.3。
  • 2015: 7087勝 6544敗、勝率51.99%±0.43%、レート差13.8±3.0。
  • 2016: 5232勝 4483敗、勝率53.85%±0.51%、レート差26.8±3.5。

また、対局者の平均レートを3000以上の対局に絞ると、以下のようになります。ここで、レートの数値は最尤法による推定値を用いています。また、2012年は数が少ないので(29勝20敗)、ここには記載していません。

  • 全体:13633勝11876敗、勝率53.44%±0.31%、レート差24.0±2.2。
  • 2013: 4875勝 4157敗、勝率53.97%±0.52%、レート差27.7±3.7。
  • 2014: 3097勝 2564敗、勝率54.71%±0.66%、レート差32.8±4.6。
  • 2015: 2719勝 2564敗、勝率51.47%±0.69%、レート差10.2±4.8。
  • 2016: 2913勝 2571敗、勝率53.12%±0.67%、レート差21.7±4.7。

これらの結果をまとめると、先手の有利はレート差でおおよそ20程度、強豪同士では更にわずかに有利になるということが分かります。

次に、自己対局での勝率を見てみましょう。

探索深さ6の2015年のPonanzaでは、1700局で先手勝率51.82%(標準誤差1.21%)となるようです(参考:山本一成氏のツイッター)。これはレート差では、12.7(標準誤差8.4)となります。

手元にあるBonanza(6.0)、Apery(wcsc25_bmi2)、技巧(20160606)による結果では以下のようになっています。設定等は「手数と投了 5:自己対局における投了手数」をご参照ください。持ち時間は、1秒1000局、2秒1000局、4秒1000局、8秒1000局(技巧のみ無し)です。Bonanzaについては通常の定跡ファイルによる結果と宮本定跡を用いた結果があります。

  • Bonanza(通常定跡):2057勝1794敗、勝率53.41%±0.80%、レート差23.8±5.6。
  • Bonanza(宮本定跡):2091勝1795敗、勝率53.81%±0.80%、レート差26.5±5.6。
  • Apery:1873勝1852敗、勝率50.28%±0.82%、レート差2.0±5.7。
  • 技巧:1428勝1160敗、勝率55.18%±0.98%、レート差36.1±6.9。
  • 上記合計:7449勝6601敗、勝率53.02%±0.42%、レート差21.0±2.9。

結果を見ると、対局数があまり多くないこともありますが、レート差20の付近から大きくばらついています。自己対局の先手勝率はソフト毎にばらつきが大きいのかもしれません。

最後に、floodgate棋譜集(2012~2016年版)における先手と後手のレート差を最尤法で見積もってみましょう。

手法は以下の通りです。

  1. 各々の先手と後手を別者として、年度ごとにfloodgate棋譜集におけるレートを最尤法で推定する(棋譜数100、勝ち数5、負け数5以上の者に限定、手法の詳細は「最尤法によるレート推定と不確かさ」を参照)。
  2. 求めた推定値と標準不確かさから、さらに最尤法(最小二乗法)を用いて、先手と後手のレート差を推定する(詳細は記事の最後に付記)。

結果は以下の通りです。ここで、レートの分類は先手と後手の平均レートで行っており、標準不確かさは1000回のシミュレーション(モンテカルロ法)によって見積もっています。

  • 全体:レート差19.9±1.8。
  • レート2000~2500:レート差11.7±2.9。
  • レート2500~3000:レート差24.6±2.7。
  • レート3000~3500:レート差25.7±4.3。

この結果は勝率による結果と整合的になっています。勝率による結果と比べて不確かさが大きくなっているのは、棋譜採択の条件を絞っているためです。この結果から、勝率による単純な見積もりでも悪くないことが分かります。

詳細を眺めると、レート2500以下のソフトでは先手と後手のレート差が小さくなっており、これが全体のレート差を押し下げていることが見てとれます。レート2500以上のソフトに限ると、レート差はおおよそ25程度であるようです。

以上、今回は、コンピュータ将棋における先手の有利さを検証しました。勝率による見積もりにおいても、レート差による見積もりにおいても、レート2500以上のソフトにおいては先手と後手のレート差はおおよそ25程度であるということが分かりました。この数値はコンピュータチェスにおけるレート差50程度の約半分ということになります。

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

付記:振り駒について

先手/後手を決める方法は各競技で様々なやり方があります。

例えば、リバーシでは、片方が手で隠した石の表の色をもう片方が当てる「伏石」という方法が使われます。また、チェスでは、片方が両手にそれぞれ隠した白と黒のポーンをもう片方が選んで色を決める「トス」という方法が使われ、囲碁では、片方が握った石の数が偶数か奇数かをもう片方が当てる「ニギリ」という方法が使われます。

将棋では、5枚の歩を落として表裏の枚数で先後を決める「振り駒」という方法が使われます。将棋の駒は落としても割れにくい素材でできているため、他のゲームよりも少し“荒っぽい”やり方になっており、この辺りも将棋の文化的な特徴の一つだと言えるでしょう。

「振り駒」が確率的に公平であるかどうかは難しい問題です。駒の表と裏とが対称であることを仮定するならば、五分五分になることが期待されるわけですが(先験的確率という)、これはあくまでも仮定の話であって現実ではありません。実際、例えば、コイン落としでは、コインの表と裏の重さが違うため、落とし方によっては大きく結果を偏らせることもできます。

プロの公式戦においては、真部一男九段の提案による調査により、1541局(2005年7月12日~2006年7月11日)で「歩」が50.36%(776局)であることが分かっています(※公式戦で振るのは記録係等の第三者)。この場合の標準誤差は1.27%ですので、結果は標準誤差の範囲内に収まっています。つまり、数%以上の大きな偏りがある可能性は少ないという結果です。ただし、この結果は「公式戦の振り駒の結果に大きな偏りが見られなかった」というだけのことであり、「大きな偏りの出る振り方が存在しない」ということまでは意味しません。

現実の駒が表裏非対称であり、また、持ち方や振り方の自由度がある以上は、何かしら大きな偏りを出す方法はあるのではないかという気はします。この辺のことは「振り駒」の研究よりも「まわり将棋」の研究の方が相応しいかもしれません。

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

付記:先手と後手のレート差の最尤法(最小二乗法)による推定

参加者iの先手におけるレート推定値をr(i)、標準不確かさをs(i)とし、後手におけるレート推定値をR(i)、標準不確かさをS(i)とする時、参加者iの平均レート推定値がm(i)、先手と後手のレート差がdとなる確率Pの自然対数は、確率分布を正規分布と仮定すると、

\[\ln{P} = - \sum_{i} \left[ \frac{[ m(i) + d / 2 - r(i) ]^{2}}{2 s(i)^{2}} + \frac{[ m(i) - d / 2 - R(i) ]^{2}}{2 S(i)^{2}} \right]\]

となります。

最尤法(最小二乗法)では、この確率Pをm(i)とdについて最大化(最小二乗誤差を最小化)すればよいので、

\[\frac{\partial{\ln{P}}}{\partial{m(i)}} = 0\]

\[\frac{\partial{\ln{P}}}{\partial{d}} = 0\]

を解けばよいことになります。

実際に偏微分を計算して、解を求めると、

\[m(i) = \frac{S(i)^{2} r(i) + s(i)^{2} R(i)}{s(i)^{2} + S(i)^{2}} + \frac{s(i)^{2} - S(i)^{2}}{s(i)^{2} + S(i)^{2}} \frac{d}{2}\]

\[d = \left[ \sum_{i} \frac{1}{s(i)^{2} + S(i)^{2}} \right]^{-1} \sum_{i} \frac{r(i) - R(i)}{s(i)^{2} + S(i)^{2}}\]

という結果が得られます。

この結果は、特に、先手と後手のレート差dについて、不確かさによる重みを付けた先手と後手のレート推定値の差の平均となっていることから、妥当なものであると考えられます。また、相対差を取っていますので、レート推定値の絶対値に対する誤差はdには直接的に影響しないようになっています。

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

追記:先手と後手のレート差の分布のばらつきの大きさ(2017年2月16日)

上述の付記の最尤法(最小二乗法)による推定手法は、重み関数を不確かさについて最小化する統計学的手法と結果的に一致しています。

さらに、同様の手法により、先手と後手のレート差の分布のばらつきの大きさも見積もってみましょう。手法の詳細は「ソフトの相性:ふたりの距離の統計的概算」の記事と同じです。

結果は以下の通りです。レート毎に分類した結果も示します。

  • 全体:23.6±1.8(最小不確かさ)、28.4±2.0(重み関数定数化)
  • レート2000~2500:20.9±2.7(最小不確かさ)、26.7±3.1(重み関数定数化)
  • レート2500~3000:23.0±2.8(最小不確かさ)、26.3±3.0(重み関数定数化)
  • レート3000~3500:29.4±4.7(最小不確かさ)、32.3±4.9(重み関数定数化)

結果を見る限り、どうやら先手の有利さはソフトによってばらつきが大きいようです。

手数と投了 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)

前回の記事「評価値という数値 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程度になりそうです。この辺の詳細な研究は今後の課題だと言えるでしょう。

このページのトップヘ