モンテカルロ5五将棋の試み、その1。
本日の日記はコンピュータ将棋の話題である。といっても、本文にはほとんど内容はない。内容があるのはソースコードのみである。
結構前からコンピュータ将棋を作っている。コンピュータ将棋の今の主流の考え方はmin-max法に基づくものだが、私はコンピュータ囲碁で主流のモンテカルロ法で作っている。モンテカルロ法で将棋を作っている方々はほかにもおり、私のものよりもずっと強いのだが、私は私でこつこつと作っている。最初は「どうぶつしょうぎ」で作り始め、今回その思考ルーチンを5五将棋に移植した次第である。
5五将棋に移植してから少し手を加えて、ようやくたまにそこそこの棋譜を見せてくれるようになったので、ソースコードを公開する。ただし、思考時間はものすごく長く、また、メモリ使用量も多い。つまり、遊んで楽しむことはできない(遊んで楽しむのにはモンテカルロどうぶつしょうぎがよいのだが、こちらはソースコードの公開に問題がある)。ソースコードの二次使用などは特に制限するつもりはないが、まだ実用段階ではないので使用する目的がなかろう。改変や二次配布も制限しない。
以下、最も気に入っている棋譜である。先手が私のモンテカルロ木探索であり、後手がものすごく弱く設定したmin-max (alpha-beta)法である。
持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | | |v金|v歩|二 +---+---+---+---+---+ | | | | | |三 +---+---+---+---+---+ | 歩| | 角| | |四 +---+---+---+---+---+ | 玉| 金| 銀| | 飛|五 +---+---+---+---+---+ 持: 変則的ではあるが、これを初形とした。 この局面が課題局面であり、 読みが足りないと、 角か飛車を切って歩を手に入れたがる。 思考ログを見てみると、 ここではやはり、角を切りたがっている。 また、2四銀も考えているようである。 実際に指した手は、4四金。 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | | |v金|v歩|二 +---+---+---+---+---+ | | | | | |三 +---+---+---+---+---+ | 歩| 金| 角| | |四 +---+---+---+---+---+ | 玉| | 銀| | 飛|五 +---+---+---+---+---+ 持: 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | | |v金| |二 +---+---+---+---+---+ | | | | |v歩|三 +---+---+---+---+---+ | 歩| 金| 角| | |四 +---+---+---+---+---+ | 玉| | 銀| | 飛|五 +---+---+---+---+---+ 持: ここでは4三角も考えているようだが、 実際に指した手は2四銀。 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | | |v金| |二 +---+---+---+---+---+ | | | | |v歩|三 +---+---+---+---+---+ | 歩| 金| 角| 銀| |四 +---+---+---+---+---+ | 玉| | | | 飛|五 +---+---+---+---+---+ 持: 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | | |v金| |二 +---+---+---+---+---+ | | | | | |三 +---+---+---+---+---+ | 歩| 金| 角| 銀|v歩|四 +---+---+---+---+---+ | 玉| | | | 飛|五 +---+---+---+---+---+ 持: ここでは、3三金や3三銀から読み始めている。 △同金とすると、 金を取り返した手が1二金の詰めろになるので、 飛車が取れないという算段なのだろう。 無視して△1五歩成なら2二の金を取って、 後手玉が危険になる。 実際に指した手は、3五飛。 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | | |v金| |二 +---+---+---+---+---+ | | | | | |三 +---+---+---+---+---+ | 歩| 金| 角| 銀|v歩|四 +---+---+---+---+---+ | 玉| | 飛| | |五 +---+---+---+---+---+ 持: 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | |v金| | |二 +---+---+---+---+---+ | | | | | |三 +---+---+---+---+---+ | 歩| 金| 角| 銀|v歩|四 +---+---+---+---+---+ | 玉| | 飛| | |五 +---+---+---+---+---+ 持: ここでは4五角から読み始めている。 次に3二の金が取れれば 詰めろがかかるという狙いだと思うが、 実際に指した手は、2三角。 観戦していた私は一目悪手だと思ったのだが、 そんなことはなかった。 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | |v金| | |二 +---+---+---+---+---+ | | | | 角| |三 +---+---+---+---+---+ | 歩| 金| | 銀|v歩|四 +---+---+---+---+---+ | 玉| | 飛| | |五 +---+---+---+---+---+ 持: 後手は何も考えずに、同金と応じた。 持: 角 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角|v銀| |v玉|一 +---+---+---+---+---+ | | | | | |二 +---+---+---+---+---+ | | | |v金| |三 +---+---+---+---+---+ | 歩| 金| | 銀|v歩|四 +---+---+---+---+---+ | 玉| | 飛| | |五 +---+---+---+---+---+ 持: 私の棋力では分からなかったのだが、 ここで3一飛成が必至のようである。 今もまだ、必至なのかどうか不安なのだが、 多分、必至である。 少なくともコンピュータが表示していたスコアは、 必至っぽかった。 持: 角 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角| 竜| |v玉|一 +---+---+---+---+---+ | | | | | |二 +---+---+---+---+---+ | | | |v金| |三 +---+---+---+---+---+ | 歩| 金| | 銀|v歩|四 +---+---+---+---+---+ | 玉| | | | |五 +---+---+---+---+---+ 持: 銀 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角| 竜|v角|v玉|一 +---+---+---+---+---+ | | | | | |二 +---+---+---+---+---+ | | | |v金| |三 +---+---+---+---+---+ | 歩| 金| | 銀|v歩|四 +---+---+---+---+---+ | 玉| | | | |五 +---+---+---+---+---+ 持: 銀 後手は角合いだが、 2三銀で、多分、必至。 ちなみに、後手が合駒をせずに△1二玉と逃げると、 ▲2一銀△1一玉▲2三銀で、多分、必至。 持: 5 4 3 2 1 +---+---+---+---+---+ |v飛|v角| 竜|v角|v玉|一 +---+---+---+---+---+ | | | | | |二 +---+---+---+---+---+ | | | | 銀| |三 +---+---+---+---+---+ | 歩| 金| | |v歩|四 +---+---+---+---+---+ | 玉| | | | |五 +---+---+---+---+---+ 持: 銀 金 持: 歩 5 4 3 2 1 +---+---+---+---+---+ | |v角| 竜|v角|v玉|一 +---+---+---+---+---+ | | | | | |二 +---+---+---+---+---+ | | | | 銀| |三 +---+---+---+---+---+ |v飛| 金| | |v歩|四 +---+---+---+---+---+ | 玉| | | | |五 +---+---+---+---+---+ 持: 銀 金 後手、思い出王手(水平線効果)。 持: 歩 5 4 3 2 1 +---+---+---+---+---+ | |v角| 竜|v角|v玉|一 +---+---+---+---+---+ | | | | | |二 +---+---+---+---+---+ | | | | 銀| |三 +---+---+---+---+---+ | 金| | | |v歩|四 +---+---+---+---+---+ | 玉| | | | |五 +---+---+---+---+---+ 持: 銀 金 飛 ここで後手投了。