TadaoYamaokaの開発日記

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

MuZeroの論文を読む その9(訓練)

付録G 訓練

  • 訓練中に、MuZeroネットワークはK個の仮想ステップに対して展開され、MCTSアクターによって生成された軌跡からサンプリングされたシーケンスに合わせられる。
  • シーケンスは、リプレイバッファ内の任意のゲームから状態をサンプリングし、その状態からKステップ分展開することで選択される。
  • Atariでは、サンプルは優先度P(i) = \frac{p_i^\alpha}{\sum_k{p_k^\alpha}}の優先度付き経験再生*1に従って再生される。ここで、p_i = |\nu_i - z_i|、𝑣は探索価値、𝑧は観測されたnステップ収益である。
  • 優先サンプリングによって導入されたサンプリングバイアスを修正するために、重要度サンプリング比w_i = (\frac{1}{N} \cdot \frac{1}{P(i)})^\betaを使用して損失をスケーリングする。
  • すべての実験で、\alpha = \beta = 1に設定する。
  • ボードゲームの場合、状態は均一にサンプリングされる。
観測値、損失
  • シーケンスに沿った各観測値には、対応するMCTSポリシー\pi_t、推定値\nu_t、環境報酬u_tもある。
  • 展開された各ステップkで、ネットワークはそのステップの価値、方策、および報酬目標に損失があり、合計するとMuZeroネットワークの合計損失となる(式1を参照)。

\displaystyle
\begin{align}
l_t(\theta) &= \sum_{k=0}^K l^r (u_{t+k}, r_t^k) + l^v(z_{t+k}, v^k_t) + l^p(\pi_{t+k}, \mathbf{p}^k_t) + c ||\theta||^2
\label{muzero_eqn}
\end{align}
\tag{1}

  • 中間報酬のないボードゲームでは、報酬予測の損失を省略していることに注意する。
  • ボードゲームの場合、ゲームの最後まで直接ブートストラップする。それは、最終結果を予測するのと等しい。 Atariの場合、n=10ステップ先までブートストラップする。
勾配のスケーリング
  • 異なる展開手順でほぼ同様の勾配の大きさを維持するために、2つの別々の場所で勾配をスケーリングする。
    • 各ヘッドの損失を\frac{1}{K}でスケーリングする。ここで、Kは展開ステップの数である。 これにより、展開するステップ数に関係なく、勾配の合計が同じ大きさになることが保証される。
    • また、ダイナミクス関数の開始時の勾配を\frac{1}{2}にスケーリングする。 これにより、ダイナミクス関数に適用される勾配の合計が一定に保たれる。
論文での設定
  • この論文で報告されている実験では、常にK=5ステップで展開する。
  • 詳細な図については、図1を参照。

f:id:TadaoYamaoka:20191121214604p:plain

隠れ状態のスケーリング
  • 学習プロセスを改善し、アクティベーションを制限するために、隠れ状態を行動入力と同じ範囲([0, 1])にスケーリングする:s_{scaled} = \frac{s - \min(s)}{\max(s) - \min(s)}
ハードウェア
  • すべての実験は、第3世代のGoogle Cloud TPUを使用して実行された。
  • ボードゲームごとに、訓練用に16個のTPUを使用し、自己対局用に1000個のTPUを使用した。
  • Atariの各ゲームでは、訓練に8 TPUを、セルフプレイに32 TPUを使用した。
  • Atariでセルフプレイに使用されるTPUの割合がはるかに少ないのは、1回の動きのシミュレーション回数が少なく(800ではなく50)、表現関数に比べてダイナミクス関数のサイズが小さいためである。
感想

付録Gでは訓練の詳細について述べられています。

Atariではリプレイバッファからサンプリングする際に優先度付き経験再生が使用されていますが、ボードゲームでは使用していない理由について気になります。
優先度付き経験再生を使用すると逆効果なのか、効果が小さかったのかもしれません。
私が作っている将棋AIでもそのうち実験したいと思っています。

損失には3種類あり、AlphaZeroにはなかった報酬目標の損失が加わっています。しかし、中間報酬ボードゲームでは使用されず、Atariのみで使用されています。
価値の損失は、ボードゲームではブートストラップされず(モンテカルロ法)、Atariでは10ステップ先でブートストラップしています。
ボードゲームでもelmo式のように、モンテカルロ法と按分してブートストラップすることも有効だと思っていますが、そのうち検証してみたいと思っています。

使用しているハードウェアは、AlphaZeroでは学習用に第2世代TPU64、自己対局に第1世代3000でしたが、どちらも第3世代になっています。

次回は評価についてです。次で最後です。
(続く)