今日のAlphaGo Zeroのニュースは衝撃でした。
将棋AIで方策勾配で強化学習を行ったときは、発散してうまくいかなかったので
教師データで最初に訓練が必要と思っていました。
それが、自己対局のみで強くできるとは驚きです。
論文が公開されたので、使われたテクニックを調べていきたいと思います。
Mastering the game of Go without human knowledge | Nature
まだ全部読んでいませんが、ざっくり初めの方を読んで以下の特徴があるようです。
- PolicyとValueを1つのネットワークで出力する
- Batch Normalisationと非線形の活性化関数を使用したResidual Network(ResNet)
- モンテカルロ木探索による自己対局で生成した各局面の打ち手と、勝敗結果を訓練データに使用する
- モンテカルロ木探索はノードを1回訪問したら展開する
- rolloutは使用しない
- 訓練の損失関数にはValueの平均二乗誤差とPolicyの交差エントロピー損失の和を同じ重みで使う
- L2正則化をする
Methodに自己対局と訓練方法について、かなり詳細に書かれていますので、
理解した内容を少しずつ書いていこうと思います。
おそらくこの方法は将棋AIにも応用可能と思われます。
PolicyとValueを1つのネットワークで出力すのは、
自分の将棋AIでも行っていて効果を確かめていましたが、
別々のネットワークの方が実は良いのではと思っていましたので、
自信が得られました。
モンテカルロ木探索の部分はrolloutを使わず1回で展開するのは、
自分の将棋AIと基本は同じ方法ですが、
ボルツマン分布の温度パラメータを動的に変えているようです。
将棋でも効果があるか実験したいところです。
続く。。。
AlphaGo Zeroの論文を読む その2(ネットワーク構成) - TadaoYamaokaの開発日記
AlphaGo Zeroの論文を読む その3(探索アルゴリズム) - TadaoYamaokaの開発日記
AlphaGo Zeroの論文を読む その4(自己対局) - TadaoYamaokaの開発日記
AlphaGo Zeroの論文を読む その5(ドメイン知識) - TadaoYamaokaの開発日記