🎓 レベル:発展 | 重要度:B(標準)
📎 前提:ガウス過程 | 関連:ニューラルネットの正則化(機械学習)
⚠️ 要最新確認:ベイズ深層学習は研究が非常に速く動く領域です。手法の優劣・実装の定番は短期間で変わるので、最新の文献・ライブラリを確認してください。
要点(BLUF)
- ベイズ深層学習は、NN の重みに事前を置く・予測を分布にするなどで予測に不確実性を持たせます。単一の NN は過信(学習データの外でも自信満々に断言)しがち。
- 不確実性は2種:認識的(epistemic)=知識不足、データを増やせば減る/アレアトリック(aleatoric)=データ自体の雑音、増やしても減らない。
- 実用的な近似:ディープアンサンブル・MC ドロップアウト・変分 BNN・ラプラス近似。実装でアンサンブルが外挿で不確実性を増すことを確かめます。
1. 単一 NN の過信問題
標準的なニューラルネットは、重みを1組に決める点推定(最尤/MAP)です。だから予測も1点で、「どれくらい確からしいか」を言いません。さらに困るのは、学習データから外れた入力でも、自信満々に断言してしまうこと(過信)。安全が要る応用(医療・自動運転)では、「分からないときは分からないと言う」不確実性の定量化が不可欠です。ガウス過程(ガウス過程)が外挿で帯を広げたのと同じことを、深層モデルでもやりたい——それがベイズ深層学習の動機です。
2. 2種類の不確実性
| 種類 | 何の不確実性 | データを増やすと | 例 |
|---|---|---|---|
| 認識的(epistemic) | モデル・知識の不足 | 減る(学べば確信が増す) | 学習データのない領域 |
| アレアトリック(aleatoric) | データ自体の雑音 | 減らない(本質的なばらつき) | 観測ノイズ・ラベルの曖昧さ |
ベイズの事後(重みの分布)が認識的不確実性を、尤度の分散がアレアトリック不確実性を担います。両者を分けて扱えるのがベイズ的アプローチの利点です。
3. コード:ディープアンサンブルの認識的不確実性
最も手軽で強力な近似がディープアンサンブル——初期値の違う複数の NN を独立に学習し、予測のばらつきを不確実性とみなします(モデル間の不一致=認識的不確実性)。
import numpy as np
from sklearn.neural_network import MLPRegressor
import warnings; warnings.filterwarnings("ignore")
rng = np.random.default_rng(0)
f = lambda x: np.sin(1.5*x)
Xtr = rng.uniform(-3, 3, 60)[:, None] # データは [-3,3]
ytr = f(Xtr.ravel()) + rng.normal(0, 0.1, 60)
Xte = np.linspace(-7, 7, 300)[:, None] # 外挿を含む範囲
# 違う初期値で小さい MLP を 20 個学習(ディープアンサンブル)
preds = []
for seed in range(20):
net = MLPRegressor(hidden_layer_sizes=(64, 64), activation="tanh",
max_iter=2000, random_state=seed, alpha=1e-4)
net.fit(Xtr, ytr.ravel())
preds.append(net.predict(Xte))
preds = np.array(preds)
epi_sd = preds.std(0) # アンサンブルの不一致=認識的不確実性
inside = np.abs(Xte.ravel()) <= 3
print("ディープアンサンブル(20モデル)の予測ばらつき:")
for x0 in [0.0, 2.5, 5.0, 6.5]:
i = np.argmin(np.abs(Xte.ravel()-x0))
print(f" x={x0:>4}: アンサンブルSD={epi_sd[i]:.3f} ({'データ内' if abs(x0)<=3 else '外挿'})")
print(f"データ内の平均SD={epi_sd[inside].mean():.3f}, 外挿|x|>5の平均SD={epi_sd[np.abs(Xte.ravel())>5].mean():.3f}")
出力:
ディープアンサンブル(20モデル)の予測ばらつき:
x= 0.0: アンサンブルSD=0.066 (データ内)
x= 2.5: アンサンブルSD=0.206 (データ内)
x= 5.0: アンサンブルSD=0.956 (外挿)
x= 6.5: アンサンブルSD=1.190 (外挿)
データ内の平均SD=0.222, 外挿|x|>5の平均SD=1.080
出力の意味:データのある ではモデルどうしがよく一致(SD )、外挿()では予測が大きく割れます(SD 、約5倍)。各 NN は同じデータで学習しても、データのない領域では初期値しだいで好き勝手に外挿するため、不一致が認識的不確実性を表します。単一の NN ならどれか1本の自信満々な線を信じてしまうところを、アンサンブルは「ここは分からない」と幅で示せます——GP の予測帯(ガウス過程)と同じ役割を、深層モデルで近似的に実現しています。
4. ベイズ深層学習の主な手法
| 手法 | 考え方 | 位置づけ |
|---|---|---|
| ディープアンサンブル | 違う初期値で複数学習し予測のばらつきを使う | 単純・強力。実務の定番の一つ |
| MC ドロップアウト | 推論時もドロップアウトを残し複数回予測 | ドロップアウト(ニューラルネットの正則化)≒近似変分推論 |
| 変分 BNN | 重みの事後を変分分布で近似(確率的変分推論と再パラメータ化) | 原理的だが学習が難しいことも |
| ラプラス近似 | 学習後の MAP 周りをガウス近似(ベイズGLM の NN 版) | 後付けで不確実性を足せる |
どれも「重みの点推定」を「重みの分布(または複数モデル)」に置き換えて、認識的不確実性を得る工夫です。手法の優劣は問題依存で、研究も速いので要最新確認。
5. GP・VAE との関係
- GP との関係:無限幅の1層 NN はガウス過程に一致する(Neal の結果)。ベイズ NN と GP(ガウス過程)は地続きで、どちらも関数の不確実性を扱います。
- VAE との関係:VAE(VAEとELBOの共通構造)は潜在変数のベイズ推論を深層で行う例。変分 BNN は重みのベイズ、VAE は潜在のベイズ、と対象が違うだけで ELBO の枠組みは共通です。
ベイズ深層学習は、本テキストで積み上げた変分推論(第6章)・ラプラス近似(第7章)・不確実性の考え方を、深層モデルに持ち込んだ応用領域です。
⚠️ よくある誤解
- 「ソフトマックスの確率=不確実性」ではない:単一 NN のソフトマックスは外挿でも高い確率を出し過信します。認識的不確実性は別途(アンサンブル等)で測ります。
- 「アンサンブルは ad hoc でベイズと無関係」ではない:ディープアンサンブルは事後の多峰性を近似するベイズ的手法と解釈できます。
- 「不確実性は1種類」ではない:認識的(減らせる)とアレアトリック(減らせない)を分けて考えます(§2)。
- 「ベイズ NN なら必ず正しい不確実性」ではない:近似の質に依存し、過小評価もあります。較正(calibration)の確認が要ります。要最新確認。
関連ノート
- ガウス過程(関数の不確実性・無限幅 NN との一致)
- ノンパラメトリックベイズ(次のトピック・無限次元のベイズ)
- 確率的変分推論と再パラメータ化(変分 BNN の基盤)
- ベイズGLM(ラプラス近似)
- ニューラルネットの正則化(機械学習・ドロップアウト)
- 第10章 発展トピック 目次
- ベイズ統計テキスト 全体目次