🧩 🔧 🌈

DQN改良版をイチから理解する

Double DQN / Dueling DQN / NoisyNet / Rainbow DQN

📖 まずDQNのおさらい

ゲーム画面
(状態 s)
CNN
特徴を抽出
FC層
判断する
⬅ Q=3.2
➡ Q=8.7 ★
⏸ Q=1.5

Q値が最大の行動を選ぶ → でもこの仕組みにはまだ弱点がある…

DQNは画期的だったけど、弱点があった。
それぞれの弱点を直すモデルが登場した。1つずつ見ていこう。

🔵 改良① Double DQN(2015)

DQNの弱点:Q値を高く見積もりすぎる

😱 まず、DQNの問題を理解しよう

📝
たとえ話:テストの自己採点
テストの後、自分で自分の答えを採点することを想像してみて。
「この回答、たぶん合ってるから○にしよう…」と甘く採点しがち。

DQNもこれと同じ問題がある。
「行動を選ぶ」と「その行動の価値を評価する」を同じネットワーク1つでやっているので、
自分に甘い評価=Q値の過大評価が起きる。

DQNの問題:1つのNNで選択も評価もやってしまう

🧠
同じNN 1つで…
① 「どの行動が一番いいか」を選ぶ
② 「その行動はどれくらい良いか」を評価する
→ 自分で選んで自分で評価
甘い点数をつけがち
→ Q値が本当の価値より高くなる
→ 間違った行動を選んでしまう

✅ Double DQNの解決策:役割を分ける

👨‍🏫
たとえ話:他の人に採点してもらう
テストの自己採点が甘いなら、別の人に採点してもらえばいい
Double DQNでは「行動を選ぶ役」と「評価する役」を別々のNNに分けた。

Double DQNの仕組み

1
メインNN 🧠
「行動を選ぶ」担当
「右に動くのが一番良さそう」
→ メインNNが最良の行動を選ぶ
↓ この行動を…
2
ターゲットNN 🎯
「評価する」担当
「右に動いた場合の本当のQ値は…6.3だな」
→ ターゲットNNが冷静に評価
選ぶ人 ≠ 評価する人 → 甘い評価がなくなる → Q値が正確になる!

数式で見る違い

ポイント:
✅ ターゲットNNはDQNにもともとあった。Double DQNの新しさは「ターゲットNNの使い方を変えた」こと
✅ 構造の変更はほぼゼロ。コード数行の変更で性能アップ
✅ 覚え方:Double = 「ダブルチェック」→ 2つのNNで二重チェック

🟢 改良② Dueling DQN(2016)

DQNの弱点:「状態の良さ」と「行動の良さ」がごちゃ混ぜ

😱 まず、DQNの問題を理解しよう

🎮
ゲームで考えてみよう
ブロック崩しで、ボールが遠くにある場面を想像して。
この時、左に動こうが右に動こうが、結果はほとんど変わらない。

でもDQNは「⬅ Q=5.1、➡ Q=5.3」みたいに、意味のない差まで一生懸命学習してしまう。
本当に大事なのは「そもそもこの状況がどれくらい安全か?」なのに。

DQNの問題:全てをQ値1つで表す

ボールが遠い場面
⬅ Q = 5.1
⏸ Q = 5.0
➡ Q = 5.3
ほぼ同じ…行動で差がつかない場面なのに
無駄に差をつけようとしてしまう
vs
ボールが目の前の場面
⬅ Q = 1.0
⏸ Q = 4.0
➡ Q = 9.0 ★
ここでは行動の差が本当に重要!

✅ Dueling DQNの解決策:Q値を2つに分解する

📊
たとえ話:テストの「基礎点」と「ボーナス点」
テストの点数を「基礎点80点」+「応用問題のボーナス+12点」=「合計92点」と分けるイメージ。

V値(状態の価値)= この状況がそもそもどれくらい良いか?(基礎点)
A値(行動の利点)= この行動は他の行動よりどれくらい良いか?(ボーナス)
Q値 = V + A

Dueling DQNのアーキテクチャ

ゲーム画面
CNN
共通の特徴抽出
V(状態の価値)
「この状況はそもそも
どれくらい良い?」
= 5.0
A(行動の利点)
「どの行動が他より
どれくらい良い?」
⬅ A = −0.5
⏸ A = −0.2
➡ A = +0.7
合体
Q = V + A
⬅ Q = 4.5
⏸ Q = 4.8
➡ Q = 5.7 ★

具体例で理解する

Dueling DQNの利点:
✅ 「行動が重要な場面」と「重要でない場面」を自動で区別できる
✅ V値を1つ学べば全行動のQ値が一気に改善 → 学習効率アップ
✅ 特に「行動の選択肢が多いゲーム」で効果大

覚え方:Dueling(デュエリング)=「決闘」→ V と A が2つに分かれて戦うイメージ

🟣 改良③ NoisyNet(2017)

DQNの弱点:探索が雑すぎる(ε-greedy法の限界)

😱 まず、DQNの問題を理解しよう

🎲
ε-greedy法のダメなところ
DQNは「たまにランダムな行動をする(ε-greedy法)」で探索していた。
でもこれには問題が…

① 完全にランダム → 意味のある行動ではなく本当にデタラメ
② 全場面で同じ確率 → 探索が必要な場面でもそうでない場面でも同じ
③ 人間が確率εを設定 → 最適な値がわからない

ε-greedy法の問題

✅ NoisyNetの解決策:ネットワーク自体にノイズを混ぜる

🎸
たとえ話:ギターの練習
いつも同じ曲を完璧に弾く(活用)代わりに、指の動かし方を少し変えてみる(探索)。
完全にデタラメに弾く(ε-greedy)のとは違って、「ちょっとだけ普段と違う」行動

