Noisy DQN入門:NoisyNetで実現する状態依存の探索と実装ポイント
Noisy DQN とは — 概要
Noisy DQN は、Deep Q-Network(DQN)に「ノイズ化された重み(NoisyNet)」を組み込むことで効率的な探索(exploration)を実現する手法です。従来のDQNで一般的に用いられるε-greedy のような外付けのランダム行動方策を置き換え、ネットワーク自身のパラメータに学習可能な確率的要素を持たせることにより、状態依存かつ学習可能な探索を行います。
背景 — なぜ探索が問題か
強化学習において、未知の環境を効率的に探索することは成績向上の重要なポイントです。DQN の古典的な手法では、ε-greedy のように単純なランダム行動を挟むことが多く、探索は状態に依存しない固定確率で行われます。これだと複雑な環境や報酬が希薄なタスクでは非効率になりがちです。
NoisyNet の基本アイデア
NoisyNet(Noisy Networks for Exploration、Fortunato et al., 2017)では、ニューラルネットワークの線形層(全結合層)などの重みとバイアスを確率変数としてモデル化します。具体的には各線形変換のパラメータを以下のように分解します:
w = μ_w + σ_w ⊙ ε_wb = μ_b + σ_b ⊙ ε_b
ここで μ は平均パラメータ(学習される決定論的パラメータ)、σ はノイズの大きさを表すパラメータ(これも学習可能)、ε は確率変数(通常はガウスやファクタライズドガウスからのサンプル)です。⊙ は要素ごとの乗算です。ε をサンプリングするたびにネットワークの出力が変化するため、行動選択にランダム性が生じますが、その大きさや状態での効果は σ を通じて学習されます。
ファクタライズドノイズ(効率化)
完全な独立ノイズ(各要素ごとに独立したε)を使うとパラメータ数・計算量が増えます。Fortunatoらは計算効率を高めるために「factorized Gaussian noise」を提案しています。これは行列の要素ごとに独立なノイズを直接生成する代わりに、入力側と出力側の 1 次元ノイズベクトルの外積で近似する手法です。
具体的には、任意の正規分布サンプル x に対して、変換関数 f(x) = sign(x) * sqrt(|x|) を用い、ε_ij = f(ε_i) * f(ε_j) の形で要素ノイズを作ります。これによりノイズ生成のコストが O(n_in + n_out) に減り、実用的になります。
Noisy DQN の実装ポイント
- 線形層(あるいは一部の層)を NoisyLinear レイヤに置き換え、μ と σ をパラメータとして持たせる。
- ε(ノイズ)はフォワードごとに再サンプリングする。学習時・行動選択時ともに毎ステップでサンプリングする実装が一般的(ただしターゲットネットワークは別に持つ)。
- 初期化:論文では μ は一様分布(例:[-sqrt(3/n), sqrt(3/n)])で初期化し、σ は定数 σ0 を用いてスケーリングする(σ0 は 0.5 などがよく使われる)方式が提案されています。
- 損失関数や更新の枠組み自体は通常の DQN と同様(経験再生、目標ネットワーク、Q-learning の TD 誤差など)でよいが、ターゲット計算時のノイズの扱い(再サンプリングするか固定するか)は実装に依存する。論文実験や多くの実装は各フォワードでノイズを再サンプリングしている。
Noisy DQN と ε-greedy の比較
主な違いは探索の「状態依存性」と「学習可能性」です。ε-greedy は状態に依存せずランダム行動を一定確率で混ぜますが、NoisyNet による探索はネットワーク出力に直接作用し、入力(状態)に応じて異なるランダム性を生むことができます。また、σ が学習されるため、ある状態における探索の強さを学習プロセスで自律的に調整できます。
経験的な効果と応用例
Fortunato らの実験では、NoisyNet を用いた DQN は Atari ベンチマークなどで ε-greedy ベースの DQN を上回る結果を示しました。また、後に提案された Rainbow(複数の強化学習技術を統合した手法)でも NoisyNet は重要な構成要素として採用され、総合的な性能向上に寄与しています。
利点
- 状態依存の探索が可能:より効率的に環境を探索できる。
- 探索スケジュールの手動設計(ε のアニーリングなど)が不要になる場合がある。
- 他の改善手法(Double DQN、Prioritized Replay、Dueling、Multi-step 等)と組み合わせ可能で、相乗効果が見られる。
欠点と注意点
- パラメータ数が増えるため、モデルのサイズ・計算コストが増大する。
- σ が学習されるため、学習が進むと σ が 0 に収束して探索が消える(局所最適に収束する)可能性がある。これ自体は必ずしも欠点ではないが、過度に早く収束すると多様な探索が抑えられる。
- ノイズのリサンプリング頻度や初期化(σ0)などのハイパーパラメータが性能に影響する。実運用では検証が必要。
- 経験再生を行う際、過去に保存したトランジションは「古いノイズ」を反映しているが、これは DQN の既存の問題(非定常性)と同様の扱いとなる。
実装の具体例(擬似的な流れ)
基本的な学習ループは DQN と同じです。相違点を簡潔に示します:
- ネットワーク内の NoisyLinear でフォワードを行う際に ε をサンプリングして出力を得る(行動選択時も同様)。
- 経験を replay buffer にためる。保存されるのは通常の (s,a,r,s') でよく、ノイズそのものは保存しない。
- ミニバッチを取り出し、target Q 値と現在の Q 値を計算して損失を最小化する。各フォワードはそれぞれでノイズをサンプリングする実装が一般的。
- ターゲットネットワークは一定ステップごとに μ と σ をコピーして更新する(DQN と同様)。
実運用時のTips
- すべての層を Noisy にする必要はなく、末端の数層だけを置き換える戦略がよく使われます(計算負荷の低減)。
- ノイズの初期スケール σ0 は 0.5 前後がデフォルトだが、タスクに応じて調整する。小さすぎると探索が弱く、大きすぎると学習がノイズだらけになる。
- ターゲット計算や評価(学習の進捗確認)時にノイズを固定して決定論的評価を行うことで、スコアの変動を抑えた比較が可能になる。
- NoisyNet は探索手法の一つに過ぎない。環境の性質(報酬の希薄性、遷移のランダム性など)に応じて他の探索手法(UCB、ポリシー勾配ベースの確率的方策など)と比較検討することが重要。
まとめ
Noisy DQN は、ネットワークの重みそのものに学習可能なノイズを導入することで、状態依存かつ自動調整される探索を実現する手法です。ε-greedy の単純さと比較して探索効率が高く、Rainbow のような先進的手法でも採用される実績があります。一方で実装上の工夫(どの層に適用するか、σ の初期化、ノイズのリサンプリング方針など)が性能に影響するため、実問題に適用する際はハイパーパラメータの検証が必要です。
参考文献
- Noisy Networks for Exploration — Fortunato et al., 2017 (arXiv)
- Human-level control through deep reinforcement learning — Mnih et al., 2015 (Nature, DQN)
- Rainbow: Combining Improvements in Deep Reinforcement Learning — Hessel et al., 2018 (arXiv)
- Dopamine – Research framework for RL (Google) — 実装参考
- NoisyNet 実装例(GitHub リポジトリ)


