将棋のような先手必勝のゲームで後手番定跡を作るには?

将棋は先手必勝のゲームである。将棋AIの大会上位チームの開発者でそのこと自体を疑っている開発者はたぶんいない。とりあえずは、この記事を読むにあたって、これを事実として飲み込んでいただきたい。それで、このような先手必勝のゲームにおいて、後手はどのような戦略を取ればいいのかというのを書いていく。

例えば、以下の動画の概要欄からダウンロードできる『水匠定跡』は、角換同型腰掛銀の必勝定跡であるが、後手番の時はどうすればいいのかという問題がある。(水匠定跡の後手番問題)

先日、このブログでペタショック定跡という超巨大定跡を掘っているという話を書いた。(1年かけて1億局面掘る予定。AWS換算で700万円ほどかかる見込み。)

将棋AIの2024年は大規模定跡時代 : https://yaneuraou.yaneu.com/2024/01/14/the-era-of-large-scale-book-in-shogi-ai/

現在2500万局面ほど掘れているのだが、これを用いても他のソフトに対して後手番だと勝率があまり上がらないのだ。これは、上に書いた「水匠定跡の後手番問題」と似た理由であるが、このことについていまから説明する。

例えば先手必勝のゲームがあって、戦法Aと戦法Bの2つがあるとする。このゲームにおいて戦法は、この2つだけであるとする。

戦法Aの方が後手にとって有力であるとする。つまりは戦法Aを選んだ方が後手から見た評価値が良い。そこで、定跡は自動的に戦法Aを中心に掘られる。ところが、このゲームは先手必勝なのである程度掘ると戦法Aは先手必勝が判明してしまう。

そうすると後手番だと戦法Bを選択するような定跡になる。実戦的には、戦法Bよりは戦法Aの方が後手勝ちやすいにも関わらず、である。

このように、先手必勝のゲームで、後手から見て有力な戦型を優先して定跡を掘ってしまうと、そこで先手必勝の結論が出た場合、後手は定跡を使うとその戦法を選択しなくなるから、使わない方がマシな定跡となってしまうのである。

では、後手用の定跡はどのようにして作れば良いのだろうか?

・有力そうなところを優先して掘るのではなく、色んな戦法を同じぐらい掘る
・後手用の定跡は、実戦での勝率ベースで作成する
・戦法の結論が出るほど深くまで定跡を掘らない
・後手は定跡を使うのをやめる

みたいな選択を迫られている。他の選択もあるかも知れない。どういう方針が正解なのか、まだ将棋AI開発者の間で結論が出ていない。

とまあ、将棋のような先手必勝ゲームにおいて、後手の定跡は作るの自体が難しいということはご理解いただけたかと思う。

このような事情もあって、将棋AI界隈で有名な定跡(水匠定跡やs-book_black)は先手側の完成度だけが異様に高いのだ。そのことが近年の将棋AIの大会での先手勝率の高さに拍車をかけてしまっているのかも知れない。

例えば、水匠定跡を生成するアルゴリズムは、現時点で掘れている定跡ツリーで、(開始局面から双方最善を尽くした時に)勝っている側は指し手を変えず、負けている側だけが反駁できるか(他の指し手がないか)を調べるようなアルゴリズムになっている。その結果、最終的に出来上がる定跡ツリーは先手必勝の定跡ツリーになる(になった)ということである。

s-book_blackの方は、その作者(suimon_fanさん)が、(何年も前から)将棋は先手必勝だという信念のもとに作成されていたので、定跡ツリー上で後手有利な変化が出てきたら、そこに至るまでの手順(の先手の指し手)がおかしいはずだから修正する、みたいなことを繰り返して現在に至る。つまりは、「将棋は先手必勝ゲーなのだから、後手番の時はただ負ければいい」という考えなので、後手番でこの定跡を使えないようにしてある。(後手だとあえて自滅する定跡が入力されている。)

後手番、受難の時代である。

■ ペタショック定跡2000万局面の配布について

先日、レビューのためやねうら王プロジェクトにGitHub Sponsors/FANBOXで寄付してくれている人全員にペタショック定跡1000万局面を配布した。

