読者です 読者をやめる 読者になる 読者になる

ライブラリとして公開しているQhapaqのソフト/ツール一覧

2017.1.22更新

以下のツールをライブラリとして公開します。

現状のQhapaqのツールは定跡や棋譜解析ソフトであり、定義上、ライブラリ登録をしなくても使えるはずなのですが、念の為ここに公開しておきます。

ライブラリ申請の状況などについても此方で公開します。

 

評価値、勝率解析ソフト「Qhashima」

https://github.com/qhapaq-49/Qhashima

 

量子焼きなましを用いた定跡生成ツール群「量子ガシャ、やねうら王Quaga」

https://1drv.ms/u/s!Ag5CrRBmeQHym19Ql_bDEC7fJB19

 

量子焼きなましを用いて作った定跡

https://1drv.ms/u/s!Ag5CrRBmeQHym1eN0ayk5kjCjBLA (戦型自由)

https://1drv.ms/u/s!Ag5CrRBmeQHym2NaMKyetTfVAaJX (四間飛車

https://1drv.ms/u/s!Ag5CrRBmeQHym1zqL3m1rtKNKQNv (一手損)

 

【WCSC27での利用について】

WCSC運営より以下のような回答をいただきました(以下は頂いた返信の抜粋です)。

大会を運営してくださってる方々に、この場を借りてお礼申し上げます。

 

---quote---

現在いただいているものは、ルール上
ライブラリ登録がなくとも使用可能ですが、一方で、ライブラリ規程では
ライブラリは「将棋の指し手生成に関わるプログラム」として、
「開発部」に限定していませんので、ライブラリとして受け付けます。

 CSAサイトでの公開にあたっては
「2017年1月15日時点の内容は、開発部を含まないため、
参加者は、本ライブラリを使用したことを明記する必要はありません」
として公開したいと思います。

---quote---

Stockfishベース探索の終盤力が弱いかもしれない件について

あけましておめでとうございます。電王よりリア充になりたいです。あとnatureに論文出したいです。WCSCでは新人賞と独創性をガチで狙いに行ってます。カステラの法則信者なので書いておきます。今年もよろしくおねがいします。

雑巾絞りによって評価関数学習が大分標準化された一方で、枝狩りの最適化は手法が未だに群雄割拠の状態です。silent majorityが大樹の枝に7割勝っていたような大進歩が未だに残されているかもしれません。最近はstockfish(チェスの強いソフト)を流用するのがブームのようですが、実はstockfish、将棋のそのまま流用すると、終盤が強くない可能性があるのです。

 

1.幾つかの実験結果

stockfishの終盤力に問題がある説の根拠は以下の4つの実験結果です。

 

一、やねうら王Mid vs 真やねうら王 in 0.2秒対局ではMidが勝率53%程度で勝ち越す(10000局程度)

二、やねうら王Mid vs 浮かむ瀬 in 0.2秒対局では浮かむ瀬が勝率55-60%程度で勝ち越す(定跡が異なるので厳密なデータにならない)

三、1秒対局になると真やねうら王と浮かむ瀬の強さはどっこいになるらしい

参考:uuunuuun氏のブログでの考察

四、終盤のfutility margin(≒読んだ深さや手の序列(高い駒を取られるような手は序列が下になる)に応じて枝狩りされやすさを調整する)はあまりやらないほうが強そう

参考:http://www.computer-shogi.org/wcsc26/appeal/Qhapaq/qhaq-2016-may2.pdf (Qhapaqの技術文書 from WCSC26)

 

2.この実験結果が意味することは何か

一、持ち時間によって最適なパラメタが変わる

実験 一、二、三の結果を比べると、最適な枝狩りパラメタは持ち時間によって変わりうることが示唆されています。どうやら、stockfishのパラメタをそのまま使うと、短い持ち時間に過度に最適化されやすい傾向にあるようです。

二、stockfishは枝を狩りすぎている?

真やねうら王の 2016-late-param_body.h を見ると、調整前後でLMR周り(とても雑に言えばfutilityの兄弟)の枝狩の頻度が減らされており、stockfishのデフォルト設定では枝を狩りすぎであることが示唆されています。これはQhapaqの実験四とも一貫性が取れています。

 

