香落ちの定跡の自動生成について

今週末(6月28日)に電竜戦TSECが開催される。指定局面戦と香落ち戦である。

第6回電竜戦TSEC指定局面と香落ち戦
https://denryu-sen.jp/denryusen/dr6_tsec/dr1_live.php

とつげき東北さん(『科学する麻雀』著者、元東京大学非常勤講師)が本大会のために賞金用に50万円寄付されていて、本大会の賞金総額は100万円以上となるようだ。

https://twitter.com/totutohoku/status/1935821906302976431

やねうら王 featuring 水匠

たややんさんは、先日、王手将棋の改良をされて、私が「探索部だけでなく、評価関数の(機械)学習をたややんさんの最新の技術でやりなおして、そのあと定跡掘ったら、先手必勝の結論が出るんちゃいます?」みたいなことを言ったところ、たややんさんが本気を出し始めた。

https://twitter.com/tayayan_ts/status/1935587919571689641

本気を出し始めたのはいいが、電竜戦TSECを目前に控え、たややんさんは完全に馬鹿になってしまった。(「ネジが馬鹿になる」などの「馬鹿になる」(役に立たなくなるの意味))

仕方ないので、やねうら王チームは、この、魂が抜けてもぬけの殻となったたややんさんを吸収し、私とたややんさんとで「やねうら王 featuring 水匠」チームとして電竜戦TSECに出場するのであった。(つづかない)

香落ち定跡の自動生成の難しさについて

香落ちは言うまでもなく下手(したて)必勝である。平手の将棋も先手必勝だと信じる開発者も近年は多いが、それとは比較にならないレベルで下手必勝である。

それで、このように形勢に差がついている状態で定跡をどうするかというのは、非常に難しい。

と言うのも、試しに水匠10を使って定跡を掘ると、定跡を掘り始めた段階では初手34歩が評価値-170ぐらいで最善っぽいのだ。

自動定跡生成スクリプトではこの有力な指し手ほど優先して掘っていくわけだが、この34歩を掘っていくと、当然ながら、形勢の差が拡大してどんどん評価値が悪くなっていくのである。そうすると、34歩のPV(最善応手列)の末端は-200ぐらいとなる。ペタショック化(定跡ツリーをminimax化)すると、このPVの末端の評価値が一番上まで上がってくるので、結果として初期局面の34歩の評価値が-200となる。

しかしそうすると、54歩、52飛など本来2番目とか3番目に有力だった指し手が1番目になりかねないわけである。

このように、片側のプレイヤーが必勝であるゲームで、一番有力な指し手だけ定跡を深く掘ってしまうと、一番粘れるはずの指し手が指せなくなる。

そこで、ペタショック化するのをやめて、単にその局面で長時間思考したものをそのまま定跡として定跡DBに登録していく方法が考えられる。実戦で定跡局面にヒットするとノータイムで指せて持ち時間の節約となるから、これはこれで(定跡が)無いよりはマシではあるが、定跡レベルで悪くなるのがわかっている変化を避けないのはちょっとおかしい気はしている。

あるいは、定跡の末端の局面から実際に対局させてみて、勝率の高い局面を選ぶというような方法も考えられる。しかしこの方法は、実際に対局させるための計算リソースが非常に膨大となるため、二の足を踏んでしまう。

Aoba駒落ちのように駒落ちに強い評価関数を学習させて、そのソフトを用いて定跡を作るのが一番良いと思うのだが、まあ、それであっても、上のように有力な指し手ほど定跡を掘っていくと形勢が悪くなっていくので有力な指し手を指さない定跡になってしまうという問題はある。

平手の定跡を掘る場合にも後手はこのような問題はあるにはあるのだが、平手だとそこまで簡単に後手が悪くなるわけでもないので、いまのところ、平手で後手の作戦どうするんだ?みたいな感じで騒がれてはいるものの、香落ち定跡ほどの深刻な問題とはなっていない。

