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

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

カテゴリ: コラム

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

もし将棋が完全解析できたとするならば、局面は勝ち・負け・引き分けの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万点程度の十分に大きい最大値を決めておいて、そこから「詰み手数」分を引いた値を評価値とするというのもよく行われることです。この場合の評価値は、比率尺度ではなく、順序尺度になります。

物理学の代表的な模型の一つに「ランダム・ウォーク」というものがあります。これは、物体が乱雑にフラフラと動き回る現象を模型化したものであり、酔っ払いの歩き方に似ていることから「酔歩」と訳されます。

よく知られている例としては、鉱物の粉や花粉から出る微粒子が水中で不規則に動き回るブラウン運動が挙げられます。微粒子は多数の水分子の衝突によってランダムに力を受けるわけですが、その単位時間における合計は必ずしも零にはならず、微粒子の不規則な運動を引き起こします(カジノで儲かる人と損する人がいるのと同じことです)。この運動は「酔歩」として模型化でき、このことはアインシュタインの1905年の著名な論文の内の1本のテーマになっています。

「酔歩」では、微粒子の位置は確率的に決定され、その確率分布は、歩けば歩くほど、広がっていきます。このことは、外部ノイズによって、微粒子の位置情報がどんどん拡散して失われていくと言い換えることができます。また同時に、長い時間スケールで見れば、微粒子の位置情報が失われて、水と微粒子が混合した平衡状態になるということも意味しています。このように、ミクロとマクロを結ぶ模型として、物理学では「酔歩」をよく考えます。

将棋における評価値の動きは不規則であり、一見すると「酔歩」に近いようにも見えます。果たして、将棋は酔歩模型で説明できるのでしょうか? 今回は、このことを検証してみたいと思います。

まず、酔歩模型の種類としては、なるべく簡単に、一手ごとに正規分布に従う確率で評価値が上がったり下がったりするものを考えましょう。手番の違い等、細かいことは平均化されているとして気にしないことにします。

ただし、評価値の数値は、絶対値が小さい局面でも大きい局面でも一手ごとの動きが同じになる様に、生の数値Vではなく、

\[X = F(V)\]

と変換された変形評価値Xを用います。ここで、関数Fは、単調増加する奇関数で(F(-V) = - F(V))、|V|が大きいところでは傾きが零に近くなるような関数です(例えば、tanh)。変形評価値の規格化は、勝敗が決する値を±1とします。

この簡単な模型でシミュレートすると、実際の手数分布を再現することはできません。実際、唯一の変数である一歩の標準偏差を平均手数に合わせるように決めると、手数分布が広がりすぎて、実際の分布とは全く違った形の分布になってしまいます。

この原因は、序盤の手や必然手、終盤の手の取り扱い方にあると考えられます。序盤の指し手は双方が均衡を保つように指すため、酔歩のようには進行しません。また、必然手もスキップするようなものであるため、酔歩的ではありません。さらに、実質的に勝負がついた後も、すぐに終局するわけではなく、手を進めて形を作ってから(ソフトなら詰みまで指してから)投了となりますが、その間の指し手も酔歩にはなりません。

これらの非酔歩手は、酔歩模型とは切り分けて、まとめて取り扱うこととし、こちらも正規分布に従う確率で手数が決まると仮定しましょう。

結果的に、一歩の標準偏差A、非酔歩手数の平均Mと標準偏差Sの3つが調整可能な変数となります。これらの3つの変数は、手数分布の平均、標準偏差(平均からの2次モーメント)、平均からの3次モーメントを合わせるように決定することにします。

手数分布については、簡単のために、ガンマ分布を採用して比較を行います。ガンマ分布と手数分布の詳細については「手数分布はガンマ分布で近似できるか?」の記事をご覧ください。

実際に、棋士棋譜集(2015年11月版)とfloodgate棋譜集(2012~2015年版)において、比較を行った結果を下図に示します。青線がガンマ分布で、黒点がそれぞれ1億回のシミュレーションの結果です。

random_walk

さすがに3つの変数で調整すれば、大体は合わせることができます。未調整の量である平均からの4次モーメントについては、両者ともガンマ分布と4%弱の違いがあります。

具体的に、変数の値は、棋士棋譜集(上図)では、A = 0.2474、M = 95.46、S = 21.72となり、floodgate棋譜集(下図)では、A = 0.2262、M = 107.4、S = 25.13となっています。