3.stockfishは終盤に枝を狩りすぎている(私の見解)

チェスと将棋の特に終盤での特に大きな違いはゲーム中に存在する駒の数です。将棋では大駒を切って敵陣に穴を開け、相手の守り駒を取りながら駒損を解消するといった攻めが成り立ちますが、チェスでは成り立ちにくいです。故に、大駒を切るような攻めは早期に枝狩りすることが良い方針となります。また、「駒の数が減っていれば引き分けだろう」という判断が概ね正しいため、枝を狩りまくっても形勢を読み誤る確率が将棋に比べ少ないと言えます。

大駒を切るような攻めは長い手順になりがちであるため、持ち時間が短く手順を読み切れないうちは読むだけ無駄な手とみなされてしまうため、枝狩りしたほうがいい(Midが0.2秒将棋では真やねより強い)のですが、手順を最後まで読みきれる持ち時間があるならその限りではないというわけです。

 

4.より強い探索ルーチンを作るためにやってみたいこと

最低限、局面進行度に合わせて枝狩りを変えるべきだと思います。長い手順の攻めを警戒する必要があるのは玉がピンチであるときであると考えれば、進行度はKKPあたりを使うのが良いでしょう。

加えて、枝狩りパラメタの最適化作業そのものを高速化することを考えたほうが良いと考えています。パラメタの持ち時間依存性がある以上、長い持ち時間で検証をするべきである一方、長い持ち時間での勝率ベースの最適化は物凄く計算コストがかかるからです。

量子ガシャは当初、枝狩りパラメタの最適化のために生み出した手法だったのですが、Blunderが昔やっていたような方法(各々の局面に対し、枝狩りを少なくして、深く読んだものを教師として枝狩りを最適化する)を検討するべきかもしれません。数十個のパラメタを最適化するのであれば、1000局面ぐらいあれば十分である見込みは高いですし。

 

# seleneの開発者がブログでponanzaの探索部の強さについて指摘していましたが、嘗てBlunderがやっていた研究が枝狩り最適化に活かされているのかもしれません。

 

おまけ.まふ氏もstockfishが終盤弱いと思っているらしい

河童定跡の最大のライバル(?)である、まふ定跡の作者のまふ氏もstockfishの終盤に疑問を感じていらっしゃるようです。原文はまふ定跡のreadmeをご参照ください。

/* ---引用---

私はStockfish系が致命的に将棋と合っていない箇所が終盤に向かうプロセスだと思います。
チェスは駒がどんどん減って行き、終盤は一定の駒数から完全解析されています。
ここまで行かなくとも、ある程度減った段階でほぼパターン化されエンドゲームとなっています。
floodgateで浮かむ瀬同士やSMの対局を見ると、一定の局面からはまったく同じ局面進行が続くことが多いです。
これはチェスが駒がどんどん減り、自分の勝ちパターンに近づけて行くプログラムだからだと思われます。
将棋はまったく逆で、終盤に行くほど持ち駒が増え局面が激化します。
上記が主な原因ですが、Stockfish系に定跡を搭載しても同じパターンで勝ち負けが偏るので、Stockfish系の同ソフト対局では上手くなったかどうか分かりにくいからです。

---引用---*/

 

/* ---引用---

■読み太githubの気になること.txtへの私なりの回答
 
>読み太にやねうら王の評価関数を乗せるとフリーソフト最強らしいのだが、floodgateに放流しても妙に弱い。
浮かむ瀬より強くなっているように見えたのは持ち時間1秒~3秒の短時間の将棋だけ……かも。調べていないのでわからない。 自己対戦の持ち時間は3秒で500~1000局やってきたが10秒くらいでやるべきだろうか。
 
Readme 5(技巧版ver8)にも書きましたが、 私はStockfish系が致命的に将棋と合っていない箇所が終盤に向かうプロセスだと思います。 チェスは駒がどんどん減って行き、終盤は一定の駒数から完全解析されています。
ここまで行かなくとも、ある程度減った段階でほぼパターン化されエンドゲームとなっています。
floodgateで浮かむ瀬同士やSMの対局を見ると、一定の局面からはまったく同じ局面進行が続くことが多いです。 これはチェスが駒がどんどん減り、自分の勝ちパターンに近づけて行くプログラムだからだと思われます。
将棋はまったく逆で、終盤に行くほど持ち駒が増え局面が激化します。 上記が主な原因ですが、Stockfish系に定跡を搭載しても同じパターンで勝ち負けが偏るので、Stockfish系の同ソフト対局では上手くなったかどうか分かりにくいです。
つまり、Stockfish系の影響が強いソフトでは、定跡で勝率がかなり偏ります。

---引用---*/

