※21/9/26 Lv30の内容が間違っていたのを修正。
結論に影響はないですが、(Lv,depth)=(30,30)については正しく計算できることになります
修正した部分は緑色にしておきます

■1章 導入

こんにちは。
edaxに自作bookを計算させている人も多いのではないでしょうか。
その時の悩みとして、
Lv(bookの手を読む際のEdaxのレベル)
depth(何手目まで記憶させるか)
を自分で決めないといけないというものがあります。
複数の人から聞いたことがあるのは、
「Lvとdepthの合計が60(オセロの最大手数)になるようにするといい」です。
これは本当なのでしょうか??今回はこれについて考えてみようと思います。

スクリーンショット (120)
▲Edaxでbookを構築している様子

議論が長くなるので先に結論を書きます。
合計が60だといいというのは必ずしも正しくないです。
が、最適解のうちの一つにLv=24、depth=36 というものがあり、
この場合は「偶然」合計が60になっています。
合計が60でも、例えばLv=31、depth=29だと精度が落ちてしまいます。
bookを新しく作る人向けのオススメは
①Lv=24、depth=36(普段EdaxのLv24以下で研究している人向け、最も万人向け)
②Lv=30、depth=30~33(bookのサイズを抑えられるメリットがある。
巨大なbookを作りたい人/高性能PCがある人/普段Lv25以上で研究している人向け)
です。
ちなみに、edaxのデフォルトはLv21&depth36ですがこれは悪くない選択です。
デフォルトのまま構築を始めた人はLv24に変えて一から作り直す必要は薄いです。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

■2章 正確なbookに求められる要件
さて、なぜこうなるか考えてみましょう。
図はキロキティア様からの引用(一部改変)で、edaxのレベルごとの読みの内容を示しています。
※21/9/26 Lv30の内容が間違っていたのを修正
level_03

bookについて考えるうえで重要なのは、何手目から完全読み(必ず評価値が正しい読み)になるかです。
完全読み=読みが最終手まで(図の白矢印の範囲) かつ selectivity=100% (図の水色の範囲)です。
※selectivityについての解説はしません。知らない人はキロキティアさんを見てください。
図より、
Lv11~18: 39手目以降は完全読み
Lv19~24: 36手目以降は完全読み
Lv25~29: 33手目以降は完全読み
Lv30~36: 30手目以降は完全読み
です。
「正確」なbookに求められる要件は、
「bookのdepthの上限に達したleafでの読みは完全読みでないといけない」です。
上の結果を使い言い換えると、
depth=39なら Lv11以上が必要
depth=36なら Lv19以上が必要
depth=33なら Lv25以上が必要
depth=30なら Lv30以上が必要
です。
さて、この要件を満たさない場合どうなるかを考えてみましょう。
例えば、depth=29、Lv31を考えます。
この場合、bookの深さの上限(29手目)での読みは
深さ31手(最終手まで)、selectivity=98%なので完全読みではありません
完全読みではない場合、(低確率で)評価値が狂うため、bookの評価値が狂います。
※例えば、引き分けの進行が白+2と表示されるなど
bookが間違うこと自体はよくあることなのですが、
この場合、既に深さの上限に達しているためさらに学習させることができず
間違った評価値を直すことができません。
いくら学習させても評価値が直らないのは嫌ですよね。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■3章 2章の要件を満たす中でどのLvが最適?
ここでは仮にdepth=36の場合で考えてみましょう。
この場合に求められるLvは19以上です。
bookの精度的には当然Lvが高いほどいいのですが、
ここで効いてくるのはbookの精度と計算時間のトレードオフです。
同じ数のleafを評価するのにかかる計算時間は、Lvが
18<<<<<19<20<21<<22<23<24<<<<<25<26
となります。
理由なんですが、みなさんedaxを使っているときに
終盤の入り口だけやけに評価に時間がかかる経験はありませんか?
大体あると思いますが、これはソフト(droidShimax、iEdax、うえのんEDAXなど)の不具合ではなく
edax自体の仕様です。
※人間同様ソフトも終盤の入り口以降がミスりやすいのでそこに時間をかけるのは合理的ですよね。
完全読み(水色&白矢印エリア)は本当に全ての盤面(αβ法でカットできるものは除く)を評価しているため非常に時間がかかります。図を見ると、完全読みエリアの範囲が
18と19、24と25では大きく変わることがわかります。
なので、ここを境界として計算量が爆増します
正直、Lv19以上なら十分正確なので、計算量が増えるより前の
Lv19~24の範囲がいいと思います

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■4章 depth=36の場合、結局Lv19~24のどれがいいのか
自分は、3章までの内容は何年も前から何となく気づいていたのですが、
4章の内容について1週間くらい前まで誤解していました。
具体的に、自分はLv19が最適だと思っていたのですが、実はLv24のほうがいいというのが結論です。
これがこの記事を執筆するに至った動機です。
まず、Lv19が最適だと思った理由ですが、
これは簡単でLv19以上の要件を満たす中で、最も(単位leaf当たりの)計算時間が短いからです。
確かにこれは正しいです、が、
「単位leaf当たりの計算時間が短い」≠「同じ時間でより正確なbookを構築できる」
なんですね。例によって何言ってるか分からんと思うので解説します。
Lv19の場合、中盤の精度が悪いために、無駄な進行を計算してしまうんです
具体的にはコンポス白+2や蛇0、飛び出し黒+2などになって直りにくい。
(もちろん、完全読み条件を満たしているのでいつかは直るが時間がかかる)
これは、うえのんEDAXに添付する用のbookをLv19で構築した際に気づいたことです。
(ちなみに、ver 0.10aに添付しているbookはLv19なので、今Lv24で作り直してます。。。)
いくら単位leaf当たりの計算時間が短くても、無駄な進行が多いとbook全体の精度は上がりません。
実際、Lv24に変えたところ学習してすぐに正しい評価値になることが多くなりました。

