囲碁にモンテカルロ法を適用するには、どうすればよいでしょうか?
その原理は驚くほど簡単です。ある局面にランダムで石を打ち、その結果、勝ったか負けたかの情報を収集していけばいいのです。具体的な例を見ていきましょう(ちなみに、将棋は「指す」もの、囲碁は「打つ」ものです)。
図3-14 囲碁へのモンテカルロ法の適用
同じ局面でランダムに石を打ってみる。
たとえば、図3-14のA地点に碁石を打ったあと、適当に局面を進めるということを1000回試してみます。そうしたら600回勝って、400回負けたとします。これは勝率60%ですね。
次に、先ほどと同じ局面でB地点に碁石を打つのを1000回試してみたら、300回勝って700回負けたとします。この場合の勝率は30%です。この結果を見れば、ほぼ確実にAに打ったほうがいいことがわかりますよね。
これ、すごい考え方だと思いませんか? だって、「評価」を一度もせずに「探索」だけで、囲碁でどの手を打つかという問題を解決してしまったのですから(「評価」と「探索」については第2回を参照)。
コンピュータ囲碁では評価を作れなくてずっと困っていたという話をしましたが、この方法は、なんと評価を諦めたのです。評価ではなく「サイコロ」に委ねた、とも言えます。
これは、人間のようにきちんと「探索」して「評価」するやり方に比べると、かなり奇妙なやり方に思えます。
しかし私は、これも知能だと考えています。「サイコロには知能がある」とすら言えるかもしれません。
そんなバカな、と思われるでしょうか。しかし「サイコロには知能がない」ということは、「脳内のニューロンが、隣のニューロンに信号を伝えていること」を知能がないというのと、私には一緒のことに思えます。この世界には、私たち人間以外の知能が存在するのです。
モンテカルロ囲碁の成長
このモンテカルロ囲碁は、最初から強かったわけではありません。さまざまな工夫が重ねられ、強くなっていきます。
とりわけ大事な点は、「いかにそれっぽく打ち手を進められるか」でした。単純にランダムに囲碁盤を石で埋めていくより、プロのような打ち回しで埋めたほうがよい結果になるという理屈です。
ここで機械学習が使われました。モンテカルロ法をしている最中にも、囲碁のプロ棋士と同じような手が打てるよう、プログラムが学習していきます。囲碁というゲームの「評価」を学習することは困難だったのですが、プロの手をコンピュータが真似することはそれなりにできたのです。
モンテカルロ囲碁が発明されて、旧来手法の囲碁プログラムは一気に廃れました。そしてアマチュアの級位者レベル(つまり初段未満の実力)だったプログラムが、わずか数年で一気に高段クラスまで到達したのです。
あまりの改善速度の速さに、きっとこのままモンテカルロ法でプロの囲碁棋士も倒せるようになるだろうと、楽観的な意見が出てくるまでになりました。
しかし、あるレベルで急速に成長がとまります。ちょうどアマチュアトップレベルに届かないくらいです。そこから囲碁プログラマたちの苦闘が続きますが、数年間ほとんど棋力が伸びない状況が続きます。
サイコロだけでは人間は倒せないのでしょうか。