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

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系の影響が強いソフトでは、定跡で勝率がかなり偏ります。

---引用---*/