MSCRED:相関のシグネチャ行列を再構成して異常を検知・診断する

多変量時系列の異常を捉えるとき、多くの手法は「各センサーの値そのもの」を見る。だが、システムの状態を本当に特徴づけるのは、センサー間の相関だ。温度と流量、電圧と電流 ―― これらのペアがどう連動するかこそが、システムが正常に動いているかのサインになる。値が正常範囲でも、相関が崩れていれば異常だ。さらに実務では、異常を「検知」するだけでなく、どのセンサーが原因か(診断)どれくらい深刻か(重症度) まで知りたい。

これらを一手に解いたのが MSCRED(Zhang et al., “A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate Time Series Data,” AAAI 2019)である。MSCRED の発想は鮮やかだ ―― 多変量時系列をセンサー間相関の「シグネチャ行列」(画像のような2次元データ)に変換し、それを畳み込みネットワークで再構成する。再構成しきれなかった残差が、異常の場所・原因・深刻さを同時に教えてくれる。

本記事は論文(AAAI 2019)を一次情報から読み込み、シグネチャ行列・畳み込みエンコーダ・attention ConvLSTM・残差による検知と診断を数式と図で深掘りする。なぜこれを学ぶのか ―― 「時系列を相関の画像に変える」という発想の転換が、検知と診断をどう統合するかを掴むためだ。本シリーズで何度もベースラインに登場する手法でもある。

MSCREDの概念:多変量時系列を相関のシグネチャ行列に変換し再構成残差で異常検知・診断

全体像はこうだ。n本の時系列から、センサー間相関を表す $n \times n$ のシグネチャ行列を多スケールで作る。これを畳み込みエンコーダ+attention ConvLSTM で符号化し、畳み込みデコーダで再構成する。入力と再構成の残差行列が、異常の検知と診断の根拠になる。まず、その心臓部であるシグネチャ行列から見ていく。

シグネチャ行列:相関を画像にする

MSCRED の出発点は、多変量時系列を「相関の2次元マップ」に変換することだ。時刻 $t$ の区間 $[t-w, t]$ について、センサー $i$ と $j$ の相関をペアの内積で計算する。

$$ \begin{equation} m^t_{ij} = \frac{\sum_{\delta=0}^{w} x^{t-\delta}_i \, x^{t-\delta}_j}{\kappa} \end{equation} $$

ここで $\kappa$ はリスケール係数($\kappa = w$)だ。すべてのペア $(i, j)$ について計算すると、$n \times n$ のシグネチャ行列 $M^t$ が得られる。

シグネチャ行列:ペア内積で相関構造を画像化し、相関が崩れると行列が変わる

左が6本のセンサー(2つの相関群A・B)の時系列、中央が正常区間のシグネチャ行列だ。同じ群のセンサー同士は強く相関するので、行列に2つの相関ブロックが浮かぶ。ところが右の異常区間では、センサー4が群Bから外れて群Aと連動するように相関が崩れ、行列の見た目が変わる。実際、正常時にセンサー3と4の相関 $M[3,4]=0.515$ だったのが、異常時には $0.031$ へ激変した ―― 各センサーの値域は正常のままでも、相関の崩れがシグネチャ行列にはっきり現れる

シグネチャ行列には嬉しい性質がある。形状の類似性と値スケールの相関を同時に捉えるうえ、ノイズに頑健だ ―― あるセンサーの一時的な乱れは、相関の集約によって行列にはほとんど影響しない。では、システムの状態を多面的に見るための工夫が加わる。

多スケール:複数の時間幅で状態を捉える

異常には、短く済むものも長く続くものもある。これを捉えるため、MSCRED は異なる長さ $w$ で複数のシグネチャ行列を作る。

多スケールシグネチャ行列:s=3チャネル(w=10,30,60)でシステム状態を複数の時間幅で捉える

論文では $s = 3$ 個のスケール($w = 10, 30, 60$)を各時刻で構成する。小さい $w$ は短い時間幅での相関(細かい変動)を、大きい $w$ は長い時間幅での相関(大域的な傾向)を捉える。この3チャネルが、画像でいうRGBの3チャネルのように積み重なって、$30 \times 30 \times 3$ のテンソルとしてネットワークに入る。後で見るように、この多スケール性が異常の重症度(継続時間) の解釈に効いてくる。まず、この「相関の画像」をどう符号化するかだ。

畳み込みエンコーダ:空間パターンを符号化する

