先手番専用定跡s-book_blackが優秀すぎた。私が2年前に開発したテラショック定跡生成手法では到底太刀打ちできなかった。そこでやねうら王プロジェクトでは、新たにスーパーテラショック定跡生成手法というのを考案し、やねうら王に実装したのであった。先手番専用定跡s-book_blackの厚い壁https://yaneuraou.yaneu.com/2021/11/01/thick-walls-of-s-book_black/テラショック定跡生成手法のおさらいまず簡単にテラショック定跡手法をおさらいし、何が悪かったのかを書き、今回それをどう改善したのかを書く。テラショック定跡は与えた棋譜の各局面に対して長い時間をかけて思考させる。1局面につき探索1スレッド×1時間でやっていた。1スレッドにしているのは、将棋ソフトは並列化効率が悪いからで、スレッド数を増やしてもその平方根ぐらいの実効値しか出ないと言われている。よって1スレッドで探索すると最大効率が出るわけである。そのようにして、各局面を思考し、定跡DBに登録する。ここまでは棋譜を与えてその局面について思考させているだけなので、従来のコマンドで可能である。think”コマンド)このあと、得られた定跡DBに対してテラショック化という作業を行う。これは、与えられた定跡ツリー上でmin-max探索を行い、ベストな変化を探す工程である。build_tree”コマンド)min-max探索を知らない人に簡単に説明しておくと、将棋は先手がまず着手する。先手にとって、評価値が最大となる指し手がいいわけだ。後手も自分にとって評価値が最大となる指し手を選びたい。後手にとって最大ということは、先手にとって最小ということである。...というように局面を選んでいく。これをmin-max探索と呼ぶわけだ。要するに、先後、双方が最善を尽くした時に、末端の局面で先手にとって一番評価値が高くなるような変化手順(最善応手列)を選んでいきたいわけだ。nodeは節点の意味で、グラフ理論の用語だが、ここでは局面のことだ。leaf(葉=木の末端)のnode(局面)ということである。nodeの評価値が一番良いところを目指す(別の)定跡DBが作られるということである。テラショック定跡生成手法の欠点ところが、このテラショック手法で生成した定跡、すこぶるs-book_blackに対して弱かったのである。弱かった原因はいくつもあるのだが、代表的なものを書いていく。Learning系の将棋ソフトと比べると序盤が弱く、その評価の精度に問題があった。・思考対象局面としてfloodgateの棋譜を与えていた。floodgateの棋譜上の局面でmin-max探索をしていた。これだと、与えた棋譜に出現した局面に至る指し手しか自分も相手も指さない想定になってしまうが、一部の指し手を封じられているも同じである。これは、じゃんけんでグーを出すなと言っているようなもので、いい影響があるはずがない。読み筋のこと)周りの定跡を掘っていくことができなかった。このため、s-book_blackに対して、定跡の長さでも負けていた。逆に、s-book_blackは定跡抜けた局面で短い時間で自己対局させて実際の勝率を検証しているようで、評価値は互角ぐらいであったとしても、そのあと実際に勝ちやすい局面を選定しているようであった。定跡生成の時も、そのように実際の対局シミュレーションを行うべきだったのかも知れない。あと、それとは別に、大きな欠点として、従来の探索部を用いる場合、候補手が1つしか得られない。4で探索していたのだが、そうすると5番目以降の候補手が漏れてしまうという欠点があった。これはさきほどのグーが封じられたじゃんけんと同じ理屈により、ちょっと損である。4だと4倍近く(同じ深さの)探索に時間がかかるようになるので、非効率であった。4で探索したところで、2番目以降の指し手は1番目の指し手と比べると非常に悪い評価値しかつかないので、その調べる時間がもったいない。2番目の指し手を調べるのは仕方がないとしても、このとき3番目と4番目の指し手を真面目に思考するのは時間の無駄である。このように、テラショック定跡手法にはさまざまな欠点があった。そんな定跡を使って、WCSC29(第29回世界コンピュータ将棋選手権)でやねうら王は優勝できたものであるな。将棋ソフトのたぬきシリーズの開発者の野田さんはテラショック定跡のことを「テラショック定跡はやね師匠しか使えない呪われた装備では」と評していたが、私も呪われていると知っていたら、そんな装備は使わないのである。Learning系のソフト(ふかうら王)を用いることにした。ふかうら王はやねうら王プロジェクトで開発した、dlshogiの互換エンジンである。評価関数のモデルファイルは、水匠の開発者のたややんさんが用意してくれた。このモデルファイルは、現時点で公開されているdlshogiの最強の評価関数のモデルファイルにも互角以上の評価精度を誇るようである。Learning系の将棋ソフトでは、探索したときに追加コストなしに全合法手の評価値が得られる。4だから4倍の思考時間がかかる、みたいなことはしなくて良いのである。30000)で思考させることにした。1秒は短いようだが、局面数を稼ぎたい意味がある。前回のテラショック定跡を生成していた時の経験からすると100万局面ほど調べたところで、角換わりの入り口ぐらいにしか到達しなかった。100万局面だと少なすぎたようである。今回は、棋譜を与えてそれを掘る(「掘る」というのは、思考して定跡の枝を進めていくこと)のではなく、PV(初手から双方が最善を尽くした時の読み筋)まわりを中心に掘っていくので、そこまで無駄な掘り方はしないはずだから、200万局面を目標に掘っている。上の改良点に加えて、今回は、PVまわりを自動的に掘るという機能を用意した。千日手が絡むのでこの部分、わりと難しく、2年前の私では高速な実装をすることが出来なかった。今回は、局面についてふかうら王で思考しながら、そのバックグラウンド(別スレッド)で、次に掘るべき局面を選定するという作業を行い、その選定時間が極めて短くて済む(100万局面時でも0.1秒未満)ようにすることができた。そのために様々な技術とテクニックを導入したのだが、ここに書ききれないので、詳しい技術的な内容は次の電竜戦のPR文書にでも書くとして、大きく3つの特長があるのでその紹介をしておく。searchという技術を開発した。search(αβ探索)というのは、よくゲーム理論の教科書に載っているmin-max探索の改良版である。-100する)ことにした。これにより、その局面を避けて探索してくれる。これにより、思考と思考対象局面の選出を完全に並列化できるわけである。特長その2)棋譜を外部から与えてその棋譜上の局面を思考ことができる。PVに関係しなさそうなところを延々と掘っても時間の無駄である。+100する)のである。することによって、PVに絡みそうな棋譜の局面だけが延長され自動的にふかうら王の思考対象となる。特長その3)root局面(探索開始局面)を与えられる。searchの時の開始局面を自由に設定できる。角換わりの棋譜上の局面だけを与えることも出来る。この時、棋譜上の各局面を開始局面として、思考対象局面を探すので、棋譜周辺の局面が重点的に思考されることになる。した場合、角換わりのスペシャリストのようになるだろう。s-book_blackがそんなに優秀であるなら、s-book_black上のすべての局面を上記の特長2の機能によって、棋譜として与えてやれば、PVまわりでs-book_blackに出現する局面は積極的に掘っていけることになる。上記の特長3のroot局面として指定やれば完全に狙い撃ちみたいなことも出来る。extract_sfen_from_db”をやねうら王に新たに追加した。これによって、特定の定跡をスナイプ(狙い撃ち)する定跡を生成したり、人間が、自分の対戦相手の棋譜を与えて、その棋譜まわりを重点的に掘って研究に用いたりすることが出来るようになった。完全に自力で採掘してs-book_blackに勝つしかし、そのようなことをしなくとも、すなわち、外部棋譜を一切与えずに完全に自力での採掘のみでs-book_blackに勝てはしないのだろうか?それが今回の目標である。定跡を掘り始めて1週間ほど経ったのだが、いまだs-book_blackに勝てたかどうかはよくわかっていないのでこれについては後日別の検証記事を書く。いずれにせよ、s-book_blackは非常に優秀で、簡単には勝たせてもらえそうにない。この精度まで定跡を高めてもなかなか勝たせてもらえないのだから、2年前のテラショック定跡では到底歯が立たなかったのも道理である。定跡を掘り始めて1週間。現在のスーパーテラショック定跡の内容を確認したところ、先手の76歩に対する後手34歩が大悪手だと主張している。スーパーテラショック定跡という新しい定跡生成の手法を開発して、いまそれで定跡を掘ってるんだけど、この定跡、先手の76歩に対して後手の34歩に大悪手(-243)の烙印を押し始めた。お、、おい!マジで言っているのか?横歩取りも相掛かりも後手悪いから避けよと。詳しくは明日ブログ記事を書く。上のツイート、「横歩取りも相掛かりも」と書いているが、「横歩取り、一手損角換わり、振り飛車」の間違いです。後手34歩には26歩と突いて、横歩取りか一手損角換わりかまあ何かそんな変化になるのだろうが、それが駄目だと言っている。定跡を掘っている最中なのでそれが本当に駄目なのかは私にはよくわからない。PALの開発者の山口さんのツイートを紹介する。山口さんは、NHK将棋トーナメントで導入されている検討用の将棋ソフトの開発者でもある。(そして、将棋ソフトの大会に参加している開発者のなかでは現時点で一番高い将棋の棋力をお持ちのはず...)☗7六歩☖3四歩☗2六歩で(角道を止めない限り)横歩取りが先手の権利なので、近年はプロでも居飛車党であれば避けると聞きます。感覚的には違和感ないような。2021相居飛車の序盤は3手で分岐して、4つの主要な戦型になります。(手順前後はありますが)その上で評価値からmin-maxを取ると赤矢印、つまり相掛かりが最善になるのかなと思います。20212手目34歩のあとの先手勝率は60%だそうで(これは説明のための仮の数字?)、将棋ソフトの序盤戦術はこの2手目の34歩を咎めるところまで来ているというのは確かなようである。そのような定跡を外部の棋譜を用いずに自力で発見したというスーパーテラショック定跡生成手法はかなり優秀なのではないかと思う。Learning型の将棋ソフトを用いて(検討モードで使用して)プロ棋士が序盤を研究する場合、駒を動かして局面を行ったり来たりしながら時間を掛ければ上と同じ結論に到達すると思う。Learning系の将棋ソフトを導入したプロ棋士が、遅かれ早かれ上の結論に到達するのは自然である。スーパーテラショック定跡生成手法は、人間がやるべき序盤研究のための検討の操作を自動化したものだと考えることもできる。検討モードで駒を動かさずして、その局面の結論(長時間かけて思考させた結果)が一瞬で表示されるという意味で、人間の序盤学習用途として優れているのではないだろうか。(詳しい説明は、やねうら王のGitHubのdocs/解説.txtに書いてある。)このコマンド、現時点で使えるようにしてあるので、試してみたい人は自力で定跡を掘って遊んでみるのも良いだろう。(まだ改良中のコマンドなので仕様が変わっても泣かないように。)私はこのあと半年ほど定跡を掘ってみる予定である。定跡ファイルはおそらく10GB程度になると思われるので一般公開はしないつもりだが、パッケージ版『将棋神やねうら王2』のおまけとして購入してくれた人がダウンロードできるようにはするつもりではある。追記dlshogiの山岡さんがfloodgateの序盤3手とその勝率について統計を調べたそうです。その結果、出現頻度と勝率は一致していないことがわかったとのこと。勝率が高くない指し手を定跡として選んでしまっているということなのだろうか...。これは将棋ソフトの序盤にはまだ課題があることを示唆しているのかもしれない。なんだって~!それにしても名前がナウくない。:スーパーロボット大戦の世代なので、スーパーとついていれば何でもナウくてヤングだと思っている世代でございます。:レーティング断トツ1位の藤井聡太が先手番横歩取りと後手番角換わり腰掛け銀の勝率が1番悪いのだから人間レベルには関係ない差ですね。どちらも誘導しやすくてはめ易いという意味では人間的にはかなり優秀でしょうね。:YaneuraOu7.0.0になってからBookOnTheFlyをTrueにすると、sort済みの定跡ファイルを使用しているにもかかわらず、ヒットしたりしなかったりと、おかしな挙動になりました。BookIgnoreRateは0になっています。BookOnTheFlyをFalseにすると正常に定跡ヒットします。:アップデートでBookOnTheFlyの定跡ヒットするようになったみたいです。たぬきさんのプルリクがこんないいタイミングで来てたとは。:Bontaさんも、Discordに参加しませんか?私にメールいただければと...。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。