1手1秒で強い将棋ソフトは1手10秒でも強いのですか?その1

「1手1秒で強い将棋ソフトが1手10秒でも強い」とは限らない。しかし、それはどういう条件の時にそう言えて、どういう条件の時にそう言えないのだろうか?これがわかると短い持ち時間で探索をチューニングすれば長い持ち時間で対局させた時も強いソフトが作れるはずである。

この辺の話は、SDT2(第2回 将棋電王トーナメント/2014年)のころから参加している将棋ソフト開発者には常識であった(?)のだが、開発者の世代交代が進んだためか神話の世界に突入しつつある。

そのためこのへんの内容を書き留めておくことは非常に重要だと思うが、書き出すとかなりの長文になる。一言で言うと書くのめっさしんどい。そして、これを全部書ききると探索部を独自に書いている開発者もやねうら王と同じレベルまで探索部をチューニングできてしまう。つらぽよ。でも白ビールの芝先生にも(私のアマゾンの欲しいものリストから)猫砂を頂戴したので書かないわけにもいかない。つらぽよ。

とりあえず、過去の記憶を辿りながら時系列順に書いていくことにする。

Ponanza/SDT3

まずはSDT3(第3回 将棋電王トーナメント/2015年)のころの話からだ。

文脈は忘れてしまったが、Ponanzaの開発者の山本君が「短い持ち時間で強いソフトが長い持ち時間で弱いことなんてある?」と言い出した。2つのソフトがあるとして、長い持ち時間にしたときに強さが逆転することがあるかという質問である。

この発言に対して、周囲にいた参加者(将棋ソフト開発者)達が、呆れた顔で彼のことを見ていたのを私は鮮明に覚えている。というのも、評価関数の精度が低いけどnps(探索速度)が高いソフトと、評価関数の精度が高いけどnpsが低いソフトとがあるとしたら、持ち時間を増やしていくとき後者のほうが棋力の伸びが著しいはずである。このように簡単な反例を誰でも挙げられるからだ。2倍の時間を使ったときに+R100のソフトと+R200のソフトとでは長い持ち時間で強さが逆転しうることは自明である。

でも山本君は誰かからのそのような説明を聞いても今ひとつ合点がいかないようであった。「えー?この説明わからん奴おる?」という顔で他の開発者達が彼のことを眺めていた。私も、「彼は、馬鹿なんかな?」と思った。そして、SDT3ではPonanzaが優勝した。果たして馬鹿なのは誰であったのだろうか?

当時のPonanzaは比較的短い時間で探索部のチューニングがなされていたと聞いている。「短い時間で強いソフトが長い時間でも強い」のであれば、わざわざ長い時間でチューニングするのは計算資源の無駄でしかない。

現代のソフトでは2倍の時間を使うと自己対戦で+R200程度強くなると言われているが、探索部をわずかに改良してもそれは非常に酷似したソフトであり、2倍の時間を使った時の強くなる度合いはほぼほぼ変わらない。評価関数についても同様である。非常に性質の似た探索部と評価関数を持つソフトを2つ用意して、その2つのソフトを短い持ち時間で対局させた場合と長い持ち時間で対局させた場合とを比較した場合、当然短い持ち時間で強いほうのソフトは長い持ち時間でも強いであろう。

おそらく、山本君はずっとそういう改良の仕方を続けてきたので、短い持ち時間と長い持ち時間とで強さが逆転するような状況に遭遇したことがなかったのだと思う。そして、それこそが普通なのだ。長い持ち時間で強さが逆転するのが異常なのだ。長い持ち時間で逆転するとしたら、何かがおかしい。そこには何か特別な理由があると考えるべきなのである。

そして、これがすべての思考の出発点なのである。

次回につづく。

1手1秒で強い将棋ソフトは1手10秒でも強いのですか?その1」への9件のフィードバック

  1. うろ覚えですが…
    短時間と長時間で棋力の強弱関係は逆転しないと仮定して
    超短時間自己対戦でチューニングしていく手法は、
    技巧の出村さんが始めて、そこから皆さんに広まったのでは?

  2. >> しかし、それはどういう条件の時にそう言えて、どういう条件の時にそう言えないのだろうか?

    「何かのバランスが崩れないとそう言えて」みたいなイメージだけど、具体的なのは何一つ分からん。

  3. 激しく枝を刈って直線的に深く読むことに特化された探索部は、より広く浅く手を読む探索部に比べて少ない持ち時間に強く、持ち時間を延ばすことによる棋力の伸び率は後者の方がいいと思います。
    dittoとかいう探索部は0.1秒とかではやねうら王に7割とか勝つらしいですよ。
    0.1秒レベルの検証は簡単にできそうですが一手10秒とかになると大変ですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です