ドロップアウトの理論:アンサンブルとベイズ近似
ドロップアウトを「ランダムに枝を切る雑な正則化」で終わらせず、指数個の部分網の暗黙アンサンブルとして捉え直すと、なぜ効くかが腑に落ちる。推論時のスケーリングとMC Dropoutによる不確実性推定まで一気通貫で押さえられる。
- 1.学習のたびにユニットを確率pで独立に落とすと、1つの重みを共有したまま 2^n 個の部分網からランダムに1つを学習することに等しく、推論時はそれらの暗黙アンサンブルとして振る舞う。
- 2.推論で全ユニットを使うと期待入力が学習時の (1-p) 倍ずれる。inverted dropout は学習時に残ったユニットを 1/(1-p) 倍して先に補正し、推論コードを素のままに保つ。
- 3.推論時もドロップアウトを残してT回サンプリングするMC Dropoutは、近似ベイズ推論とみなせ、予測の平均で点推定・分散で不確実性(モデルの自信のなさ)を見積もれる。
ドロップアウトを「アンサンブル」として読み直す
ドロップアウトは、学習ステップごとに各ユニットを確率 p で独立に無効化(出力を0に)する手法です。実装は数行ですが、これを単なる「ランダムなノイズ注入」と捉えると本質を取り逃がします。正しくは 1つの重み集合を共有しながら、指数的に多数の部分ネットワークを同時に訓練し、推論時にそれらを平均する暗黙のアンサンブル です。ここでは(1)なぜアンサンブルになるか、(2)推論時の重みスケーリング、(3)MC Dropout によるベイズ的解釈、を順に正確に詰めます(→ 正則化(過学習対策))。
2^n 個の部分網という見方
n 個のドロップアウト対象ユニットがあるとき、各ユニットは「残す/落とす」の2状態を取ります。1回の前向き計算で適用されるマスク(どれを落とすか)は、この組み合わせのうちの1つです。組み合わせは全部で 2^n 通りあり、それぞれが 元の網から枝を間引いた異なる部分ネットワーク に対応します。
マスク m を各ユニットに掛ける(学習時)
h_i ~ Bernoulli(1-p) 各ユニットを確率 1-p で残す
出力 = (h ⊙ a)·W ⊙ は要素ごとの積、a は活性
→ マスクの取り方は 2^n 通り = 2^n 個の部分網
重要なのは、これらの部分網が 重みを共有 している点です。独立に 2^n 個のモデルを持つのではなく、1つの大きな網の重みを使い回す。各ステップでマスクを引き直すことは「2^n 個の部分網からランダムに1つを選んで、その1ステップ分だけ学習する」ことに等しく、学習全体は 重み共有つきのアンサンブル学習 になります。共有があるからこそ、指数個のモデルを現実的なメモリで訓練できます。
アンサンブルの効果は、独立に近い多数のモデルの予測を平均するとバリアンス(訓練データのノイズへの過敏さ)が打ち消し合うことにあります(→ バイアス-バリアンス分解)。ドロップアウトはこの平均化を1つの網の内部で実現します。さらに、どのユニットも「いつ落ちるか分からない仲間」に頼れないため、特定ユニットへの共依存(co-adaptation)が抑えられ、各ユニットが単体でも有用な特徴を学ぶよう促される——これがバリアンス低減と並ぶもう一つの効き目です。
推論時の重みスケーリング:なぜ (1-p) を掛けるのか
学習時は毎回違う部分網を使いますが、推論で 2^n 個すべてを実際に走らせて平均するのは非現実的です。そこで使うのが 重みスケーリング近似(weight scaling inference rule):推論では全ユニットを有効にした「丸ごとの網」を1回走らせ、各ユニットの出力に 学習時にそのユニットが残った確率 1-p を掛けます。
なぜこの係数か。学習時、あるユニットの出力 a は確率 1-p でそのまま下流に流れ、確率 p で0になります。下流が受け取る入力の 期待値 は (1-p)·a です。推論で全ユニットを常時オンにすると、下流は a をそのまま受け取り、期待値が学習時の 1/(1-p) 倍に膨らんでスケールがずれます。そこで推論時に 1-p を掛け、下流が受ける期待入力を学習時と一致させます。
学習時、下流が受け取る期待入力 = (1-p)·a
推論時に全オンだと = a ← (1-p) 倍ずれる
→ 推論時に出力へ (1-p) を掛けて期待値を一致させる
これは線形(や区分線形)な範囲では、2^n 個の部分網の出力の 幾何平均 を効率的に近似することが知られており、単なる経験則ではありません。
inverted dropout:補正を学習側へ前倒しする
素朴な実装では推論時に 1-p を掛けますが、現代のフレームワークが採る標準は inverted dropout(逆ドロップアウト) です。発想は「期待値の補正を、推論ではなく学習時に済ませてしまう」こと。学習時にマスクを掛けた直後、残ったユニットを 1/(1-p) 倍に増幅 します。
inverted dropout(学習時)
mask = Bernoulli(1-p) のサンプル
out = (a ⊙ mask) / (1-p) # 残った側を 1/(1-p) 倍
推論時(変更なし)
out = a # スケーリング不要、全オンで素通し
こうすると学習時点で期待入力が (1-p)·a·1/(1-p) = a に揃うため、推論コードはドロップアウトを一切意識せず素のまま で済みます。p(ドロップ率)を学習中に変えても推論側を触らなくてよく、推論経路に余計な乗算が入らない利点もあります。「inverted」は補正の係数 1/(1-p) が素朴版の 1-p の逆数であることに由来します。
文献やAPIによって p の定義が 落とす確率 だったり 残す確率 だったりします。落とす確率なら残存確率は 1-p でスケールは 1/(1-p)。残す確率(keep_prob)なら逆になります。実装で dropout(0.2) が「2割落とす」のか「2割残す」のかを取り違えると、スケールが狂って学習が静かに劣化します。式の前に必ず定義を確認してください。
MC Dropout:推論時もドロップを残してベイズ近似する
通常、ドロップアウトは学習時だけ有効にし推論時は切ります。これを覆すのが MC Dropout(Monte Carlo Dropout) です。推論時にもドロップアウトをオンのまま、同じ入力を T 回通してマスクを毎回引き直し、T 個の予測を得ます。各回は異なる部分網による予測なので、出力はばらつきます。
MC Dropout(推論時、ドロップアウト ON のまま)
for t in 1..T:
y_t = f(x; マスクを毎回サンプリング)
平均 μ = (1/T) Σ y_t → 点予測
分散 s = (1/T) Σ (y_t-μ)^2 → 予測の不確実性
これが理論的に意味を持つのは、Gal と Ghahramani(2016)が、ドロップアウト付き網の学習が ガウス過程の変分近似 に対応すること、すなわち MC Dropout のサンプリングが 重みの事後分布からの近似サンプリング(近似ベイズ推論) とみなせることを示したためです。T 回のサンプルは、点推定ではなく 予測分布 を与えます。
T 個の予測の 平均 は、重みスケーリング近似と近い点推定を与えます。一方 分散(ばらつき) は、入力に対してモデルがどれだけ自信を持てないかを表す 認識的不確実性(epistemic uncertainty) の見積もりになります。訓練データから遠い入力ほど部分網ごとに答えが割れて分散が大きくなる傾向があり、「モデルが知らない領域」を検知する手がかりになります(→ 最尤推定・MAP・ベイズ推定)。
MC Dropout はベイズ推論の 近似 であって厳密な事後分布ではありません。得られる不確実性の質は、ドロップ率 p やどの層に掛けるかといった設定に強く依存し、較正(calibration)が保証されるわけではありません。とくに分布外(out-of-distribution)入力で必ず分散が大きくなるとは限らず、過信した不確実性を返すことがあります。安全性が要る用途では、ディープアンサンブルなど他手法との比較や較正の検証を併用すべきです。
3つの見方を1枚に整理する
| 観点 | 学習時 | 標準推論 | MC Dropout 推論 |
|---|---|---|---|
| ドロップアウト | ON(毎回マスク更新) | OFF(全ユニット使用) | ON(毎回マスク更新) |
| 前向き計算の回数 | 1(その部分網のみ) | 1(丸ごとの網) | T(部分網を T 個サンプル) |
| スケーリング | inverted で 1/(1-p) 倍 | なし(補正済み) | 学習時と同じ |
| 得られるもの | 勾配(重み更新) | 点予測(暗黙アンサンブル平均) | 予測分布(平均+不確実性) |
| 解釈 | 2^n 部分網の1つを学習 | 幾何平均の効率的近似 | 近似ベイズの事後サンプリング |
(1) ドロップアウトは重み共有つきの 2^n 部分網アンサンブル。(2) 推論で全オンにすると期待入力が 1/(1-p) 倍ずれるので、素朴版は推論時に 1-p を掛け、inverted dropout は学習時に 1/(1-p) を掛けて推論を素のままにする。(3) MC Dropout は推論時もドロップを残し T 回サンプリング、平均で点予測・分散で不確実性を得る近似ベイズ。この3点を式の向き(1-p か 1/(1-p) か)込みで言えるかが分かれ目です。
まとめ
ドロップアウトは、1組の重みを共有したまま 2^n 個の部分網を確率的に訓練し、推論でそれらを平均する 暗黙のアンサンブル です。学習時にユニットを確率 1-p で残すため、推論で全オンにすると期待入力がずれます。これを補正するのが重みスケーリングで、現代標準の inverted dropout は補正係数 1/(1-p) を学習時に前倒しして推論コードを素のままに保ちます。さらに推論時もドロップアウトを残して T 回サンプリングする MC Dropout は、近似ベイズ推論として予測分布を与え、平均で点予測・分散で不確実性を見積もれます。「ランダムに枝を切る雑な技」ではなく、アンサンブル・効率的平均化・近似ベイズという3層の原理が同居した手法だと捉えると、設定(ドロップ率や適用層)を選ぶ判断もぶれません。
AI/機械学習 Article
ドロップアウトの理論:アンサンブルとベイズ近似を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
ディープラーニング
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6
導入後に効く点
推論で全ユニットを使うと期待入力が学習時の (1-p) 倍ずれる。inverted dropout は学習時に残ったユニットを 1/(1-p) 倍して先に補正し、推論コードを素のままに保つ。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 6
判断チェックリスト
- 自社の用途が「ディープラーニング / 正則化」に近いか確認する。
- 強みである「学習のたびにユニットを確率pで独立に落とすと、1つの重みを共有したまま 2^n 個の部分網からランダムに1つを学習することに等しく、推論時はそれらの暗黙アンサンブルとして振る舞う。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。