棋士よりもソフトの方が非酔歩手数の平均が12手ほど大きいのは、投了方法の違いに依るものと思われます。また、酔歩の一歩の標準偏差が少ない(酔歩部分の手数が3手ほど長い)のは、その分だけ互いの読み筋が合っているためだと考えられます。この解析が正しいとすれば、以上の2つの要因が合わさって、棋士棋譜集よりもfloodgate棋譜集の平均手数が大きくなっていると解釈できます。

結果的に、上記の模型が正しいとして、形勢が揺れ動く酔歩部分は平均して1局で21~24手程度ということになります。この解析が妥当であるかは難しいところですが、解析結果を見ると、そんな感じもしてきます。

以上、今回は、将棋の手数分布が酔歩模型で説明できるかを検証しました。結果として、もし酔歩模型が妥当であるとするならば、酔歩部分は平均して1局で21~24手程度だということが分かりました。

今年(2016年)の大晦日は電王戦合議制マッチが行われます。第3回将棋電王トーナメント(2015年)版のPonanza、nozomi、大樹の枝(多数決合議)と森下卓九段、稲葉陽八段、斎藤慎太郎六段の3名の棋士が合議制マッチで対局するという企画です。

この企画については、「ニコニコ超将棋会議3五角は成立していたか?:合議と熟議」の記事でも触れ、また、「多数決合議と楽観合議」についても付記しています。

付記の内容は、簡単にまとめると、以下のようになります。

  • 棋力差の少ないソフトの合議については伊藤毅志先生等の研究があり、例えば、「コンピュータ将棋の進歩6」では、Bonanza、YSS、GPS将棋(当時のレート差150以内)の多数決合議が有意に強くなり、また、楽観合議はそれ以上に強くなるとの報告がある。
  • 多数決合議の有効性は簡単な数理モデルで示すことができ、ソフト間の相関を無視すれば、ソフト間の棋力差が小さければ、最善手率が最強参加者を上回り、また、棋力差が大きくなると有効に機能しなくなるということが分かる。
  • 楽観合議は評価値期待値の最大化の簡易版と解釈できる(※楽観合議については、さらに別の解釈が可能であることを今回の記事で示します)。
  • 合議と最強参加者との比較は、多数台と1台との比較になるので、注意が必要。

今回は、もう少し詳細な模型を用いて、合議の効能について改めて考えてみたいと思います。

模型の詳細は以下の通りです。

  • ある局面において、参加ソフトよりも十分に強いソフトが示す有効な候補手の数をnとして、残りの合法手は無視する。最善手(以下、真の最善手)の評価値をA、残りの候補手の評価値を一定のBであると仮定し(※Bは平均値に相当)、その差をd = A - Bとする。
  • 各々の候補手に対する各ソフトの評価値は正規分布に従って確率的にばらつくものとする。また、各ソフトの評価値の規格化は揃えられており、確率分布に偏りはないものとする。
  • 各ソフト毎に各々の評価値における最善手と最大評価値のみが合議のために利用可能。
  • 各ソフト間の相関は基本的には考えないが、後で簡易的に検討する。
  • 合議の結果が真の最善手とどれだけ一致するかという“最善手率”を測定する。

さらに、電王戦合議制マッチを意識し、具体的に3者の合議を考えて、3者の正規分布の標準偏差をそれぞれ

\[s_{1} < s_{2} = s_{3}\]

と仮定します。ここで、「1」が最強者であるPonanza、「2」と「3」がnozomiと大樹の枝を想定しています。結果的に、模型は、局面の情報である候補手nの他に、

\[\frac{s_{1}}{d}~,~ \frac{s_{2}}{d}\]

の2つの変数で決まることになります。

下図に、候補手n = 2と3の局面における様々な合議の最善手率を示します。最強者の標準偏差は一定にして、横軸は下位ソフトの標準偏差を取り、横軸が大きい程、ソフト間の棋力差が大きくなるようにしています。変数の値は、一致率や有効分岐数のデータの整合性から、それなりに適当な範囲になっていることを期待しています。各点はそれぞれ1千万回のシミュレーションの結果です。

council_1

まずは、合議せずに各ソフト単独で指した場合の最善手率を黒線で示します。上の線が最強ソフトの最善手率で、下の線が下位ソフトの最善手率です。両者が乖離するほど、棋力差が大きいことを表しています。また、合議の最善手率が最強ソフトの最善手率(上線)を下回ってしまうと、最強ソフト単独で指した方が強いということになってしまいますので、合議の意義が失われます。

