高次元のデータから異常を見つけるとき、よくある手はまず次元を削減して低次元で密度を推定することだ。だが、ここに落とし穴がある。次元削減(オートエンコーダ)と密度推定(ガウス混合など)を別々に行うと、削減後の表現が密度推定にとって都合の悪い形になり、異常がうまく分離されないことが多い。この「2段階の分断」を、両者を同時に学習することで解いたのが DAGMM(Deep Autoencoding Gaussian Mixture Model; Zong et al., ICLR 2018) だ。
本記事は、CPS多変量異常検知の俯瞰記事の個別深掘りとして、DAGMM を原論文の図を全て引用しながら掘り下げる。応用先は広く、ネットワーク侵入検知や設備の異常検知など、ラベルのない高次元データ全般に効く密度推定ベースの定番だ。

出典: Zong et al., “Deep Autoencoding Gaussian Mixture Model for Unsupervised Anomaly Detection”, ICLR 2018, Fig.1。
Fig.1 が DAGMM の動機を一枚で語っている。オートエンコーダの潜在表現だけ、あるいは再構成誤差だけでは、正常(青)と異常(赤)がうまく分離しない。ところが両者を組み合わせた低次元空間では、異常がはっきり浮き上がる。「潜在表現」と「再構成誤差」の両方を密度推定に渡すことが鍵だ ―― なぜそれが効くのか、アーキテクチャで見ていく。
前提知識
アーキテクチャ ― 2つのネットワークの同時学習

出典: Zong et al., ICLR 2018, Fig.2。
Fig.2 のアーキテクチャは2つのネットワークから成る。
圧縮ネットワーク(compression network) はオートエンコーダだ。入力 $\bm{x}$ をエンコーダで低次元の潜在 $\bm{z}_c$ に圧縮し、デコーダで $\hat{\bm{x}}$ に復元する。ここで重要なのは、潜在 $\bm{z}_c$ だけでなく、再構成誤差から導いた特徴 $\bm{z}_r$(コサイン類似度やユークリッド距離など)も作ることだ。両者を連結して
$$ \begin{equation} \bm{z} = [\,\bm{z}_c,\ \bm{z}_r\,] \end{equation} $$
という低次元ベクトルを得る。これが Fig.1 で見た「潜在+再構成誤差」の空間にあたる。この連結を図にすると次のようになる。

入力 $\bm{x}$ はエンコーダで潜在 $\bm{z}_c$ になり、デコーダで $\hat{\bm{x}}$ に復元される。同時に「$\bm{x}$ と $\hat{\bm{x}}$ がどれだけ違うか」を表す再構成誤差特徴 $\bm{z}_r$ を作る。なぜ $\bm{z}_r$ が要るのか。潜在 $\bm{z}_c$ だけだと、異常サンプルも「それらしい低次元点」に押し込められて正常に紛れてしまうことがある。だが異常は復元が下手なので $\bm{z}_r$ が大きくなる。「どこにいるか($\bm{z}_c$)」と「どれだけ復元できないか($\bm{z}_r$)」を合わせることで、はじめて異常が浮かぶ。
推定ネットワーク(estimation network) は、$\bm{z}$ を入力に取る softmax 付きの多層パーセプトロンで、各サンプルが GMM の $K$ 個の成分のどれにどれだけ所属するか(メンバーシップ $\hat{\gamma}$)を出力する。メンバーシップから GMM のパラメータ(混合比 $\phi_k$、平均 $\bm{\mu}_k$、共分散 $\bm{\Sigma}_k$)をその場で推定する。EMアルゴリズムを使わず、ネットワークの順伝播で GMM を組み立てるのがうまい点だ。
学習は、3つの項を合わせた目的関数を最小化する。
$$ \begin{equation} J = \frac{1}{N}\sum_{i=1}^{N}\lVert \bm{x}_i – \hat{\bm{x}}_i\rVert_2^2 \;+\; \frac{\lambda_1}{N}\sum_{i=1}^{N} E(\bm{z}_i) \;+\; \lambda_2\, P(\bm{\Sigma}) \end{equation} $$
第1項は再構成誤差で、「復元しやすい潜在」を促す。第2項はサンプルのエネルギー $E(\bm{z})$(次節で定義)の平均で、「密度の高い潜在」を促す。第3項 $P(\bm{\Sigma})=\sum_k\sum_j 1/\Sigma_{kjj}$ は共分散の対角が小さくなりすぎる(特異化する)のを防ぐ正則化だ。$\lambda_1,\lambda_2$ は重み。
ここが DAGMM の肝だ。第1項だけ(=ただのオートエンコーダ)では潜在が密度推定に向かず、第2項だけ(=ただのGMM)では低次元表現が育たない。2項を一緒に最小化することで、再構成しやすく、かつ GMM で密度が測りやすい低次元表現が同時に得られる。