Qhapaqの四間飛車定跡を公開します

家のネット事情が悪かったり、年末で死ぬほど忙しかったり、一手損の研究に浮気したりと大分遅れてしまいましたが、四間飛車の定跡を公開します。

何処かでデータ処理をミスったのか、四間飛車の仕様なのか大定跡と真定跡への勝率を同時に確保できませんでしたが、上手い解決法が見いだせなかったのでこのまま公開します。

 

【重要】onedriveの課金契約がそろそろ切れるので、このファイルは引っ越しする可能性があります。twitter 等で拡散する際は、本ブログのページを拡散していただけると幸いです。

https://1drv.ms/u/s!Ag5CrRBmeQHym2NaMKyetTfVAaJX

 

【使い方】

やねうら王のstandard_book.dbを差し替えてください。

やねうら王Quagaをお持ちの場合はquantumbookを、そうでない場合はnarrowbookをonにすることを推奨します(多分offだと弱い)

76歩34歩26歩44歩48銀42飛を初期局面としています。後手の四間飛車のみの定跡です。

WCSC参加者が大会で本定跡を使うことも可能です。詳しくは

やねうら王系列最強(?)のQhapaq定跡を公開します(二代目)[12.18マニュアル更新] - qhapaq’s diary

をご覧ください。

【開発経緯について】

もともとの四間飛車は後手勝率が40%弱であり、後手にとって良い戦略とは言えない(とQhapaqは思っている)ようでした。

しかし、量子ガシャと定跡スナイパー理論を用いて、

ver3

vs 定跡off  824 - 50 - 679(45%)

vs 大定跡   887 - 58 - 562(38%)

vs 真定跡 841 - 48 - 658(43%)

まで勝率を高めることができました。

そう。大定跡に強くなってないのです。棋譜を見直すとどうやら大定跡は66歩や56歩から持久戦にしたがる傾向があるようで、河童定跡はどうやら持久戦に対応できていないようなのでした。

qhapaq.hatenablog.com

 

ここから棋譜の数を増やして只管数の暴力を持ち込んだ結果

ver4

vs 定跡off  785 - 49 - 653(45%)

vs 大定跡   802 - 58 - 613(43%)

vs 真定跡 876 - 49 - 572(39%)

そう。真定跡への勝率が下がってしまったのです orz

大定跡と真定跡は序盤戦略が違うので両方同時に対策出来るはずと思ったのですが、データの処理をミスったのか、相性の問題なのか両方とも同時に勝ち越すことはできませんでした。

 

棋譜の抽出を注意深くやれば、もう少し定跡を強くできる気もするのですが、リソース不足につき断念しました。新規アイデア、募集します。

量子ガシャ用のツールの完全版、及び河童定跡の棋譜を公開します

量子ガシャを用いた定跡生成用ツールを公開します。本ファイルのアップロードを以て、河童定跡生成に必要なツールは全部揃った(少なくとも、私が定跡を作るときに使ったツールは全部公開した)ことになります。使い方の詳細はツールに同梱の"look_at_me.txt"をご覧ください。

定跡は作る気はないけど、手元の浮かむ瀬ややねうら王の棋譜を解析して序盤研究したいという方もツールごとDLしてください。使い方については"棋譜抽出用ソフトとして使いたい場合.txt"をご覧ください。

 

【重要】onedriveの課金契約がそろそろ切れるので、このファイルは引っ越しする可能性があります。twitter 等で拡散する際は、本ブログのページを拡散していただけると幸いです。

