懸案の局面

優秀なコンピューター将棋開発者には、自分が作っているコンピューター将棋が正しく評価できない懸案の局面というのがいくつも頭のなかにありまして、まあ、私はいま気になっているのは次の局面のみなのですが、そういう意味では私は「優秀なコンピューター将棋開発者」には属さないのでしょうけど、今回はこの局面について思うことをだらだら書いておきます。

戻って、△1五金(図)には▲2七香△2六金▲同香△2七歩▲3八金打△2八歩成▲同馬(参考図)とされるのが嫌でした。



大和証券杯特別対局ボナンザ戦。その2(当日編) (渡辺明ブログ)
http://blog.goo.ne.jp/kishi-akira/e/44150b5b5d9e8d6d04a84292a13ce277


言わずと知れたBonanza vs 渡辺竜王の対局で出てきた「伝説の3九龍」の一変化です。この局面自体は、先手も結構やれると私は思うのですが、この局面の良さをBonanza型の評価関数に理解させるのはとても難しいと思うのです。


もちろん、20手も30手も先まで読めば25の銀と26の香が生きる変化になって、有望だというのがBonanzaにもわかると思いますが、この局面の良さを評価関数に直接理解させるには、いくつかの課題があることがわかります。


1) 26の香の存在


26の香は、25の銀の影になっていますが、これは23の銀に間接的に利いています。23の銀は後手玉の外壁ともなる、上から攻めるときの要(かなめ)になる駒であり、ここに利いているのはとても大きいです。特に後手玉が歩切れということもあって、この26の香は23の銀との交換は約束されているも同然です。


もし23にあるのが(後手の)銀ではなく(後手の)歩だと全然話が違ってきますし、あるいは、25にあるのが銀ではなく歩ですと、この26の香はなかなか生きないでしょう。


つまり、この26の香の良さを正しく評価するためには、23の(後手の)銀☓25の(先手の)銀☓26の(先手の)香という3駒の関係が理解できていなくてはなりません。


もう少し欲を言えば、その時の先手の玉の位置と後手の玉の位置、せめて後者だけでも考慮されていて欲しいです。ついでに後手が歩切れというのと、先手だけ歩があるというのも大事なところです。ですが、まあ、それは5手〜11手ぐらい読めばわかることなのでそこまで評価関数に盛り込むことはないと思います。


結局、この26の香の価値を正しく評価するには、少なくともKPPP(後手玉の位置☓3駒) という4駒関係が理解できなければならないのです。


KPPPには巨大なテーブルが必要に思えますが、実際は玉頭戦で意味があるわけですから、玉周辺だけで良いです。このケースで言えば、1,2,3筋の駒だけに着眼すればそれで良いです。それならば、さほど大きなテーブルは必要ありません。


同様にKPPが意味があるのは、玉周辺の駒の関係でしょうから、KPPのPPは玉周辺の駒に限定してもいいんじゃないかと私は思っています。(その代わり、玉周辺のKPPPは考慮する)


2) 後手は2筋に駒を打てる空間と打つ駒がないこと。


もし26の香がなく、この空間が空いていて、かつ、後手の手駒に歩があると26歩と垂らされて困ります。


玉頭周辺は、空間がふさがっているや、その升に利いていることに価値があるわけです。逆に言えば、26に空間が空いていれば、これは先手にとって大きなマイナスとして評価されなければならないのです。


つまり「19の先手玉×26に空間が空いている(+26に先手の駒が利いていない)×後手の2筋の歩が切れている×後手の手持ちに歩がある」という関係を理解できなければならないのです。



BonanzaのKPPのPは手駒も含みますから、「19の先手玉×後手の手持ちに歩がある」という関係はKPとして表現されますが、「26に空間が空いている」と「後手の2筋の歩が切れている」は評価因子として存在しません。


この二つは、この局面を正しく評価する上で結構まずいなぁと私は思っています。


KPPPのPに「歩が切れている」だとか「空間が空いている」という項目を追加すればKPPP(4駒関係)かKPPPP(5駒関係)で解決できそうではあるのですが、組み合わせが膨大になるのでやる価値があるのかどうか…。もちろん、盤面全体に対してやっても意味がないので、玉周辺の駒についてだけやるのですが、それでも結構な組み合わせです。


厚みを評価するためのものなので、馬、銀と金は一緒くたで、香と飛は同種の駒とみなしていいような気もしますが、まあそれにしても大変だなぁと。


3) 先手の2筋の歩が切れていること


先手も2筋の歩は切れています。玉の近くの筋の歩は切れているほうが得だとは一概には言えませんが、この場合は、先手は歩を24から打ちたいので切れているほうが明らかに得です。


また、先手の歩は27になくともこれが傷になっていないというのも大きく、後手に桂があれば15桂〜27歩みたいな手があるので、27に歩がないことが(空間が空いていることが)マイナスになります。


つまり「後手が桂を手持ちにしている×後手が歩を手持ちにしている×15に空間がある×27に空間がある」とまずいのですが、この関係を理解できる評価関数を設計するのは難しいですね。


空間があるのをE(emptyのe)と表現するとしたら、「後手が桂を手持ちにしている×後手が歩を手持ちにしている×15に空間がある×27に空間がある」を理解するためには、PPEE(Pは手駒の状態も含むものとする)を認識できていないといけません。また、攻撃される側の玉(先手)の位置は少なくとも関係しますから、KPPEEです。


また、歩が切れているという状態をEに含めるなら、さきほどの「19の先手玉×26に空間が空いている(+26に先手の駒が利いていない)×後手の2筋の歩が切れている×後手の手持ちに歩がある」は、KPEEで表現できます。


結局、4駒関係として
KPPP , KPPE , KPEE , KEEE
5駒関係として
・KPPPP , KPPPE , KPPEE , KPEEE , KEEEE
があるのですが、たぶん、KPPEとKPEEとKPEEぐらいあればそこそこいけるんじゃないかと私は思っています。


4) 「一箇所も〜がない」という状態


将棋では一番弱いところから食い破られることが多々あります。もちろん、その攻めが間に合うのかという問題はありますが、端的に言って例えば、敵が飛車を打ち込める升が自陣に一箇所でもあるとそこに打ち込まれて大暴れされるということはあります。


つまり飛車を打ち込まれる場所(自陣で自駒の利きがない箇所)が1箇所であるのと2箇所であるのとには、打ち込まれるという意味では大差はなく、0箇所と1箇所というのは大差であるという局面は存在します。


こういうのをBonanza型の評価関数で評価するのは無理があります。しかし実際問題として、将棋ではこのように、一箇所も〜がないという完璧さが大きく評価されなければならない場合があって、そういうのが難しいなぁと。


今回の参考図で言えば、自玉の24近傍(5×5)、48近傍(7×7)、80近傍(9×9)に敵の駒が無いだとか、次にどうやっても王手がかからない(≒自玉の8近傍に敵の利きがない)だとかそういうのです。


こういうのが形勢に響く局面はBonanza型の評価関数では評価しにくく、弱点になりやすいですね。


そんなことを考えながら上の局面を見ていると、この局面でご飯が何杯でも食べれてしまうのでした。



コンピューター将棋の開発者のみなさんの懸案の局面をトラックバックなどで教えていただきたく。