左は次元削減と密度推定を別々に行った場合のイメージで、潜在表現の中で正常と異常が混ざってしまう。右が DAGMM の同時学習で、潜在+再構成誤差の空間で正常(左下に密集)と異常(右上に逸脱)がくっきり分かれる。この分離のよさが、次に見るエネルギーによる異常判定を効かせる土台になる。
異常スコア ― サンプルのエネルギー
DAGMM の異常スコアは、サンプルのエネルギー(負の対数尤度)だ。GMM 下での確率密度が低いサンプルほど、エネルギーが高く、異常とみなす。
$$ \begin{equation} E(\bm{z}) = -\log \sum_{k=1}^{K} \phi_k\, \frac{\exp\!\left(-\tfrac{1}{2}(\bm{z}-\bm{\mu}_k)^{\top}\bm{\Sigma}_k^{-1}(\bm{z}-\bm{\mu}_k)\right)} {\sqrt{|2\pi\bm{\Sigma}_k|}} \end{equation} $$
ここで $\phi_k$ は混合比、$\bm{\mu}_k,\bm{\Sigma}_k$ は成分 $k$ の平均と共分散で、いずれも推定ネットワークが出すメンバーシップ $\hat{\gamma}$ から
$$ \begin{equation} \phi_k = \frac{1}{N}\sum_{i}\hat{\gamma}_{ik}, \quad \bm{\mu}_k = \frac{\sum_i \hat{\gamma}_{ik}\,\bm{z}_i}{\sum_i \hat{\gamma}_{ik}}, \quad \bm{\Sigma}_k = \frac{\sum_i \hat{\gamma}_{ik}\,(\bm{z}_i-\bm{\mu}_k)(\bm{z}_i-\bm{\mu}_k)^{\top}}{\sum_i \hat{\gamma}_{ik}} \end{equation} $$
と、その場で計算される。EMアルゴリズムの「Eステップ=所属確率、Mステップ=パラメータ更新」を、ネットワークの順伝播1回で代替しているわけだ。

上の図は、学習された GMM のエネルギー $E(\bm{z})$ を等高線で描いたものだ。色が暗い(エネルギーが低い)谷が正常サンプルの集まる高密度領域で、白い点(正常)はそこに収まる。一方、赤い星(異常)は密度の低い高エネルギー領域に落ちる。エネルギーがそのまま異常スコアになることが直感的に見て取れる。
学習時はこのエネルギーの期待値を下げる(正常サンプルの密度を高める)ように動く。テスト時は、エネルギーが閾値を超えたサンプルを異常と判定する。エネルギーが微分可能なので、圧縮ネットワークと推定ネットワークをエンドツーエンドで一緒に学習できる点が、別々に学習する古典的な2段階法との決定的な違いだ。学習された空間がどう見えるかを可視化で確かめよう。
学習された潜在空間の可視化

出典: Zong et al., ICLR 2018, Fig.3。
Fig.3 は KDDCUP(ネットワーク侵入検知)のサンプルを、学習された3次元空間にプロットしたものだ。正常と異常が異なる塊に分かれ、密度推定で分離しやすい配置になっていることがわかる。

出典: Zong et al., ICLR 2018, Fig.4。
Fig.4 は各データセットでのサンプルエネルギーの累積分布だ。正常サンプルが低エネルギー側に集中し、高エネルギー側のテールに異常が来る。閾値をテール側に置けば異常を拾えるという、スコアの分離のよさを示している。

出典: Zong et al., ICLR 2018, Fig.5。
Fig.5 は1次元に縮約した空間で、全サンプル(左)と正常のみ(右)を比べている。正常(赤)が狭い範囲に密集する一方、異常(青)はそこから外れて広く散らばる。1次元でも正常と異常の分離が見えることは、学習された表現の質の高さを物語る。

出典: Zong et al., ICLR 2018, Fig.6。
Fig.6 は別データセットでの3次元空間で、やはり正常と異常が分かれたクラスタ構造になっている。これらの可視化が一貫して示すのは、「同時学習で得た低次元空間では、GMM による密度推定が素直に効く」ということだ。
まとめ
本記事では、DAGMM を原論文の全図とともに深掘りしました。
- 同時学習が核心:次元削減(オートエンコーダ)と密度推定(GMM)を別々でなく一緒に学ぶことで、密度推定に都合のよい低次元表現が育つ。
- 潜在+再構成誤差:圧縮ネットワークは潜在 $\bm{z}_c$ と再構成誤差特徴 $\bm{z}_r$ を連結し、両方を密度推定に渡す。
- 異常スコア=エネルギー:GMM 下の負の対数尤度。微分可能なのでエンドツーエンド学習できる。
- 可視化:学習空間で正常と異常がきれいに分かれ、エネルギーの累積分布でも明確に分離する。
時系列依存は明示的に扱わないため、時系列に効かせるには窓化などの工夫が要りますが、表データを含む高次元異常検知の汎用ベースラインとして今も有用です。