シグネチャ行列は2次元の「画像」なので、画像認識の道具 ―― 畳み込みネットワーク ―― がそのまま使える。MSCRED は全畳み込みエンコーダで、シグネチャ行列の空間パターン(センサー間相関の構造) を階層的に符号化する。

全畳み込みエンコーダ:シグネチャ行列の空間パターンを階層符号化する

入力 $30 \times 30 \times 3$ を、Conv1(stride 1×1)→Conv2(2×2)→Conv3(2×2)→Conv4(2×2)と通し、$30 \times 30 \times 32 \to 15 \times 15 \times 64 \to 8 \times 8 \times 128 \to 4 \times 4 \times 256$ と空間を圧縮しつつチャネルを増やす。各層の特徴マップは「センサー間相関の、ある抽象度での表現」だ。だが、これは1時刻のシグネチャ行列の話。時間方向の依存はどう捉えるのか。

attention ConvLSTM:時間パターンを注意で集約する

時間方向のパターンを捉えるため、MSCRED は各畳み込み層の特徴マップをConvLSTM(畳み込みLSTM)に通す。通常のLSTMが1次元ベクトルを扱うのに対し、ConvLSTM は入力・セル・隠れ状態・ゲートがすべて3次元テンソル(特徴マップ) で、空間構造を保ったまま時間依存をモデル化する。さらに、過去のすべてのステップが現在と同じだけ重要とは限らない ―― そこで時間注意機構を導入する。

attention ConvLSTM:過去hステップの特徴マップを時間注意で重み付け集約する

過去 $h$ ステップ(論文では $h=5$)の隠れ状態 $H^{i,l}$ を、注意重み $\alpha_i$ で集約して洗練された出力 $\hat H^{t,l}$ を作る。

$$ \begin{equation} \hat H^{t,l} = \sum_{i \in (t-h, t)} \alpha_i H^{i,l}, \qquad \alpha_i = \frac{\exp\left\{ \frac{\mathrm{Vec}(H^{t,l})^T \mathrm{Vec}(H^{i,l})}{\chi} \right\}}{\sum_{i \in (t-h, t)} \exp\left\{ \frac{\mathrm{Vec}(H^{t,l})^T \mathrm{Vec}(H^{i,l})}{\chi} \right\}} \end{equation} $$

ここで $\mathrm{Vec}(\cdot)$ はベクトル化、$\chi$ はリスケール係数($\chi = 5.0$)だ。式を読み解こう。現在の隠れ状態 $H^{t,l}$ を文脈ベクトルとみなし、過去ステップ $H^{i,l}$ との内積で「現在とどれだけ関連するか」の重要度 $\alpha_i$ をsoftmaxで測る。一般的な注意機構が変換・文脈パラメータを別途導入するのに対し、これは学習済みの隠れ特徴マップだけで同等の機能を果たす。こうして attention ConvLSTM は、各畳み込み層でシグネチャ行列の空間パターンと時間情報を同時にモデル化する。符号化が済めば、あとは元に戻すだけだ。

畳み込みデコーダ:スキップ接続で再構成する

デコーダは、符号化された特徴マップから元のシグネチャ行列を再構成する。

畳み込みデコーダ:スキップ接続(concat)でシグネチャ行列を再構成する

$4 \times 4 \times 256$ から DeConv4→DeConv3→DeConv2→DeConv1 と転置畳み込みで空間を復元し、$30 \times 30 \times 3$ の再構成シグネチャ行列を出力する。ポイントはスキップ接続(concat) だ。各 DeConv 層で、対応するエンコーダ/ConvLSTM の出力を連結してから次へ渡す(たとえば DeConv4 の出力 $8 \times 8 \times 128$ を ConvLSTM3 の出力と連結して $8 \times 8 \times 256$ にする)。これにより、細部の情報を保ったまま再構成できる。学習は、入力シグネチャ行列と再構成のあいだの二乗損失を最小化するエンドツーエンドで行う。正常データだけで学習するので、モデルは「正常な相関構造」を再構成できるようになる。ここからが MSCRED の真骨頂 ―― 残差の活用だ。

残差行列:検知と異常スコア

学習済みモデルに異常データを入れると、正常な相関は再構成できるが、崩れた相関は再構成できない。この差を残差行列として取り出す。

残差行列:入力と再構成の差で、うまく再構成できなかった相関ペアが浮かび上がる

