ひとことで言うと
深層アンサンブルは、同じ構成のモデルを初期値などを変えて独立に学習し、推論時に複数の予測を平均する方法です。単一モデルの重みを一つに決め打ちする代わりに、異なる予測を集約するため、精度だけでなく予測の不確実性も扱えます。
同じ設計図の検査員を複数人育て、製品を一人の判定だけで合否にしないイメージです。判定が揃えば確信を持ちやすく、意見が割れれば入力に対する不確実性を検知できます。
なぜ必要か
深層モデルは訓練データ上の損失が近くても、未知の入力で異なる予測を出します。一つのモデルだけでは、その揺れを予測値から読み取りにくいのが実装上の不便です。そこで、独立に学習したモデルの予測を集めると、偶然の誤りが平均化され、モデル間の不一致も観測できます。
この方法は、特別な推論規則を導入するより、通常のニューラルネットを複数回学習して並列に推論する構成です。原論文は分類・回帰のベンチマークで、予測の不確実性が十分に較正され、近似ベイズニューラルネットと同等以上の結果になる場合を報告しています。分布外の例で不確実性が高くなることも評価していますが、どのデータでも自動的に安全になるという意味ではありません。
| 単一モデル | 深層アンサンブル |
|---|---|
| 予測値は一つで、モデル間の不一致を見られない | 複数の予測を平均し、ばらつきも記録できる |
仕組み
モデル数を 、モデル の入力 に対する予測を とします。回帰なら、まず予測平均を次で計算します。
は学習済みモデルの台数、 は入力、 は第 モデルの予測関数です。予測の散らばりは、例えば次の分散で記録できます。
はモデル間分散です。分類では各モデルのクラス確率を平均して最終確率にします。重要なのは、各モデルを同じデータで同じ重みに収束させるのではなく、独立な初期値で学習し、実装上はデータのシャッフル順などの乱数も固定しないことです。分析論文では、ランダム初期化から始めた別軌跡のモデルは、同じ訓練軌跡上の複数チェックポイントより予測関数の多様性が大きいと分析されています。
試験でどう問われるか
| 問われ方 | 正解に寄る条件 | 引っかけ |
|---|---|---|
| 学習方法の説明 | 複数モデルを独立に初期化・学習し、予測を平均する | 一つのモデルを複数時点で保存するだけ |
| 多様性の源 | 初期値や学習時の乱数で異なる解・予測を得る | 重み空間の距離だけで多様性を判断する |
| 不確実性の読み方 | 予測の平均とモデル間のばらつきを分けて扱う | 平均値だけで確信度まで得たとする |
| 計算量 | 学習・推論は概ねモデル台数に応じて増える | 平均処理だけなので単一モデルと同コストとする |
実装で確かめる
NumPyで、同じ入力に対する複数モデルの予測平均とモデル間分散を計算します。実際の学習器でも、推論結果を第1軸に積めば同じ集約になります。
import numpy as np
pred = np.array([[1.0, 2.0], [1.4, 1.8], [0.8, 2.2]])
mean = pred.mean(axis=0)
variance = ((pred - mean) ** 2).mean(axis=0)
print("平均:", mean)
print("モデル間分散:", variance)
ここで pred の各行は独立学習したモデル、各列は入力ごとの予測です。分散が大きい入力ではモデルの判断が割れています。これは観測できる予測の不一致であり、真の原因を一意に特定する値ではありません。運用では平均予測と分散を別々に保存し、閾値や再確認の条件を設計します。
取り違えやすいもの
| 方法 | 深層アンサンブルとの違い |
|---|---|
| 単一モデルのチェックポイント平均 | 一つの訓練軌跡から複数時点を使う。独立初期化による予測多様性とは別です |
| 重みの平均 | パラメータを平均して一つのモデルにする。予測を平均するアンサンブルとは計算対象が違います |
| バギング | データを再標本化して複数モデルを作る枠組み。深層アンサンブルは同一データにランダム初期化を使う構成でも成立します |
| ドロップアウト推論 | 一つのモデルに確率的なマスクを適用して複数予測を得る方法で、独立学習した複数モデルではありません |
近似ベイズとの関係は、論文が比較対象として扱う範囲に留まり、深層アンサンブル自体をベイズ推論の実装と同一視しません。
想起チェック
深層アンサンブルの基本的な推論手順は何か
独立に学習した 個のモデルで予測し、その予測を平均します。回帰ではモデル間分散も不一致の指標になります。
複数チェックポイントの平均と何が違うか
チェックポイントは同じ訓練軌跡上の時点です。深層アンサンブルは独立な初期化から別々に学習し、異なる予測関数を集めます。
導入時に必ず見積もる計算上の代償は何か
モデルを 台保持して推論するため、モデルの保存・推論コストは概ね 倍になります。予測の平均処理だけを見て単一モデルと同じとは考えません。