将棋名人を倒すための学習
東京工科大学CS学部の教員のグリムベルゲンです。
この時期は学生の卒業論文の提出と発表会です。周りの教員はかなり忙しそうですが、私は去年4月から来たばかりなのでまだ卒業生はいません。後期の講義が全部終わって、少し余裕がある時期です。4月から12人の学生が研究室に来るので来年は私も忙しそうです。
正直、今は一番時間が欲しい時期です。なぜかというと毎年の1月から3月までは「世界コンピュータ将棋選手権」の準備の山場だからです。自分が14年前から作った将棋プログラム「Spear」を改善と調整して、世界一の強い将棋プログラムを目指しています。なかなか難しいことなのですが、コンピュータ将棋選手権の結果に期待できるかどうかは大体3月で分かります。選手権は5月のGWに開催するのですが、残りの1ヶ月は微調整しかやりません。大会に近い時にプログラムを大幅に変えるのは非常に危険なことです。ソフトウェア工学の話になりますが、数万行以上の大きいプログラムはちゃんとテストしないとバグが見つかれないです。バグが残ってしまうと一番大事な時にプログラムは変な動き(最悪クラッシュ)とします。実は私もはじめてコンピュータ将棋選手権に参加した時に大会の前の晩にプログラムを書き直して、本番ではSpearが将棋の禁手(ルール違反の手)を2回指してしまいました(もちろん反則負け)。その時は痛いほどソフトウェア工学のルールを実感しました。
将棋プログラムの中に「探索」と「評価」が重要です。探索は先読みのことで、Spearは30秒で大体10手から20手まで先読みできます。それは将棋プログラムのトップクラスと同じぐらいので探索の改良にはあまり力入れれない予定です。Spearの問題は評価です。評価は将棋の局面の判断(先手が良い、後手が良い、先手が優勢など)ということです。Spearの局面の判断はあまりよくありません。しかし、評価を調整するのはかなり難しいことです。コンピュータにいろいろな将棋の知識を入れて、その知識(「特徴」と言います)に数字を付けてコンピュータは将棋の局面を評価します。特徴が少なければ色々な数字を試して見て、最適な値を付けることは出来ます。しかし、最近の将棋プログラムの評価は特徴の数がかなり多いです。トッププログラムの特徴の数は1億を超えます。すべての特徴に自らベストな数字を付けるのは無理なので今のテーマは自動学習です。
自動学習は簡単にいうと、プログラムが自分で学習します。つまり自動的に強くなるということです。やり方として、数千局の将棋のプロの棋譜を用意して、プログラムがプロの手を真似するために評価の特徴の値を自分で調整します。細かいところは省略しますが、その調整は早いコンピュータでも一週間ぐらいかかります。今は研究室にある11台のコンピュータで自動学習しています。その風景は以下のようになっています:
それを終えたら、学習の結果が一番良さそうなプログラムを数百回に対戦させて、選手権に参加するプログラムを決めます。選手権の詳しい情報は第20回コンピュータ将棋選手権案内のページを見てください。すべての対局はインターネット中継になりますので現場に行かなくても選手権のドラマを楽しめます。
Spearの応援を宜しくお願いします!
CS学部教員 グリムベルゲン
2010年2月 3日 (水)