しかも、慣れた曲では自然と変化が小さくなり、
新しい曲では変化が大きくなる。探索の度合いを自動で調整してくれる

NoisyNetの仕組み

数式で見る仕組み

ε-greedy vs NoisyNet:
ε-greedy → 人間がεを設定。全場面で同じ確率。完全ランダム。雑。
NoisyNet → ノイズの大きさもAIが学習。場面に応じて自動調整。賢い。

💡 NoisyNetを使うと ε-greedy法が不要になる!探索をAI任せにできる。

🌈 改良④ Rainbow DQN(2017)

「全部合体させたら最強になるのでは?」→ なった

🍱
たとえ話:最強の幕の内弁当
DQNの改良版がたくさん出てきたけど、全部バラバラに使っていた
「これ全部組み合わせたらもっと強くなるのでは?」と実験したら…
本当に全部入りが最強だった!🎉

7つの技術を虹の7色になぞらえて「Rainbow(レインボー)」と命名。

Rainbow に含まれる7つの技術

1
DQN(土台)

CNNでQ値を予測する基本形。

2
Double DQN

Q値の過大評価を防ぐ。選択と評価を分離。

3
Dueling DQN

Q値をV(状態)とA(行動の利点)に分解。

4
NoisyNet

重みにノイズを混ぜて探索を賢く自動化。

5
Prioritized Replay

大きく予測を外した経験を優先的に復習する。

6
Multi-step Learning

1ステップ先だけでなく数ステップ先の報酬まで考慮

7
Distributional RL

Q値を1つの数値でなく確率分布として予測。

Rainbowに入っている技術の「たとえ話」一覧

1
DQN:テスト勉強のやり方を身につけた(基本形)
2
Double:自分で採点 → 別の人に採点してもらうように変更
3
Dueling:点数を「基礎点+ボーナス点」に分けて考える
4
NoisyNet:いつもと「少しだけ違う」方法を試す(デタラメではなく)
5
Prioritized:ノートを復習するとき、間違えた問題を優先的に復習する
6
Multi-step1手先だけでなく3手先まで読んで答え合わせする
7
Distributional:「だいたい80点」ではなく「70〜90点の間で、80点が一番多い」と予測する
G検定ポイント:
7つの技術を全部暗記する必要は低いが、
✅ 「DQNの複数の改良を全て統合したモデル」であること
✅ 「虹のように7つの技術を合わせた」のが名前の由来
当時のAtariで最高スコアを達成したこと
この3つは押さえておこう。

🔶 補足① Prioritized Experience Replay

「間違えた問題を優先的に復習する」仕組み

📚
たとえ話:テスト勉強の効率化
間違いノートに100問ためたとする。
ランダムに復習する(通常のReplay)のと、
「大きく間違えた問題」を優先的に復習するのと、
どちらが効率的? 当然、苦手な問題を優先した方が伸びる!

通常のReplay vs Prioritized Replay

「優先度」とは: 予測Q値と正解Q値の差(TD誤差)が大きいほど優先度が高い。
つまり「大きく予測を外した=まだよく学習できていない経験」を重点的に学ぶ。

🔷 補足② Multi-step Learning

「もっと先まで読んで答え合わせする」仕組み

♟️
たとえ話:将棋の先読み
将棋で「1手先」だけ読んで判断するのと、「3手先」まで読んで判断するのでは、
3手先まで読んだ方が正確
Multi-step Learningはまさにこれ。

1-step vs Multi-step(3-step)

ポイント: 先を読めば読むほど正確になるが、読みすぎると計算コストが増える。
Rainbow では n=3(3ステップ先まで)が採用されている。

🟪 補足③ Distributional RL

「だいたい80点」ではなく「70〜90点の確率分布」で予測する

🎰
たとえ話:テストの点数予測
友達に「次のテスト何点とれそう?」と聞かれた時…

通常DQN:「80点くらい」(1つの数値)
Distributional:「60点の確率が10%、70点が20%、80点が40%、90点が25%、100点が5%

後者の方がずっと情報量が多い!「80点前後が多いけど、たまに60点もある」ことがわかる。

普通のDQN vs Distributional RL

なぜ分布が良いのか:
リスクがわかる → 「平均は同じ8点でも、バラつきが大きい行動は避ける」ことが可能
学習が安定する → 分布全体を学ぶので、外れ値に振り回されにくい
情報量が増える → 1つの数値より分布の方がずっと多くの情報を持つ

🏁 全体まとめ ── DQN改良版の関係図

DQN(2013)
Q学習 + CNN + Experience Replay + Target Network
↓ それぞれの弱点を改良
Double DQN
Q値の過大評価を修正
選択と評価を分離
Dueling DQN
状態と行動を分離
Q = V + A
NoisyNet
探索を賢く自動化
重みにノイズ混入
↓ + Prioritized Replay + Multi-step + Distributional
🌈 Rainbow DQN(2017)
7つの改良を全部統合 → 当時のAtari最強
G検定で問われる全体像:

モデル解決した問題覚えるキーワードたとえ
DQN2013 Q学習を画像に適用 Experience Replay
Target Network
テスト勉強の基本
Double DQN2015 Q値の過大評価 選択と評価の分離 自己採点→他人に採点
Dueling DQN2016 V と A がごちゃ混ぜ Q = V + A 基礎点+ボーナス点
NoisyNet2017 探索が雑 重みにノイズ / 自動調整 ギターの指使いを少し変える
Rainbow2017 7つの技術を全統合 最強の幕の内弁当