棋力と指し手の性質とは何か?


今回の電王戦第二局、いろいろお騒がせして申し訳ない。明日は、私はこのブログを通じて実況をするつもりだが、将棋ファンの方々には、やはり将棋の内容そのものに目を向けていただきたい。


今回の騒動で、差し替えによって「棋力があがること」「指し手の性質が変わること」を私が事前に知っていたかどうか(私が悪意を持って強いソフトに差し替えようとしたのか)というのを議論の争点としている人が多い。私には自分に悪意がなかったことを証明する手段はないし、そういう視点で私が何かを説明をすることは出来ない。


だから、そのとき私がどのように考えていたかを、ざっと書いておく。
(いま、東京に移動する新幹線のなかなのできちんとした文章になっていなかったら申し訳ない。明日の対局のときにこの話題を引きずって欲しくないので、今日中に書いてしまいたいのだ。)


やねうら王2013は、Bonanza(6.0)ベースとは少し違う。Bonanzaベースなのは3年前のやねうら王だ。3年前、Bonanzaから離れるために1から書き直したわけだ。ところが連続王手の千日手などDAG(無閉路有向グラフ)回避関係の問題がすこぶるややこしく、これに付随するバグがとれなかったので、もうこんな開発やめてしまえと放り出していたわけだ。(この問題は、df-pnの実装でも問題となる、コンピューター将棋の開発の上でかなり特異で難しい問題。)


今年の電王トーナメントは、このへんのバグがあることには目をつぶって出場した。運良く、問題とはならなかった。これが私の言う根の深いバグの一つである。


私はこのバグは取りきれないとみなして、今年の1月中旬ごろから、やねうら王2013の探索部をStockfishのそれに差し替える作業をし始めた。Stockfishのソースコードは極めて美しく、洗練されているからだ。


「Bonanza6の探索部をStockfishに差し替えるとR100-150上がる」というのは、Ponanzaチームの下山さんからの事前情報である。


しかし、Bonanzaの探索部をStockfishの探索部に差し替えれば棋力が上がるとは言っても、それは、その他の部分は前と同じように実装してあることが大前提だ。


やねうら王2013のほうは超高速な指し手生成、高速化されたSEE(静的交換評価)、1手詰め・3手詰めなどを実装しているわけだが、お好み焼きで言うなら「トッピング全部乗せ」の状態である。かたや、Stockfishの探索部を持ってくると言っても、これらまですべて一気に実装はできない。(いまも全部乗せの状態からはほど遠い)


1. Bonanza( = Bonanza評価関数 + Bonanza探索部 +トッピング全部乗せ )
2. Stockfish探索部 + Bonanza評価関数 + トッピング全部乗せ
3. やねうら王2013( = Bonanza魔改造 )


3.のやねうら王2013は、Bonanza6よりはR50-100高かったはずで(主に高速化などチューニングによる恩恵)ある。下山さんの事前情報は、1.から2.ならR100-150上がるというのだ。もし、2.のほうのトッピングが何も乗っていなければどうなのか。3.と比べるとR100上がるどころか、Rはむしろ下がるだろう。そして、実際下がっていた。それが2月2日のやねうら王2013αである。


だから「やねうらおはStockfishの探索部に変えれば棋力が上がることは知っていた(ゆえに悪意を持って棋力を上げる意図があった)」というのはナンセンスだと思う。Stockfishの探索部を持ってきたあと“トッピング全部乗せ”が数週間で出来る(事前に「出来る」と確信し、そして実際に出来る)という人がいるなら、「お前がそれをやってみろ」と私は言いたい。とりあえず、私にはそんな芸当は到底出来そうにない。事実、トッピング全部乗せはいまだできていない。(つまり、新バージョンのやねうら王は実はまだまだ伸びしろがある。)


ただ、トッピング全部乗せにはほど遠い状態なのに、棋力が結果的にはかなり上がっていたようだ。これが何由来で上がったのかはいまだに判然としない。これから時間をかけて調査していかなければならない。そこにコンピューター将棋の真理(おおげさ?)があるように思う。


ともかく、Stockfishの探索部にするだけでは棋力は上がるとは思わなかったし、実際に差し替え直後は棋力は上がってない。この問題に対する私の考えは以上。