さらにもう一つ、計算時間19<20<21<<22<23<24と書きましたが、Lv19と24では
そこまで(単位leaf当たりの)計算時間には差がないことです。
体感的にですが2倍は変わらない?(要検証)
何せ、圧倒的に時間のかかる完全読み部分は19~24で同じですからね。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■5章 depthをいくつにする?
先ほどまでの議論で、
depth39:Lv18 (←18じゃ足りない気がするので24でもいいかもだけど・・・)
depth36:Lv24
depth33:Lv29
depth30:Lv36 (←重すぎて試したことないがLv31でも十分な精度の可能性はある)
※depth36以外も同様に考えると同じ結論が得られる
がいいとわかりました。この中でどれを選ぶかっていう話です。
・depthが大きすぎる(39)ときのデメリット
これは単純で、bookのサイズが大きくなります。
サイズが大きくなると、アプリのbook読み込みに時間がかかるようになり利便性が下がります。
自分が普段使っているbookはLv24/depth36で211MBほどのものですが、
例えばedaxGUIに読み込ませると4秒ほどかかりました。
(うえのんEDAXは特別な処理をしてるので一瞬)
もしdepthが39だとサイズは数倍になるはずなので読み込み時間は数倍になるでしょう。
起動するたび10秒も待たされると面倒ですね。
・depthが小さすぎるすぎる(30)ときのデメリット
この問題は、bookを実際に利用するときのedaxのレベルに依存します。
depth=30だと、31手目にはすでにbook切れすることになりますが、
検討に使っているedaxのレベルが29以下の場合は、完全読みになりません。
そのため、検討の精度が落ちます。
普通の人は、検討にLv20くらいを使ってるでしょうから、depthは36以上がいいことになります。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■6章 結論:再掲
始めの方に書きましたが、もう一度結論を書くと最適なedaxのレベルは

①Lv=24、depth=36(普段EdaxのLv24以下で研究している人向け、最も万人向け、オススメ)
②Lv=30、depth=30~33
(bookのサイズを抑えられるメリットがある。巨大なbookを作りたい人/高性能PCがある人/
使用する端末のメモリが貧弱(スマホなど)な場合/普段Lv25以上で研究している人向け)
です。

②を見るとわかるように、合計が60になるといいというのは迷信です
長文読んでくださりありがとうございました。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
■7章 (追記)既存bookの修正方法
twitterで貴重な情報いただきました!感謝!
仮に、Lv=31、depth=29で作ってしまったbookがあるとしてdepth=33に直す方法です。
まず、前提として「Lvを変更することは無理」です。depthを動かしましょう。
※Lv18以下で作った人は初めから作り直したほうがいいかも・・・
方法は、
①book depth 33
depthを33に設定
②play (まだbookに登録されてない進行)⇒book store
これを挟まないと、bookの内容が変更なしとみなされてしまいbookが上書き保存されません。罠。
③exit
これで終了しないと書き込まれないです。
必要に応じて、
④book deviate 0 0
で足りない分のbook(この場合は30~33手目)を追加してください。
④は長い時間がかかることがあります。
(特に、もともとのbookでbook deviate 0 0が通っていない場合はその計算もまとめて行われるので
なおさら時間がかかる。)
ちなみに、depthの確認方法は book infoです。
②を挟まずにexitしてしまうと再起動時にbook infoが29に戻ってしまうのがわかるでしょう。