Aidemy Tech Blog

機械学習・ディープラーニング関連技術の活用事例や実装方法をまとめる、株式会社アイデミーの技術ブログです。

【初心者】でもわかる、最近巷で有名な"AlphaGo Zero"の仕組み

こんにちは、たくやです。

今回はちょっと旬を逃してしまった感はありますが、とても話題となったAiphaGo Zeroの仕組みについてプログラミング初心者にもわかるような解説をしていきたいと思います。

 

・ニュース概要

  • AlphaGoが過去のAI囲碁ソフトと違うところは、人間のうち筋をデータとして与えなかったこと。
  • 自身が相互対戦することで最善手を学習する手法を3日間に500万回繰り返させることで棋力を向上させた。
  • AlphaGo Zeroはトップ棋士を打ち負かして驚かせた「AlphaGo」に対して100戦全勝、その改良版である「Alphago Master」にも100戦中89勝した。

 

natureのAlphaGo Zeroに関する論文である"Mastering the game of Go without human knowledge"(人間の知識なしに碁を制する。)

https://www.nature.com/articles/nature24270.epdf?author_access_token=VJXbVjaSHxFoctQQ4p2k4tRgN0jAjWel9jnR3ZoTv0PVW4gB86EEpGqTRDtpIz-2rmo8-KG06gqVobU5NSCFeHILHcVFUeMsbvwS-lxjqQGg98faovwjxeTUgZAUMnRQ

を簡単に噛み砕いて説明していきたいと思います。

複雑な数式や専門用語などはできるだけ取り扱いません。

 

まず、これほどまで圧倒的な強さを手に入れたAlphaGo Zeroが前のバージョンであるAlphaGo Lee12やAlphaGo Fanと異なる点をもう少し技術的な面から説明していきます。

あげられる点は以下の4点。

 

  1. 人間のデータを監督したり使用したりすることなく、ランダムプレイから始まる自己再生強化学習のみによって訓練される。
  2. 移動確率を出力するPolicy Networkと位置評価を出力するValue Networkを別々にするのではなく、単一のニューラルネットワークで使用する。(前バージョンではPolicy NetworkValue Networkという二つのディープニューラルネットワークを使用していた。)
  3. 迅速な改善と正確で安定した学習をさせるために、訓練ループ内にルックアヘッド検索を組み込んだ新しい強化学習アルゴリズムを導入した。
  4. モンテカルロ法のロールアウト(その盤面から全ての打ち方を試して、その結果どの打ち方がいいのかを判断する方法)をやめ、モンテカルロ木探索のみにした。(このことが使用するマシンパワーの圧倒的削減に貢献している。)

 

これらについて、解説していきます。

 

AlphaGoZeroが学習時に基本的にやっていることはモンテカルロ木探索です。

*モンテカルロ木探索とは

例えばAとBという場所のどちらに石を置くかを考えるとき、Aに石を置いたとき、Bに石を置いた時、それぞれ、その先対局を続けていった時に何パーセントの確率で勝てるのかを評価することでA,Bどちらに石を置くかを決定する手法です。

                              f:id:meteoputi:20171103124137p:plain


 

ただし、そのモンテカルロ木探索にディープニューラルネットワーク(DNN)を組み合わせてあります。

ディープニューラルネットワークがわからない方はこちらをお読みください。

今話題のディープラーニングって一体なんなの? 文系から見た人工知能

 

つまり、石の配置履歴を取り込んで、自己対戦により移動確率を出力するPolicy Networkを、モンテカルロ木探索を使用して求めた次に打たれる可能性のあるそれぞれの手に対する評価値(仮にそこに石を置いた場合の勝率の確率)に反映します。なぜ、最初から自己対戦による移動確率だけで次に打たれる手を考えないのかというと、モンテカルロ木探索を用いることで、より良い一手が発見される可能性があるからです。

それとほぼ同時に、自己対戦の終局図から勝敗を判定し、位置評価を出力するValue Networkの教師として反映します。

Policy(どこに石を置くか)← モンテカルロ探索木

Value(盤面の評価値)← 試合の勝敗

 

よって取り扱われるデータは、

・Policy(移動可能性)

・Value(位置評価)

・最後にわかるどちらが勝ったかというデータ 

の3つだけになります。

                     f:id:meteoputi:20171103123642p:plain

 

*モンテカルロ木探索を用いるのはあくまで学習時だけで、実際に対局する際はニューラルネットの出力のみで判断するので、本番での計算速度が向上しました。

 

さらに詳しくみていきましょう。

AlphaGo Zeroのモンテカルロ木探索は3つのステップに分けることができます。

(次にどこに石を置くかを決める段階なので、まだ実際に石は動かしていません。)

  1. 選択
  2. 拡張と評価
  3. バックアップ

1の ”選択” では一番最初の配置からある程度、ゲームを進めていった配置まで、評価値が高いところに石を置いていきます。

2の ”拡張と評価” では1の操作でゲームが終了しなかった場合、その最後の時の盤面をDNNにインプットして、その時点で勝てる確率と、その次の手の確率分布を計算します。(AlphaGo Zero ではモンテカルロ木探索で1600回のシミュレーションを行ったため、一手を考えるのに0.4秒かかりました。)

3の "バックアップ " では2の最終盤面で得られた評価値の平均を元々の盤面に反映します。それの平均値が元々の盤面の新しい評価値となります。

 

1〜3のステップを通して導き出した最良の手を選択します。

 

しかし、ここで「教師となるデータもないのに、どのデータを元に学習をさせているんだ」という疑問が生まれると思います。

従来のAlphaGoではここに人間のプロ棋士のうち筋を用いていました。

しかし、AlphaGo Zeroでは自己対局を繰り返すことによってデータを作り出しているのです。

最初はもちろん、全てランダムで行うために、文字通り”ゼロ”からの成長になります。

 

今まで説明してきたことを図にしてまとめます。

f:id:meteoputi:20171103142800p:plain

 

最後にこのAlphaGo Zeroのすごさを端的に表している画像があるので紹介します。

f:id:meteoputi:20171103135436j:plain

上の画像は横軸に何日AlphaGo Zeroをトレーニングしたか。

縦軸に、強さを数値化したものを取っています。

3日トレーニングした時点でもう既に2016年元世界チャンピオンのイ・セドル氏を倒したAlphago Leeの強さのレベルに達していることわかります。

f:id:meteoputi:20171103140107p:plain

しかも消費するマシンパワーはAlphaGo LeeやAlphaGo Fanに比べて圧倒的に低いことがこの図からもわかります。

 

人類はこれまで4千年もの時をかけて、数百万の碁の試合をし、それをパターンとして色々な本にまとめてきました。しかし、AlphaGo Zeroはそのほとんどの知識を発見し、それに加え斬新な戦略までも見つけ出しました。

中には、将来、AIが人間よりも優れた発明能力を身につけてしまうのではないかと恐れる方もいるかもしれません。しかし、局面が変わるに従って変化する戦略をどのように数値化し、反映させるのかプログラムするのは、あくまで人間なのです。このAIの圧倒的な自己学習能力を人間がうまく使うことで、人間の能力を拡張させるツールとして使うこともできるのです。

 

参照

http://toyokeizai.net/articles/-/194179

http://blog.livedoor.jp/yuno_miyako/archives/1068350228.html

https://www.slideshare.net/suckgeunlee/alphago-zero