次に、「指し手の性質が変わることについてどう考えていたのか」だが、私が考えた内容を以下に簡単に示す。


Bonanzaメソッドは、評価関数が棋譜の指し手に一致するようにパラメーターを調整するわけであるが、その結果、1手も読まなくとも棋譜との指し手一致率は40%前後になる。では探索ありなら?


私はこれについては統計をとったことがあるのだが、初代Bonanzaで思考時間10秒にして、プロの棋譜との指し手一致率は50〜55%付近であった。Bonanza6では、5〜10%高くなる。思うに将棋の指し手はそれほど自由度はないので、互いのレーティングが上がっていくほど指し手一致率は少しずつ上がる傾向にあるのだろう。羽生さんの終盤の指し手が激指と指し手一致率90%以上を記録することも珍しくない。(序盤はソフトの棋風みたいなものが出やすいので、定跡の進行以外では指し手一致率は低いようだが。)


中終盤以降を問題とするなら、評価関数を同じくする、棋力が互角に近い二つの将棋ソフトであれば、80%以上の一致率だと思う。実際、やねうら王2013とやねうら王2013αとではそれくらいの一致率であった。20%ぐらいは、もともと指し手は探索の並列化のせいでバラけるので、80%以上の一致率があるなら、大雑把には「指し手の性質は変わっていない」と評価していいと考えた。(もともと思考部をいじる以上、ピッタリ同じ指し手には出来ないわけだし)


ところが、これが将棋というゲームの不思議なところなのだが、この一致しない20%のほうの指し手に棋力を決定づける重要な指し手が含まれていることが多々あるという性質があるということだった。考えてみれば、羽生さんと10級の人(≒素人)と比べても指し手一致率は40%程度はおそらくある。残りの60%(に含まれる大事な手)がトッププロと素人とを分かつわけだ。


「指し手の性質について正確に評価するノウハウを持たないくせにこういう大事な対局で要らんことをするな!」という御指摘は全くその通りで、このへんの評価が大味であるために関係者の皆様に多大なご迷惑をおかけしたことは深く反省している。


ただ、悪意があったのかと言われるとそれだけは私は否定する。悪意を持ってやっていたのなら、こんなに私の対応が後手後手になっていなかったはずだし、いまごろブログも炎上してなかったはずだ…。


[2014/3/22 6:30] コメントいただいているものについて返信できる範囲でさせていただきます。


> flowing_chocolate 将棋 バカ『これが何由来で上がったのかはいまだに判然としない。』飛車をタダで取らせないようにした時点で既に上がってるだろアホか。


飛車をタダで取られる現象は特定条件下でしか起きないので短い持ち時間でこれが出現する確率は極めて低く、勝率自体への影響は軽微ですから、そこが問題ではないです。羽生さんでも3手詰めを見逃すことがありますが、勝率自体が低いわけではないのと同様です。


名無し > 明日(というか今日ですね)のやねうら王の棋力は24レートでいうとR3700相当という認識でOKでしょうか?


それはやねうら王2013αの話ですね。今回のやねうら王2013だと…いくらなんでしょうかね。データがなくてわかりませんが、ずいぶん落ちるでしょうねぇ…。まあ、そのへんも含めて、戦局を見守っていただければと思います。


問題点 > 最初は棋力をレートで語りながら、


やねうら王は定跡が偏っているので(やね裏定跡)、Bonanza6とやらせても同じ戦型に進行しやすく勝率が偏ってしまう傾向があり、一貫して勝率自体があまり信用のできる値ではないのです。致命的なバグがあれば以前のバージョンより対Bonanza6の勝率が落ちる可能性が高いので、そういうバグチェック用のスコアと私は考えています。


そういう意味ではこの初期のバージョンで「レートがむしろ下がっていた」ということ自体、疑問がないわけではないです。私もその点はずっと気になっていたので、先週その部分を追試しまして定跡を手でバラけさせたのちに指定局面からBonanza6と対戦させてみたのですが、やはり勝率は低かったです。(Bonanza6と互角程度。序盤を手で進めるために手間がかかるので、あまり多くのサンプル数をこなせていないですが、少なくとも著しく強いということはなさそうでした。) ただ、この計測方法は非常に手間がかかるためサンプル数を多くとろうと思うなら自動化するとか何かしないと…。