その結果、わりと有益なフィードバックをいただけたので、2月15日に配信するやねうら王News Letterに2000万局面時点のペタショック定跡のダウンロードリンクを掲載する予定だ。

いまからでも間に合うので、ペタショック定跡が欲しい人はいくらでも良いので寄付して欲しい。寄付の金額を問わず、ペタショック定跡を提供する。(以前に寄付してくださった方にも、メールもらえれば提供します)

そのようなわけで、やねうら王プロジェクトに支援を検討していただける方は、このブログのメニューの「やねうら王を支援する」ところから辿っていただけると幸いである。

あと、1月にGitHub Sponsorsから寄付したけどもNews Letterが届いていないという方は、メールの受信設定(支援ページの右上のManage ⇨ Receive email updates from yaneurao にチェック)を忘れていないか確認して欲しい。(もしこのチェックを忘れていたなら、私にメールをいただければ配信済みのNews Letterを送らせていただきます。)

将棋のような先手必勝のゲームで後手番定跡を作るには?」への11件のフィードバック

  1. 先手がそれほどに有利であるならば、むしろ後手定跡が重要になりますね
    先手は勝って当然であり、後手でどこまで強い相手にブレイクできるかで大会成績は決まってくるので

  2. 千日手と入玉と無理攻め誘発を得意とする後手番専用の評価関数を作るってのはどうでしょうか?

    • 無理攻めを誘発するのは可能かどうかわかりませんけども、少なくとも千日手になるかは探索の問題なので「千日手が得意な評価関数」は作成不可能ですなー。

  3. え、後手側を1手進めた状態全パターンを初期配置として探索すれば…パターン数倍のお金が必要になるからダメってことですか?w

    • それはやってるんですが、先手必勝なので定跡を延長すればするほど終盤に近づいて、先手優勢の局面ばっかりになってきて後手の定跡が破綻するんです…。

      • え、囲碁の方は先手が6.5マスほど余分に取ったところで勝敗をつける程度に先手が有利?っぽいので、将棋でも何手分先手の方が有利であるか知るために、後手側を2手3手と進めた状態全パターンを初期配置として探索すれば…パターン数乗のお金が必要になるからダメってことですか?w

  4. たややんさんのYouTubeにあったエンジン同士の対局に待ったさせる機能を後手だけに実装して定跡作ると良いところまで行きそうな気がしています。

    • 先手は待ったをしない(定跡を用いない)で後手だけ待ったができるものとして定跡を作るわけですな…。わりといいアイデアのように思いますが、実際は先手の定跡がすでに思いっきり開拓されているので…。

  5. 探索における水平線効果と同じ事が定跡でも起こっているように思います
    探索での対策と同様に読みを増やす≒定跡を増やすという事しか無いため、気休めにしかならないと思いますが…

    余談ですが、古のオセロソフトZebraでも定石をminmaxで構築する手法が使われていましたが、
    終盤の読み切った局面は石差にかかわらず勝ちか負けか引き分けかで親ノードへ伝播させていたため、石差-2の進行の局面以降の定石を増やせば増やすほど評価値が-4、-6となっていき、悪手(石差が確定していないが評価値が悪い手)を最善手として示すという欠点がありました。(Edax等以降のソフトでは石差を考慮しているためこの問題は起きない)

    勿論、将棋には石差なんてものは無いので何を考慮すればいいかという事ですが、
    既に解決されているどうぶつしょうぎにおける戦略から考えるに、必敗側の戦略としては、詰まされるまでの手数がより多い局面が(どの道負けるにしても)良いという事になると思います

    あらゆる局面について詰まされるまでの予測手数を学習させてそれを評価関数と組み合わせるのはどうかな?などと私は考えています

    • > 詰まされるまでの手数がより多い局面が(どの道負けるにしても)良い

      将棋にはジリ貧という概念がありましてな…。(手数はかかるけど初心者でもプロ相手にぼちぼちと金攻めすれば勝てる、みたいな局面)

コメントを残す

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