書籍『将棋AIのゆくえ』について

このたび、プロ棋士の谷合廣紀先生、水匠開発者のたややんさんとともにインタビューを受け、その内容が書籍になった。まずはその紹介である。

本書では、将棋AIがどのように発展してきたのか、その流れをかなり俯瞰的に見ることができる。私自身、こうして一冊の本という形でまとめられたものを眺めて、改めて「将棋AIの開発史にも、はっきりした世代差があるのだな」と感じた。

将棋AI Bonanzaのソースコードが公開されたのは2009年で、私はその頃からBonanzaの改造などを始めた。たややんさんは、電王トーナメントや電王戦をきっかけに将棋AIに興味を持ち、開発に入ってこられた世代である。谷合先生も、将棋の検討用ソフトとしてやねうら王を使う中で改造に関心を持たれ、2020年前後から開発に参加されるようになったはずである。

こうして見ると、開発に参加し始めた時期には、おおむね5年刻みくらいの世代差があるように見える。さらに、激指、YSS、GPS将棋といった先行世代の開発者の方々は、私よりもなお10年から15年ほど前から取り組まれていたわけで、そこにもまた大きな開発世代の違いがある。

将棋AIの世界では、論文としてきれいに残っている技術ばかりではない。
むしろ、重要な知見であるにもかかわらず、論文にも書籍にも十分には書かれず、ソースコードの中にだけ残っているものが少なくない。

そうした技術は、時間が経つと継承されず、いわばロストテクノロジーになっていく。

私もなるべくブログに書き残すようにはしているが、それでも書かれないまま埋もれていく技術は多いと思う。

その典型例の一つが、長手数の詰将棋を解くためのアルゴリズムである df-pn である。

最初に発表された df-pn の論文だけを読んでも、実際にはそのままではうまく動かない。
後続の論文や書籍まで参照して、初めて実装の要点が見えてくるところがある。

詰将棋アルゴリズムdf-pnのすべて
https://yaneuraou.yaneu.com/2024/05/08/all-about-df-pn/

ところが、GPS将棋には、この df-pn が非常に高い完成度で実装されている。
要するに、論文の形では十分に整理されていなくても、ソースコードの形では知見が残っているわけである。

しかし、そのGPS将棋のソースコードは、C++テンプレートが多用され、コメントも少なく、読み解くのが極めて難しい。
相当に重要な技術が入っているにもかかわらず、実質的には「コードの中に封印されている」に近い状態だったと思う。
少なくとも、ここ20数年、そのdf-pnルーチンを正面から読み解こうとする開発者は、ほとんどいなかったのではないだろうか。

私は、こういうものはそのまま失われていくのだろうと思っていた。
ソースコード自体は残っていても、それを読める人間がいなければ、実質的には失われた技術と大差ないからである。

ところが最近、dlshogiの山岡さんが、GPS将棋のdf-pnルーチンをCodexを用いてdlshogiへ移植できた、という話が流れてきた。

つまり、ソースコードは残っているが、人間にはもはや読み解きにくくなっていた技術が、Coding AIによって再びアクセス可能になる兆しが見えてきた、ということである。
これは将棋AIに限らず、ソフトウェア開発全般にとってかなり大きな変化だと思う。

この流れは、評価関数の世界でも同じである。

将棋AIでは、NNUE評価関数という比較的浅い層からなるニューラルネットワークが広く使われている。
これがチェスAIのStockfishに導入され、その後、Stockfishの開発者たちによって魔改造され、現在ではSFNN(Stockfish NNUE)と呼ぶべき複雑な実装にまで進化している。

https://official-stockfish.github.io/docs/nnue-pytorch-wiki/docs/nnue.html

将棋やチェスのように探索を主体とするゲームAIにおいて、SFNN系の評価関数を採用することは非常に有力な選択肢である。
ただし、その実装はかなり複雑である。
AVX2 や AVX512VNNI 向けの最適化コードまで含めると、普通の開発者が自作ゲームAIのためにこれをそのまま取り込むのは、かなりハードルが高いだろう。

しかし、ここでもCoding AIの存在が状況を変える可能性がある。

たとえば、HATETRISというテトリスの亜種では、NNUEに着想を得た評価関数を用いたAIによって世界記録が達成されている。
https://gist.github.com/knewjade/24fd3a655e5321c8ebac8b93fa497ed9

このように、将棋やチェスの外側へNNUE的な発想を持ち出す例は以前からあった。
ただ、今後は「着想だけ借りる」のではなく、Coding AIを介して、より本格的にSFNN系の実装や設計思想そのものを他のゲームAIへ移植していく流れが出てくるかもしれない。

将棋やチェスという比較的狭い世界で磨かれてきた NNUE / SFNN という技術は、これまでであれば一部の実装者の手元にとどまり、いずれ継承困難になっていた可能性もある。
しかし今は、そうした技術がロストテクノロジーになるどころか、Coding AIを通じて再解釈され、移植可能な評価関数アーキテクチャとして、より広いゲームAIの世界に広がっていく未来が見え始めている。

実のところ、私はこうした話もインタビューの中でかなり話したかったのだが、タイミング的にそこまでは十分に盛り込めなかった。
そこで、本書をお読みになる方への補足として、ここに書いておこうと思う。

『将棋AIのゆくえ』は、将棋AIがどのように強くなってきたのか、その全体像を知るための本として、とてもよくまとまっていると思う。
そして、その延長線上には、こうした「失われかけた技術がCoding AIによって掘り起こされる時代」がすでに始まりつつある、ということも、私は強く感じている。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です