コンピュータ将棋に関する基礎的な情報を収集し、分析し、発表する所です。lfics81コンピュータ将棋では局面の形勢を「評価値」という数値で表現します。将棋ソフトの指し手は評価値に基づいて決定され、また、検討や解析における形勢も評価値の“点数”として表示されます。今や評価値は、将棋ソフトの利用者にとって、とても身近な量になっていると言えるでしょう。将棋が完全解析できたとするならば、局面は勝ち・負け・引き分けの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側で換算することにすれば、ソフト開発側の負担も軽減できるかと思われます。コンピュータ将棋においては、評価値は暗黙に比率尺度として取り扱われています。本ブログの記事でも同様です。評価値を比率尺度として取り扱う以上は、“標準化”が課題になるのは避けられないことでしょう。以上、今回は、評価値という数値の“奇妙さ”について考えました。「評価値は本来は比率尺度ではない」ということを鑑みると、何らかの変数変換を行えば、別の評価値表現が可能になります。囲碁では評価値を“勝率”として表現していますが、これは将棋でもできることです。次回は、その辺の話を書きたいと思います。Interface)のことに触れなかったのは手抜かりでした。GUIソフト(将棋所やShogiGUI等)と思考エンジンとの通信に標準的に使われているのが、USIプロトコルです。ソフトによっては元のプロトコルを一部拡張して用いていることもあります。将棋所のサイトに詳細な説明があります。score」で行います。上記のサイトでは、以下のように説明されています。エンジンによる現在の評価値を返します。cpで評価値を返す場合、歩1枚の価値を100とした値を返すことになります。)この値は、エンジンの側から見た値となり、エンジンが有利ならプラス、エンジンが不利ならマイナスの値になります。50」と送ると、「1歩100点の単位で50点有利」という意味になるということです。Interface)の仕様をそのまま引き継いでいます。通常、GUIソフトはこの点数をそのまま表示しますので、USIの仕様通りであれば、1歩100点の単位で表示されるはずです。非USIソフトやUSIであっても仕様通りの実装になっていないソフトの場合には必ずしもその限りではありません。mate」というものもあります(通称mate)。これは詰みに関するもので、以下のように説明されています。mateによって詰み手数を返すことができます。詰み手数に入れる数字は、エンジンの勝ちならプラス、エンジンの負けならマイナスになります。勝ち/負けが確定した時、評価値は最大値/最小値になるわけですが、それでは「詰み手数」の情報が入らないため、別の通信手段を用意しているというわけです。ちなみに、この場合の「詰み手数」というのは、王手だけに限らず、片方の合法手がなくなるまでの手数であり、また、思考エンジンによっては必ずしも最短手数とは限りません。2手)で数えますが、USIでは手数で数えます。この辺はチェスと将棋の慣習的な違いに依ります。この勝敗確定時の場合分けは、理論的には明解なものですが、実装的には手間がかかるものであるため、思考エンジンによっては採用していない場合があります。3万点程度の十分に大きい最大値を決めておいて、そこから「詰み手数」分を引いた値を評価値とするというのもよく行われることです。この場合の評価値は、比率尺度ではなく、順序尺度になります。lfics81物理学の代表的な模型の一つに「ランダム・ウォーク」というものがあります。これは、物体が乱雑にフラフラと動き回る現象を模型化したものであり、酔っ払いの歩き方に似ていることから「酔歩」と訳されます。知られている例としては、鉱物の粉や花粉から出る微粒子が水中で不規則に動き回るブラウン運動が挙げられます。微粒子は多数の水分子の衝突によってランダムに力を受けるわけですが、その単位時間における合計は必ずしも零にはならず、微粒子の不規則な運動を引き起こします(カジノで儲かる人と損する人がいるのと同じことです)。この運動は「酔歩」として模型化でき、このことはアインシュタインの1905年の著名な論文の内の1本のテーマになっています。「酔歩」では、微粒子の位置は確率的に決定され、その確率分布は、歩けば歩くほど、広がっていきます。このことは、外部ノイズによって、微粒子の位置情報がどんどん拡散して失われていくと言い換えることができます。同時に、長い時間スケールで見れば、微粒子の位置情報が失われて、水と微粒子が混合した平衡状態になるということも意味しています。このように、ミクロとマクロを結ぶ模型として、物理学では「酔歩」をよく考えます。将棋における評価値の動きは不規則であり、一見すると「酔歩」に近いようにも見えます。今回は、このことを検証してみたいと思います。酔歩模型の種類としては、なるべく簡単に、一手ごとに正規分布に従う確率で評価値が上がったり下がったりするものを考えましょう。手番の違い等、細かいことは平均化されているとして気にしないことにします。F(V)\]と変換された変形評価値Xを用います。F(V))、|V|が大きいところでは傾きが零に近くなるような関数です(例えば、tanh)。変形評価値の規格化は、勝敗が決する値を±1とします。この簡単な模型でシミュレートすると、実際の手数分布を再現することはできません。実際、唯一の変数である一歩の標準偏差を平均手数に合わせるように決めると、手数分布が広がりすぎて、実際の分布とは全く違った形の分布になってしまいます。この原因は、序盤の手や必然手、終盤の手の取り扱い方にあると考えられます。序盤の指し手は双方が均衡を保つように指すため、酔歩のようには進行しません。必然手もスキップするようなものであるため、酔歩的ではありません。実質的に勝負がついた後も、すぐに終局するわけではなく、手を進めて形を作ってから(ソフトなら詰みまで指してから)投了となりますが、その間の指し手も酔歩にはなりません。これらの非酔歩手は、酔歩模型とは切り分けて、まとめて取り扱うこととし、こちらも正規分布に従う確率で手数が決まると仮定しましょう。結果的に、一歩の標準偏差A、非酔歩手数の平均Mと標準偏差Sの3つが調整可能な変数となります。これらの3つの変数は、手数分布の平均、標準偏差(平均からの2次モーメント)、平均からの3次モーメントを合わせるように決定することにします。手数分布については、簡単のために、ガンマ分布を採用して比較を行います。ガンマ分布と手数分布の詳細については「手数分布はガンマ分布で近似できるか?」の記事をご覧ください。実際に、棋士棋譜集(2015年11月版)とfloodgate棋譜集(2012~2015年版)において、比較を行った結果を下図に示します。青線がガンマ分布で、黒点がそれぞれ1億回のシミュレーションの結果です。3つの変数で調整すれば、大体は合わせることができます。未調整の量である平均からの4次モーメントについては、両者ともガンマ分布と4%弱の違いがあります。25.13となっています。棋士よりもソフトの方が非酔歩手数の平均が12手ほど大きいのは、投了方法の違いに依るものと思われます。酔歩の一歩の標準偏差が少ない(酔歩部分の手数が3手ほど長い)のは、その分だけ互いの読み筋が合っているためだと考えられます。この解析が正しいとすれば、以上の2つの要因が合わさって、棋士棋譜集よりもfloodgate棋譜集の平均手数が大きくなっていると解釈できます。結果的に、上記の模型が正しいとして、形勢が揺れ動く酔歩部分は平均して1局で21~24手程度ということになります。この解析が妥当であるかは難しいところですが、解析結果を見ると、そんな感じもしてきます。以上、今回は、将棋の手数分布が酔歩模型で説明できるかを検証しました。結果として、もし酔歩模型が妥当であるとするならば、酔歩部分は平均して1局で21~24手程度だということが分かりました。lfics81今年(2016年)の大晦日は電王戦合議制マッチが行われます。3名の棋士が合議制マッチで対局するという企画です。この企画については、「ニコニコ超将棋会議3五角は成立していたか?:合議と熟議」の記事でも触れ、また、「多数決合議と楽観合議」についても付記しています。付記の内容は、簡単にまとめると、以下のようになります。棋力差の少ないソフトの合議については伊藤毅志先生等の研究があり、例えば、「コンピュータ将棋の進歩6」では、Bonanza、YSS、GPS将棋(当時のレート差150以内)の多数決合議が有意に強くなり、また、楽観合議はそれ以上に強くなるとの報告がある。多数決合議の有効性は簡単な数理モデルで示すことができ、ソフト間の相関を無視すれば、ソフト間の棋力差が小さければ、最善手率が最強参加者を上回り、また、棋力差が大きくなると有効に機能しなくなるということが分かる。楽観合議は評価値期待値の最大化の簡易版と解釈できる(※楽観合議については、さらに別の解釈が可能であることを今回の記事で示します)。合議と最強参加者との比較は、多数台と1台との比較になるので、注意が必要。今回は、もう少し詳細な模型を用いて、合議の効能について改めて考えてみたいと思います。模型の詳細は以下の通りです。ある局面において、参加ソフトよりも十分に強いソフトが示す有効な候補手の数をnとして、残りの合法手は無視する。各々の候補手に対する各ソフトの評価値は正規分布に従って確率的にばらつくものとする。各ソフトの評価値の規格化は揃えられており、確率分布に偏りはないものとする。各ソフト毎に各々の評価値における最善手と最大評価値のみが合議のために利用可能。各ソフト間の相関は基本的には考えないが、後で簡易的に検討する。合議の結果が真の最善手とどれだけ一致するかという“最善手率”を測定する。s_{3}\]と仮定します。ここで、「1」が最強者であるPonanza、「2」と「3」がnozomiと大樹の枝を想定しています。\frac{s_{2}}{d}\]の2つの変数で決まることになります。2と3の局面における様々な合議の最善手率を示します。最強者の標準偏差は一定にして、横軸は下位ソフトの標準偏差を取り、横軸が大きい程、ソフト間の棋力差が大きくなるようにしています。変数の値は、一致率や有効分岐数のデータの整合性から、それなりに適当な範囲になっていることを期待しています。各点はそれぞれ1千万回のシミュレーションの結果です。合議せずに各ソフト単独で指した場合の最善手率を黒線で示します。上の線が最強ソフトの最善手率で、下の線が下位ソフトの最善手率です。両者が乖離するほど、棋力差が大きいことを表しています。合議の最善手率が最強ソフトの最善手率(上線)を下回ってしまうと、最強ソフト単独で指した方が強いということになってしまいますので、合議の意義が失われます。電王戦合議制マッチで採用されている多数決合議の最善手率を緑点で示します。ソフト間の棋力差が小さい内は有効に機能しますが、大きくなると機能しなくなる様子がグラフから読み取れます。今回は、模型が簡単ですので、最善の結果を期待できる合議システム(以下、最善合議)も簡単に計算することができます(※記事の最後に詳細を付記)。その結果が黒点であり、合議の仕組みを頑張って調整した時の最大値を与えるものです。こちらも多数決合議と同様に、ソフト間の棋力差が大きくなるほど、合議の効果は薄れていきますが、多数決合議とは違い、合議の機能が失われることはありません。評価値が最大の指し手を選ぶ楽観合議の結果を赤点、最小の指し手を選ぶ悲観合議の結果を青点で示します。悲観合議は全く機能しませんが、楽観合議はソフト間の棋力差が小さければ有効です。この機構の詳細な解説は長くなるので省略しますが、大まかには、正規分布(もしくは類似の分布)型の確率分布であれば、評価値が高い指し手が真の最善手である確率が高いため、下位ソフトによるノイズが小さければ、楽観合議は機能すると説明できます。グラフ全体を眺めると、多数決合議がかなり優秀で、楽観合議は多数決合議に劣るという結果になっています。この結果を見る限りは、電王戦合議制マッチにおける多数決合議も効果的である可能性が高いように思えてきます。実際、伊藤先生等の研究では、多数決合議は楽観合議を下回る結果となっており、今回の結果とは矛盾しています。この矛盾を追及し、現実的な合議の効能を考えるには、今まで無視してきたソフト間の相関を考えなければなりません。実際に、将棋ソフトには共通の特徴があることも考えられますし、特に今回の電王戦合議制マッチに使われるnozomiと大樹の枝は同系統のソフトであるため、相関を無視することは現実的ではないでしょう。極端な例として、仮にnozomiと大樹の枝が完全にシンクロすることがあるとすれば、多数決合議の結果はそれらの単独の指し手と一致してしまい、合議は確実に機能しません。一例として、下位ソフト間のシンクロ率を50%にした時(※50%の確率で指し手と評価値が一致)、各ソフトの指し手の一致率は下図のようになります。相関がない時の下位ソフト間の一致率が青点であり(最強者との一致率は赤点)、シンクロ率50%の時の一致率が黒点です。無相関時の青点は、完全にランダムな場合の1/2(上図)と1/3(下図)を少し上回る程度であり、同系統ソフト間の一致率を再現できていません。シンクロ率による相関を入れることで、黒点のように、一致率を大きく向上させ、現実に近づけることができます。シンクロ率50%の相関がある時の多数決合議と楽観合議の結果を下図に十字点で示します。無相関時の結果の丸点は上図と同じです。楽観合議の方は相関に対して頑強であり、結果は大きく変わりませんが、一方で、多数決合議の方は相関の影響が大きく、最善手率が大きく低下します。結果的に、楽観合議と多数決合議が逆転して、楽観合議の方が優位となり、実際の報告に近い結果が得られます。まとめると、合議において重要なのは、棋力の均質性(棋力差を少なく)と棋風の異質性(同調を少なく)ということになります。多数決合議は同調による相関の影響が大きく、現実に楽観合議に劣ることがあるというのは、相関効果のためではないかと考えられます。楽観合議も棋力差の影響を受けやすく、最善合議には劣りますが、実装が簡単であり、また、相関効果に対して頑強である点が優れていると言えます。今回の多数決合議の話は、政治の民主制の話ともリンクしているかもしれません。合議を上手く機能させるためには、情報格差が少ない方が望ましく、そのためには教育や報道の役割が重要になります。熟議したり、間接民主制で段階的に均らしたりすることも意味があると考えられます。相関効果を減らすために、各自が様々な視点の情報に幅広く触れ、同調的にならないことも大切になるでしょう。この辺は、メディアのあり方とも大きく関係している気がします。以上、今回は、合議の効能について少し詳しく考えました。実際に電王戦合議制マッチの多数決合議がどれくらい機能するのかについては、実機で検証してみないと何とも言えませんが、同系統ソフトによる相関が小さくないこと、上位と下位の棋力差が大きいことを鑑みると、上手く機能しない可能性も少なくないと考えられます。-------------------付記:最善合議について(2016年12月31日)一般的にN台の多数台合議を考えましょう。