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

Aestetica

コンピュータ将棋Selene(セレネ)を作っています。名前は西海枝昌彦(さいかいし まさひこ)と読みます。

第26回世界コンピュータ将棋選手権

今回は参加してないですけど。


第26回世界コンピュータ将棋選手権が行われました。
今回はAperyチルドレンが大暴れな大会でしたね。私が初参加したあたりだと、Bonanza大暴れな感じでしたが。
強豪プログラムが決勝に残れなかったり、なんかいろいろ考えてしまう大会でした。

今、主流な改造法がいくつかあって、
①NDF的な、絶対位置の他に相対位置も学習し、相対位置で得た値を絶対位置に混ぜ込むもの。
②NDF的な、n手先の評価値を教師値として学習するもの。
③AWAKE的な、上記①に加え、利きと駒、利きと利きについて特徴とするもの。


①について。
「絶対位置」と言っているのは「88角のとき、76歩の点が高い」のような、駒に対して位置をはっきりさせて特徴とするものです。実際には左右対称とするので28角のときの36歩も同じ点になります。

相対位置ってなんだ?ということですが、例えば、どの位置に角があっても、桂馬が当たってたらヤバイ。というようなことです。
または、どの位置に玉があっても、横に金があったら良い。とか。

絶対位置にプラスして相対位置を持つことに関しては、Blunderやツツカナ、Seleneも取り入れていましたが、計算量が増えてしまうところ、絶対位置に混ぜ込めたんですね。


②について。
こちらは柿木将棋が55将棋にて行っていた方法ですが、NDFの場合はBonanzaの評価値を使用して、3手先をまんべんなく学習対象としています。
ある手を指したら150点だったけど、3手読んでみたら-80点だった場合、ある手の点を低くします。
自己対戦をしたりfloodgateから棋譜を取ってきたりして、いかに多くの局面でn手先の学習をするかがカギでしょう。
これをやると、点がつくのが大変早くなります。終盤になるかならないかくらいで「もうそんなに点がつくの?!」というくらいつきます。


③について。
利きも前からありましたが、AWAKEの場合は、利きと言ったら利きとして扱うようにしたこと。って何言ってるんだかよくわかんない感じなんだけど、例えば、利きにはいろいろ種類があって、歩や金のような射程距離1の利き。香車、飛車のような長距離。あとは利きの方向、ななめとか、下から来てるなどなど。

特に長距離の利きと1つだけの利きでは大きく違うっぽいので分けて学習しそうなんですが、AWAKEでは「利きは利き!」として、分け隔てなく扱う。歩によってできたある地点の利きが良いということであれば、そこに飛車が効いていようと、桂馬が効いていようと良いことにしたところがすごい。

初手76歩のとき、75の地点に利きが発生しますが、76歩を学習すると同時に、86金、66銀、55飛車、等々、75に利きが発生する手は全部良い。と学習するということです。特徴につく値が、飛車角だらけになります。


で、決勝トーナメントに残ったプログラムでは、
技巧 探索独自、①③+α
ponanza Stockfish、①②③?
NineDayFever 探索はBonanza+α、①②③
大合神クジラちゃん Stockfish、①③
大将軍 探索不明、①③
Apery Stockfish、①③
うさぴょん2 Stockfish、①③
読み太 Stockfish、①③

なので、③は非常に有効。③をやるからには①も自動的に行う。
というか、読み太はやねうら王からできているのか!?と、検索したら、従来のやねうら王ではなく、新規に作り起こしたStockfishベースのライブラリを磯崎さんが作ってるんですね。こちらも後で読んでみよう。

技巧では、駒位置だけではなくて玉の安全度を追加している。
かつ、クラスタ化しているので終盤でも他のプログラムよりも数手多く読めるはず。放送は見れなかったんだけど、中盤~終盤で逆転した将棋もあったのかな?

ponanzaは安定して強いですねー。実験している回数が多そう。
②がすごく効いていて、点がつくのがめちゃくちゃ早い。

コンピュータ将棋はここ数年、Stockfishの進化によってレーティングが上昇していることもあるので、なんか残念な気持ちもあるけど、やはりStockfishかなあ。ということで、今、Seleneも作り直していますが、なるべくそのまんまにならないように(そこでなぜ抵抗するのか(笑))、なんやかんやしていこうと思います。