電王戦合議制マッチで採用されている多数決合議の最善手率を緑点で示します。ソフト間の棋力差が小さい内は有効に機能しますが、大きくなると機能しなくなる様子がグラフから読み取れます。

今回は、模型が簡単ですので、最善の結果を期待できる合議システム(以下、最善合議)も簡単に計算することができます(※記事の最後に詳細を付記)。その結果が黒点であり、合議の仕組みを頑張って調整した時の最大値を与えるものです。こちらも多数決合議と同様に、ソフト間の棋力差が大きくなるほど、合議の効果は薄れていきますが、多数決合議とは違い、合議の機能が失われることはありません。

評価値が最大の指し手を選ぶ楽観合議の結果を赤点、最小の指し手を選ぶ悲観合議の結果を青点で示します。悲観合議は全く機能しませんが、楽観合議はソフト間の棋力差が小さければ有効です。この機構の詳細な解説は長くなるので省略しますが、大まかには、正規分布(もしくは類似の分布)型の確率分布であれば、評価値が高い指し手が真の最善手である確率が高いため、下位ソフトによるノイズが小さければ、楽観合議は機能すると説明できます。

グラフ全体を眺めると、多数決合議がかなり優秀で、楽観合議は多数決合議に劣るという結果になっています。この結果を見る限りは、電王戦合議制マッチにおける多数決合議も効果的である可能性が高いように思えてきます。

しかしながら、果たして、この結果は現実的に妥当なものだと言えるでしょうか? 実際、伊藤先生等の研究では、多数決合議は楽観合議を下回る結果となっており、今回の結果とは矛盾しています。

この矛盾を追及し、現実的な合議の効能を考えるには、今まで無視してきたソフト間の相関を考えなければなりません。実際に、将棋ソフトには共通の特徴があることも考えられますし、特に今回の電王戦合議制マッチに使われるnozomiと大樹の枝は同系統のソフトであるため、相関を無視することは現実的ではないでしょう。極端な例として、仮にnozomiと大樹の枝が完全にシンクロすることがあるとすれば、多数決合議の結果はそれらの単独の指し手と一致してしまい、合議は確実に機能しません。

一例として、下位ソフト間のシンクロ率を50%にした時(※50%の確率で指し手と評価値が一致)、各ソフトの指し手の一致率は下図のようになります。相関がない時の下位ソフト間の一致率が青点であり(最強者との一致率は赤点)、シンクロ率50%の時の一致率が黒点です。

council_syn

無相関時の青点は、完全にランダムな場合の1/2(上図)と1/3(下図)を少し上回る程度であり、同系統ソフト間の一致率を再現できていません。シンクロ率による相関を入れることで、黒点のように、一致率を大きく向上させ、現実に近づけることができます。

シンクロ率50%の相関がある時の多数決合議と楽観合議の結果を下図に十字点で示します。無相関時の結果の丸点は上図と同じです。

council_2

楽観合議の方は相関に対して頑強であり、結果は大きく変わりませんが、一方で、多数決合議の方は相関の影響が大きく、最善手率が大きく低下します。結果的に、楽観合議と多数決合議が逆転して、楽観合議の方が優位となり、実際の報告に近い結果が得られます。

まとめると、合議において重要なのは、棋力の均質性(棋力差を少なく)と棋風の異質性(同調を少なく)ということになります。特に、多数決合議は同調による相関の影響が大きく、現実に楽観合議に劣ることがあるというのは、相関効果のためではないかと考えられます。楽観合議も棋力差の影響を受けやすく、最善合議には劣りますが、実装が簡単であり、また、相関効果に対して頑強である点が優れていると言えます。

また、今回の多数決合議の話は、政治の民主制の話ともリンクしているかもしれません。合議を上手く機能させるためには、情報格差が少ない方が望ましく、そのためには教育や報道の役割が重要になります。また、熟議したり、間接民主制で段階的に均らしたりすることも意味があると考えられます。さらに、相関効果を減らすために、各自が様々な視点の情報に幅広く触れ、同調的にならないことも大切になるでしょう。この辺は、メディアのあり方とも大きく関係している気がします。