https://1drv.ms/u/s!Ag5CrRBmeQHym19Ql_bDEC7fJB19

(やねうら王Quaga、bookmaker、carnival.bat、が入っています。これ単体で定跡作成が可能になります)

 

【ライセンス】

大した作品ではないですが、親元のやねうら王に準拠して本ツールもGPLライセンスに従います。本ツールを使って定跡を作成した方は、良ければ本ツールを使った旨を明記していただけると幸いです。

 

【河童定跡の勝利局集】

今まで作ってきた河童定跡の棋譜を量子ガシャ同梱のcarnival.batで分けたものを公開します。Qhapaqが先手/後手勝ちやすいと思ってる局面集として戦略研究に使うもよし、Qhapaqの弱点を探して大会でQhapaqをボコボコにするもよしです。

ver 四間飛車

https://1drv.ms/u/s!Ag5CrRBmeQHym2EFi3jLMa8ChjhU

ver 一手損

https://1drv.ms/u/s!Ag5CrRBmeQHym2C7pZvgOvJD7kz_

 

【読み方】

sente-x フォルダ内には先手が上手くやったと思しき棋譜

gote-xフォルダ内には後手が上手くやったと思しき棋譜が入っています。

将棋guiで作った棋譜ファイルなので将棋guiで読むこと推奨です。

手元の将棋guiがShogiGUIv0.0.5.4なので、バージョンの違いによっては上手くコメントが表示されないかもしれません。お許しください…

後手番でやたら早繰り銀をやりたがるQhapaqの一手損定跡を公開します

四間飛車検証の途中ですが、竜王戦が近いということでQhapaqに一手損を研究させていました。

 

研究の結果、やたらと早繰り銀をやりたがる定跡が完成しましたので、ここに公開します。

https://1drv.ms/u/s!Ag5CrRBmeQHym1zqL3m1rtKNKQNv

 【使い方】

やねうら王のstandard_book.dbを差し替えてください。

やねうら王Quagaをお持ちの場合はquantumbookを、そうでない場合はnarrowbookをonにすることを推奨します(多分offだと弱い)

76歩、34歩、86歩、88角成を初期局面として定跡を作っています。一手損以外の定跡は持たせていません。

WCSC参加者が大会で本定跡を使うことも可能です。詳しくは

やねうら王系列最強(?)のQhapaq定跡を公開します(二代目)[12.18マニュアル更新] - qhapaq’s diary

をご覧ください。

 

【特徴】

もともとの一手損は後手勝率が43%弱であり、ノーマル四間飛車程ではないにしても、後手にとって良い戦略とは言えない(とQhapaqは思っている)ようでした。

しかし、量子ガシャと定跡スナイパー理論を用いて、

vs 定跡off  1938 - 177 - 1640(46%)

vs 大定跡   1949 - 163 - 1665(46%)

vs 真定跡 1904 - 174 - 1790(48%)

まで勝率を高めることができました。

Qhapaqでの後手勝率は47%強であるため、 後手番戦略としては許されるレベル...かもしれません(先手も最適化すればまた後手の勝率は下がるでしょうけど)。

 

【やたら早繰り銀をやりたがる件】

表題の通り、河童一手損定跡はやたらと早繰り銀をやりたがる傾向にあります。特に先手が早繰り銀をやる場合、腰掛け銀ではなく相早繰り銀にしたがるようです。

f:id:qhapaq:20161222011023p:plain

76歩、34歩、86歩、88角成から

42銀、25歩、33銀、48銀、62銀、77銀、32金、36歩、74歩、37銀、73銀、78金、84歩、68玉、85歩、46銀、64銀、58金、52玉

一手損相早繰り銀は今年の竜王戦では出てきましたが、素人観る将にはあまり縁のない形です。でも、Qhapaqは後手でも早繰り銀が好きなようです。加えて、Qhapaqは後手の玉をやたらと52に置きたがります。

相手が腰掛け銀の場合は52玉はやりにくいらしく、42に玉を動かしてきますが、早繰り銀なら兎に角52に玉を置きたいらしく、相手の銀の態度が決まるまで玉を動かさないぐらいの心意気で52に玉を置きたがります。

