Bugじゃない、Featureだ!
regressionを流して、見つかるバグを対処中です。まあ毎度のことではありますが、後から後からという感じで出てくるのを、嫌気さしながらも順次直してるところ。
探索は、当初は反復深化やら延長やらといろいろ入れてたのですが、デバッグのときややこしいので、まずは超単純に、ということで、「超基本αβ」バージョンを作って、これでデバッグしてます。探索はαβ。反復深化無し。深さ固定、延長一切なし。手生成はもちろん、全幅+静止のみ。
…いやー、何かいい感じ?余分なもの全部そぎ落とした、男のコンピュータ将棋、みたいな?
これでバグったらアホやろ、と思いつつ、しっかりバグってましたが。まあ見つけ次第直してるんですが、そのうち、悪手なんだけどよくよく調べるとバグじゃない、というのがあって困っているところ。
例をあげます。「読みの技法」第6図。
A1 F3
ye----gey
--igo-i--
f-ffff--f
------H--
---------
-------h-
F-uFFFF-F
-GI---IF-
YE-O--GEY
F2
senteban
みづらい書き方ですみませんが、私はいつもこれ使ってるもんで。
歩香桂銀金角飛王 = FYEGIAHO
成ると = TSMZ UR
です。'K'ではじまる駒は多いので、それらはアルファベットの2文字め(KYO なら 'Y')。SMZはわかりづらいですが、SMはkyoSha, keiMaから。Zは全。先手大文字、後手小文字です。
全幅2手+静止6手、でやってみそ。▲3二飛成、と指してくれやがります。最初「やれやれ、またバグかよ。しょーがねぇなぁ…」とかいってデバッグ始めたのですが、実はバグでない=全幅の本質的問題、と気づき愕然。他の全幅ソフトでもおそらくこう指すと思います。
▲3二飛成、△同銀、▲7七銀(金)、▲パス、△パスと読んでいる。(2連パスで末端。)初手▲7七銀なら、△4九角!と読みます。ここで深さ2消費したので、次からは取りしか読みません。以下▲パス、△3八角成、▲同銀、△2八飛成、▲パス、△3八竜。で、「▲7七銀より▲3二飛成がマシ」と結論するわけです。つまり、△4九角の後で急に読みが狭まるため、△4九角が(実は悪手なのだが)いい手に見えている。で、それを追い出す水平線効果で無茶をする。
これって要は、「末端までには局面を収束させなきゃだめ。そのためには、全幅+静止だけじゃ不十分」と言ってる気が。全幅と静止で「段差」がありすぎるのが×。前に指した手の「応手」はひととおり指せる程度に「段階的に」手を狭めていく必要がある。(手生成の「バリアフリー化」?)言い換えると、「しょせん全幅じゃだめ」ってこと、と思えるんですが。末端に行くにしたがって前向き枝刈りはしょせん必須…というのは、考えてみれば静止が必須という時点でわかってるべきことですが。
もう1例。深さ設定は同じで、読み技第23図。
F1
ye-i----y
-og-i----
-ff--ge-f
f---fafh-
-----f---
F-FFF-Ff-
-F--G-U-F
--OIIG-H-
YE-----EY
F2
senteban
ここで▲3五歩です。歩損はしかたないと思っている。△6五歩が来ると歩損必至なので、それには▲7七桂(か▲6七金*)だとよさそうですが、すると△2五桂!とはねます。対して▲3八馬とかできればなんてことはないのですが、静止なのでそれはない。以下▲2六馬、△同角、▲同飛、で末端。馬×角交換は歩損より大きい設定になってるので、「歩損やむなし」と結論してます。
…うーん、またまた困った…全幅じゃだめ、前向き枝刈り必須、と言われても、ハードだとあまり複雑な手生成はできません。まあそこを何とか、ハードでできる範囲でどこまで手生成を絞るか、が次の課題となりそうです。
チェスでは全幅+静止で十分だったようですが、やはり将棋とは違うんでしょうか。打ちがあるのがやっぱ大きいのかな。まあ、「打ち以外のみ生成」くらいだったらハードでも何とかできそうなので、このくらいでうまく行ってくれるとありがたいのですが。でも上の23図ではこれじゃだめですけどね。
しかし、いっそバグであってくれればよかったのになぁ…直せば済むんだから。これ、根本的に考えなおさないと…
Bonaとかどうしてるんでしょうね?
« FPGAのSimulation環境 | トップページ | アッラーの御名において、Stand-Patは気持ち悪い »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
« FPGAのSimulation環境 | トップページ | アッラーの御名において、Stand-Patは気持ち悪い »
コメント