ここはつまり、周囲の石の間を埋めて、前線を作るのに役立ちそうな場所、ということになる。これで、少なくとも「石を打つとよさそうな場所」がわかる。複数ある場合にどう評価するか、状況によって全く新しいところに打たないといけないときにどうするか、などは別問題。この手法を広めて、しばらくはこれ以外の良い方法がなかったらしい。90年代の中ごろ、画期的なアルゴリズムが考案される。どこに打てばいいのかわからないなら、乱数で打てばいいじゃん、という割り切り。本当に乱数だけで勝負していたら、とんでもなく弱い。ここに「学習機械」を組み合わせる。ランダムに打った手のデータを覚えておいて、とにかく、むちゃくちゃなうち筋でもいいのでゲームを終了させる。(ランダム同士で打ち合えばいい)ゲームが終われば勝敗がわかる。負けたほうの「ランダム」は弱い手だ。データは覚えているから、同じような局面になった時には避けよう。逆に、勝ったほうの手は、同じような局面ではまだ使おう。これをひたすら繰り返すと、強そうな手と弱そうな手がわかってくる。あるとき勝った手が、同じ局面で別の時に打ったら負けたとする。この手は強いと思っていたけどそうじゃなかった、ということだ。逆に、何回も打ってすべて勝った手があったら、これは本当に重要な手なのだ。今後も同じ局面では打つのがいい。ここにあるのは、ひたすら過去のデータを積み上げるだけで、打った手の評価は「しない」という方針だ。囲碁の手の評価は、先に書いたように難しい。最後に勝ったかどうかだけは覚えておいて、途中の手すべてに「勝ち負け」のフラグを積み重ねていく。...これ、マッチ箱エンジンだよね。ただのマッチ箱でも、マルバツゲームの思考ルーチン程度は作れてしまう、というアルゴリズムの実験。年に、この手法をさらに応用して学習部分を強くしたプログラムが作られる。戦って「勝った」「負けた」を記録するだけではなくて、勝った打ち筋なら、途中から手を変えたらどうなるか、などを試すようにしたのだ。これによって、勝てそうな局面で、さらに強い手を探すことができるようになった。このプログラムは、コンピューター囲碁大会で優勝した。以降、この手法が主流になっていく。実は、こういう「ランダムを使ってひたすら学習する」のは、囲碁の世界に限った話ではない。最初のほうに書いたけど、チェスや将棋では、一手ごとに「その手が良いか悪いか」を評価している。この評価部分は、昔は人間が作っていた。評価方法の善し悪しが強さに直結した。評価方法の善し悪しというのは、つまりパラメーター調整のことだ。昔は職人芸でプログラマがやっていたのだけど、最近の流行は「ランダムに設定したパラメーターでひたすら戦わせ、勝ったものだけを残す」というような手法だ。これにより、コンピューターが自分で最適なパラメーターを学習するようになった。評価方法の調整は職人芸の時代から、コンピューターオートメーションの時代に入ったのだ。作りづらかったので、思い切って評価をしないことにした。評価は、試合結果によってのみ決まる。試合を繰り返して、結果から学習する。機械が勝手に学習したものなので、機械が「良い手」だと思っているものが、なんでいい手なのかは誰にも説明がつかない。実際強くなったのだからいい手なのだろう。囲碁プログラムも、こうして作られたものだ。何で勝ったのか、どういう仕組みで考えているのかは誰にもわからない。わかるのは、強くなったという事実だけだ。プログラムでは、学習部分にニューラルネットワークを使っているそうだ。ニューラルネットワークは、十分な学習を積んだ場合に、まだ見ぬ問題であっても「正解に近いと思われる回答」を得られる特徴がある。以降は、詳細が明かされていないので想像に過ぎない話。単純に「過去に打った手」を参照するのではなく、盤上の局所的な形勢などを見て、それらしい正解を出せるように学習させてあるのではないだろうか。囲碁は「線を形作る」と最初のほうに書いたのだけど、これはパターン認識の世界だ。パターン認識ではニューラルネットワークは非常に役立つことがわかっている。近年流行のパターン認識では、局所的なパターンの特徴を、「局所」のサイズを様々に変えながら抽出し、それらをパラメータとして組み合わせたうえでニューラルネットワークの入力とする。この方法だと、局所的な特徴も捉えられているし、ニューラルネットによって全体のバランスも考慮される。囲碁の広い盤面を全部「記憶」するのではなく、局所的なパターンを元に判断を下すこともできるだろう。実はこのパターン認識方法は、人間の「目」の働きを模倣したものだ。目は局所パターンを識別し、局所的な形状を「特徴」として不可逆圧縮し、その組み合わせとしてデータを脳に送っている。この「特徴抽出」によって、人間は線を線と感じたり、丸いものを丸いと感じたりすることがわかっている。点に過ぎない星を見て、それがつながった「星座」を思い浮かべるのもこれに近い働きだ。「前線を作る」ゲームである囲碁が、パターン認識の世界に踏みこんだというのも、ある意味当然なのかもしれない。話はここまでの部分で終わっていて、以降は余談。途中で書いた「マッチ箱エンジン」だけど、マッチ箱エンジンで囲碁の19路盤を学習させたらどうなるか...という解説記事があった。英語だけど、図表が多数入っているのでわかりやすく、面白い。解説すると、多数のマッチ箱に9色のビーズを入れておくと、マルバツゲームの相手をすることができる。箱は、現在の「盤面」の状況を示している。対応する箱から、ビーズを1個取り出すと、その色が「どこに打つか」を示している。最初は、すべての色のビーズを入れてある。打てない場所の色も出てしまう。マッチ箱は、最初はマルバツのルールも知らないのだ。それは捨ててやり直す。人間がルールを教える。正しい手を打った場合も、マッチ箱はランダムに打つことになるので、おそらく負けるだろう。マッチ箱が負けたら、最後の手順で打ったビーズは捨てる。その手を打ってはいけなかったのだ。マッチ箱が勝ったら、途中で使ったビーズをすべて1個増やしてやる。次からはこの手を打ちやすくなる。マッチ箱はだんだんと良い手を打つようになってくるし、究極的には絶対負けない、最強プレイヤーとなる。...というのがマッチ箱エンジンなのだけど、解説記事は途中までこの解説をしつつ、最後に19路盤への応用の話になる。打てる可能性が非常に多いので、マッチ箱が大量に必要になる。最後の画像は、必要なマッチ箱を置くための面積を、わかりやすいものと比較した図だ。ゲームの規模がわかりやすい。囲碁プログラムは基本的にマッチ箱エンジンだ。(多少工夫して、知らない手でも打てるようにはなっているけど)マッチ箱じゃなくてコンピューターを使っているけど、この図にあるようなものを実現してしまったということですよ!最近の囲碁のアルゴリズム詳細について、詳しい資料がありました。今回、いくらかはこの資料を参考に書かせていただいています。世界最高峰の棋士である韓国人、イ・セドル九段と対局し、4対1で勝ちました。同時に、上記記事を書いたときにはあまり報じられていなかった詳細が報じられました。推察したとおり盤面を画像として認識しているそうです。チェスや将棋では駒の位置関係など、データを中心に扱いますが、画像として「なんとなく」状況把握している。なかった新しい手法です。同時に、駒の位置関係だけが重要で、駒の価値や動きに意味がないからこそできる手法だとも思います。目指して研究しているそうです。同じ仕組みをインベーダーゲームやブロック崩しなどの単純なゲームに応用し、スーパープレイヤーを作り出すことに成功しています。いえ、パックマンのルールは複雑すぎて理解できません。ニューラルネットワークは、なんにでも応用できる汎用性がある一方で、単純な問題にしか対応できません。囲碁もまた、十分に奥深いゲームではあるが、ルール自体は非常に単純。ニューラルネットワークが活きてきます。掲載されていたようです。ページでも公開されたようです。今日知って読んだところ、非常に面白かったのでこの追記を行った次第です。テクニカルサポート申し訳ありませんが、現在意見投稿をできない状態にしています。使えるキーボードを持った最初のマシンはどれだろう」という質問を投げかけた。なかった、という注釈付きで。いろいろな意見が集まった。