自分はコンピューター将棋に関しての本はそれなりに好きで結構読んでいたけれど、この「人工知能はどのようにして名人を超えたのか」はその中でもダントツに分かりやすく面白いものでした。
人工知能はどのようにして 「名人」を超えたのか?―――最強の将棋AIポナンザの開発者が教える機械学習・深層学習・強化学習の本質
- 作者:山本 一成
- 発売日: 2017/05/11
- メディア: 単行本(ソフトカバー)
というのはそもそも将棋コンピューターの中でエポックメイキングである「ボナンザ」ソフトを開発した人なのです。そういう開発者が一般人向けの解説が上手いとは限らないのだけれど、多分何度もインタビューや対談に引っ張りだされたこともあるのでしょう、 あるいは天性の資質かもしれないが、とにかく読み物として非常に面白いのです。
体系的に整えて文章を書くのではなく、箇条書きでメモしていきたいと思います。
コンピューター将棋に限らず知的な行動は二つの行為を駆使する。 それは「探索」と「評価」である。1+1は2と予想するのもある意味で探索と評価である。
コンピューターがこれをするには基本的に何かの行為を点数にしそれを計算していくという方法をとる。そもそもゲームを計算できる、点数にできるというのが思い切った発想。
今でこそ「チェスや将棋が計算可能」というのは当然に聞こえるが、1940年代は非常に思い切った発想だった。
ただそれは最初 「将棋の飛車なら1500点。桂馬なら500点」…みたいに色々手動で点数をつけて、それを結果から調整していく仕組みだった。この手法ではとても人間に勝てるようになれないと思われていた。
この難しい時代が長く続き、人工知能は冬の時代に入る。予算が少なかったり業界内で白い目で見られたり。
機械学習という言葉はこの時代に、「人工知能」という言葉を避けるために使われた、という節もある…
ところで、コンピューター将棋を理解する時に「コンピューターチェスとどう違うのか」を考えるとわかりやすい。持ち駒制度などがあり、場面・局面の数が多いから将棋はチェスより難しいのだろう、と思われがちだがそう単純ではない。
単純な数の多さより「そもそもどう評価する(点数をつける)のがいいか、計算手段が分からない」から、コンピューターの将棋はチェスより難しい。囲碁はさらに 難しいのである。
というのはチェスは機動力のある駒が多いので、激戦中の場所ににすぐに駒が駆けつけていく。将棋はそうではない。そのためチェスは盤面上にあるコマを計算対象にすれば局面も判断しやすいのです。将棋や囲碁はそうではない。
で、なかなかに難しい計算の方法…そこで発想を転換したコンピューターの開発者たち。「とりあえずプロの将棋指したちが残した棋譜がたくさんある。プロの指した手は、それ以外の手織り優れていると仮定し、それを機械学習で全部覚えさせることにしよう」というプログラムを組んだのです。ある場面でプロの指した手Aは、それ以外の手Bより高い点数をつける…この点数の付け方もそれはそれで大変だが、地道に作業を繰り返すうちにボナンザは少しずつ強くなってきました。
ちなみにこの時デジタル化されたプロ将棋の棋譜が約5万局。しかしそれでも足りないので、「反転の術」を使った。画像学習でも使われた手法で、例えば同じゴリラの画像でも反転させれば別の画像扱いになり、それを覚えることでが2倍学習できる。将棋も譜面をちょっと右や左にずらしたり左右反転させたりして、一局での学習例を何倍にもした。これは有効であっという間に広まった。
ボナンザが強くなるにつれて、―当然自分の実力も上回ってくるのでー、開発者すら「どうしてボナンザがこの手をうったのか説明がつかない」という、状況になってしまった。
この状況を人々は「黒魔術」と呼ぶ。
魔術というぐらいだから 非常に説明しにくいが、具体例として、「怠惰な並列化」と呼ばれる手法がある。無理に例えれば「一人のシェフより3人のシェフが、3人より10人のシェフが協力した方が早く料理を作れる」というイメージだったが、それが50人となると厨房が狭かったりで限界がある。そこである程度は協力するんだが、完成まではシェフが個別に、勝手に料理して、結果的に最初にできた料理を出せば一番早い…という形になっている。
人工知能と機械学習が、徐々に近い意味を示すようになった。そしてディープラーニングが誕生した。はっきり言ってディープラーニングは未だ潜在能力がどのくらいあるかが分かるっていない。ちなみにボナンザは、ディープラーニングは使われていない。
10年前、この仕組みは散々な扱われ方をしていた。当初は「層を重ねる」ことがうまくいかずむしろ重なるほど性能が落ちた。この欠点をコツコツと改行して今のディープラーニングがある。
ディープラーニングの仕組み、「黒魔術」の一環として過学習を防ぐやり方がある。
過学習とは何か?例えば10万個のコップの画像を覚えさせて「コップ」と言う種類の物体を選ばせようとする時、今のコンピューターの性能は凄いのでその10万この画像を丸暗記してしまう。そこで途中途中で今入力した画像はコップであるという情報の途中途中をランダムに消してしまう。そうすると回る暗記ができなかった Deep Learning は必死で概念というか類推を行って、無事「こういう形の画像は『コップ』なんだなあ」と覚えてくれるんだそうです。なんでそうなる ?筆者は「正確な説明はとても難しい」とさじを投げる。これが黒魔術のひとつだそうだ。
ボナンザを強くするために強化学習を導入した。具体的には2014年以前のボナンザはプロキシが実際に刺した手をお手本として教師ありの学習をした。その後は実際にありえそうな局面を自動で対局させて、少しずつ強くなっていった。
具体的には86億局面を進めると、ほんの少しだけ強くなってくるというイメージ。ボナンザは現在までに約1兆程度の局面を調べている。電気代は毎月数十万はかかった。
その結果、2013年の電王戦で人間がコンピューターに負けた時の衝撃はもはやなく、プロ棋士がコンピューターから学ぶ時代になった。しかしこれほどコンピューターが進化したのは基本となるプロ棋士の棋譜が優れていたからに他ならない。電脳戦でプロ棋士が見つけたある種もハメ技も、すぐに塞がれていった。これこそが進歩。
ところで将棋常に難しいと呼ばれたコンピューター囲碁が2016年、「アルファ碁」によって世界的な強豪を破った。これは衝撃的だった。
なぜコンピューター囲碁は将棋より衝撃的なのか?
それはチェスや将棋は、なんだかんだ言っても場面場面で「この場面こうした方が有利」とか「飛車は桂馬より点数が高い」とか数字化できる手がかりがあるからです。囲碁は、その時打った石がその後どうなっていくか、どの関係にどんな点数をつければいいかさっぱり分からない…のであった。
そんな中で突破口となったのが「モンテカルロ法」の応用であった。
モンテカルロ法とはカジノの名前が付いてるように簡単に言えばサイコロを振る手法。
作ってみた画像を参照のことで、要はモンテカルロ法を囲碁に使うというのは「適当に碁石を打ってもらい、勝ったり負けたりする。結果的に勝つ確率が高い方法は分かる。その方法を採用していく」というなんとものちから技。だがこれはいわば「評価」を一回もしないで「探索」だけで囲碁の問題を解決したということ。これはすごいことだった。アマチュア初心者の囲碁が、一気にアマチュアの高段者になった。
しかしディープラーニングは、このモンテカルロ法が頭打ちになり「プロの棋士にはどうやっても勝てない」と研究者が悩むようになってから颯爽と登場する。
ディープラーニングはどう問題を解決したか。すごくはしょって言えば「囲碁の局面を画像として処理した」のである。
ディープラーニングは囲碁の前に懐かしの「ブロック崩し」も画像として処理することで高得点を出すプログラムを開発したのだそうです。
この画像として処理するという方法はモンテカルロ法が一旦諦めた「評価」であった。この結果として評価と強化学習が悪魔合体し、飛躍的にディープラーニングは強くなったのであった。
最終的にアルファ碁はモンテカルロ法と「評価」と、そして「打ち手予測器」の 三つの機能が重なり合わせている。エヴァンゲリオンのマギシステムみたいに?別々の要素が重なって、その平均を撮ることで単独よりさらに強くなったのである。
その後も、いろんな話があったり、囲碁棋士との対談が収録されたりしているのですが、いやほんとにめっぽう面白い本でした。