TadaoYamaokaの開発日記

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

Agent57: Outperforming the Atari Human Benchmarkを読む その12

付録E. 分散設定の実装の詳細

リプレイバッファー

  • 固定長の遷移\xi=(\omega_s)_{s=t}^{t+H-1}のシーケンスと優先度p_\xiを格納する。
  • 遷移は\omega_s=(r^e_{s-1}, r^i_{s-1}, a_{s-1}, h_{s-1}, x_s, a_s, h_s, \mu_s, j_s, r^e_{s}, r^i_{s}, x_{s+1})の形式である。
  • このような遷移はタイムステップとも呼ばれ、シーケンスHの長さはトレース長と呼ばれる。
  • さらに、リプレイバッファー内の隣接するシーケンスは、リプレイ期間と呼ばれるいくつかのタイムステップでオーバーラップし、シーケンスがエピソードの境界を越えることはない。
  • 遷移の各要素について説明する。
    • r^e_{s-1}:前回の外発的報酬
    • r^i_{s-1}:前回の内発的報酬
    • a_{s-1}:前回エージェントが行った行動
    • h_{s-1}:前回のリカレント状態(この場合はLSTMの隠れ状態)
    • x_s:現在の環境によって提供される観測
    • a_s:エージェントが現在行っている行動
    • h_{s}:現時点でのリカレント状態(この場合はLSTMの隠れ状態)
    • \mu_s:行動a_sを選択する確率
    • j_s=j:マルチアームバンディットアルゴリズム(シーケンス全体で固定)によって各アクターのエピソードの開始時に選択されたペア(\gamma_{j}, \beta_{j})のインデックス
    • r^e_s:現在の外発的報酬
    • r^i_s:現時点での内発的報酬
    • x_{s+1}:次回の環境によって提供される観測
  • 私たちの実験では、再生期間80のトレース長160または再生期間40のトレース長80を選択する。
  • トレードオフの詳細な実験については、(Kapturowski et al., 2018)を参照してほしい。
  • 最後に、優先度に関して、優先度指数\eta= 0.9のシーケンスのTD誤差の最大値と平均値の混合を使用して、Kapturowskiらによって提案された同じ優先順位付けスキームに従った。

アクター

  • L個の各アクターは、ラーナーと同じネットワークアーキテクチャを共有するが、重み\theta_lが異なり、0 \leq l \leq L-1である。
  • l番目のアクターは、ラーナーの重みをコピーして、400フレームごとに重み\theta_lを更新する。
  • 各エピソードの初めに、各アクターは、マルチアームバンディットアルゴリズムを介して、ペア(\{\beta_j, \gamma_j)\}_{j=0}^{N-1}のファミリーのペア(\gamma_j, \beta_j)を表すインデックスjを選択する。
  • また、リカレント状態はゼロに初期化される。
  • 行動するために、アクターは、Q(x_t, ., j; \theta_l)で示されるすべての行動の状態行動価値を計算するために、ネットワークでフォワードパスを実行する必要がある。
  • これを行うには、ネットワークの入力は次のとおりです。
    • x_t:時間tの観測
    • r^e_{t-1}r^e_{-1}=0で初期化された、前回の外発的報酬
    • r^i_{t-1}r^i_{-1}=0で初期化された、前回の内発的報酬
    • a_{t-1}:前回の行動、a_{-1}はランダムに初期化される
    • h_{t-1}:前回のリカレント状態、h_{-1}=0で初期化される
    • j_{t-1}=j:マルチアームバンディットアルゴリズムによって選択されたペア(\beta_j, \gamma_j)のインデックス(すべてのエピソードで固定)
  • 時間tで、l番目のアクターはQ(x_t, ., j; \theta_l)に関して\epsilon_l-greedyに行動する。

