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

前回記事の続き。この連載、やねうら王の強さの秘密のすべてを曝け出している気がしなくもないのだが、こんなに赤裸々に書いてしまっていいものか悩むところではある。しかし本日また欲しいものリストに入れていた猫砂(1個5千円もする)が4個も届いたので届いた猫砂の数だけはやねうら王のアップデートをしたり、定跡を掘って公開するなり、記事を書くなりしなければなるまい。

https://twitter.com/yaneuraou/status/1129886615701114881

技巧/SDT3

Ponanzaが優勝したSDT3(第3回 将棋電王トーナメント/2015年)では彗星の如く『技巧』というソフトが現れた。『技巧』の開発者の出村さんは司法試験に合格して間もないころだったと思う。後に公開された『技巧』のソースコードは、Stockfishを参考にしながらも、高い技術力・理解力によって焼き直されていた。もし誰かが、事前情報なしに「これは5年後のStockfishだ」と『技巧』のソースコードを私に見せてきたなら、私はそれを信じたに違いない。

『技巧』には従来のソフト開発者の発想にはない、いくつもの目新しい点があった。発想自体が従来の将棋ソフトとは根本的に異なっていた。開発に対する考え方、取り組み方自体が従来の将棋ソフトと一線を画するものがあった。私はそれを評して、SDT3の会場で「『技巧』というのはソフトの名前などではなく、哲学であり、思想の名前であると思う」と述べた。

例えば、『技巧』は、1手0.1秒対局×数千局で探索部をチューニングしていて、探索部を改良したあと自己対局して勝率が得られるまでが自動化しているらしかった。またすべての枝刈りをオフにして、一つ一つ枝刈りを有効にしながら、どの枝刈りがどれだけレーティングに寄与しているのかを確かめたと出村さんがおっしゃっていた。Stockfishも数年後にそれぞれの枝刈りがEloレーティング換算でどれくらい棋力に寄与しているのかが調査され、Stockfishの探索部のソースコードにコメントとしてそれが書かれるようになったが、そう考えると出村さんは数年先を歩いておられたのだと思う。

『技巧』の、そのシステマティックな開発スタイルに私は深い感銘を受けた。この開発手法はいまのやねうら王の強さの原動力にある部分だ。私もSDT3の直後に自己対局スクリプトを書き、0.1秒で探索部のチューニングを行える体制を作った。私以外にも多くの将棋ソフト開発者が0.1秒チューニングを導入した。

しかし、この1手0.1秒でチューニングした探索部が、普通の対局(8スレッド、1手10秒など)だと弱いということが後に発覚する。0.1秒チューニングのせいでその後の将棋ソフトの進歩が1年ぐらい停滞した意味もある。そういう意味では、『技巧』の作者の出村さんを戦犯と呼ぶ声もないではない。

また翌年に開催されたSDT4(第4回 将棋電王トーナメント/2016年)では私はAperyの平岡さんにこんなことを言った覚えがある。

やね「技巧は多くのものをもたらしてくれた。数々の恩恵により将棋ソフト全体が3歩ぐらい前進した。でも、あの0.1秒チューニング、あれは良くなかった。あれのせいで将棋ソフトが2歩ぐらい後退した。」
平岡「3歩進んで2歩さがったなら、1歩前に進んでるからええやないですか(笑)」
やね「まあ、そうなんだけど(笑)」

0.1秒チューニングは将棋ソフト開発者ならば必ず乗り換えなければならないハードルであったといまの私は思う。出村さんが0.1秒チューニングを提唱していなくとも、誰かが短時間でのチューニングを実施し、そして失敗し、その失敗から我々は学ぶ必要があったのだと私は思う。

何をどう学ぶべきであったのだろう?

1スレ0.1秒と8スレ10秒とでは探索ノード数に1000倍近い乖離がある。そりゃ事情が違って当たり前でしょと多くの人は思うかも知れない。将棋ソフトの開発者も大半がそのように考えていることだろう。しかしその考え方は適切ではないのだ。どこの事情がどう違うのかをよく考えるべきであったのだ。1スレ0.1秒でチューニングできる探索パラメーターと8スレ10秒でないとチューニングできない探索パラメーターがあると考えるべきなのだ。

