このページでは、思考エンジンのオプションの内容について初心者向けに分かりやすくご紹介します。
思考エンジンオプションとは
思考エンジンのインストール方法で新しい思考エンジンはインストールできましたか。思考エンジンはオプションを適切に設定すればより思い通りに動かすことができます。
しかし、思考エンジンオプション画面は英語ばかりでよく分からないと思います。また、どのように設定するかは好みもあります。そこで、ここでは思考エンジン「やねうら王 4.83 NNUE + tanuki- WCSC28 (SkillLevel、OwnBook対応版)」のオプションを中心に、設定項目の意味を分かりやすく説明していきます。
おすすめの設定
基本的には、初期値が思考エンジン開発者のおすすめ設定です。しかし、初期値はパソコン向けに最適化されているため、以下の3項目をShogiDroid向けに変更する必要があります。
- Threadsを1に変更
- NetworkDelay2を0に変更(NetworkDelayではなくNetworkDelay2です。間違いやすいので注意)
- MinimumThinkingTimeを1000に変更
以下では、設定項目を一つずつ見ていきます。
一般設定
Threads
- 最初は1に変更することをおすすめします
スレッド数です。実は、CPU(スマホの脳に当たる部分)はいくつかのコアに分かれています。例えばコア数が8ならば、8つの脳を持っているということです。スレッド数を3にした場合、3つの脳が分担して別々の局面を読みます(残りの5つの脳は休憩しています)。したがって、基本的にはお使いのスマホのCPUのコア数とスレッド数を同じ値にするのが、最も強くなります。なお、CPUのコア数は機種ごとに異なるので、自分で調べるかスマホの販売元に聞いてください。ちなみに、スレッド数を1から4に変更にするとイロレーティングは200程度上昇します。
しかし、スレッド数が多いと、CPUの中に休憩できる部分がなくフル回転することになるため、スマホの場合には、機種によって本体が熱くなりすぎることがあります。スマホが熱くなるとバッテリーなどの部品が傷んでしまうため、スマホの安全のためにまずは小さめの値にして様子を見ることをおすすめします。スマホの温度を確認して、まだ余裕がありそうならば少しずつスレッド数を増やしていきましょう。
MultiPV
- 変更しないでください
候補手の数です。例えばこの値を2にすると、最善手だけでなく次善手が何かも調べます。
しかし、ShogiDroidでは、ヒント・検討時には、エンジンオプションではなくShogiDroidの設定メニューで設定した候補手の数が反映されます。したがって、エンジンオプションで設定した候補手の数は対局時にしか反映されません。対局時に候補手を複数調べるのは、思考エンジンが弱くなるだけで一切メリットがないので、初期値から変更しないでください。
USI_SkillLevel
- 変更しないでください
コンピューターの強さです。この値を変更するとコンピューターが手加減してくれます。
しかし、ShogiDroidでは、対局時には、エンジンオプションではなくShogiDroidの設定メニューで設定した強さが反映されます。したがって、エンジンオプションで設定した強さはヒント・検討時にしか反映されません。ヒント・検討で手加減をする意味は一切ないので、初期値から変更しないでください。
WriteDebugLog
- 変更しないでください
Trueにするとデバッグログを出力できます。開発者以外の方はログを見ても何も分からないと思われるので、Falseから変更する必要はありません。
思考時間に関する設定
NetworkDelay
- 機種に合わせて変更すると良いですが初期値のままでも構いません
平均遅延時間(ミリ秒)です。実は、思考エンジンとShogiDroidは、スマホの内部では別々に動作しています。したがって、思考エンジンが指し手を決めてからShogiDroidにそれが反映されるまでの間には、わずかなタイムラグがあります。これが遅延時間です。仮に遅延時間を考慮しないで持ち時間ありの対局をすると、思考エンジンが知らない間に持ち時間が減ってしまうため、時間配分が下手になってしまいます。遅延時間はスマホの機種によって異なるので、普段どのくらいの遅延があるのかをあらかじめ思考エンジンに教えておくために、この設定項目があります。
スマホの機種に応じて遅延時間を適切に設定すると、持ち時間のある対局での棋力が上がります。とはいえ、適正値を調べるのも難しいですし、ヒント・検討時や持ち時間なしの対局時(秒読みのみ)には持ち時間の使い方は無関係なので、初期値のままで構いません。
NetworkDelay2
- 必ず0に変更してください
最大遅延時間(ミリ秒)です。NetworkDelayは、持ち時間の使い方を補正するための設定でしたが、こちらは切れ負けを防止するための設定です。遅延時間にはばらつきがあるので、時間切れ寸前に思考エンジンが指し手を決めると、稀に制限時間をオーバーしてしまう危険があります。そこで、念のために、遅延時間の最大値を見積もって制限時間よりも早めに指すオプションがNetworkDelay2です。
しかし、ShogiDroidには切れ負けはないので、最大遅延時間を考慮する必要はありません。また、初期値は1秒(1000)よりも長めに設定されているため、初期値のまま秒読み1秒で対戦すると動作がおかしくなります。したがって、必ず0に設定しましょう。
MinimumThinkingTime
- 必ず1000に変更してください
最小思考時間(ミリ秒)です。時間切れのときを除いて、最小でもこの時間だけ思考します。コンピューター将棋の大会では、0秒~2秒は全て1秒として持ち時間をカウントするという特別ルールがあるため、どうせ同じカウントになるのに0秒や1秒で指してしまうのは損です。そこで、初期値では2秒(2000)が最小思考時間に設定されています。
しかし、ShogiDroidにはこのような特別ルールはありません。したがって、必ず最小値の1秒(1000)に変更しましょう。
SlowMover
- 好みで変更しても構いません
序盤で使う持ち時間の長さ(%)を設定できます。標準は100%です。例えば、50%にすれば、普段の半分の時間で序盤を指すようになります。序盤と終盤とどちらを重視してほしいかによって変えるといいでしょう。
将棋のルール・思考方法に関する設定
MaxMovesToDraw
- 変更しないでください
この値を0以外に設定すると、設定した手数を経過した時点で引き分けになります。コンピューター将棋の大会でよく採用されているルールです。
しかし、ShogiDroidの対局ではこのオプションに対応していません(検討モードでは対応しています)。変更すると対局時にコンピューターの思考がおかしくなるため、0のままにすることをおすすめします。
DepthLimit
- 好みで変更しても構いません
0以外に設定すると、読む深さが制限されます。深さとは、要するに何手先まで読むかということです。例えば、この値を8に設定すると8手先までしか読まなくなります。普段は時間制限などでコンピューターの思考を制限すると思いますので、この値は0(無制限)のままで構いません。
NodesLimit
- 好みで変更しても構いません
0以外に設定すると、読むノード数が制限されます。ノード数とは、要するに読む局面数のことです。普段は時間制限などでコンピューターの思考を制限すると思いますので、この値は0(無制限)のままで構いません。
Contempt
- 好みで変更しても構いません
引き分け(千日手)をどの程度マイナスに評価するかを設定します。例えば、この値が100の場合は、引き分けは評価値100不利な局面と同等と考えます。その結果、評価値50不利な手と引き分けの手が候補手ならば評価値50不利な手を選びますが、評価値150不利な手と引き分けの手が候補手ならば引き分けの手を選ぶようになります。引き分けになるのが嫌な場合には、この値を大きくするといいでしょう。なお、プラスとマイナスを間違えやすいので注意してください。
ContemptFromBlack
- 好みで変更しても構いません
このオプションをオンにすると、後手番のときだけ先手番のときとContemptの値が逆になります。例えば、Contemptが100でContemptFromBlackがオンの場合は、後手は引き分けを評価値100有利な局面と同等と考えます。つまり、互角な変化と引き分けになる変化がある局面では、先手は引き分けを狙わず互角な変化を目指しますが、後手は引き分けを狙うようになります。
EnteringKingRule
- 好みで変更しても構いません
入玉ルールです。敵陣に玉が到達した場合(入玉)の勝敗の決め方には、様々なローカルルールがあります。プロ公式戦では24点法、アマ公式戦では27点法が使われることが多く、これらの点数計算法の欠点を改善したルールとして一部のプロ棋士が推奨してオンライン将棋対局場などで使われているのがトライルールです。NoEnteringKingにすると、入玉ルールは適用されず、入玉しても(投了・詰み・千日手の成立まで)対局が続くようになります。CSARule24(24点法)やCSARule27(27点法)では、一方が点数計算(大駒5点小駒1点で計算)で規定の点数に満たない場合、他方が入玉すればその時点で勝ちとなり、両者が規定の点数を満たしている場合には持将棋で引き分けとなります。TryRule(トライルール)にすると、一方が相手玉の初期位置(先手は5一、後手は5九)に到達すると勝ちになります。
なお、現在のShogiDroidでは対局時には27点法以外に対応していません(検討時には対応しています)。ご自身がよく利用している対局場や大会でどのローカルルールが採用されているかを確認して、そのルールに合わせて設定するといいでしょう。
評価関数に関する設定
EvalDir
- 変更しないでください
評価関数のフォルダーを指定します。自分で評価関数をダウンロードして追加するような場合を除いて変更しないでください。
SkipLoadingEval
- 変更しないでください
評価関数の読み込みをスキップする設定です。開発者以外の方は使用しないでください。
定跡ファイルに関する設定
OwnBook
- 変更しないでください
定跡ファイルを使用するかどうかを選択するオプションです。
しかし、ShogiDroidでは、対局時もヒント・検討時もエンジンオプションではなくShogiDroidの設定メニューで設定した定跡使用有無が反映されます。したがって、このオプションを変更する意味はないので、初期値から変更しないでください。
NarrowBook
- 好みで変更しても構いません
このオプションをオンにすると、登録されている定跡のうち、出現頻度が高い定跡だけを使うようになります。したがって、コンピューターが同じ手ばかりを指してくるようになります。好みに応じて使いましょう。
BookMoves
- 好みで変更しても構いません
登録された定跡データを見ながら指す手数です。定跡をあまり使わないで欲しい場合は少なめにすればいいでしょう。
BookIgnoreRate
- 好みで変更しても構いません
定跡を無視する確率です。この値を上げると、たまに定跡を無視して思考エンジンが自分で考えて指すようになります。
BookFile
- 変更しないでください
どの定跡データを使うかを選択できます。no_bookは定跡を使いません。standard_book.dbは標準的定跡です。
ShogiDroidのやねうら王では、standard_book.db以外の定跡ファイルを搭載していません。自分で定跡ファイルを追加した場合以外変更しないでください。
BookDir
- 変更しないでください
定跡ファイルのフォルダーを指定します。自分で定跡ファイルをダウンロードして追加するような場合を除いて変更しないでください。
BookEvalDiff
- 好みで変更しても構いません
最善手以外の定跡をどの程度使用するかを指定するオプションです。例えば、この値が30の場合、最善手との差が評価値30以内の定跡手は最善手でなくても採用するようになります。このオプションを使う場合は、NarrowBookをオフにする必要があります。
BookEvalBlackLimit
- 好みで変更しても構いません
先手の場合にこの値よりも評価値が悪い定跡は採用しなくなります。このオプションを使う場合は、NarrowBookをオフにする必要があります。
BookEvalWhiteLimit
- 好みで変更しても構いません
後手の場合にこの値よりも評価値が悪い定跡は採用しなくなります。このオプションを使う場合は、NarrowBookをオフにする必要があります。
BookDepthLimit
- 好みで変更しても構いません
定跡の深さがこれを下回っている場合は、定跡を使わず思考エンジンが自分で考えます。例えば、16に設定した場合、16手以上先まで考慮して作られた定跡手だけを使用します。このオプションを使う場合は、NarrowBookをオフにする必要があります。
BookOnTheFly
- 好みで変更しても構いません
定跡ファイルをメモリーに読み込まないオプションです。通常は、対局開始時に定跡ファイルを全てメモリーに読み込んで指しますが、このオプションをオンにした場合は、1手ごとに定跡フォルダーのファイルから定跡手を確認するようになります。
ConsiderBookMoveCount
- 好みで変更しても構いません
定跡データに登録された「採択率」にしたがって定跡の採択率を決めるオプションです。
その他の設定
PvInterval
- 好みで変更しても構いません
ヒント・検討モードで指し手の表示を更新する間隔(ミリ秒)です。
ResignValue
- 好みで変更しても構いません
投了スコアです。ここで設定した値よりも評価値が不利になったら投了します。コンピューターが負ける寸前に意味のない王手を連発して負けを先延ばししてくるのが嫌な人は、この値を低めに設定しましょう。
nodestime
- 好みで変更しても構いません
時間をノード数で計算するオプションです。例えば、この値が5ならば、1秒を「5000個の局面を調べる時間」と解釈します。その結果、例えば一手1秒で指す場合には、時間とは無関係に毎回5000個の局面を調べて指すようになります。時間ではなく局面数を指定して対局したい場合に使います。
Param1
- 変更しないでください
内部で使用されるパラメーターです。開発者以外は変更しないでください。
Param2
- 変更しないでください
内部で使用されるパラメーターです。開発者以外は変更しないでください。
EvalSaveDir
- 変更しないでください
定跡を学習させて自分で作成する場合に使うフォルダーです。
しかし、ShogiDroidでは使えないので変更しないでください。
ConsiderationMode
- 好みで変更しても構いません
ヒント・検討モードの指し手の表示で中途半端な読み筋を表示しないようにするオプションです。例えば、まだ一手しか読んでいないけれども評価値500程度と予測される指し手Aと、数手先まで読んだところ評価値490だった指し手Bがあった場合、どちらをヒント・検討モードで表示すべきでしょうか。指し手Aのほうが最善手に近いですが、Aは一手しか読んでいないので人間が見ても参考にならない可能性があります。そこで、このような場合にConsiderationModeをオフにすればA、オンにすればBが表示されます。指し手が一手しか表示されないくらいならば、少し評価値が低くてもいいからちゃんと読んだ読み筋を出してほしいという場合は、オンにするといいでしょう。
OutputFailLHPV
- 好みで変更しても構いません
ヒント・検討モードで、評価値○○以上であることは分かっているけれど、正確な評価値は分からないというような指し手も表示するオプションです。
「上手くできた!」「上手くできない…」などの感想は以下のコメント欄からご自由にどうぞ。
- マジで分かりやすい。神 -- 2019-01-06 (日) 18:42:27
- 難しかったけどなんとか設定できた -- 2019-01-06 (日) 19:24:50
- 僕のスマホだとThreads数2でもあんまり発熱しなくていい感じです! -- 2019-01-06 (日) 19:25:52
- nodeslimit -1って何これPCだと150とかに設定できる。深さ3でやるか… -- 2022-02-14 (月) 15:42:57