流し読みだとちゃんと分からなかったのでメモ。
準備(AlphaGo)
- policy network : 盤面とその特徴量を入力として受け取り、各マスに打つ確率を返すニューラルネット。
- value network: 盤面とその特徴量を入力として受け取り、その盤面での勝率を返すニューラルネット。
AlphaGo ではまず policy network をプロの棋譜データから教師あり学習で事前学習させ、その後自己対戦による強化学習によってさらに改善させていく。
AlphaGo の強化学習パート
- 教師あり学習後の policy network のパラメータ から学習をスタートする。自己対戦の結果から policy network のパラメータは随時更新されていく。それらを とする。 回目の自己対戦では、現在のパラメータ と、それより以前のパラメータ と対戦が行われる。
- 実際には、毎試合ごとにパラメータを保存していたら量が膨大になって大変なので、パラメータの保存は一定反復ごとに行われる。
- パラメータの更新は REINFORCE アルゴリズムによって行われる。パラメータの更新幅 は以下の式で表される。ここで、 は学習率、 は自己対戦が終了するまでにかかったステップ数、 と はそれぞれ自分が ステップ目に取った行動値と状態、 は をパラメータとする policy network の出力値、 はその対局で自分が勝利したなら 、敗北したなら となるような報酬値、 は分散を小さくするために用いられるベースラインと呼ばれる値。
Zero の学習方法
次に Zero について。自己対戦部分に関連する違いとして、AlphaGo では policy network と value network は別々のものだったが、Zero ではこれらが1つのネットワークに統一され、ニューラルネットの構成に変更が加えられている。したがって、AlphaGo では policy network と value network の訓練は別々の段階で行われたのに対して、Zero では同一の訓練ループ内で最適化される。
Zero でも自己対戦を行うが、以下のような点が AlphaGo と異なっている。
考察
ちょっと自信が無いけど次のような理解で合っているだろうか?
- AlphaGo では自己対戦中に打つ手はサンプリングによるものだったため更新時の分散が大きそうだったが、Zero では探索結果を直接教師データみたいにして を学習しているため分散が小さそう。これにより、安定したパラメータの更新をするのに必要なサンプル数が少なくて済みそう。
- の学習についても、サンプリングよりも探索結果の方が判断としての質が高いので、初期の段階から確度の高い情報を教師データに用いられるというメリットがありそう。
- AlphaGo では policy network の学習部分と探索アルゴリズム部分は分離していた(研究の流れ的にも、根本となるアルゴリズムに MCTS がありその評価関数としてできるだけ質の良いものを作りたいというモチベだったように思う)が、Zero になって学習の過程に探索アルゴリズムが直接入るようになった。これにより、よりテスト時に一貫性のある方策を取れるようになってそう。