そういう意味では、香落ち定跡の生成は、平手の大規模定跡の縮図という気はする。平手の大規模定跡を生成するときの嫌なところ(問題点)がぎゅっと濃縮されている感じだ。

つまりは、人類は、香落ち定跡のベストな生成方法をいまだ知らないのである。(クソデカ主語なのに真実すぎて微塵も炎上しない珍しいパターンの言説)

香落ちの定跡の自動生成について」への11件のフィードバック

  1. 香落ちだと振り飛車が進歩しそうだし、本当にレーティング通りプロ棋士が駒落ちで負けるのか興味あります。

  2. 香落ち定跡となると奨励会員に与える影響も相当に深刻なんじゃないでしょうか?

    • あー!そういう問題もありますか!

      しかし本大会までだと初期局面から10~16手目ぐらいまで掘れない感じです。ぜんぜんです..。

    • 会誌局面からの手数で補正するということですね。わりといいアイデアだと思います。
      5年前の私の大規模定跡(ペタショック定跡)ではそういう感じで補正して有力なところを掘ってました。

  3. >しかしそうすると、54歩、52飛など本来2番目とか3番目に有力だった指し手が1番目になりかねないわけである。

    これはalpha-beta探索+反復深化にも本質的に関わる話ではないでしょうか。
    探索の過程でも、浅い段階での有力手が深く読まれて評価が悪化し、他の手が繰り上がることは起こり得ると思います。
    それでも実戦における探索では大きな問題とはされにくいのに、定跡生成の文脈では明確な課題となるのは、どういった点に起因するのでしょうか。
    もし定跡生成においてこの問題がある程度解決できるのであれば、それは探索の改良にも繋がる事と思います。

    ps.ペタショック定跡の論文、非常に心待ちにしています
    私は後退解析の組み合わせ爆発対策と循環由来の評価値の区別、千日手と連続王手の区別について納得できる方法が思いつかなかったので局面型DBは諦めました⋯

    • > 探索の過程でも、浅い段階での有力手が深く読まれて評価が悪化し、他の手が繰り上がることは起こり得ると思います。

      通常探索の場合、ID(反復深化)するとき、基本的にはiteration depth手先の局面で評価関数が呼び出されます。
      つまりは、10手先なら10手先同士の局面を比較しています。だから、それほど問題にならないのです。

      定跡の場合、初期局面から、1手先と100手先の局面の評価値を比較したりします。なので非常に表面化しやすいです。

      > 私は後退解析の組み合わせ爆発対策と循環由来の評価値の区別、千日手と連続王手の区別について納得できる方法が思いつかなかったので

      https://github.com/yaneurao/YaneuraOu/blob/master/source/book/makebook2025.cpp
      のソースコード上に解説があります。メインの部分は100行程度の非常に単純なアルゴリズムなので是非ご覧になってください。

      • ご回答ありがとうございます
        なるほど通常探索とは違い、
        各子ノードに連なるグラフの大きさ(辺の数)が採掘の仕方によっては不揃いになるが故の問題なのですね
        これは先に語られているように手数で補正するか、
        採掘する局面の選択にQSearchやLMRのようなヒューリスティックを使うくらいのものでしょうか
        難儀ですね

        ソースコード読ませていただきました
        連続王手の循環になっているノードの集合check_loopを得て、通常は0で初期化のところcheck_loopだけ±INFで初期化、
        後退解析にあたってはcheck_loopのみdfsで評価値を求めるが肝ですね
        ロジックは理解しましたが
        腹落ちするには時間がかかりそうです⋯

  4. 香落ち戦は今日ですか?
    なんか、足りない香が反対側の持ち駒とかになってるわけじゃないから、既存の定跡資源が全く使えなくて面倒そう。
    そもそもが、例えば天気に替えると、あからさまに晴れの気候のときは晴れで確定、あからさまに雨の気候のときは雨で確定、でも一番知りたいのは中途半端な曇りの日に傘を持った方が良いのかどうかという際どい部分の話と似てそうで面倒そう。

コメントを残す

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