Qhapaqに長時間読ませたところ、この局面自体はほぼ0点で互角だそうです。

 

上記局面からの後手の勝ちパターンは幾つかありますが、基本的に攻め合いに持ち込み飛車先の突破を目指します。52玉、61金の意味が解りやすい例を一つ紹介します。

f:id:qhapaq:20161222013414p:plain

上の図から、66歩、75歩、同歩、同銀、76歩打、86歩、同歩、同銀、同銀、同飛、87歩打、76飛、77銀打、72飛

この局面でQhapaqに長く読ませると-400ぐらいで後手が良いと言っています。ここで先手の候補手は83角打と出ますが、飛車には紐がついていますし、72角成、同金の局面では先手には飛車を打つスペースがありません。かといって、2筋を突破しても後手玉は遠く、後手からは76歩という解りやすい攻めがある上に角の打ち込みスペースも豊富であるため、後手やりやすいということなのでしょう。

実際の棋譜はここから83角打、76歩打、88銀、71飛、35歩、同歩、同銀、74銀打以下、後手が快勝しています。

一歩間違えれば後手玉は即座に崩壊するので怖くはありますが、一手損には先手早繰り銀としてくる相手をシンプルな攻めで殴り倒せる魅力的な戦法なのではないかと期待しています。

 

【追伸:Qhapaqの勝利局集について】

勝率測定用に使った棋譜が全部で15000局ぐらいあり、これら全てをアップロードすると貧弱な河童ハウスの回線は潰れてしまうため、ネット回線を確保し次第の公開となります。同時に、将棋guiでのコンピュータ将棋同士の対戦の棋譜ファイルの中から先手/後手がうまく指した(一定以下の点数を出さなかった)棋譜を抽出するツール、bookmakermakerも公開予定です。お楽しみに。

Qhapaq振り飛車が居飛車穴熊に勝てない件

今週からは暫く、量子ガシャを使った戦型研究について解説していきます。第一弾はみんな大好き(?)四間飛車です。


【開始局面】
76歩、34歩、26歩、44歩、48銀、42飛

f:id:qhapaq:20161217232659p:plain

まで進んだこの局面とします。理想的には角交換とか中飛車とかから最強の振り飛車を決めたいのですが、ある程度序盤を強制しないと振り飛車を弱いと思ってるコンピュータは振り飛車にしてくれないのです。この局面から定跡無しで戦わせる(0.2秒将棋。1手10万局面程度読んでる)と後手勝率は40%弱。戦型の縛り無しで戦わせると後手勝率は48%前後の値が出る中でこれなので、確かに居飛車に比べて弱いと言えます。

【学習結果(12.17時点)】

量子ガシャを用いて定跡を整備した結果
vs 定跡off 520 - 27 - 462 (47%)
vs 真定跡 553 - 30 - 437(44%)
vs 大定跡 544 - 41 - 391(41%)

となりました。定跡offに対して大分強くなった一方で、何故か大定跡にだけ妙に弱い結果となっています。一体何が起こったのでしょう。

【河童振り飛車は急戦派?】
河童振り飛車定跡に登録された、振り飛車側がうまく勝ったという棋譜を眺めてみます。
vs 定跡off

開始局面から 68玉、62玉、58金、33角、78銀、32銀、96歩、94歩、86歩、72玉、79玉、45歩

f:id:qhapaq:20161217232902p:plain

 

開始局面から、定跡offで最も頻繁に指される手は68玉のようです。居飛車側は78銀を早めに決めて、銀冠、左美濃、高美濃を見せています(これが本当にいい手かは謎です。相居飛車での居角左美濃の影響かもわかりません)。これに対して河童振り飛車は美濃囲いの完成すら待たずに45歩から開戦を要求しています。

人間的な推理をするならば、振り飛車の大きな問題点は手損であるが、居飛車の76歩が陣形の傷になっているうちに勝負をしかければ、実質的な手損は解消できるといったところでしょうか。

