途中で挫折しそうだったこのシリーズ…。
Alpha Go Zeroの論文の翻訳 その3
の続きでございます。
またまた、間違いなどありましたら、指摘してください。m(_ _)m
原文はこちら。
https://www.nature.com/articles/nature24270.epdf
論文本体はもう翻訳し終わってますが、付録みたいなのがまだでした。
今回は、その付録
METHODS
の翻訳です。
ハァハァ(´Д`)ハァ… がんばろう…!!
Reinforcement learning
ポリシーの繰り返しは、昔からあるアルゴリズムで、ポリシーを改善する一連の流れである。
どのように実現するかというと、ポリシーの測定と、ポリシーの改善(ポリシーの測定を使う)を繰り返し行って、ポリシーを改善していくのである。
ポリシー改善のシンプルなアプローチ方法としては、どん欲にバリュー関数に沿って、手を選んでいくというのがある。
広大な選択肢の空間では、大体でやる、というのが必須である。
分類をベースとした強化学習はシンプルなモンテカルロ探索を使ってポリシー改善をしている。
ゲームを最後まで行ってみる。平均的に価値が最大になる手だけが正の値で、それ以外の手は負の値として、トレーニングのサンプルが記録される。
こうやって、ポリシーは手を正か負かに分類さて、次のゲームに使われる。
このやり方の後継版のようなことを、Alpha Go Zeroでも、γが0に近い場合、ポリシー部分のトレーニングアルゴリズムで使っている。
最近の例で行くと、分類ベースのポリシー改善は(CBMPIというらしい)、ポリシーの測定をゲームの結果に向かって回帰するバリュー関数で行っている。(これもAlpha Go Zeroでやっていることに近い)
この手法は、テトリスなどでは非常に良い結果を残している。
しかし、これらの研究結果はシンプルなゲーム結果とか手作りの近似的な関数に頼っていた。
Alpha Go Zeroのセルフプレイのアルゴリズムは、前述のやり方によく似ている。
ポリシーの改善は、ニューラルネットワークのポリシーで始まり、MCTSベースのポリシーの推薦と、より強いポリシーを探索してまたニューラルネットワークに返す。
これらのステップはニューラルネットワークをトレーニングして、探索の確率を、セルフプレイの結果に近づけていくことにより達成される。
グオさんは、同じくMCTSの結果をニューラルネットワークに入れることを試みた。
探索結果に回帰するバリューネットワークを使うか、MCTSによる分類のどちらかによってである。
この試みは、アタリのゲームをニューラルネットワークを使って解くことに使われた。しかし、MCTSが固定されていて、ポリシーの反復がなかったことと、訓練されたニューラルネットワークを利用していなかった。
Self-play reinforcement learning in games.
我々のアプローチは、完全情報ゲームで、ゼロサムゲームには直接応用ができるだろう。
その後の一文、ちょっと意味がわかんなかったです。(^_^;
We follow the formalism of alter nating Markov games described in previous work12, noting that algorithms based on value or policy iteration extend naturally to this setting39.
セルフプレイ+強化学習という手法は、以前も碁につかわれたことがある。
「ニューロ碁」はバリュー関数にニューラルネットワークを使っていたし、碁の知識をベースにした洗練されたアーキテキチャーを持っていた。
このニューラルネットワークは、タイミングをずらした学習で、セルフプレイの次の手でのテリトリー(碁の陣地のことでしょうね)を予想していた。
関連した試みで、「RL碁」はバリュー関数を線形の組み合わせではなく、3×3の石の置き方のパターンを数え上げる方法だった。そのニューラルネットワークはタイミングをずらした学習で、セルフプレイの勝者を予想するというものだった。
「ニューロ碁」も、「RL碁」も、弱いアマチュアのレベルにしかならなかった。
MCTS自体もセルフプレイの強化学習ともいえる。
探索木のノードはポジションに応じたバリュー関数を持っている。これらのバリューはセルフプレイのシミュレーションでの勝者を予想する。
MCTSのプログラムは碁ではそれなりに強いアマチュアレベルまでは達成している。しかし、それは手作りの早くゲームを終わらせる関数を作ったりしていて、ポリシーも手作りの関数でできている。
セルフプレイの強化学習のアプローチは、チェス、チェッカー、バックギャモン、オセロ、スクラブル、つい最近ではポーカーで非常によいパフォーマンスを残している。
すべての例で、バリュー関数は回帰、あるいはタイミングをずらした、セルフプレイの結果による学習でトレーニングされている。
トレーニングされたバリュー関数は、アルファ・ベータサーチ(シンプルなモンテカルロ探索)あるいはの counterfactual regret minimization中で評価関数として使われる。
しかし、これらの手法は手作りの特徴入力を使ったり、手作りの特徴のテンプレートを使ったりしている。
加えて、学習のプロセスで教師あり学習を最初の「重み」を算出するために使ったり、手作業でコマの価値を出したり、手作業で手の制限をしたり、すでにある別のプログラムを使って敵手の戦績を作ったりしている。
最も成功し、広く使われている強化学習の手法は、ゼロサムゲームの分野で、最初に登場した。それは、タイミングをずらした学習で、最初にチェッカーのプログラムで使われた。一方で碁にはMCTSがつかわれていた。
しかし、似たようなアルゴリズムは、その後ビデオゲームやロボティクスや、産業用、レコメンデーションシステムなどで使われた。
AlphaGo versions.
我々は、Alpha Goの3つのバージョンを比べてみることにする。
(1)AlphaGo Fanは以前公開したプログラムで、ファン フイさんと2015年に対戦したプログラム。176GPUも使っていた。
(2)AlphaGo Leeは2016年3月にリーセドル氏に4-1で勝利したプログラム。
これは公開していないが、AlphaGo Fanとだいぶ似ている。しかし、公正な比較のためにいくつかのカギとなる違いを上げておく。
最初に、バリューネットワークは、ポリシーネットワークによるものではなく、素早いゲームの結果によってトレーニングされていた。
これらは何度も繰り返される。
次に、ポリシーとバリューのネットワークは、もともとの論文に書かれているより大きい。
256個の平面のレイヤーのある、12個の畳み込みネットワークと、さらに反復回数が多かった。
このバージョンはGPUでなく、48TPUを利用し、探索の間にニューラルネットワークをより早く評価できるようになっていた。
(3) AlphaGo Masterは2017年の1月に人間のトッププレーヤーを60-0で負かしたプログラムである。
このプログラムは公開されておらず、この論文に載っているのと同じニューラルネットワークと、強化学習とMCTSのアルゴリズムを使っている。しかし、まだ手作りの特徴とAlpha Go Leeと同じゲームを最後まで行う手法、そしてトレーニングは教師あり学習により初期化されていた。
(4) AlphaGo Zero この論文のプログラムである。セルフプレイの強化学習であり、ランダムな重みを最初に使い、ゲームを最後まで行わず、教師は必要ない。ただ単に、ボードの状態があればよいのである。Google Cloud上のたった4TPUしか使わない。
まだ続くよ!