100テラショック定跡公開しました。
■ ダウンロード
https://github.com/yaneurao/YaneuraOu/releases/tag/BOOK-100T-Shock
■ これは何?
100T(100テラ = 100兆)局面を調べて作成したやねうら王用の定跡です。
その昔、ネオジオというゲーム機で「100メガショック」というCMがあったのですが、それにちなんでいます。
■ 使い方
bookフォルダに添付のuser_book1.dbをコピーして、やねうら王のエンジン設定で以下のように設定してください。
BookFile : user_book1.db // この定跡のDBファイルを選択します。
BookDepthLimit : 0 // この定跡では、depthを特別な意味に用いており、depthとして0のものが含まれるため。
BookMoves : 256 // この定跡に中盤の指し手も含まれるため
BookEvalDiff : 0 // 最善手のみを採用するなら0に。ソフトが指す定跡に幅を持たせたいなら、10〜50ぐらいの大きめの値に。
■ 定跡の見方
深さ : その指し手を指して、そのあと最善手で局面を進め続けたときに何手後に定跡が尽きるかという数値が入ります。たとえば、ここが0なら、その指し手で局面を進めた場合、次の局面では定跡にはhitしません。
評価値 : その指し手を指して、そのあと最善手で局面を進め続けたときの末尾の局面で深く探索したときの評価値がその指し手の評価値となります。この点が普通の定跡とは異なります。ずっと先の局面の評価値を先取りしている形となります。定跡を掘り進めていくとこの値はゲーム木を初期局面のほうにさかのぼりながら更新されます。
■ この定跡を用いる効果
かなり深くまで探索したときの評価値がそれぞれの局面で記録されているので(depth 36相当以上)、序盤のある局面について検討するときの計算時間を端折れます。
NNUE評価関数で序盤に特化していくと定跡ファイルを用いないときの棋力(レーティング)は上昇していきますが、実際は中・終盤力は向上していません。(序盤の棋力と中終盤の棋力はトレードオフの関係にあるのでむしろ下がっている) この定跡ファイルを用いることで中終盤に強いNNUE評価関数ファイル(例:『将棋神やねうら王』に収録されているtanuki-2018年度版など)でも序盤特化型の評価関数と互角以上に渡り合えます。
■ 定跡生成のための計算資源
100T(100兆)局面調べるには、教師局面をdepth 8で500億局面生成する程度の計算コストを要します。AWSでc5.18large 3ヶ月分程度(スポットインスタンスで借りるとして50万円程度)を要します。最終的には、10P(1京)局面ぐらい掘り進めようと思っています。
■ カンパ募集中
WCSC29までに1P(1ペタ = 1000兆)局面ぐらいまで調べようと思っていますが、これ以上掘り進めるのは個人の計算資源では限度があります。
趣旨に賛同していただける方のカンパをお待ちしております。m(_ _)m
カンパ → yaneurao@gmail.com までご連絡を。
■ Q & A
Q) 初期局面でdepth 24と表示されている候補手は、何手先まで調べた評価値なのでしょうか?
A) depth 24なので最善応手列(≒読み筋)は24手先まであって、その局面でdepth 36以上相当で探索させてあるので、つまりは最長で24 + 36 = 60手先まで見ているという意味になります。(無論、枝刈りがあるので、60手先までのすべての変化を調べているという意味ではありません。)
■ 関連記事
定跡生成ルーチン変わったんですね。(少なくともdepthの意味が)
30行ほど新規にコードを書いただけです。
アルゴリズムについて詳しくはそのうち記事にします。
悪い候補手を人間が目で見て削除する必要がないという点(メンテナンスフリー)や、良い変化の教えやすさ(良い変化の棋譜を与えるだけでおk)などにおいて、shotgun方式より優れているのではないかと思っています。
完全自動化できてないのが悔しいところですが,計算機が足りないので俺がやった方が早いって証拠でもあります(笑)
おお、なるほど…
まあ、人為的にコントロールできるほうが勝率を目で見ながら修正できて良い場合はありますね…。
末尾の局面からランダムにいくつか盤面を紹介してほしい
自己対局で出現した局面とかプロの棋譜に出現した局面とかを用いています。
面白い試みありがとうございます。
どういうツリーになっているかを眺めることができるファイルを作っていたのですが、角換わりっぽいものが強いのかと思いきや、横歩取りも結構いいところにいるようにも見えて、とても興味深いです
ツリー→
https://github.com/tokoharu/100T_book_readable/blob/master/normal_tree/tree_normal_30.txt
すでにブログのほうを拝見しておりました。素晴らしいですね(`・ω・´)b
もう少し定跡掘り進めてからまた公開します。
こんばんは。
この時期の公開には正直なところ大変驚きました。毎度のことながら、頭が下がる思いです。早速、試しております。
とりあえずBookEvalDiffを10にして様子を見ていますが、10だと私(アマ二~三段程度)視点で明らかに違和感のある手を選択することは殆どなさそうです。
さて、一点お尋ねしたいことがあります。差し支えなければ、この定跡を用いる場合の挙動に、エンジン設定の項目「NarrowBook」の値(ON / OFF)がどう影響するのか、教えていただければ幸いです。
よろしくお願い致します。
NarrowBookは出現頻度の高い指し手だけを採用するオプションですが、本定跡DBには出現頻度のところはすべて「1」になっているので等確率で出現しているという扱いになっておりまして、NarrowBookと併用しても意味のある効果はありません。NarrowBookオフでの運用をお願いします。
わかりました。ご回答ありがとうございます!
カンパっていくら位から受け付けているんだろう
ソフトにお世話になっているので 少しぐらいなら・・・
ありがとうございます。小額であれば、このサイトのメニューの「Amazonウィッシュリスト」のところから私のamazonのウィッシュリストに行けますので、それをお願いできればと…。(`・ω・´)b
100T-Shock使わせていただいています。
やねうら王と水匠のセットに載せて使っています。
なるべく多くの棋譜をなぞっていろいろな序盤の局面を検討しているのですが、定跡含むところ含まないところも行ったり来たりするので所々で水匠の思考が絡みPCが重くなってしまう点が悩みです。。
評価関数の評価はどうでもよく、テラショック定跡の評価が気になるのでnodeとdepthを1にしているのですが、水匠に全く思考させない手は何かないでしょうか?
全く思考させない方法はないですなー。NodesLimit 1にしとくぐらい?