【大定跡の秘策 66歩】
開始局面を大定跡に読ませると手の候補が6つ(66歩、56歩、58金、68玉、77角、25歩)あがってきます。この中で、定跡offで指されにくい手が66歩と56歩です。

 

66歩からの変化一例:

62玉、68玉、45歩、58金、32銀、25歩、33角、56歩、72玉、57銀、82玉、78玉、92香、77角、43銀、98香、94歩、68金、91玉、96歩、82銀、88玉、54銀、99玉、71金、88銀(図面では先手番となってますが実際は後手番です)

f:id:qhapaq:20161217233852p:plain

56歩についても、52金、66歩、64歩、68玉・・・以下、持久戦模様になりがちです。

 

66歩と早々に角道を塞いでしまう、46歩からの4筋の歩交換を許すなど、よく言われる将棋の教訓に反しまくっているのが特徴的です。

66歩が形として本当に優れているのか、または、自分から攻めにくい局面にすることで持久戦模様にする確率を上げているのか(※)はわかりませんが、定跡offと大定跡との勝率差を見る限り、振り飛車で持久戦を相手にするのは辛いとQhapaqは思っているようです。

※:コンピュータに指してほしくない手を指させないために、敢えて形を限定するような手を早いうちに指すという戦略は開発者にはよく知られた手法です。例えば、昨年のapery定跡は振り飛車を避けるために初手を26歩に固定している、などです。

 

【河童定跡を用いた居飛車穴熊対策】

勝率的にQhapaq振り飛車が持久戦を苦手にしていることに加え、「基本的にその場の読みに任せるが、序盤から有利になる手をストックしておくことで適宜相手を狙撃する」という定跡スナイパー理論は手数の長くなる将棋を苦手としています。

藤井システムなどの有力な対策を定跡に仕込み、20手ぐらいまではそれを使い、20手目以降はスナイパー理論を使うなどの手も考えられますが、ハム将棋並みの棋力と、4筋の歩がぶつかった後の角換り並の暇しか持たない私には辛い話です。

そこで現在、大定跡との対局回数を増やし、レパートリーの暴力で持久戦での戦い方を模索するという方針をとっています。四間飛車が本当に居飛車穴熊を苦手としているのであれば、棋譜を増やしたぐらいでは勝率は上がらないのでしょうが、棋譜を増やした結果、定跡が短い手数で途切れにくくはなりました。

河童振り飛車定跡を公開する際は、定跡用に喰わせた棋譜も一緒に公開する予定です。居飛車穴熊対策を加えようとすると、ものすごい数の棋譜が必要になってしまいますが、コンピュータが思う勝ちやすい振り飛車局面集として、みなさまの将棋研究に役立てば幸いです。

 

四間飛車の次は一手損角換りに挑戦予定です。一手損は竜王戦で非常に注目を浴びていますし、戦型強制能力が高いためうまく回れば非常に役に立つと言えましょう。Qhapaqの予備実験では後手勝率が43%と少々苦しい戦略と思われているようですが、果たしてどうなることやら。

やねうら王系列最強(?)のQhapaq定跡を公開します(二代目)[12.18マニュアル更新]

アドベントカレンダーで紹介した「定跡スナイパー理論」に基づいて独自に作成した、やねうら王のstandard_book.db形式の定跡ファイルを公開します。

【重要】onedriveの課金契約がそろそろ切れるので、このファイルは引っ越しする可能性があります。twitter 等で拡散する際は、本ブログのページを拡散していただけると幸いです。

https://1drv.ms/u/s!Ag5CrRBmeQHym1eN0ayk5kjCjBLA

前のバージョンはこちら:

やねうら王系列最強(?)のQhapaq定跡を公開します - qhapaq’s diary

定跡スナイパー理論についてはこちら:

コンピュータ将棋における定跡とメタゲーム - qhapaq’s diary


同時に、スナイパー定跡を高速に抽出する手法、「量子ガシャ」(QuantumGasha、略してカガとお呼びください)用のルーチンを搭載した
やねうら王Quagaと量子ガシャによる定跡作成ツール群も公開します(ただし極めて使いにくいです。余裕があったら今後アップデートします)。やねうら王Quagaは真やねうら王のnarrowbook部分を書き換えたものです。