なぜそのように考える必要があるのか?

探索パラメーターの値を少し変更しても棋力としてR1以下の差しか現れないことが多々ある。これをきちんと計測して探索パラメーターを調整したいわけであるが、R1以下の差を検知するためには数万局以上の自己対局が必要になる。(正確な回数が知りたい読者は二項検定で計算して求めて欲しい。実際は、計測に用いている互角局面が互角でなかったりするので、多少のマージンが必要で二項検定の結果より大きめの対局回数にする必要はある。)

ちなみに実際にやねうら王では超短時間(1手0.1秒)で調整できるパラメーターに関しては30万局以上対局させて決めている。8スレ10秒で30万局の対局ができるだろうか?1局30分として1PCだと17年かかる。これを3日で終わらせようと思うと2000台のPCが必要になる。2000台のPCが用意できる石油王はそれでもいいだろうけども、10台ぐらいしかPCを用意できない人達はもっともっと知恵を絞る必要がある。(10台すら用意できないなら、さらに知恵を絞らなくてはならない!) 「0.1秒と10秒とでは(最適な探索部のパラメーターの値が)全然違うよ」などと悠長なことを言ってる場合ではないのである。

では、どの探索パラメーターが0.1秒でチューニングできて、どの探索パラメーターが0.1秒でチューニングできないのか?

しかし、この質問に適切に答えるためには、将棋ソフトの探索部に対するもっと深い理解が必要となる。

だから、ここで原始的で単純化された探索部から考えていく必要があり、話はいったん大昔の将棋ソフトにまで時代を遡る。

次回に続く。

1手1秒で強い将棋ソフトは1手10秒でも強いのですか?その2” への15件のコメント

  1. いい引きですね↑↑↑↑
    「0.1秒と10秒」の違いが、探索時間に比例して変化していくなら、「0.1秒と0.2秒」とか「0.1秒と1秒」との違いを計測することで、10秒やそれ以上の最適解を推測することはできないんですかね?

    • 持ち時間を2倍にしたときにどれだけ伸びるかというのを調べて、その伸びから(伸びが線形だとして)長い時間で強くなるようなチューニングを行うということですかね。
      アプローチ自体は悪くはないと思うのですが、探索で高いdepthでしか適用されないSingular Extensionなどの枝刈り(延長)がありまして、そういうのは短い持ち時間ではほぼ適用されておらず、それゆえ短い時間だと…。(´ω`)

  2. イチローさんが自分にあった練習方法を色々変えて試して来た事に
    「遠回りが実は一番の近道」
    「無駄な事はない。自分次第」
    とインタビューで答えてたのが浮かびました

  3. 猫砂って何なのでしょうか?大きめホームセンターで売ってるコンクリート用の砂と違うのでしょうか?

    そのおっさんは、「森田将棋よえーなー。こりゃ、(森田将棋が)百万年考えても俺には及ばんなー。」とかブツクサ言いながらやっているわけである。

    このあたりの思考し続けて今回の記事につながっているっぽい感じ!!。「トップ・オブ・ザ・ワールド(世界選手権優勝)」の人はすごい

  4. 全く何も分かっていないのですが、

    例えば検討時間を10秒にした場合、100万NPSのPCならAソフトの方が精度が高い、でも1億NPSでるのならBソフトの方が精度が高いって事が有りうるって事なんでしょうか?

    あくまで可能性ですが

    • 10秒で100万npsでるPCと1億npsでるPCとではおそらくスレッド数が桁違いなので、話がややこしくなります(´ω`)

      スレッド数が同じだとして、1手に100万局面を探索する場合と1億局面を探索する場合とでAとBのソフトの強さが逆転する現象は、普通にありえます。これが普通にありえるので、1手100万局面という条件でチューニングした場合、1億局面で強いかどうかはわからない、もしくはチューニングできないというのが一般的な開発者の見方です。しかし、それは探索部を深くまで理解していれば、前者の条件で後者のチューニングがある程度までできるというのが私の主張です。

  5. 出来れば6月前半位に”1手10秒で強い将棋ソフトは1手
    1秒でも強いのですか?その1”という標題で投稿して
    いただけますか?

コメントを残す

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