以上、今回は、合議の効能について少し詳しく考えました。実際に電王戦合議制マッチの多数決合議がどれくらい機能するのかについては、実機で検証してみないと何とも言えませんが、同系統ソフトによる相関が小さくないこと、上位と下位の棋力差が大きいことを鑑みると、上手く機能しない可能性も少なくないと考えられます。

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

付記:最善合議について(2016年12月31日)

一般的にN台の多数台合議を考えましょう。各台の最善手をB(i)、評価値をV(i)、確率分布の標準偏差をs(i)とします(i = 1, 2, ..., N)。B(i)の中に出てくる最善手がk種類だとして、それぞれの手をb(j)と書くことにします(j = 1, 2, ..., k)。k = 1の場合には、その手を選択する以外にはありませんので、k > 1の場合を考えます。

最善合議は最尤法によって与えられます。すなわち、b(j)を真の最善手だと仮定した時に現在の状況になる確率P(j)が最も大きくなるb(j)を選択すればよいわけです。

候補手の数がnの局面において、確率P(j)は、

\[P(j) = C \prod_{i = 1}^{N} F[b(j), B(i), V(i), s(i)] [E_{y}[V(i), s(i)]]^{n - 1}\]

となりますが、規格化係数C等、b(j)に依らない部分は比較の際には無視できますので、

\[\prod_{i = 1}^{N} F[b(j), B(i), V(i), s(i)]\]

の部分のみを比較すれば十分です。結果的に、合議は候補手の数nには依存しません。

ここで、式中のF[b, B, V, s]というのは、b = Bの時には、

\[G_{x}[V, s] E_{y}[V, s]\]

となり、そうでなければ、

\[G_{y}[V, s] E_{x}[V, s]\]

となる関数です。また、真の最善手の真の評価値をA、残りの候補手の真の評価値をA - dとして、

\[x = \frac{V - A}{s},~ y = x + \frac{d}{s}\]

とすると、ガウス関数部分は、

\[G_{x}[V, s] = e^{- x^{2} / 2}\]

\[G_{y}[V, s] = e^{- y^{2} / 2}\]

になり、誤差関数部分は、

\[E_{x}[V, s] =\text{erf}(\frac{x}{\sqrt{2}}) + 1\]

\[E_{y}[V, s] = \text{erf}(\frac{y}{\sqrt{2}}) + 1\]

になります。

誤差関数erf(x)は、C++ならcmathをincludeすれば、そのまま使えますが、あまり速くはないようです。実際、筆者が適当に作った関数でも(g++で)5倍程度の速さが出ます。

さて、実際に模型の計算を超えて、現実に適用しようとすると、dとs(i)は調整変数として最適化する必要があります。また、それとは別にAを予測しなければならないわけですが、こちらは、最善手とそれ以外とを等確率だと荒く近似し、

\[A \approx \frac{k - 1}{k} d + \frac{1}{N} \sum_{i = 1}^{N} V(i)\]

として合議を行えば、結果に大きな違いは出ないようです。

下図に、

\[s(1) = s(2) = ... = s(N) = 2 d\]

の場合の最善手率を示します。棋力差も相関もない理想的な状況です。

council_3

Aの予測に上の近似式を用いた予測最善合議の結果(青十字点)は最善合議の結果(黒点)とほぼ一致します。また、台数が多くなっても、最善合議が楽観合議(赤点)を大きく上回ることが分かります。

前回の記事「チェスの不正解析 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. 棋力を直接的に反映していると思われる統計量とイロレーティングとの相関関係を調べる。
  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のデータを用いているために誤差が必ずしも正にならず、負の誤差の平均を「平均好手」、正の誤差の平均を「平均悪手」と区別しています)。

しかしながら、データの量が有限である情報科学においては、敢えて実測値を用いずに、モデルを仮定した推定値を用いることで様々な利点が生じます(※物理学で理論値を観測値で繰り込むのと逆方向の繰り込みに対応します)。実際、もしモデルが妥当であるのならば、推定値の方が実測値よりも多くの情報を反映していますので、データが少量の場合にも対応でき、また、データの雑音に対して頑強になります。さらに、モデルを活用することで、不正解析などの様々な応用も可能になります。ただし、これらのことは「モデルが妥当である」という前提に基づくものであることに注意してください(※この前提を受け入れられるかどうかは、主観確率論を認めるかどうかに近いと思われます:「役には立つが、信用はできない?」)。

