2六歩の妙

温故知新シリーズに入れていいネタかもしれない。

5月の選手権に向けて無作為な試行錯誤をする最終段階近い。

評価関数の数式をオリジナルのものを数パターン試行しているが,そこそこ使えそうな雰囲気のものが出来てきている。昨年のHefeweizenに勝てないと実戦投入はないだろうけど。

で,やねうら王に組み込んで戦う実験と自作のルーチンで戦う実験を行う。前者は実戦に近く後者は不具合チェックに近い意味がある。探索深さも前者は10を下回ることはないが後者は精々5,6程度である。(pythonで作ってた時は3くらいw)

 

で,ちょっと気づいたことがあった。やねうら王で戦うとそこそこ普通に戦えて技巧に若干負け越す程度の結構良い感じの評価関数モデルが出来たので,自作ルーチンにも同じモデルを組み込んでみた。やねうら王エンジンなら初手のほぼ2六歩なのに,何戦やっても初手7六歩でいつまで経っても2六歩を指さないのである。飛車先を突かず結局中盤に横へ使うレベルであった。

妙だなぁということで持ち時間を増やしてみたら,depth7で初手2六歩を指すようになった。

もしかしたら,初手から10手くらいの部分は教師データを作っていないからかもしれない。いや,depth7と言えば飛車先歩交換で相手の歩が浮くタイミングでこれを評価してやっと2六歩を選択したんだとも考えられる。確認をしたところ実際評価値的にはそういうことだった。

 

このdepth7ってのが結構微妙な数字で以下のような記事もある。

これは後手が角頭を守る3二金を確実に指すのに要するdepthに関する考察である。

merom686.hatenablog.com

 

将棋の世界に三手の読みと言う言葉があるが,七手読まないとこんな初歩的なことが判別できないのである。双方に類似の手筋があればその手順優劣を正確に把握するには14手必要と言うことになる。例えば歩交換保留形との比較には+αの探索が不可欠となる。もちろん評価関数でこういった形が良いと与えておけばその通りに指すのであるがそれは棋理ではないように思う。

 

複数の駒がぶつかるような局面でもdepth20越えてくると結構高精度だなぁと漠然と考えていたが,複数の手順前後などが結構明確に効いてくるケースがあるようだ。実戦での出現率については詳細は未確認であるが,調べると面白いのかもしれない。

 

大雑把に分類すると類似の案件になるのが香落ち問題である。

奨励会では格下の相手と戦うときに香落ちを強いられる。香車の無い側に玉を囲うことは端攻めに不利ということで,長年の歴史で上手は自然と飛車を振るのが常識化しており,奨励会を出てプロになった人間は少なからず振り飛車の経験を積むことになる。

そう,今の将棋ソフトも飛車を振らないと言われながら香落ち局面では振るのである。何手目とかどの手順でってのはソフト依存ではあるが,多くの強豪ソフトは振ることを確認した。香車一枚程度では対人勝率にも影響は微少だろうから,対振りの練習をしたい人はソフト上手の香落ちを試してみると良いかもしれない。

---

追記:

最初に書いた自作ソフト年末年始で作成したGo言語によるものだが,ちょっと高速化を施して初手10秒未満でdepth7に達するようになった。強くなった気がしたのでfloodgateに放流したところ,YSSなる相手に勝利を収めたようである。あのYSSなら祝杯を挙げていいのではないだろうか。

wdoor.c.u-tokyo.ac.jp