\displaystyle
\left\{
    \begin{array}{ll}
         \text{If: } U_t< \epsilon_l, a_t = Y_t, &\\
         \text{Else: } a_t = argmax_{a\in\mathcal{A}} Q(x_t, a, j; \theta_l),&
    \end{array}
\right.

  • ここで、U_t[0, 1]から均一に引き出されたランダムな値であり、Y_t\mathcal{A}から均一に引き出されたランダムな行動である。
  • したがって、a_tに関連する確率\mu_tは次のとおりである。

\displaystyle
\left\{
    \begin{array}{ll}
         \text{If: } U_t< \epsilon_l, \mu_t = \frac{\epsilon_l}{|\mathcal{A}|}, &\\
         \text{Else: } \mu_t = 1 - \epsilon_l\frac{|\mathcal{A}|-1}{|\mathcal{A}|},&
    \end{array}
\right.

  • ここで|\mathcal{A}|は行動空間の基数で、アタリゲームの場合は18である。
  • 次に、アクターは行動a_tを実行し、内発的報酬r^i_tを計算し、環境は次の観測x_{t+1}と外発的報酬r^e_tを生成する。
  • このプロセスは、エピソードの最後まで続く。


  • ノイズ\epsilon_lの値は、Horganらによって確立された同じ式に従って選択される。

\displaystyle
\begin{equation*}
   \epsilon_l = \epsilon^{1+\alpha\frac{l}{L-1}} 
\end{equation*}

  • ここで、\epsilon=0.4で、\alpha=8である。
  • この実験では、アクターの数をL=256に固定する。
  • 最後に、アクターは収集されたデータを優先順位と共にリプレイに送信する。

エバリュエーター

  • エバリュエーターは、ラーナーと同じネットワークアーキテクチャを共有するが、重み\theta_eが異なる。
  • エバリュエーターは、ラーナーの重みをコピーして、5エピソードフレームごとに重み\theta_lを更新する。
  • アクターとは異なり、エバリュエーターによって生成されたエクスペリエンスはリプレイバッファーに送信されない。
  • エバリュエーターは、5エピソードごとに次の状態を交互に切り替える。
    • レーニングバンディットアルゴリズムエバリュエーターは、マルチアームバンディットアルゴリズムを介して、ペア(\{\beta_j, \gamma_j)\}_{j=0}^{N-1}のファミリーのペア(\gamma_j, \beta_j)を表すインデックスjを選択する。 次に、前述のアクターと同じように動作する。 エピソードの最後に、割引されていないリターンを使用して、マルチアームバンディットアルゴリズムを訓練する。
    • 評価:エバリュエーターは、インデックスjの貪欲な選択argmax_{1\leq a \leq N} \hat{\mu}_{k-1}(a)を選択するため、(\gamma_j, \beta_j)で動作する。 次に、前述のアクターと同じように動作する。 5つのエピソードの最後で、他のモードに切り替える前に、それらの5つのエピソードの結果は平均で報告される。

ラーナー

  • ラーナーには、それぞれ異なる重み\theta\theta^-を持つオンラインネットワークとターゲットネットワークと呼ばれる2つの同一のネットワークが含まれている。
  • ターゲットネットワークの重み\theta^-は、1500の最適化ステップごとに\thetaに更新される。
  • 私たちの特定のアーキテクチャでは、重み\theta=\theta^e\cup\theta^iは、同じアーキテクチャを持つ固有の重み\theta^eと\theta^i]のセットに分解できる。
  • 同様に、\theta^-=\theta^{-,e}\cup\theta^{-, i}がある。
  • 内発的重みと外発的重みは、変換された独自のリトレース損失によって更新される。
  • \theta^eと\theta^i]は、次の一連の命令を実行することによって更新される。
    • 最初に、ラーナーは、サイズがBのバッチの固定長の遷移シーケンスDをリプレイバッファーからサンプリングする。
    • 次に、状態行動価値\{(Q(x^b_s,.,j^b; \theta^e), Q(x^b_s,.,j^b; \theta^{-,e}), Q(x^b_s,.,j^b; \theta^{i}), Q(x^b_s,.,j^b; \theta^{-,i}))_{s=t}^{t+H}\}_{b=0}^{B-1}を取得するために、オンラインネットワークと入力\{(x^b_s, r^{e, b}_{s-1}, r^{i, b}_{s-1}, j^b, a^b_{s-1}, h^b_{s-1})_{s=t}^{t+H}\}_{b=0}^{B-1}を持つターゲットでフォワードパスが実行される。
    • 付録Cに示すように、状態行動価値が計算されると、重み\theta^eと\theta^i]の各セットの変換されたリトレース損失L(D, \theta^e, \theta^{-, e}, \pi, \mu, r^e, h)L(D, \theta^i, \theta^{-, i}, \pi, \mu, r^i, h)を簡単に計算できるようになる。 ターゲットポリシー\piは、内発的状態行動価値関数と外発的状態行動価値関数の混合に変換h\left(h^{-1}(Q(x^b_s,.,j^b; \theta^e)) + \beta_{j^b_s}h^{-1}(Q(x^b_s,.,j^b; \theta^{i}))\right)を適用する場合、Q(x^b_s,.,j^b; \theta^e) + \beta_{j^b_s}Q(x^b_s,.,j^b; \theta^{i})に関して貪欲である。
    • 変換されたリトレース損失は、Adamオプティマイザーで最適化される。
    • NGUと同様に、内発的報酬の計算に必要な逆ダイナミクスモデルとランダムネットワーク蒸留損失は、Adamオプティマイザーで最適化される。
    • 最後に、サンプリングされた遷移のシーケンス\xi^bごとに優先度が計算され、再生バッファーで更新される。

使用される計算資源

  • ハードウェアの観点から、1つのGPUベースのラーナーを使用してエージェントを訓練し、1秒あたり約5つのネットワーク更新を実行する(長さ160の64シーケンスのミニバッチでそれぞれ更新)。 私たちは256のアクターを使用し、各アクターはAtariで毎秒約260環境ステップを実行する。