FPGAの切り開かない未来
コンピュータ将棋プログラムはいよいよプロ棋士に勝てるかどうかという寸前まで来ている。コンピュータ将棋は簡単に言ってしまえば探索と終端ノードでの局面評価で構成されている。よって、これらのスピードあげることで強くなる。本当に寸前まで来ているならハードのスピードアップを図ればプロ棋士に勝てるのではないのかという素朴な疑問が湧いてくる。
コンピュータチェスではASIC(専用チップ)やFPGA(Field Programmable Gate Array:プログラム可能な論理アレイ)がある程度の成果をあげているが、コンピュータ将棋ではこのへんの成果が非常に乏しい。その理由についてここで考察してみることにする。
■ コンピュータ将棋はコンピュータチェスほど開発資金が無い
日本ではゲームプログラミングについて学術的な研究が行ないにくいという土壌があるので、政府の援助があるわけでもなく、たいていは商品化して販売してそれを開発資金としなければならない。そのときに、ASICやFPGAを用いていたのではユーザーの環境で動かすことは出来ず、結局販売することが出来ない。要するにカネにならない。だから将棋ソフトのベンダーは積極的にASIC/FPGAでの開発を行なうことは出来ない。
また将棋ソフトは強さが横並びになりつつあり、フリーソフトであるbonanzaでさえ将棋倶楽部24のratingで2400前後ある。アマチュアの将棋人口のうち99.9%は2400以下である。bonanzaに勝てるアマチュアはほんのひと握りしかいない。単に強いソフトが欲しいだけであればbonanzaで十分なのである。よって、新しい将棋ソフトが出たからと言ってコンシューマ系のゲームほど売れるわけでもなくASICにかかる費用(数千万)なんて予算はベンダーにとって捻出できない。
だから選択肢はFPGAしかない。FPGAは性能こそASICより劣るが20万ぐらいからエントリ出来て、開発サイクルが非常に短くて済む。
■ FPGAではコンピュータ将棋は何故強くならないのか
コンピュータ将棋にFPGAを用いる場合、FPGAボードを何枚も使用して大規模に並列探索を行なうということはあまり考えられない。例えばFPGAボードを256枚買おうと思うと20万×256 = 5120万必要である。これならASICのほうが良いからである。
よって、FPGAの使いどころというのは、
・指し手の生成
・利きの生成
・局面の評価
ぐらいしかない。局面の評価をするためには、部分的な評価値に重みをつけ足し合わせるような作業が必要になる。要するに乗算が大量に出てくるのだが、乗算は非常にトランジスタ数を食うのであっという間にFPGAの制限を超えてしまう。だから局面の評価に用いるのは(いまのFPGAでは)あまり現実的ではない。
■ コンピュータ将棋にFPGAを用いている、用いようとしている人たち
FPGAを詰将棋に使用する記事は『コンピュータ将棋の進歩4』に堀洋平さんが書かれている。また、氏のwebサイトにはその論文が掲載されている。
YSS(商品名AI将棋)の山下さんがFPGAで将棋プログラムを作ってみるブログというのを書かれているが、成果がblog上に書かれていないのでよくわからない。
謎電の作者には期待しているのだけど完全主義なのか、本業が忙しいのか、なかなか進まない。
あとは…GA将!開発ぺぇじは、ニューラルネットを評価関数に使おうとしていて、乗算の苦手なFPGA向きではないけども、GPGPU向きだと思うので期待している。
コンピュータ将棋界は、優勝した人が注目されて、ほかの人の探索アルゴリズムやら手法がその優勝したプログラムに牽引されていく傾向がある。FPGAでの開発は行き詰っているのか、無理なのか、可能性があるのかそのへんのところをコンピュータ将棋関係者は新参者のためにも、もっと赤裸々に語って欲しいと思う。