Seleneが今回のWCSC(世界コンピュータ将棋選手権)で、入玉宣言勝ちをしたそうなのですが、この処理について詳しいことを少し書いておきます。(私は中継自体は見てません。)
Seleneは「mate 17」を出したそうなので、おそらく宣言勝ちした局面の17手前に宣言勝ちの局面を見つけたということになります。
「宣言勝ち」については、やねうら王を含め、上位の将棋ソフトなら必ず実装されているかと思います。
どのように実装するかは、開発者によって方法が異なるのかも知れませんが、評価関数のなかで宣言勝ちの局面であれば詰みのスコアを返すという方法が一番お手軽です。このようにしておけば、探索中に宣言勝ちの局面を見つければその局面のスコアは詰みだとみなすので、その局面を目指すようになります。
入玉して駒をぼろぼろ拾ってるうちに、自然と宣言勝ちの局面が見えてくるので、この方法でもそれなりに宣言勝ちをしてくれます。
「評価関数のなかで、毎回宣言勝ちの判定をすると評価関数が重くなるのでは?」
と言われるかも知れませんが、宣言勝ちの条件に「玉が敵陣に入玉していること」というのがあり、これを最初にチェックするようにすれば、ほとんどのケースにおいてこの条件を満たしませんので、普段の(入玉模様ではない)将棋においては無視できる程度のコストだと言えるでしょう。
ただ、通常探索中にこのような宣言勝ちの局面を見つけられるかという問題もあるので、宣言勝ちの局面のちょっと手前の局面(例えば手駒が1枚足りないだとか2枚足りないだとか、敵陣に入っている駒が1枚足りないだとか)に対して(評価関数の返す評価値に)加点しておくという方法も考えられます。
どれくらい加点すると良いのかについては…機械学習等で決めると良いと思いますが、何せ入玉将棋自体がレアケースですので、あまりこのへんに力を入れても仕方ないかなという気もしています。
>何せ入玉将棋自体がレアケースですので、、、
機械学習ができない。
、、、ということは、入玉したSeleneは「ひまうら王レベル」だったと。
つまるところ現状では電王戦上位ソフトといえども「入玉将棋はひまうら王レベル」ということでしょうか?
3駒絶対関係だと、入玉絡みは難しいですが、3駒の相対関係を使っていれば、入玉の絡んだ局面でもそこそこ正しく評価できるかと思います。
「評価関数がうまく設定されていれば、少ない探索量(=短い思考時間)において、宣言勝ちの局面が現れる」という性質はありますから、強いソフトほど、うまく評価関数が設定されていて、思考の早い段階で宣言勝ちの局面に到達して、mate XXに至るというのはあるのでは。
困ったことに、お二人の話は難しすぎてついていけません(涙)。
「うまく設計された評価関数のパラメータを(入玉将棋の棋譜ではない通常の棋譜を使った)機械学習で決めてあげれば入玉がらみ将棋でもそこそこ強い。」という理解でよろしいのでしょうか?
そうして「上位のソフトはひらめきと努力でうまく設定された評価関数」を作りあげた、、、と?
入玉宣言勝ちの局面が探索中に現れる必要があるのですが、評価関数の質が悪いと、各種枝刈りによって入玉宣言勝ちの局面に到達する前に枝刈りされてしまって現れないという話です。
うさ親さんが言うように3駒相対で学習させると、玉が入玉していても玉周辺の駒(と金など)は加点されるはずですから、玉周辺に駒を集めようとして、その過程で入玉宣言勝ちの局面が出てきやすいという理屈です。
ものすごく今更ではあるのですが
> 「宣言勝ち」については、やねうら王を含め、上位の将棋ソフトなら必ず実装されているかと思います。
基本的にBonanza6.0の評価関数以外いじっていないとされているNDFには実装されていなかったようです。
(wcsc25決勝 NDFvsAWAKEで条件をすべて満たしたのに宣言せず)
Bonanza6自体には入玉宣言勝ちが実装されてなかったような気が…。
ええ、ですので当然の帰結としてNDFにもなかったと。
開発の方針として、ここ追加してくるようには思えないのですが、アピール文書楽しみです。