具体的には、以下のようにモデルを定めます。

  1. 各々の指し手が独立した確率事象であるとし(相関は無視)、その先験的な実現確率が評価値のみに依存すると仮定する。
  2. 局面kにおける候補手iの実現確率p(k, i)が最善手に対する評価値の誤差d(k, i)の関数であるとして、関数モデルを設定する。
  3. 関数モデル内の調整変数を実際のデータに基づいて推定する。

実現確率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教授らの論文に基づいて、固有チェスレーティングについて、簡単に解説しました。この考え方は、将棋にも直に応用可能なものであり、また、棋譜データを解析する上での基本知識になるかと思われます。モデルの信用性については様々な異論もあるかと思われますが、その辺の検証も含めて、“将棋メトリクス”の今後の重要な課題であると言えるでしょう。

もう今年(2016年)も12月ですが、大晦日には電王戦合議制マッチが行われます。第3回将棋電王トーナメント(2015年)版のPonanza、nozomi、大樹の枝(多数決合議)と森下卓九段率いる3名の棋士が合議制マッチで対局するという企画です。

合議によって棋士側がどれくらいの力を発揮するのかが最大の注目点ですが、多数決合議によってコンピュータ側の棋力(レート)がどうなるのかも気になるところです。単純に考えれば、上位(Ponanza)と下位(nozomi、大樹の枝)とでレート差の離れた組み合わせですので、中間のレートになりそうな気もしますが、実際には検証してみないと何とも言えません(※記事の最後に付記)。運営が実機で技巧辺りと100局くらいテスト対局してくれれば、それなりに推定できますが、手間がかかることですので、期待はできないでしょう。

一方で、棋士側は、単純な多数決ではなく、話し合って指し手を決定します。大きく揉めない限りは、合議の効果が期待できそうです。少し視点を変えると、今回の合議制マッチは“直接民主制と熟議民主制の対決である”という見方もできるかもしれません。

さて、将棋における合議制には様々な先例があります。その中で個人的に最も印象に残っているのは、2013年6月22日のニコニコ超将棋会議で行われた投票将棋です。この対局は、西尾明六段に対して、ニコニコ生放送の視聴者が合議制で挑むというものであり、筆者も一視聴者として参加していました(足を引っ張っていただけですが)。ニコニコ生放送を利用した合議システムやフィッシャークロックルールの採用等、時代に先駆けた要素の多い企画であり、とても楽しいものでした。また、西尾六段の真剣な対局姿勢が深く印象に残っています。イベントの詳細は、『リスナー多数決でプロ棋士に挑戦「ニコニコ超将棋会議」観戦記』をご参照ください。棋譜も観戦記の最後に載っています。

対局内容も面白い将棋であり、(寄与は小さいですが)筆者自身が参加した対局だということもあって、新しいソフトを導入する際の検討テスト用の題材の一つとして使っています。前に激指14を購入した際にも同棋譜で検討を行い、先日、浮かむ瀬を導入した際にも検討を行いました。

結果として、激指14と浮かむ瀬(並びに技巧20160606版)で大きく見解が分かれる局面が現れたので、今回は、コンピュータ将棋の“進化”を身近に感じた実例として、その話を書きたいと思います。

課題局面は74手目△5三同飛の局面(下図)です。以下、評価値は末端で10億局面以上は読ませたものであり、符号は先手から見たもの(先手有利で+、後手有利で-)です。

後手の持駒:角 金 桂 歩四
  9 8 7 6 5 4 3 2 1
+---------------------------+
|v香 ・ ・ ・ ・v玉 ・ ・v香|一
| ・ ・ ・ ・ ・ ・ ・v金 ・|二
|v歩 ・ ・ ・v飛v歩v桂 ・v歩|三
| ・ ・v歩 ・ ・ ・v歩 角 ・|四
| ・ ・ ・ ・v銀 ・ ・ ・ ・|五
| ・ 歩v銀 ・v歩 銀 歩 ・ ・|六
| 歩 ・ ・ ・ ・ 歩 ・ 飛 歩|七
| ・ ・ 金 銀 ・ ・ ・ ・ ・|八
| 香 桂 ・ 玉 ・ ・ ・ 桂 香|九
+---------------------------+
先手の持駒:金 歩三
先手:リスナー全員
後手:西尾 明六段

