やねうら王2016 Midは、魔女(Silent Majority)より強くしようと思っていたのですが、これがもしかするとよろしくないのでは?と思える状況になってきたので簡単に書いておきます。
コンピュータ将棋ソフトウェアの時間制御
http://woodyring.blog.so-net.ne.jp/2016-06-05
長い持ち時間になると、魔女はApery WCSC26に対して驚異的なほど勝ち越すというデータがあります。
1手1秒未満だと魔女側は負け越すのに、1手10秒だとかなり勝ち越すようです。その差、R250。恐ろしいですね。
ここで上の記事にちょっと補足しておきたいのですが、やねうら王の時間制御、指定された時間を100[ms]ほどオーバーすることがあるのですが、これは、やねうら王では、check_time()を呼び出す間隔を他のソフトより甘くしてあったのですが(呼び出すコストが嫌だったため)、評価関数が重くなったりした結果、当初想定していたnpsほど出ないので、それゆえ遅いPCではわりとオーバーしてしまうようです。このへん、最新のコミットで修正しておきました。
次に、魔女の強さの秘訣についてなのですが、大雑把に言うとだいたい3つの理由があるのですが、今回はそのなかでも一番大きな理由であるsingular extensionについて説明します。
singular extensionは、そのnode(局面)で有望な指し手が1つしかないときに、その指し手を延長して探索するというものです。ベストの指し手の評価値 – singularのmargin値 以上の指し手が他にないかを少し浅い探索深さで調べて、それがなければ「有望な指し手が1つ」と判定します。
αβ型の探索ではnull window searchというテクニックがあり(探索窓の幅を0にして、ある値を超えるかどうかだけを素早く判定する)、このテクニックを用いると、この判定はわりかし小さなコストで出来ます。
ところで、同じ評価関数で似た探索部を用いている場合、これが相手の読み筋と合致している可能性はかなり高く、singular extensionで延長した指し手通りに実戦が進行することもしばしばあります。そこで、同ソフト対決においては過剰にsingular extensionをやったほうが勝率は上がります。
singular extensionの難しいところは、これが他のソフトに対してもおそらく有効だということです。なぜなら、「有望な指し手が1つ」というのは、評価関数の精度が高ければ、他のソフトから見てもやはりそのnodeでは「有望な指し手が1つ」であることが多く、延長したほうが良いというのはあります。
しかし、過剰にsingular extensionを行なう場合、その判定コストも馬鹿になりませんし、なんでもかんでも(例えば100%をsingularだとして延長したりすると、それはすべてのnodeを延長しているだけなので)何の意味もなしません。つまり、過剰なsingular extensionを行なうと弱くなることは自明です。
この程よいバランスが難しいのです。将棋では手駒がある関係か、チェスに比べて大きな評価値の変動があるゲームだと言われていて、singular marginはチェスに少し大きめにしないといけないというのが通説でした。(そうしないとなんでもかんでもsingularだと判定されてしまう) そこで、やねうら王ではStockfishのsingular marginからは大きめにしていました。
Aperyでは事情は少し異なるようですが(現在公開されているAperyは魔女よりやや古いStockfishがベースとなっているのでsingular extension絡みのパラメーターの単純な比較では何とも言えない)、やねうら王(+ Apery WCSC26の評価関数バイナリを使用)が長い持ち時間において魔女に負け越すのは、どうもこのへんが原因の一つとしてあるようです。
しかし、ここで疑問なのが、魔女に勝ち越すようにチューニングした将棋ソフトは本当に強いのかということです。
現在、公開されている評価関数バイナリで最強と言えるのはApery WCSC26の評価関数バイナリです。技巧の評価関数と同等ぐらいの強さとなりますし、手番つき3駒なので、まだ伸びしろも十分にあります。そう考えるとApery WCSC26の評価関数バイナリを搭載した将棋ソフトが大量に出てくるのは想像に難くないですが、そうしたときに、それらのソフトに勝たないと弱いソフトだとみなされてしまいます。しかしそれらのソフトに勝つためのチューニングは、強いソフトにするためのチューニングとは異なっていたりします。このへんでジレンマに陥り、悩ましいですね。
まずは同種から、次にポナンザのつもりがガラパゴスになってる状態ですかね。
同種に対する特殊チューニングは多少甘えに見えます。先にポナンザを倒す方を目指すべきかもしれません。今のところ。
ところで今年の電王戦ポナンザは発売しないのでしょうか。
もう将棋所とポナ64bitっていうベスト状態で発売すればいいと思うのですが。利権関係を解消して・・・。
ポナX叩かれた分は返せると思うのですが難しいですかねぇ。
マイナビは、転職関係の事業での収益が高いでしょうから、こんなリスキーな市場で戦わないほうが良いのでは…。
パブリッシャーがどう捻ってマイナビになったのかよく理解してないのですが、もっとアスキーとかでも良いので出してくれないかなー。
それにしても残念です。
“0.5手延長アルゴリズム”って今はsingular extensionに成長していたんですね。singular extensionが「何手目を読んでいる」状態で「何回発生」しているのか知りたいですよね。
“0.5手延長アルゴリズム”は、置換表の指し手(≒PV)を0.5手延長するわけですから、現代の探索部でそれに対応するのは、「PVではreduction量を減らす」とかでは。
> singular extensionが「何手目を読んでいる」
そのnodeの2手目とのスコアの差が大きいところ(singular extensionの対象)は「強進行」、小さいところは「弱進行」と呼ぶとしたら、強進行は一本道、弱進行に関しては樹形図のように枝分かれした読み筋が表示されて欲しいというのはあるかも。
プロ棋士が公式戦のルールによって得手不得手があることに似ていて大変興味深いです。
>しかしそれらのソフトに勝つためのチューニングは、強いソフトにするためのチューニングとは異なっていたりします
ならば強いソフトをにするためにチューニングして結果的に魔女やaperyに勝つようにすればよいのでは、とプログラミング素人の私は思います。
Midがminiから続く教育目的のものならそういう訳には行かないのですよね
(codeVSのrandomAIからhiretsuAIまで段階を踏む感じ?)
いやはやむずかしい…