TF-Agents 0.4 Tutorials : RL と深層 Q ネットワークへのイントロダクション (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/15/2020 (0.4)
* 本ページは、TF-Agents の以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
RL と深層 Q ネットワークへのイントロダクション
イントロダクション
強化学習は一般的なフレームワークで、そこではエージェントは報酬を最大化するように環境でアクションを遂行することを学習します。2 つの主要なコンポーネントは環境、これは解かれるべき問題を表します、そしてエージェント、これは学習アルゴリズムを表します。
エージェントと環境は連続的に互いに相互作用します。各時間ステップで、エージェントはそのポリシー $\pi(a_t|s_t)$ に基づいて環境上でアクションを取ります、ここで $s_t$ は環境からの現在の観測で、そして報酬 $r_{t+1}$ と環境から次の観測 $s_{t+1}$ を受け取ります。目標は報酬 (リターン) の総計を最大化するようにポリシーを改良することです。
Note: 環境の状態と観測の間を区別することは重要です、観測はエージェントが見ることができる環境状態の一部です、例えばポーカーゲームで、環境状態は総てのプレーヤーに属するカードとコミュニティカードから成りますが、エージェントはそれ自身のカードと幾つかのコミュニティカードしか観測できません。殆どの文献で、これらの用語は同じ意味で使用されていて観測はまた $s$ として示されます。
これは非常に一般的なフレームワークで、ゲームやロボティクス等のような様々なシークエンシャルな意思決定問題をモデル化できます。
カートポール環境
カートポール環境は最も良く知られた古典的な強化学習問題の一つです (RL の “Hello, World!”)。ポールはカートに装着され、これは摩擦のないトラックに沿って移動できます。ポールは直立からスタートしてゴールはカートを制御してそれが倒れることを防ぐことです。
- 環境 $s_t$ からの観測はカートの位置と速度、そしてポールの角度と角運動速度を表す 4D ベクトルです。
- エージェント 2 つのアクションの 1 つ $a_t$ を取ることによりはシステムを制御できます : カートを右 (+1) or 左 (-1) に押します。
- 報酬 $r_{t+1} = 1$ はポールが直立し続ける総ての時間ステップのために提供されます。エピソードは以下の一つが真のときに終了します :
- ポールがある角度制限を越えて倒れる
- カートが世界の縁 (ふち) (= edge) の外へ移動する
- 200 時間ステップ通過。
エージェントの目標はエピソード $\sum_{t=0}^{T} \gamma^t r_t$ における報酬の総計を最大化するようにポリシー $\pi(a_t|s_t)$ を学習することです。ここで $\gamma$ は $[0, 1]$ の割引因子で即時報酬に比較して将来的な報酬を割り引きます。このパラメータはポリシーに報酬を素早く得ることにより注意させるのに役立ちます。
DQN エージェント
DQN (深層 Q-ネットワーク) アルゴリズム は 2015 年に DeepMind により開発されました。それは大規模に強化学習と深層ニューラルネットワークを組み合わせることにより広範囲な Atari ゲームを (超人的なレベル程度で) 解くことが可能でした。アルゴリズムは Q-学習と呼ばれる古典的な RL アルゴリズムを深層ニューラルネットワークと経験再生と呼ばれるテクニックで増強することにより開発されました。
Q-学習
Q-学習は Q-関数の考えに基づきます。ポリシー $\pi$ の Q-関数 (a.k.a. 状態-アクション値関数), $Q^{\pi}(s, a)$, は最初にアクション $a$ を取りその後ポリシー $\pi$ に従うことにより状態 $s$ から得られた期待されるリターンまたは報酬の割引された総計を測定します。最適な Q-関数 $Q^*(s, a)$ を観測 $s$ から始めて、アクション $a$ を取りそしてその後最適なポリシーに従うことにより得られる最大リターンとして定義します。最適な Q-関数は次の Bellman 最適方程式に従います :
$\begin{equation}
Q^*(s, a) = \mathbb{E}\left[ r + \gamma \max_{a’} Q^*(s’, a’)\right]
\end{equation}$
これは状態 $s$ とアクション $a$ からの最大リターンは即時報酬 $r$ とその後エピソードの最後まで最適ポリシーに従って得られた ($\gamma$ により割り引かれた) リターン (i.e., 次の状態 $s’$ からの最大報酬) の総計であることを意味します。期待値は即時報酬 $r$ と可能な次の状態 $s’$ の両者の分布に渡り計算されます。
Q-学習の基本的なアイデアは Bellman 最適方程式を反復更新 $Q_{i+1}(s, a) \leftarrow \mathbb{E}\left[ r + \gamma \max_{a’} Q_{i}(s’, a’)\right]$ として使用することで、そしてこれは $i \rightarrow \infty$ のとき最適な $Q$-関数, i.e. $Q_i \rightarrow Q^*$ に収束することを示すことができます (DQN ペーパー 参照)。
深層 Q-学習
殆どの問題に対して、$Q$-関数を$s$ と $a$ の各組み合わせのための値を含むテーブルとして表すことは実際的ではありません。代わりに、Q-値を推定するためにパラメータ $\theta$ を持つニューラルネットワークのような関数近似器, i.e. $Q(s, a; \theta) \approx Q^*(s, a)$, を訓練します。これは各ステップ $i$ で次の損失を最小化することにより成されます :
$\begin{equation}L_i(\theta_i) = \mathbb{E}_{s, a, r, s’\sim \rho(.)} \left[ (y_i – Q(s, a; \theta_i))^2 \right]\end{equation}$ ここで $y_i = r + \gamma \max_{a’} Q(s’, a’; \theta_{i-1})$
ここで、$y_i$ は TD (時間差分) ターゲットと呼ばれ、そして $y_i – Q$ は TD 誤差と呼ばれます。$\rho$ は動作分布を表します、環境から収集された遷移 $\{s, a, r, s’\}$ に渡る分布です。
前の反復 $\theta_{i-1}$ からのパラメータは固定されて更新されないことに注意してください。実際に最後の反復の代わりに前の幾つかの反復からネットワークパラメータのスナップショットを使用します。このコピーはターゲットネットワークと呼ばれます。
Q-学習は greedy ポリシー $a = \max_{a} Q(s, a; \theta)$ について学習する一方で、環境/データ収集での行動のために異なる動作ポリシーを使用するオフポリシー・アルゴリズムです、この動作ポリシーは通常は $\epsilon$-greedy ポリシーです、これは状態-アクション空間の良い到達範囲を確かなものにするために確率 $1-\epsilon$ で greedy アクションをそして確率 $\epsilon$ でランダムアクションを選択します。
経験再生
DQN 損失の完全な期待値を計算することを回避するため、確率的勾配降下を使用してそれを最小化できます。損失が最後の遷移 $\{s, a, r, s’\}$ だけを使用して計算される場合、これは標準的な Q-学習に帰着します。
Atari DQN ワークはネットワーク更新をよりステーブルにするために経験再生と呼ばれるテクニックを導入しました。データ収集の各時間ステップで、遷移は再生バッファと呼ばれる循環バッファに追加されます。それから訓練の間、損失とその勾配を計算するために最後の遷移だけを使用する代わりに再生バッファからサンプリングされた遷移のミニバッチを使用してそれらを計算します。これは 2 つの優位点を持ちます : 多くの更新で各遷移を再利用することでより良いデータ効率性、そしてバッチで無相関の遷移を使用してより良い安定性。
TF-Agents のカートポール上の DQN
TF-Agents はエージェント自身、環境、ポリシー、ネットワーク、再生バッファ、データ収集ループそしてメトリクスのような、DQN エージェントを訓練するために必要な総てのコンポーネントを提供します。これらのコンポーネントは Python 関数または TensorFlow グラフ ops として実装されていて、それらの間で変換するためのラッパーも持ちます。更に、TF-Agents は TensorFlow 2.0 モードをサポートします、これは TF を命令モードで利用することを可能にします。
以上