ここで、先手▲3三角成は△同金で後手勝勢になります(以下、▲2二飛成△3一金▲4五桂△2二金▲5三桂成△3二玉で浮かむ瀬-2654、技巧-1875)が、先手には▲3五角という秘策があり、この手があるために、先手側はこの局面に誘導しようという作戦でした。この▲3五角が成立しているかどうかが、ここでの検討課題です。

実戦では△5二飛と進み、ここで▲5三角成と角の押し売りをすれば、先手が分かりやすく勝勢だったというのが感想戦での結論でした(以下、△同飛▲2二飛成△5七桂▲同銀引△3二金▲1一龍△3一金▲3二金△5二玉▲3一龍△5七歩成▲同銀で浮かむ瀬+2550、技巧+2269)。

しかしながら、実戦では▲5三角成とは踏み込めず、▲5三歩△8二飛▲5五銀△2六歩▲同飛△2五歩▲2三歩△3五歩と進みましたが、これも悪い進行ではなく、先手が優勢であるようです(以下、▲5二銀△3一玉▲2二歩成△同玉▲2三歩打△同玉▲2四歩打△同玉▲4三銀△2二桂▲1六飛△5七歩成▲1五金△2三玉▲5七銀△4五角▲2四金打△1二玉▲3三金△7八角成▲5九玉△5八歩で浮かむ瀬+2653、技巧+2061)。特に、▲5五銀は、中央の銀を払って、同時にずっと懸案だった6六桂打を防いだ味のいい手であり、素人ながらに「これは行けるんじゃないか」と感じたことを覚えています。

しかし、△3五歩に対して▲5二銀ではなく、▲2二歩成と行ったのが悪手だったようで、ここから一気に形勢が逆転して(以下、△同飛で浮かむ瀬-1331、技巧-1254)、後手の西尾六段の勝ちとなりました。

激指14や浮かむ瀬等での検討によると、課題の▲3五角に対しては、△5二飛ではなく、△5七桂という切り返しの妙手があるようで、以下、▲同銀上△同歩成となった局面は詰めろなので飛車を取ることができません。この局面の評価が難しく、激指14と浮かむ瀬等とで評価が分かれます。

激指14の場合は、読みが浅い内は先手よりの互角を示し(PRO+で+273)、深く読ませても少し後手寄りになるものの互角の評価です(PRO+7で-83)。このため、過去に解析を行った際には、対応によっては難しくなるが、▲3五角は十分に成立している手であるという結論でした。

浮かむ瀬や技巧で検討を行うと、激指14では成立していると考えられていた手順が否定され、深く読んでいくと、後手優勢の評価となります(浮かむ瀬は1421億局面35/72で-1232、技巧は1074億局面37/68で-738)。

具体的に、▲3五角△5七桂▲同銀上△同歩成以下の局面を検討していくと、▲4二金なら、以下、△同玉▲2二飛成△3二金▲5三角成△同玉▲5四歩△4四玉▲5五銀△同玉▲4六銀△6四玉▲6五歩△同銀▲5五金△7三玉▲7一飛△8三玉▲5七銀△2二金▲6五金△3九飛▲5九桂△同飛成▲同玉△2六角で、浮かむ瀬-1363、技巧-1323となり、▲同銀なら、以下、△3五歩▲2二飛成△3一金▲6二龍△4五角▲7九歩△4四銀で、浮かむ瀬-1386、技巧-864となります。

その他にも様々な変化が考えられますが(記事の最後に大まかな分岐図を付記します)、詳細に調べていくと、後手が大きく優勢になるものが多く、▲3五角は厳密には成立していなかったのではないかというのが、浮かむ瀬や技巧での検討結果です。

筆者の目線から見れば、激指14も十分に強いソフトであり、浮かむ瀬や技巧がさらに強いと言っても、その差を実感することは余りないのではないかと以前は考えていました。しかし、実際に使って比較してみると、今回の検討のように、コンピュータ将棋の“進化”を体感することが意外とあることが分かってきました。無論、だからと言って、激指14が不要になったということではなく、普段の練習対局は棋力の微調整ができる激指を使っています。

