深層強化学習とDQN — Q表をニューラルネットに置き換える

Q学習は強力ですが、「表」で価値を覚えるやり方は状態が増えた瞬間に破綻します。表を関数(ニューラルネット)に置き換えるとき何が壊れるのか、DQN はそれを2つの工夫でどう抑えて Atari を攻略したのか — 動かしながら見ていきます。

1. Q表の限界 — 状態の数が爆発する

前章の Q学習は、「状態 × 行動」のマス目に Q値を書き込む表(テーブル)が主役でした。6×6 のグリッドワールドなら状態は 36 個。表は 36 行で済み、全マスを何度も訪ねて更新できます。

では、ゲーム画面のピクセルそのものを「状態」にしたら? 盤面や画面のように要素が組み合わさる世界では、状態数は掛け算で増えます。下のスライダーで課題の規模を変えて、Q表に必要な行数がどうなるか見てください。

Q表の行数はどこまで増えるか — 桁の爆発
横軸は桁数(対数)。それでも Atari の画面(84×84 ピクセル × 4 フレーム)は他のすべてを潰してしまいます。1019844 は画面を粗い階調に量子化した概算で、正確な値より「表はもう物理的に作れない」という規模感が要点。チェックを入れると、表がニューラルネット Q(s, a; θ) に置き換わります。

2. 表から関数へ — Q(s, a; θ) という発想

表のもうひとつの弱点は、マスどうしが完全に独立なことです。「敵が1ピクセル右にいる画面」と「元の画面」は別の行になり、片方で学んだことがもう片方に一切伝わりません。ほぼ同じ状況なのに、経験がゼロから必要になります。

そこで発想を変えます。Q値を表から引くのではなく、状態を入力すると各行動の Q値を出力する関数で近似する。関数の正体は多層パーセプトロンなどのニューラルネットで、パラメータ θ を誤差逆伝播と勾配降下で調整します。

Q(s, a; θ) ≈ Q*(s, a) 巨大な表の代わりに、固定サイズのパラメータ θ(数百万個の重み)で全状態をカバーする。似た状態には似た出力 — これが汎化

アイデア自体は単純です。ところが、Q学習の更新式にそのままニューラルネットを差し込むと、学習はあっさり発散します。理由は2つ。①エージェントの体験は時間的につながっていて、直前の経験ばかりの偏ったデータで学習してしまう。②Q学習の目標値 r + γ max Q(s′, a′) には自分自身の出力が入っており、ネットを1歩更新するたびに追いかける的も動いてしまう。

3. DQNの2つの工夫 — 経験再生とターゲットネットワーク

DQN(Deep Q-Network)はこの2つの問題に、それぞれ対策を当てました。

2つの工夫を ON/OFF する — 学習が安定する条件
左:体験がリングバッファに溜まる(色=体験した時刻)。経験再生 OFF だとミニバッチが直近の似た色ばかり=相関が高い。中:ターゲット網は定期コピーまで凍結される。右:4通りの組み合わせごとの典型的な学習カーブ(事前計算)。トグルを切り替えると最初から学習し直します。両方 OFF は発散パターン。
L(θ) = E(s,a,r,s′)〜D[ ( r + γ maxa′ Q(s′, a′; θ−) − Q(s, a; θ) )2 ] DQN の損失関数。D=リプレイバッファからのランダム抽出、θ⁻=凍結されたターゲット網。「動かない的」への二乗誤差回帰になっている
POINT — 「死の三角形」をどう抑えたか ①関数近似(1点の更新が他の状態にも波及する)、②ブートストラップ(自分の推定値を目標に使う)、③方策オフ学習(振る舞う方策と学ぶ方策がずれる)— この3つが揃うと価値学習は発散し得ることが知られており、死の三角形(deadly triad)と呼ばれます。Q学習+ニューラルネットはまさに3つとも併用。DQN は三角形そのものを消したわけではなく(だから収束の理論保証はない)、経験再生でデータの相関を壊し、ターゲット固定で目標の振動を止めることで、実用上安定する領域に持ち込みました。
素朴なQ学習(表)DQN
Q の表現表(1状態 = 1行)ニューラルネット Q(s, a; θ)
経験の使い方1回使ってその場で捨てるバッファに貯めてランダム再利用
更新の目標値最新の Q をそのまま使う凍結した θ⁻ で計算(定期コピー)
扱える状態空間小さな離散空間のみ画素のような高次元入力もOK

4. 方策の違いを目で見る — バランス課題

関数近似が本領を発揮するのが、連続値の状態です。定番のベンチマーク「CartPole(棒立てカート)」は、カートを左右に押して棒を立て続ける課題。状態は(位置 x, 速度 ẋ, 角度 θ, 角速度 θ̇)の4次元連続値なので、そもそも表が作れません。行動は「左に押す/右に押す」の2択です。

棒立てカート — ランダム方策 vs 学習済み方策
ランダム方策は平均 30 ステップ前後で倒れます。学習済み方策は、4つの状態量の線形結合の符号だけで左右を決めているのに、ほぼ永遠に立ち続けます。「状態 → 行動」の対応を関数が握っている、という構図を体感してください。
注意 — このデモの「学習済み」は手設計 上のデモの学習済み方策は、DQN が学習後に到達するのと同等の挙動を示す手設計の線形コントローラ(角度・角速度・位置・速度の重み付き和の符号で左右を決定)です。本物の DQN 学習には数万〜数十万ステップの試行錯誤が必要で、ブラウザでリアルタイムに回すには重すぎるため、「学習が終わった後の姿」を再現しています。それでも関数が状態から行動を決めるという本質は同じです。

5. Atari の衝撃と、まとめ

一歩先へ — Atari ブレイクスルーの物語 2013年、無名に近かった DeepMind は「画面のピクセルとスコアだけを入力に、Atari のゲームをプレイする AI」を発表しました。入力は 84×84 に縮小したグレースケール画面 4 フレーム(重ねるのは速度情報を持たせるため)。2015年には Nature 誌に掲載され、同一のネットワーク・同一のハイパーパラメータのまま 49 タイトルで学習し、約半数で人間のプロテスターに匹敵・凌駕するスコアを叩き出します。ブロック崩しでは、壁の端にトンネルを掘ってボールを裏側へ通す「攻略法」を自力で発見して開発者を驚かせました。ルールも攻略法も教えていないのに、です。この成果が深層強化学習という分野の号砲となり、のちの AlphaGo へつながっていきます。