スペースインベーダーでのDeep Q-Learning
Deep Q-Learning(DQN)は、従来の Q テーブルをニューラルネットワークに置き換えることで、膨大な状態空間を持つ環境で強化学習エージェントが動作できるようにします。このアプローチにより、エージェントは Space Invaders のような Atari ゲームのプレイといった、状態数が表形式の手法では扱いきれないほど大きい複雑なタスクを学習できるようになります。
Q-Learning から Deep Q-Learning へ
従来の Q-Learning は、すべての可能な状態‑アクションペアの価値を格納する Q テーブルを使用する表形式の手法です。小規模な環境(例:14 状態の FrozenLake や 500 状態の Taxi‑v3)では有効ですが、複雑な環境へはスケールしません。
Atari 環境では、観測空間は (210, 160, 3) で、ピクセル値は 0 から 255 です。その結果、状態空間は $256^{100800}$ となります。このような膨大な状態数のテーブルを作成することは不可能なため、Deep Q-Learning はパラメータ化された Q 関数 $Q_{\theta}(s, a)$ を使用します――これは、状態が与えられたときに各可能なアクションの Q 値を近似するニューラルネットワークです。
Deep Q-Network(DQN)アーキテクチャ
DQN アーキテクチャは、前処理された 4 枚のフレームをスタックしたものを入力とし、各可能なアクションに対する Q 値のベクトルを出力します。エージェントはその後、ε‑greedy ポリシーを用いて、推定値が最も高いアクションを選択します。
入力前処理と時間情報
計算コストと学習時間を削減するために、入力フレームは以下の前処理を行います:
- ダウンサンプリングとグレースケール化:画像を 84×84 ピクセルに縮小し、グレースケールに変換して、3 つの RGB チャンネルを 1 つに減らします。
- クロッピング:画面の不要な部分を除去します。
- フレームスタッキング:時間的制限の問題を解決するために、連続する 4 枚のフレームをスタックします。単一のフレームだけでは動きを伝えることができません(例:Pong のボールの方向)。4 枚のフレームをスタックすることで、ネットワークは速度と方向を捉えることができます。
処理された入力は、フレーム間の空間的関係を活用する 3 つの畳み込み層を通過し、その後、最終的な Q 値を出力する全結合層へと続きます。
Deep Q-Learning アルゴリズム
標準的な Q-Learning が状態‑アクションペアを直接更新するのとは異なり、Deep Q-Learning は損失関数を用いて予測された Q 値と Q ターゲットとの差を計算します。その後、勾配降下法でネットワークの重みを更新し、損失を最小化します。
学習は以下の 2 つの交互フェーズで構成されます:
- サンプリング:エージェントはアクションを実行し、得られた経験タプル(状態、アクション、報酬、次の状態)をリプレイメモリに保存します。
- トレーニング:リプレイメモリからランダムに小さなバッチのタプルをサンプリングし、勾配降下更新を行います。
学習の安定化
非線形関数近似器(ニューラルネットワーク)とブートストラップを組み合わせると不安定になることがあります。DQN はこれを緩和するために、主に 3 つの解決策を実装しています:
1. Experience Replay
Experience Replay は、経験サンプルを再利用できるようにリプレイバッファに保存します。これにより主に 2 つの利点があります:
- 効率性:エージェントは同じ経験から複数回学習できます。
- デコリレーション:バッファからランダムにサンプリングすることで、ネットワークが最新の連続した経験だけを学習することを防ぎ、破滅的忘却を回避し、アクション価値が振動したり発散したりするのを防ぎます。
2. Fixed Q-Targets
基本的な Q-learning では、重みが更新されるたびにターゲット値が変化し、"移動ターゲット" の問題が生じて学習が振動します。DQN は、固定パラメータの別個のターゲットネットワークを使用して TD ターゲットを推定することでこれを解決します。ターゲットネットワークのパラメータは、$C$ ステップごとに Deep Q-Network と一致するように更新されます。
3. Double DQN
Double DQN は Q 値の過大評価に対処します。標準的な DQN では、次の状態の最大 Q 値をターゲット計算に使用しますが、ノイズの多い推定が最適でないアクションに高い値を与えると偽陽性が生じる可能性があります。Double DQN はアクション選択とターゲット生成を分離します:
- DQN ネットワーク が次の状態に対して最適なアクションを選択します。
- ターゲットネットワーク がその特定のアクションの Q 値を計算します。
この分離により過大評価が抑制され、より高速で安定した学習が実現します。