ニコニコ超将棋会議は、プロに近いレベルから筆者のような素人レベルまで、様々な棋力を持つ人々が熟議して、合意形成を行い、多数決で指し手を決めるという正に熟議民主制の雛型のようなシステムで行われました。棋力の低い人でも票数のバランスを取ることで“多数決の横暴”を防ぐことに貢献したり、票を取りまとめる中で様々なアイデアが出て検討が深まっていったりという良い面も見られた一方で、▲5三角成に踏み切れなかった一貫性の欠如や劣勢になって崩れた時の脆さ等、悪い面も見ることができました。

大晦日の合議制マッチは、棋力が均質的に高い少数の棋士による合議ですので、ニコニコ超将棋会議とは全く違ったものになるかと思われます。将棋の内容のみならず、“合議”の進行がどうなるのかにも注目です。

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

付記:多数決合議と楽観合議

レート差の近いソフトの多数決合議については、伊藤毅志先生の研究があり(「コンピュータ将棋の進歩6」参照)、Bonanza、YSS、GPS将棋(当時のレート差150以内)の多数決合議によって有意に強くなることが示されています。

多数決合議で強くなる機構は以下の簡単なモデルで示せます。

ある局面における合法手が最善手(正確には参加ソフトよりも十分に強いソフトの最善手)とそれ以外の手に分類できるとしましょう。合議する3者が最善手を選ぶ確率を、確率が大きい順(強い順)に並び替えて、ぞれぞれ

\[p_{1}, p_{2}, p_{3}\]

とします。多数決合議による指し手は、2者以上の一致/バラけた場合には最強者の選択で決まります。多数決合議により、最善手が選ばれる確率Pは、「2者以上が一致して最善手を選ぶ確率」と「最強者のみが最善手を選び、かつ他者の指し手が一致していない確率」の和であり、

\[P > p_{1}\]

となった時に、多数決合議は最強者よりも強くなることが期待できます。

簡単のために、

\[p_{2} = p_{3} = p_{1} - d\]

とします(d > 0)。その局面における有効な候補手の数をBとすると(B = 1の場合は必ず一致するので、B > 1)、

\[p_{1} = \frac{1}{B} + a\]

と書くことができ、aは正の値で、レートが高いほど大きくなる値だと考えられます。また、「最強者のみが最善手を選び、かつ他者の指し手が一致していない確率」は、

\[p_{1} (1 - p_{2}) (1 - p_{3}) (1 - \frac{1}{B - 1})\]

だと考えることができます。

この時、多数決合議が最強者を上回る条件は、dを小さいとして展開して1次まで取ると、Bにあらわに依らずに、

\[d < \frac{a}{2}\]

となります。つまり、最強者とのレート差が小さければ、多数決合議は機能し、大きければ、機能しないということが分かるわけです。

伊藤先生の研究では、レート差150以内の3者で上手く行ったわけですが、今回はそれ以上のレート差であること、また各ソフトのレートが当時よりも遥かに上がっていることから、実際にどうなるのかは未知数だと言えます。

さて、多数決合議は評価値の数値は参考にしておらず、「最善手」との一致率の向上を目指していました。一方で、評価値の情報を活かして、評価値の期待値を最大化するという方針の合議もあります。こちらの方が、ミニマックス法と相性がよく、実際に伊藤先生の研究等でも、多数決合議よりも良い結果を示しています。

一番簡単なのは、類似ソフトの合議において最も評価値の高い指し手を選ぶという楽観合議です。評価が分かれた時、各ソフトの評価が対等であれば、最も評価値の高い指し手を選ぶことで、評価値の期待値を向上させることができます。また、評価値の低い指し手を選ぶ悲観合議だと、逆の結果となり、勝率も下がるようです。

合議するソフトの性質が異なる場合には、評価値の規格化を揃えたり、期待値を計算する際のソフト毎の信頼性の重みを調整したり、次善手(他のソフトの最善手)の評価値の予測を調整したりすることが必要になるかと思われますが、伊藤先生の研究等では単純な楽観合議でも“経験的”に上手く行くようです(政治への応用はどうでしょう?)。

ここで注意が必要なのは、これらの合議の比較対象が1台であり、多数台対1台の不平等な比較になってしまっているという点です。本来は同じ台数同士で比較する必要があります。

多数台同士の比較をする場合には、各マシン間の情報のやり取りがどれくらい密/疎であるかが重要になります。メモリを共有しているような密な結合であれば、合議するよりも1つに力を結集する方が明確に強くなります。メモリを共有しておらず、マシン同士が離れた場所にある疎結合の場合でも、クラスタ化した方が強くなるようです(政治制度に例えると、軍隊/官僚化?)。ただし、システムの頑強性や作りやすさを勘案すると、合議制にも使い道はあり、実際に近年でも世界コンピュータ将棋選手権でPonanazaが活用しています。

