「アルファ碁」の登場は衝撃的で、私も元のNature論文を読んでみようと思ってダウンロードしてみたものの、
とても私には歯が立たないことがすぐにわかった。
最近、その解説書が出たことに気づいて買って読んでみることにした。
本書はかなり丁寧にわかりやすく書かれており、細かいところは別として、「アルファ碁」の概要はよくわかった。
ディープラーニングとか、手数の長いゲームの強化学習とか、モンテカルロ木探索とか、なぜこんなもので
うまくいくのか不思議な部分も多々あるのだが、量が質に転化するというのはこういうことを言うのであろう。
まさに数の暴力である。とはいえ、数の暴力さえあればよいかというともちろんそんなことはなくて、
いろいろな技術の組み合わせのバランス調整が腕の見せ所であることもよくわかった。
それとここまで数を出すには並列計算が必要なので、いかに高速に CPU、GPU を使っていくかにも相当の腕が必要である。
「アルファ碁」を一口に言えば、10年くらい前に開発された「モンテカルロ木探索」をベースにしながらも、
ディープラーニングを用いて「直感」を鍛えたコンピュータ囲碁(最近の言葉でいえば「囲碁AI」)のプログラムである。
それによって、従来の「モンテカルロ木探索」に比べて、イロレーティングで 1000 以上強くなったとのことである。
ディープラーニングによって「直感」が鍛えられるというのも、私が「アルファ碁」で初めて知ったことである。
人間の脳細胞の「直感」というやつも結局つまるところこういうものかとも思う。
しかし、「直感」というのはやっかいなもので、コンピュータの直感は結果が出た後でもほぼ説明不能だし、
人間の直感だってほぼ説明不能である。だからこそ、囲碁や将棋の世界では天才少年少女が現れる。
論理能力や言語能力は普通の大人に比べてそれほど高くないと思える子供が、
囲碁や将棋になると普通の大人では全く歯が立たないということがしばしば起こる。
コンピュータがそういう説明不能な能力を発達させるということは一昔前には想像できなかった。驚くべきことである。
ディープラーニングは、やっている操作は説明可能だが、出てきた結果はよくわからない。不思議なものである。
囲碁AIの発展は目覚しく、つい最近 (2018/01/17) も、「アルファ碁」を追いかけている
「絶芸」(中国のゲーム会社テンセントが開発している囲碁AI)が世界最強棋士の柯潔に二子置かせて勝ったそうな。
二子置かせて勝つということは、はっきり力の差がついてしまったということだ。
サマリー
Chapter1 アルファ碁の登場
- 従来の教師付き機械学習では、「前処理(データ整理)→特徴抽出(たとえば、「取る手」)→モデル化(たとえば、ロジスティック回帰モデル)→機械学習」という手順に従う。このうち、モデル化までは人手で実行する。
- アルファ碁では、機械学習によって次の一手を決める「ロールアウトポリシー」というモデルを使っている。これは、手の表面的特徴を用いて、手の予測確率を求めるもの。モデル化にはロジスティック回帰モデルを用いている。予測確率は24%程度にとどまる。
- アルファ碁では、ロールアウトポリシーよりも使う特徴を増やして予測精度を上げた「ツリーポリシー」も用いる。
Chapter2 ディープラーニング~囲碁AIは瞬時にひらめく~
本章は、アルファ碁の「直感」を担うディープラーニングの解説。
- ディープラーニングは4層以上のニューラルネットワークによる機械学習のことである。
- 画像認識には、畳み込みニューラルネットワーク (CNN, Convolutional Neural Network)がよく用いられる。
- CNN においては、フィルタという部分構造を平行移動させながら畳み込み計算を行う。
- CNN で用いられるフィルタ重みは、機械学習によって決める。
- アルファ碁において「次の一手」を決める CNN は「SL (Supervised Learning) ポリシーネットワーク」と呼ばれる。
盤面を色付き画像(ただし、色としては白黒だけでなく、そこに打つと石を取れるかとか取られるかとかいったような情報も含める)とみて、強い人の棋譜を教師として学習する。深さは 13 層で、フィルタは各層に 192 種類ずつある。
- SLポリシーネットワークの強いプレーヤーとの手の一致率はフィルタが192枚の時は55.7%、フィルタを256枚にすると57%まで上げられる。1章で説明したロールアウトポリシーよりもはるかに強くなっている。
- アルファ碁では局面評価のためのCNNであるバリューネットワークを作った。これはアルファ碁の最大の貢献とも言える。従来できなかった評価関数ができたことになる。構成はSLポリシーネットワークと類似である。ただし、学習データに工夫が必要で、第3章で改めて説明する。
Chapter3 強化学習~囲碁AIは経験に学ぶ~
本章は、アルファ碁を対局によって「経験」的に学ばせる強化学習の解説。
- 強化学習には何通りもの方法がある。単純な問題から順に見てゆく。
- 多腕バンディット問題(複数腕のあるスロットマシーンで、腕ごとに当たりの確率が決まっているもの)を考えてみると、
探査と利用のトレードオフ (exploration-exploitation tradeoff) が重要であることがわかる。
その解決策として UCB1 アルゴリズムが知られている。
- 迷路問題で考えると、方策を決めるための学習方法には、価値ベースのものと方策ベースのものがある。
- 価値ベースの手法では、行動価値関数を求める。行動価値関数は、状態と行動の関数として価値を与える。
価値は報酬である。Q学習では、次のマスの価値を見て今いるマスの価値を増やす。最初、価値はゴールにのみ置かれている。
学習の経過とともにそれがスタートまで拡散してゆく。学習過程においては、おおむね価値最大の方策を採るが、小さな確率でそうでない方策も採ってみる。
- 方策ベースの手法では、方策関数を求める。方策関数は、ある状態でどの行動を取るかの確率である。
方策勾配法では、エピソード(スタートからゴールまでの行動)ごとに採用した行動の確率を高める。
すなわち、ゴールにたどり着いた径路に含まれる行動の確率を上げてゆく。
- テレビゲームのように複雑になると、状態と行動の組が極めて多いので、その関数を決めるのは難しい。
その代わりに、畳み込みニューラルネットワーク (CNN) を用いて、
画面から行動を出力するような価値関数を決める学習をするのが、DQN (Deep Q Learning) である。
- アルファ碁では、SL ポリシーネットワークに対して強化学習を用いてRL (Reinforcement Learning) ポリシーネットワークを作っている。
一手ごとに報酬を決めるのは難しいので、一ゲームごとの勝敗を報酬とする。そこで、方策勾配法を用いることになる。
アルファ碁は、囲碁のように手数が長くても勝敗を報酬とする強化学習が可能であることを示したことが画期的。
- RL ポリシーネットワークは、バリューネットワークのための学習データを作るときに用いられている。
第4章 探索~囲碁AIはいかにして先読みするか~
本章は「アルファ碁」の「読み」を支えるモンテカルロ木探索の解説。
- 従来、コンピュータにゲームを読ませるときは、基本的には「しらみ潰し探索」が行われてきた。
囲碁や将棋のように交互にプレーするゲームでは「ミニマックス探索」という形になる。
- 単純にミニマックス探索をやると、枝の数が読みの深さに対して指数関数的に増えるので、
「枝刈り」や重要な手を負く読む「深さ延長」をどううまく行うかが肝心。
- 囲碁AIでは、2006年に「モンテカルロ木探索」というブレークスルーがあった。
- まず、「原始モンテカルロ」は、ランダムにプレイアウトしたときに勝つ確率が高い手を選ぶという手法である。
- 重要な改良として、有望な手をより深く探索するようにしたものを「モンテカルロ木探索」という。
- そのほかにも、手の選択をランダムにするのではなくてロールアウトポリシーやツリーポリシーを使うようにするとか、
展開する子ノードの数を絞り込むとかいったいろいろな改良方法がある。
- Crazy Stone が強くなったのは、プレイアウトの返り値を「地の大きさの差」ではなくて「勝敗」にしたことにあるという。
それによって、必ずしも最善手を打つのではなく、勝ちそうなときは安全勝ちを目指し、負けそうなときは勝負手を放つようになった。
- モンテカルロ木探索は、正確で長い読みが必要な場面(攻め合いなど)は苦手である。
第5章 アルファ碁の完成~囲碁AIはいかにして先読みするか~
本章では、「アルファ碁」においてこれまで説明してきた技術がどう組み合わされているかを解説する。
- 基本は「モンテカルロ木探索」なのだが、これにポリシーネットワークとバリューネットワークを組み合わせた
「非同期方策価値更新モンテカルロ木探索 (APV-MCTS)」という方法を用いる。
- 子ノードをたどるときに、SL ポリシーネットワークによる事前確率を加味することで、有力な手を深く展開するとともに、
ありそうにない手を探索しないようにする。
- 勝率の評価は、バリューネットワークの勝率とプレイアウトによる勝率を適宜平均することで、精度を上げる。
- アルファ碁では 1202 個の CPU と 176 個の GPU を用いている。CPU にはモンテカルロ木探索をさせる。
GPU には SL ポリシーネットワークとバリューネットワークの計算をさせる。
- 並列化を効率よく行うために、ロックレスハッシュとかバーチャルロスとかいったような技術が用いられる。
- アルファ碁はモンテカルロ木探索という確率的探索がベースなので、攻め合いとか劫には弱いかもしれない。