機械学習に魂を売ったコンピュータ将棋

今月号の会誌「情報処理」(2010年8月号目次)の特集は「コンピュータ将棋の不遜な挑戦」というタイトルで、ここ数年のコンピュータ将棋の発展の技術的な解説。こうやって毎年のように情報がアップデートされると非常にありがたい。

見所は鶴岡さんによる「選手権優勝記--激指の技術的改良の解説--」とktanaka先生・kanekoさんによる「大規模クラスタシステムでの実行--GPS将棋の試み--」の2記事。特に鶴岡さんによる記事は、Bonanza のよい解説にもなっており、必読である。実は、激指は

 評価関数というのは,局面の形勢判断をコンピュータで行うための関数で,任意の与えられた局面に対して,どちらがどれだけ有利なのかを数値化する関数である.[...] このようなパラメータの調整は非常に手間のかかる作業だが,かつては完全に手作業で行われており,将棋プログラム開発における作業の多くの割合を占めていた.
[...]
個人的には,これまで多大の労力をかけて作ってきた激指の評価関数に思い入れがあったのと,自動学習によってプログラムの指し手の個性が失われてしまうことが嫌で,激指では評価関数の自動学習を導入してこなかった.(p.1002)

とあるように、いちばんの肝になるところには機械学習を導入してこなかったのだが、2009年を境にどうやっても機械学習を導入しなければ他のプログラムとの差がつくばかり、という状況に追い込まれ、機械学習を導入した顛末記である。

自分などは単に Bonanza は人手で職人芸的に行っていたパラメータ調整を自動化したからすごかった、と理解していたのだが、実はその自動化自体はそこまで自明なものではなく(単にパラメータ調整だけなら教師あり学習でできるのだが、パラメータを変化させると間に手の探索が挟まった読み筋全体が変化してしまう)、その自明ではない最適化を可能にしたところがすごいのだ、という話は目から鱗であった。

また、実は評価関数の自動学習も効果が目覚ましいことは分かっていたのだが、とても遅いということが知られていて、オンライン学習(averaged perceptron)を用いることで高速化した、という話や、全ての合法手を考慮せずランダムに選択した16手についてパーセプトロン学習することで計算量を削減していることなど、実際に激指を機械学習対応させるためにしなければならなかったことが細かく書いてあり、勉強になる。

最後に

 激指では以前から探索アルゴリズムの部分で機械学習を利用していたのだが,評価関数にまで機械学習を導入したことで,完全に機械学習に魂を売ってしまったようで悔しい気がしなくもない.YSSの作者の山下氏が,自動学習された評価関数によるYSSの将棋を見て,「自分のプログラムではなくなったような気がする」と嘆息していたのには同感だ.(pp.1006-7)

とあるように、それまで職人芸で維持されていたものが全部統計・機械学習ベースになってしまうのはおもしろくないという気持ちも分からなくはない。(「N文節最長一致のほうがいい」みたいな) しかし、こうやって機械学習に舵を切ることで、自然言語処理や他の分野で得られた知見がそのままコンピュータ将棋に流入し、逆にコンピュータ将棋で判明した知見が他の分野に伝播する、そういう流れを加速することができるので、やはりこれは歓迎すべきことなのではないかと思うのである。

一方、クラスタシステムを用いたコンピュータ将棋の話も非常にプラクティカルな話で、手の探索を分散して計算するために、ネットワークの問題や共有メモリの問題、タスク割当の話など、解決しなければならない問題を一つ一つ取り上げていて興味深い。個人的に一番気になったのは情報棟にある307台の iMac が設置されている写真だが(笑)、マスタとワーカー合わせて(演習室で遊んでいる)314台を使ってGPS将棋を動かすというのはおもしろかった。NAIST だとこんな感じで遊んでいるマシンはそんなにないだろうなぁー

情報処理学会誌編集長の独言では

もう一つの小特集が「コンピュータ将棋の不遜な挑戦」.この「不遜」は情報処理学会からの挑戦状に対する米長日本将棋連盟会長の返答に由来している.私が委員長を務める「トッププロ棋士に勝つためのコンピュータ将棋プロジェクト」という長いプロジェクト(このプロジェクトは私と松原理事,湖東事務局長の3人が飲んでいるときに出たアイデア)がいよいよ女流棋士に挑むことになった.対戦は10月11日に東大で行われる予定.この第一戦はあっさりと勝って(強調引用者),最終的に羽生名人を引っ張り出すのが目標だ.

とあるように、本当に羽生名人を引っ張りだせるところまで行くことを楽しみにしている :-)