(追記:2016年12月25日)

※「合議の効能:三人寄れば……」の記事でさらに詳細に考察しています。特に、楽観合議については別の考え方を記しました。

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

付記:74手目△5三同飛以降の大まかな分岐図

△5三同飛▲3五角△5七桂
┣▲同銀上△同歩成
┃┣▲同銀△3五歩▲2二飛成△3一金
┃┃┣▲6二龍△4五角
┃┃┃┣▲7九歩△4四銀(浮-1386、技-864)
┃┃┃┣▲6八金打
┃┃┃┃┣△5二飛(浮-1432、技-1121)
┃┃┃┃┗△7五角
┃┃┃┃ ┣▲3七桂△7八角成▲同玉
┃┃┃┃ ┃┣△6一歩(浮-1317、技-681)
┃┃┃┃ ┃┗△5一金▲5三龍△同角(浮-1096、技-632)
┃┃┃┃ ┣▲5四歩△同飛▲3七桂△5一銀
┃┃┃┃ ┃┣▲7三龍
┃┃┃┃ ┃┃┣△3四角▲3五歩△7八角成▲同玉△5二金(浮-1420、技-901)
┃┃┃┃ ┃┃┗△7八角成▲同玉△5三飛(浮-1323、技-718)
┃┃┃┃ ┃┗▲6一龍△7八角成▲同玉△6七歩(浮-2377、技-1809)
┃┃┃┃ ┣▲6七歩△5一銀▲5三龍△同角▲7三飛△6四銀▲7四飛成△6五銀(浮-1587、技-1039)
┃┃┃┃ ┣▲2四桂△5二飛▲6一龍△5一歩
┃┃┃┃ ┃┣▲5三歩△同飛▲6七歩
┃┃┃┃ ┃┃┣△6六歩(浮-1723、技-1237)
┃┃┃┃ ┃┃┗△5四飛(浮-1243、技-930)
┃┃┃┃ ┃┗▲3七桂
┃┃┃┃ ┃ ┣△7八角成▲同玉△6七歩▲2三角△3二銀
┃┃┃┃ ┃ ┃┣▲6七角成△同銀成▲同金△6六歩(浮-1553、技-1621)
┃┃┃┃ ┃ ┃┗▲6三金△6八歩成▲同銀△5三金打(浮-2101、技-1615)
┃┃┃┃ ┃ ┗△7二角▲同龍△同飛▲6三角△5二飛(浮-1301、技-992)
┃┃┃┃ ┗▲6七桂△同銀成(浮-1612、技-1237)
┃┃┃┣▲5六歩△7五角(浮-1546、技-1237)
┃┃┃┗▲6七歩△同銀(浮-1621、技-1314)
┃┃┗▲6五桂△6八歩▲同金△6五銀
┃┃ ┣▲6三金△2二金▲5三金△8七角▲7八歩△4二銀(浮-1711、技-826)
┃┃ ┗▲6二龍△5二飛(浮-2280、技-1569)
┃┗▲4二金△同玉▲2二飛成△3二金▲5三角成△同玉▲5四歩△4四玉▲5五銀△同玉▲4六銀△6四玉▲6五歩△同銀
┃ ┣▲5五金△7三玉▲7一飛△8三玉
┃ ┃┣▲5七銀△2二金▲6五金△3九飛▲5九桂△同飛成▲同玉△2六角(浮-1363、技-1323)
┃ ┃┗▲8一飛成△8二歩▲5七銀△2二金(浮-2872、技-3042)
┃ ┗▲6一飛△6三歩▲5五金△7三玉▲7一飛成△8三玉
┃  ┣▲5七銀△2二金▲6五金△5九金▲同玉△2六角(浮-1955、技-1730)
┃  ┗▲8一竜△8二歩▲5七銀△2二金(浮-3227、技-2948)
┗▲7九玉△6九金▲8八玉△6八金▲4二金△同玉▲2二飛成△3二角
 ┣▲3一龍△同玉▲5三角成△4二金▲6一飛△4一銀(浮-2796、技-2394)
 ┗▲5三角成△同玉(浮-3481、技-3006)

このページのトップヘ