https://1drv.ms/u/s!Ag5CrRBmeQHym1jRQupgBuACe1Sm

ソースコードはこちら:

https://1drv.ms/u/s!Ag5CrRBmeQHym1tb0Pg60-tcUS9T

正直、バグやらマニュアルの不備やらで無事に動かない確率がかなり高いと思います。トラブルが生じた際は私のtwitterまでご連絡ください。


【使い方 for 河童定跡】
standard_book.dbをこのファイルに挿げ替えてください。
やねうら王でnarrowbookをonにするか、やねうら王QuagaでQuantumbookをonにしてお使いください。offでも動きますが、恐らく弱くなります(未検証)

【特徴】
・standarad_book形式(棋譜にある手をそのまま指す)形式です
・それなりに幅広い手を指すようにしています(先手後手あわせて1800局程度収録)
・手元のPCでの0.2秒対局(2コア、一手当たりに読む鏡面は10万程度、最新版Qhapaqバイナリ(非公開、真やねバイナリより少しだけ強い))で

vs 真定跡 813 - 63 -716

vs 浮かむ瀬 with まふ定跡 1511 - 97 - 2020

参考資料:

真定跡 vs 浮かむ瀬 with まふ定跡 907 - 90 - 1769

※:浮かむ瀬はやねうら王に比べ短い時間で強くなるようにチューニングされています。故に定跡の質が全く同じでも勝率は50%にはなりません。余談ですが、長い持ち時間ではやねうら王のほうが強くなるそうです(参考:http://www.uuunuuun.com/

※:本来は河童定跡を浮かむ瀬で動かすか、まふ定跡をやねうら王で動かすべきなのですが、インフラ整備をする暇がなかったので読者の宿題とします。


という成績をあげています。既存定跡に対する勝率はあまり上がりませんでした(もとい、まふ定跡への勝率が下がるのが嫌で前のバージョンから変えてない)が、まふ定跡への対策をかなり厚くしました。他のやねうら王定跡に対してレート20ちょい、対まふ定跡については他定跡に比べ50程度上昇しています。

 

【手法としての特徴】
・定跡生成に人間による局面評価を一切挟んでいません。
・相手の癖や手の勝ちやすさを機械が自動で解析+対策する仕様ですのでソフト対策や戦型研究にも使えるはずです

【WCSC参加者の皆様へ】
まふ定跡、やねうら王ライブラリの定跡との対局棋譜をベースに作っているので、私にどれだけ著作権があるかは謎ですが、私個人はWCSC参加者の本ライブラリの仕様を妨げることは致しません。ただ、ご利用の際は、使っている旨をアピール文などに書いていただけると幸いです。仮に私に著作権があるなら、本定跡はGPLライセンスに従います。

まふ定跡の扱いについてのまふ氏の見解は、2016/12/13時点では、最新版まふ定跡のreadmeにて確認可能です。

【謝辞】
本定跡の作成にあたり、定跡の可能性を再発見してくださった、まふ定跡制作チームの皆様に感謝申し上げます。


【本定跡の作成方法と河童定跡メイカーの公開について】
本定跡の作成にあたり、量子ガシャという最適化手法を開発しました。
本手法は量子焼きなまし法を将棋に適用することで導出されているのですが、導出には理系大学院クラスの数学物理知識が必要なので割愛します。
なお、導出は死ぬほど面倒ですが、アルゴリズムは恐ろしく楽な作りです。

**注意:これらツールは自己責任でお使いください**

以下、OSはwindows。やねうら王Quaga、及び、bookmakerを用いての開発を前提とします。

一応、手元のwindowsでは動きましたが、環境依存性はあってもおかしくありません。使用は自己責任でおねがいします。


1.対策したい相手(エンジン、評価関数、定跡)とstandard定跡、大定跡、真定跡、評価関数に乱数を載せたnobookなど戦わせます。
別に上記のような構成にする必要はありません。棋譜がある程度バラけていればよいです。自動対局は将棋所、将棋guiなどをお使いください。

2.定跡を載せたい方のエンジンが勝った棋譜を抽出する
例えば、河童定跡/大定跡/ランダム評価関数 on やねうら王 vs まふ定跡 on 技巧であれば、やねうら王側が勝った棋譜だけを、先手で勝った対局、後手で勝った対局別に抽出します。抽出は手動でやるとしんどいので、シェルなどを使ってください。定跡生成セットに入っている

movefiles.bat

を.kifファイルが入っているフォルダに置き実行すれば、sentewin、gotewinというフォルダが生成され、先手/後手が勝った対局が自動的に入ります。

3.局面のとりまとめ
各フォルダに勝利局面が蓄えられたら、sfenファイルはakiさんが公開されているblunderconverterで一行のsfenファイルに変換します。出力はこんな感じになるはずです。棋譜は全て連結してひとつのファイルになるようにしてください。

github.com


startpos moves 7g7f ....
startpos moves 2g2f ....

4.局面を喰わせることで新しい定跡を作る
先手が勝った局面では先手の手だけを、後手が勝った局面では後手の手だけを定跡に入れるのがポイントです。bookmaker.exeを起動し
makebook from_sfen kif-sente.sfen kif-gote.sfen standard_book.db moves 32

kif-senteには先手が勝った棋譜を、kif-goteには後手が勝った棋譜を入れてください。これらファイルはbookmaker.exeと同じディレクトリにおいてください。上記の例だと32手目まで登録されます。


5.standard_book.dbを差し替え、対策したい相手と新しい定跡を積んだやねうら王Quagaを戦わせます。同時並行で大定跡、真定跡、評価関数に乱数を載せたnobookなども対策したい相手と戦わせます
この際、やねうら王QuagaのQuantumbookはonにしてください。Quantumbookは定跡生成時に使った棋譜の分布に合わせて指し手を変える機能です。
同時にやねうら王Quagaの定跡以外の定跡を積んだやねうら王と対策相手を戦わせてください。
やねうら王Quagaのstandard_book形式は一度定跡を作ってしまうと指し手が狭くなってしまうので、こうすることで手の探索範囲を広げます。
非Quagaのエンジンを増やすと探索範囲が広がる一方で収束が遅くなります。私が定跡を作る際はQuaga3、nobook(または真定跡)1で戦わせました。

6.3−5の手順を繰り返す
戦わせる、勝った棋譜≒勝ちやすい棋譜を集める、その棋譜を定跡にして戦わせる、より勝ちやすい棋譜が多く生き残る、
その棋譜を定跡にして戦わせる。。。を繰り返すことで、勝ちやすい棋譜の出現率が上昇し、対策相手への勝率が向上していきます。

【step3の補足】
勝った局面を集めるだけでもある程度の効果は得られますが、定跡スナイパー理論に基づけば、逆転勝ちや微差の勝利は定跡にする価値に乏しいです(詳しくは前回の記事参照)。

そこで、勝った局面の中でも先手/後手が一度も不利になることなく勝った局面だけを抽出することで更に勝率を高める(どのぐらい増えるかは相手による。まふ定跡相手だとレート30弱伸びたけど、やねうら王定跡には殆ど伸びなかった)ことができます。

実際、Qhapaqの定跡は32手目以降先手は100点以上、後手は-50点未満の点数しか出なかった棋譜だけを用いています。
点数による棋譜落としのツールも手元にはあるのですが、使い勝手がどうしようもなく悪い(非プログラマに使えるようになってない)ので目下拡張中です。私がリア充になれたら公開されると思います。

 

【Q & A】

・batファイルが動かない、makebookファイルが動かない

一番ありうるのは文字コードの違いです。Quagaツールは全てshift_jis+CRLFを前提に作っています(元となったやねうら王のmakebookもCRLFじゃないと開業とみなしてくれない様子)。

batファイルはkifファイルうち特定の文字列を含むものを抽出して移動するという仕様です。デフォルトでは将棋gui(将棋所)基準の"先手の勝ち"/"後手の勝ち"という文字列を検索しています。必要に応じてbatファイルをテキストエディタなどで編集して検索文字列を変えてください。