左が異常時の入力シグネチャ行列、中央が再構成(モデルは正常な相関構造を復元しようとする)、右が残差行列 $|入力 – 再構成|$ だ。センサー4の相関が崩れた部分が、残差にくっきり残る。異常スコアは、残差シグネチャ行列で閾値 $\theta$ を超える要素の数 ―― つまり「うまく再構成できなかった相関ペアの数」として定義される($\theta$ はデータごとに経験的に決める)。このデモでは36要素中10要素が閾値を超え、明確な異常シグナルになっている。残差を要素ごとに見れば、検知だけでなく診断もできる。

異常診断:根本原因と重症度

MSCRED の残差行列は、異常の原因深刻さまで語る。

異常診断:残差の大きい行/列のセンサーが根本原因、3スケールで重症度を解釈

根本原因の特定(左):残差行列の各行/列は1つのセンサーに対応する。だから、残差が大きい行/列を持つセンサーが、異常の原因として最も疑わしい。各異常イベントでセンサーを残差スコアで順位づけし、上位 $k$ 本を根本原因とする。論文では、この根本原因特定(recall@3)で MSCRED が LSTM-ED を合成データで 25.9%、発電所データで 32.4% 上回った。

重症度(継続時間)の解釈(右):多スケール($s=3$)が効くのはここだ。小・中・大(w=10, 30, 60)の3チャネルそれぞれで異常スコアを計算する。短い異常は小スケール(w=10)でしか捉えられないが、長い異常は全スケールで捉えられる ―― だからどのスケールで検出されるかを見れば、異常の継続時間(深刻さ)を推定できる。論文の実験でも、MSCRED(S)は全種類の異常を検出でき、大スケールほど長い異常に反応した。検知・原因・深刻さを一枚の残差行列から読み取れる点が、MSCRED の診断能力の核心だ。この設計が実データで効くことを、結果が裏づける。

評価:検知でベースラインを上回る

論文は合成データと実際の発電所データで評価している。

異常検知F1:MSCRED 0.89/0.82が全ベースライン最良

異常検知のF1スコアで、MSCRED は合成データ 0.89、発電所データ 0.82 を達成し、OC-SVM(0.22/0.16)・DAGMM(0.25/0.23)・HA(0.60/0.50)・ARMA(0.66/0.59)・LSTM-ED(0.72/0.71)といった全ベースラインを上回った。最良ベースライン比で +23.8%/+15.5% の改善だ。アブレーションでは、ConvLSTM層を増やすほど性能が上がり、attention ConvLSTM が時間モデル化に効くことも確認された。値そのものでなく相関の崩れを捉える設計が、複雑なシステムの微妙な異常に強いことを示している。

まとめ

MSCRED のエッセンスを整理する。

  • 発想の転換:多変量時系列を、センサー間相関の「シグネチャ行列」($n\times n$ の画像)に変換。値でなく相関の崩れを捉え、ノイズに頑健(式1)。
  • 多スケール:$s=3$ 個の時間幅($w=10,30,60$)でシグネチャ行列を作り、RGBのように3チャネルで入力。
  • 畳み込みエンコーダ + attention ConvLSTM:空間パターンを全畳み込みで符号化し、各層で attention ConvLSTM が時間依存を注意集約(式4、現在を文脈に過去の重要度をsoftmax)。
  • 畳み込みデコーダ:スキップ接続(concat)で細部を保ち再構成。二乗損失でエンドツーエンド学習。
  • 残差による検知・診断:残差行列で閾値超え要素数=異常スコア。行/列で根本原因を特定、多スケールで重症度を解釈。
  • 結果:検知F1 0.89/0.82で全ベースライン超え(+23.8%/+15.5%)、根本原因特定でLSTM-EDを25.9%/32.4%上回る。

MSCRED は「時系列を相関の画像に変える」一手で、検知と診断(原因・深刻さ)を統合した。InterFusion が指標間依存をVAEで、SARAD が関連の減少で捉えたのに対し、MSCRED はシグネチャ行列と畳み込みという独自の位置を占めている。

画像なし
InterFusion:指標間依存と時間依存を二視点の階層VAEで捉える
同じく指標間相関に注目するが、VAEで確率的にモデル化。MSCREDのシグネチャ行列+畳み込みと比較したい。
SARAD:関連の減少で異常を捉える
センサー間の関連の崩れに注目する関係ベース手法。MSCREDの相関シグネチャ行列と発想を読み比べたい。
TICC:相関構造でレジームを発見する
相関構造で多変量時系列を特徴づける原典的発想。MSCREDのシグネチャ行列の土台として読みたい。