異常検知の難しさのひとつは、異常のサンプルがほとんど手に入らないことだ。正常データばかりが大量にあり、異常は稀でラベルもない。ならば「正常とはどういう分布か」を生成モデルに丸ごと学ばせ、その分布から外れたものを異常とすればよい。この発想を GAN(敵対的生成ネットワーク)で実装したのが MAD-GAN(Multivariate Anomaly Detection with GAN; Li et al., ICANN 2019) だ。生成器と識別器を競わせて正常分布を学び、両方を異常検知に使う点に特徴がある。
本記事は、CPS多変量異常検知の俯瞰記事の個別深掘りとして、MAD-GAN を原論文の図を全て引用しながら掘り下げる。GAN を時系列異常検知へ応用する代表例として、その仕組みと注意点を押さえよう。
前提知識
アーキテクチャ ― LSTM生成器と識別器

出典: Li et al., “MAD-GAN: Multivariate Anomaly Detection for Time Series Data with Generative Adversarial Networks”, ICANN 2019, Fig.1。
Fig.1 が全体像だ。生成器 $G$(LSTM)は、潜在空間からサンプリングしたノイズ列 $\bm{z}$ を入力に、正常らしい多変量時系列を生成する。識別器 $D$(LSTM)は、本物の時系列と生成された時系列を見分けるよう訓練される。両者は次のミニマックスで競う。
$$ \begin{equation} \min_{G}\max_{D}\ \mathbb{E}_{\bm{x}\sim p_{\mathrm{data}}}[\log D(\bm{x})] + \mathbb{E}_{\bm{z}\sim p_{\bm{z}}}[\log(1 – D(G(\bm{z})))] \end{equation} $$

図のように、生成器 $G$ はノイズ $\bm{z}$ から偽の系列 $G(\bm{z})$ を作り、識別器 $D$ は本物 $\bm{x}$ と偽物 $G(\bm{z})$ を見分けようとする。ミニマックスの第1項 $\log D(\bm{x})$ は「本物を本物と見抜く」能力、第2項 $\log(1-D(G(\bm{z})))$ は「偽物を偽物と見抜く」能力で、$D$ はこれらを最大化、$G$ は第2項を最小化(=$D$ を騙す)しようとする。学習が進むと、生成器は正常データの多様体(manifold)を、識別器は「正常からの逸脱」を捉えるようになる。LSTM を使うのは、時系列の時間依存を生成・識別の両方で扱うためだ。重要なのは、この学習済みの $G$ と $D$ をどちらも異常検知に使うことである。次に、その異常スコアを見よう。
異常スコア ― DR-score(識別+再構成)
MAD-GAN の異常スコアは DR-score(Discrimination-Reconstruction score) と呼ばれ、2つの要素を合わせる。
第一は 識別(Discrimination) だ。学習済みの識別器 $D$ にテスト系列を入れ、「偽物らしい(=正常分布から外れている)」と判断される度合いを使う。
第二は 再構成(Reconstruction) だ。テスト系列 $\bm{x}$ を生成器の潜在空間に逆写像する。生成器 $G$ は「潜在 → 系列」の一方向の写像なので、その逆(系列 → 潜在)は陽には求まらない。そこで、$G(\bm{z})$ が $\bm{x}$ に最も近くなる潜在 $\bm{z}^{*}$ を最適化で探す。
$$ \begin{equation} \bm{z}^{*} = \arg\min_{\bm{z}} \lVert \bm{x} – G(\bm{z})\rVert \end{equation} $$
ランダムな $\bm{z}$ から出発し、$G$ の重みは固定したまま $\bm{z}$ だけを勾配降下で更新して、この距離を最小化する。得られた最良の再構成 $G(\bm{z}^{*})$ と $\bm{x}$ の差を再構成誤差とする。

図がこの直感だ。緑の曲線が、生成器が学んだ「正常系列の多様体」$G(\bm{z})$ を表す。正常点(青)は多様体のすぐ近くにあるので、最良の $G(\bm{z}^{*})$ との距離が小さい。一方、異常点(赤星)は正常多様体の上に対応点がないため、どんな $\bm{z}^{*}$ を選んでも遠く、再構成誤差が大きくなる。「正常分布で張られた面からの距離」を測っているわけだ。
この2つを重み $\lambda$ で混ぜたものが DR-score だ。
$$ \begin{equation} \text{DR-score} = \lambda\,(1 – D(\bm{x})) + (1-\lambda)\,\lVert \bm{x} – G(\bm{z}^{*})\rVert \end{equation} $$

識別器スコア(左、$D$ が偽物と見なす度合い)だけでは見逃す異常を、再構成誤差(右、正常多様体への距離)が補い、その逆もある。両者を混ぜることで頑健になるのが DR-score の狙いだ。GAN が正常分布を実際にどれだけ学べたかを、生成サンプルで確認しよう。
生成の質 ― 正常分布を学べているか

出典: Li et al., ICANN 2019, Fig.2。
Fig.2 は、学習の異なる段階で生成された多変量サンプルと本物の比較だ。学習が進むにつれ、生成系列が本物の正常パターンに近づいていく。これは生成器が正常分布をうまく捉えていることの確認になる。

出典: Li et al., ICANN 2019, Fig.3。
Fig.3 は、生成分布と本物の分布の距離を MMD(Maximum Mean Discrepancy) で測ったものだ。複数チャネルにわたって生成が本物に近いことを定量的に示す。

出典: Li et al., ICANN 2019, Fig.4。
Fig.4 は主成分分析による分散比の比較で、生成データが本物データと似た主成分構造を持つことを示す。これらが揃って、「GAN が正常多様体を学習できている」ことを裏づける。土台が確認できたところで、検出性能を見よう。
評価 ― 検出性能とパラメータ感度

出典: Li et al., ICANN 2019, Fig.5。
Fig.5 は精度・再現率・F1 などの評価指標で、MAD-GAN が水処理(SWaT/WADI)系のデータで実用的な検出性能を出すことを示す。GAN ベースでも、正常分布を陽に学ぶアプローチが機能することの証拠だ。

出典: Li et al., ICANN 2019, Fig.6。
Fig.6 は、あるパラメータ(窓長や DR-score の重みなど)を変えたときの指標の推移だ。性能がパラメータに依存して動くことがわかり、適切な設定の重要性を示す。GAN は学習が不安定になりやすいという既知の弱点もあるため、こうした感度の把握は実用上欠かせない。
まとめ
本記事では、MAD-GAN を原論文の全図とともに深掘りしました。
- 正常分布を生成で学ぶ:LSTM 生成器と識別器を敵対的に訓練し、正常多様体を捉える。異常が稀でラベルがない設定と相性がよい。
- DR-score:識別器スコア(偽物らしさ)と、潜在空間への逆写像による再構成誤差を混ぜて異常を測る。
- 生成の質を多角的に検証:生成サンプル・MMD・主成分の分散比で、正常分布の学習を裏づけ。
- 注意点:GAN の学習は不安定になりやすく、パラメータ感度の把握が重要。
「正常分布を陽に学ぶ」生成ベースは、再構成ベース(USAD・OmniAnomaly)や密度ベース(DAGMM)と並ぶ第3の流派です。次は Transformer を使った TranAD で、系列モデリングの最新形を見ます。


