新Bookは28残で完全読み
今は、AmuseGraphics Ver1.4.4の開発フェーズで、残す所はAG-デスクトップレコーダーだけで、来週には開発中バージョンを出せる見込みになっている。なので、作者的には、その次のMasterReversiの更新内容を鑑みたりしている。
次バージョンの一番大きな更新理由は、内蔵している標準添付版Bookの更新! という事になるのだが、今のところ、その確定稿は未作成だ。
これは、手元には、日々更新中の新Bookはあるのだが、この新Bookは、表題にした様に、Bookを構成する全対局は、28手の完全読みを行った上で使用しているので、現行版とは、少し異なる感じになるからだ。
つまり、このまま、新Bookにしようか、現行版の内容もマージしようか、と、少し悩んでいるのだが、MasterReversiのユーザー的には、マージが必要と思えば、後から、マージは自分でMasterReversiの機能を使って行える。
なので、作者的には、多分、新Bookは、28残から完全読みした対局データから生成したモノとしてリリースする事になる様な気がする。
何故、どちらにするか迷うのか、というと、現行版のBookの場合、エンジン対局だとかセルフ対局の結果をデータベースに入れ、それから、普通にBookを生成しているだけなので、例えば、残り10手くらいからしか完全読みをやっていない様な、昔のリバーシプログラムとの対局結果を格納した対局データの場合、残り12手でも、相手が悪手を打っている可能性がある。
つまり、相手が悪手を打たなければ、MasterReversiが負けたかもしれないにも関わらず、相手が悪手を打ったので、勝った、または、引き分けた様な対局データも、Bookに反映されるので、普通に鑑みれば、こんなBookは望ましく無い訳だ。
しかし、そうやって、結構、正しくなさそうなBook進行が登録されていたとしても、その後、その進行を選択した時に、他ソフトによって、より正しい進行が行われれば、この正しくなさそうなBook進行には、より正しそうな進行が追加されるので、Bookツリーの構造上、その新しい、より正しそうな対局データが、古い対局データの誤りを訂正してくれる感じになる訳だ。
もっとも、そんな新しい対局が行われなかった場合、古いデータがそのまま残るので、流石に、残り10マス、みたいな所で、着手を間違っている様なBook登録は無くしたい訳だ。
そして、MasterReversi的には、それは簡単に出来る。
何故なら、MasterReversiのBookというのは、登録したい局面用にBook値を設定して登録しているのではなく、対局棋譜を辿って、登録局面を作成し、その対局結果のスコアをBook値として登録するので、対局棋譜を完全読みしておけば、少なくとも、その完全読みした局面以降の進行は最善である事が保証され、かつ、Book値も、その最善進行が行われたモノに自動変更できるからだ。
それでは、どうやって、そんな、何十万対局もあるBook用の過去対局を完全読みするんだ? と、言えば、MasterReversiのデータベース機能に、対局棋譜を完全読みして置き換えられる機能を入れてあるので、それを使えば良いだけだ。
なので、今現在更新している新Bookでは、初版の頃から積み上げてきた対局データの全対局に対して、既に、28手の完全読みで棋譜をアップデートしてある。
このため、新しく追加する対局棋譜に対しても、28手の完全読みを行った後、Bookを生成すれば、28残以降は最善進行のBookが構築できる訳だ。
と、いう事で、あまり判っていない人は、上記を見ていると、新しいBookは現行のBookよりも優れている! と、思うかもしれないのだが、28残で完全読みを行うという事は、それ以降の進行は、必ず最善進行になる訳だ。
それの何が悪い? と、思うかもしれないのだが、これはつまり、最善進行を外れた手を相手が打ったら、Bookには、その対応手は登録されていない! という事を意味する訳だ。
なので、古いNTestのBookなんかでは、30手読みのBook! みたいな、一見、良さそうなBookもあったのだが、このBookを使うと、何故か、負ける事が増えた! みたいな人もいたかもしれない訳だ。
つまり、現行のBookの場合、20残くらいでも、色々な進行が登録されているので、28残から最善進行を外れた様な対局でも、それなりに頑張って双方が打ち合っていた場合、それなりにリーズナブルな着手進行も、Bookに登録されていたりするので、28手の完全読みをしなくても、Bookだけで、それなりに良さげな着手が行えたりする。
より具体的に言えば、MasterReversiの場合、レベル5なら、28残から勝敗読みを行うので、Bookは29残まで登録されていれば、28残で勝てる見込みがあれば、必ず勝てるし、Drawの手があるのなら、確実にDraw以上の結果を出せる。
しかし、レベル4以下の場合、勝敗読みを行うのはもっと先になるので、28残以降で最善進行以外が行われた場合、現行版のBookがあれば、勝てたにも関わらず、新Bookでは、登録がなくなり、負けてしまう可能性も出てくる。
もっとも、例えば、相手が10残で悪手を打ったが為に、結局はDrawに持ち込めたものの、実は、10残で相手が最善手を打っていたら、MasterReversiが負けていた様な場合、そんなBook登録があると、Bookに従って、Drawラインで対局が進行しているので、このままDrawで対局終了か? と、思っていたら、何故か、10残になって、MasterReversiが負ける展開に変わってしまった! なんて事も起きえる。
作者的には、これは精神衛生上よろしく無いので、28残のBook値がDrawなら、確実にDraw以上を保証する為に、Bookを生成する全対局を完全読みしておく事にした訳だ。
ちなみに、ここの所、Othello is Solved関係の話を書く時には、勝敗読み! という言葉をよく使っているのだが、勝敗読みというのは完全読みとは異なる。
具体的には、完全読みは、そのスコアを含めて、最善進行を保証するために行うモノなのだが、勝敗読みでは、そのWin / Draw / Lossしか保証されなくて良い。
なので、例えば、最善手を選べば32石勝ちになる局面では、完全読みなら32石勝ちになる手を選択しなければならないのだが、勝敗読みの場合、2石勝ちの手を選んでも全然Okだ。
つまり、大昔からリバーシをやっている人的には、WZebraが終盤では、まず、勝敗読みをやっている、というのは判っている筈なのだが、実は、WZebraの勝敗読みは、スコア的には、かなり、ひどい場合がある。
その結果として、本来なら、2石負け、くらいの進行で、32石負け! なんて事になる場合もあるので、そんな対局の棋譜からBookを生成してしまうと、本来なら、2石くらいしか差が付かない筈の接戦が、32石差が付くような対局としてBookに記録されてしまったりする訳だ。
MasterReversi的にも、その読みの深さはWZebraに合わせてあるので、28残から勝敗読みを行うのだが、10年くらい前のバージョンくらいからは、スコア面を改良したので、完全読みのスコアに近くなったのだが、それ以前のバージョンだと、WZebra並みの悪手を打つ可能性もあった。
と、いう事なので、実は、28残というのは、WZebraとの対局を山の様に行って、それからBookを生成したMasterReversi的には、鬼門になるので、ここで、28残からの進行を完全読みで置き換える事で、そういった、正しくなさそうなスコアをBookから排除する! というのも、今回の更新の目的の一つになっている訳だ。
オセロAIについてよく判っていない人は、どうして、そんな曖昧な勝敗読みなんてモノを使うの? と、思うかもしれないのだが、これは、完全読みの場合、ある局面に勝てる手が10個ある場合、その10個のどれが、最も高いスコアを叩き出すかを探索する必要があるのに対し、勝敗読みの場合、その中のどれでも一つを選択するだけで良いので、特に勝ち負けがはっきりしている局面の着手選択がメチャクチャ、楽になるからだ。
つまり、その分、演算に時間がかからなくなるので、同じ時間で、より深い探索が行えるので、昔から、完全読みを始める前に、まず、勝敗読みを行うソフトが多いのだが、前述のような、勝敗読みの利点を最大限に活かそうとすれば、処理速度は速くできるものの、最善手の選択は難しくなる訳だ。
その結果として、本来なら32石勝ちできる筈の局面で、2石勝ちしかできない着手をしてしまう事もあれば、2石負けで済む様な局面で32石負けにしてしまう事もあるのだが、MasterReversi的には、それではあまりにもカッコ悪いので、勝敗読みを行う時にも、その前段で行う通常読みによる最善手探索は、完全読み時と同等に近い精度で行うようにした訳だ。
なので、勝敗読みで探索する着手の順番は、大体は、善手順に並ぶ事になるので、勝てる局面では、普通は最善手が選ばれるし、負ける局面でも、最も良さそうな手が選択される訳だ。
まあ、その分、勝敗読みなのに時間がかかりすぎ! みたいケースも出てはくるのだが、勝敗読みはあくまでも勝敗読みなので、本来なら32石勝ちのところが、30石勝ちの着手を選んでしまう事もある分、完全読みをするよりは、普通は、より高速に処理を終えられる筈だ。

