長手数の定跡の自動生成について

いま、大会向けの定跡を作ることを考える。

自分が先手番だとすると、初手は定跡DB上は1つ(1手)で良い。2手目、相手は2通りあるとする。3手目は、自分の手番なので、定跡DB上は1つで良い。4手目は、相手番で2通りあるとする。

このように考えると、先手番の場合は、1 – 2 – 1 – 2 – …と続いていくので、8手目で16通りの局面しかない。16手目でも256通りだ。めちゃくちゃ少ない。

後手番の場合、初手は相手の手番である。いま仮に76歩と26歩の2通りであるとすると、さきほどと同じ理屈で、2 – 1 – 2 – 1 – …と続いていくので、やはり、16手目までも256通りだ。めちゃくちゃ少ない。

でも実際は、2通りずつではない。3通りずつだとすると16手目までで3**8 = 6,561通り。4通りずつだとすると、65,536通り。組み合わせ爆発してしまう。

MultiPVで探索したときに1番目と2番目の評価値があまりにも離れているときは2番目が選ばれる確率は低いだろう。評価値を勝率に変換して、勝率の差が一定以上離れていたら選ばれないと仮定するとある程度絞れる気はするのだが…それでも将棋の序盤は広い。

1スレッドだと12手目ぐらいの局面でdepth 28(MultiPV 2)で探索するのに30分ぐらいかかる。
200コアで1時間400局面ぐらいだ。24時間で9,600局面。65,536局面であれば、1週間ぐらいで終わる計算になる。

しかし2通りずつ(MultiPV 2)では心もとない。MultiPV 4にしたい。でもこれだと10手ぐらいまでが限界だ。

たった10手ほど定跡を掘るだけで電気代が5万円ぐらいかかる計算になる。AWSを借りるとその5~10倍かかる。おまけにそんなことをしても勝率はほとんど変わらない。泣けてくるな。

まあ、大会で変な定跡を引いてそのまま必敗になるよりはずっといいのだろうけども。

というか、以前作ったやねうら大定跡でも、そう簡単に不利にはならないと思うんだけどな…。

長手数の定跡の自動生成について」への2件のフィードバック

Yakitori へ返信する コメントをキャンセル

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