TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

AlphaGo Zeroの論文を読む

今日のAlphaGo Zeroのニュースは衝撃でした。

将棋AIで方策勾配で強化学習を行ったときは、発散してうまくいかなかったので
教師データで最初に訓練が必要と思っていました。
それが、自己対局のみで強くできるとは驚きです。

論文が公開されたので、使われたテクニックを調べていきたいと思います。

Mastering the game of Go without human knowledge | Nature

まだ全部読んでいませんが、ざっくり初めの方を読んで以下の特徴があるようです。

  1. PolicyとValueを1つのネットワークで出力する
  2. Batch Normalisationと非線形の活性化関数を使用したResidual Network(ResNet)
  3. モンテカルロ木探索による自己対局で生成した各局面の打ち手と、勝敗結果を訓練データに使用する
  4. モンテカルロ木探索はノードを1回訪問したら展開する
  5. rolloutは使用しない
  6. 訓練の損失関数にはValueの平均二乗誤差とPolicyの交差エントロピー損失の和を同じ重みで使う
  7. 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の開発日記