根岸の部屋

管理人の備忘録がてらに将棋について書き殴ってます。棋力は絶賛伸び悩み中\(^0^)/

【コンピュータ将棋】やねうら王の使い方について

※7/24追記:後で気づいたが、以下とほとんど同じ内容が本家様の記事↓にそっくりそのまま解説されていたようである。筆者はそれに全く気づかないままこれを執筆した。そのため、驚くほど共通項が多い内容となってしまっている・・・。反省します。

やねうら王 セットアップ質問スレッド | やねうら王 公式サイト


 

 

 今回は現在の将棋ソフトの探索部として最もスタンダードな存在となっている、やねうら王を利用するときの注意事項について書こうと思う。これを用いるのがいまのコンピュータ将棋の主流なのだが、その細かい使用方法にはあまり知られていない点が結構あるのが気になる。知らないまま使っていたというユーザーは少なくないと思うので、以下にやねうら王特有の要点をまとめてみる。

 

①バージョンアップの更新

 やねうら王の探索部は、最近(ここ数ヶ月)かなり頻繁にバージョンアップされている。WCSC27でelmoらが探索部としてマージしていたやねうら王のバージョンが4.41だが、今(執筆時=7/22)の最新版は既に4.74となっている。新しい版のほうが新機能が追加されていたりするなどお得な点が多いので、もししばらく前のやねうら王のままになっているという方は以下のURLからダウンロードし導入することをおすすめする。また、たまに更新されているかどうか確かめておくと良い。

https://github.com/yaneurao/YaneuraOu/releases

 

②検討用PV出力の設定

 検討モードを使ってソフトの候補手や読み筋を調べるという使い方をする人は多い。ただし、やねうら王で検討させると一つ困った現象が発生することがある。時々読み筋が一手しか表示されなくなるのだ。ある程度深く読ませるとこの状態に陥りやすく、候補手の先の展開を知りたいときに少々困ることとなる。そのため、一時期は「探索部の性能はやねうら王が魔女(SILENT_MAJORITY)よりも上だが、検討用としては魔女の方が都合が良い」という見解が多かった。

 ただし、その後やねうら王が改良され、ConsiderationMode(検討モード)という機能が追加された。検討や解析の際に、設定からこれにチェックを入れる(Trueにする)と上のようなPV出力の問題が改善される。対局時にこれを入れるのは好ましくない(はず)なので、同じソフトでも対局用と検討用のエンジンを2種類以上同時に登録しておくのもよいかもしれない。

③設定項目の日本語化

 「YaneuraOu-2017-early.exe」といったやねうら王の実行ファイルと同じ場所に、同封の「YaneuraOu-2017-early_ja.txt」というテキストファイルを置いておくと、将棋所でこれの設定画面を開いたときに設定項目が日本語で表示されるようになり分かりやすくなる。

④エンジン名の偽装

 いまの将棋ソフトはやねうら王の探索部にelmo、Qhapaqなどの評価関数をのせるという形態を取っている。このソフトを登録するとき、GUI側のエンジン名にはYaneuraOuなどと探索部の名称が表示される。当然elmoなどとは表示されない。これに違和感を覚えるとか、elmoなどと表示させたいという方は、一手間を加えればそれが可能である。

 やねうら王の実行ファイルと同じ場所に、「engine_name.txt」というテキストファイルを置く。そのテキストの1行目に変更したい名前を入力する。この状態でエンジン登録するとその名前をGUI側にエンジン名として偽装させることが出来る。ちなみにテキストの2行目に入力した内容はソフトの作者として認識される。

 ShogiGUIの場合、もっと簡単な方法がある。エンジン設定画面を開くと、上の方に「エンジン名」という項目がでてくるので、そこに任意の名前を入力すると変更できる。

⑤NetworkDelayを0にする

 やねうら王にはNetworkDelayとNetworkDelay2という通信遅延対策用の設定がある。遅延を見越して指定の持ち時間より少し早く指させる機能なのだが、ローカルでCOMvsCOM(COMvs人)の対局を行なう場合この設定が邪魔となる。floodgateへの放流をする人以外はこの二つは0にしておくべきだろう。

⑥EvalShareを切る

 少し古いやねうら王だとこの値がデフォルトでTrueになっている。評価関数が勝手に共有されてしまうため、異なる評価関数同士で自己対局させる場合これのせいで致命的な結果を招くことになる恐れがある。Falseにするか、①のように最新のやねうら王を導入すると良い(最新版だとこれがデフォルトで切ってある)。

⑦ComtemptFromBlack(引き分け時スコアを先手から見た値とみなす)

 「Comtempt」(引き分け時スコア)は千日手等になったときの評価値。例えばこれを100とすると引き分けになる手や手順の評価値を100と判定する。これに相当する機能は他のソフトにもあるが、ほとんどのソフトは自分の先後に関わらず自分側からみた評価値としか判定しない。つまり先手だからこの局面では千日手では不満だとか、後手番だから十分だとかいう判断をしないし、させられない。コンピュータ将棋の舞台では引き分けは0.5勝0.5敗扱いされることが多いのでこのような判断でも支障は少ないのだが、人間のプレーヤー的にはそういうわけにもいかない。

 そこで「ComtemptFromBlack」という機能がある。これを入れるとComtemptの値を先手側からみた評価値とみさせることができる。ComtemptFromBlackをいれたうえでComtemptを-70ぐらい(初形の後手番からみた評価値)にすれば人間的な感覚に近くなるような気がする。

⑧EvalDir(評価関数格納フォルダ)

 EvalDirとは使用する評価関数のパス(位置)を指定するものである。デフォルトでevalとなっており、実際実行ファイルと同じ場所にevalフォルダを置きそのなかに評価関数を入れるというファイルの配置をとっている人が多そうだ。

 evalという名前だとわかりにくいし複数のソフトを導入するとフォルダ構造が煩雑になる、とみるならば、例えば実行ファイルと同じ場所で、\elmoというフォルダにelmo評価関数を置き、\reimoにrelmoを置き、\mafuにmafu評価関数を・・・という構造をとることは考えられる。その場合、同じやねうら王の実行ファイルを複数エンジン登録してそのそれぞれの設定をEvalDir = elmo などにいじることになる。

 やねうら王に限らずApery系ややねうら系全般に使える技である。将棋所だと同じ実行ファイルは一つしか登録できないので結局複数のエンジンをおくことになるが。

⑨ResignValue(投了スコア)

 ResignValueは、評価値が指定した値×(-1)を下回ると自動的に投了させることが出来る機能。デフォルトは99999とかになっているので詰まさない限り投了しない。これを使うと、例えば課題局面からソフト同士で連続対局で指し継がせて評価値が閾値を超えたら投げさせる、ということができる。詰みまでやらせるより早く終わるし、総手数が閾値を超えたら引き分けにするのと比べても勝敗という明確な対局結果が出るぶんデータの処理がしやすく好都合となる。

 なお、同様の機能は技巧2などにも備わっている。