GCAD:Granger因果の崩壊で異常を捉える ― 予測器の勾配から因果グラフを取り出す

複数のセンサーを監視していると、変量どうしに「効き」の関係が見えてくる。「センサーAの過去の値が、センサーBの未来を予測するのに役立つ」 ―― これが Granger因果 だ。そして実システムでは、この因果の網の目が安定しているうちは正常で、普段あるはずの因果が突然消えたり、普段ない因果が現れたり したときに異常が起きる。この「因果構造の崩壊」を異常のシグナルにするのが GCAD(Liu et al., “GCAD: Anomaly Detection in Multivariate Time Series from the Perspective of Granger Causality,” AAAI 2025)である。

GCAD の巧みな点は、Granger因果を 深層予測器の勾配 から動的に取り出すことだ。わざわざ因果推定のための専用モデルを組むのではなく、ただ多変量を予測するネットワークを訓練し、その 予測損失が各入力変量にどれだけ敏感か(偏微分) を因果効果とみなす。本記事では、勾配ベースの因果推定・非対称スパース化・二重異常スコアという3つの要素を、アーキテクチャと決定的なデモで掘り下げる。

なぜこれを学ぶのか。応用先は2つある。ひとつは、値そのものは正常範囲なのに変量間の因果関係だけが壊れる異常を、解釈可能な形で捉える方法を理解すること。もうひとつは、本シリーズの関係ベース異常検知(SARAD・OracleAD)に、因果という方向性を持った関係 の軸を加えることだ。

GCADの概念:Granger因果A→Bが崩れる/出現するのを異常とする

まず直感だ。Granger因果は「A の過去が B の未来の予測に役立つなら A→B」という、方向を持った関係である。GCAD はこの因果の網を正常時に覚えておき、普段ある A→B が突然消える、普段ない因果が出現する という構造の変化を異常とみなす。鍵は「因果をどう測るか」。GCAD はそれを予測器の勾配で行う。

全体像 ― 予測器を訓練し、勾配から因果を取り出す

GCADのパイプライン:予測器→勾配ベース因果推定→非対称スパース化→二重スコア

論文の全体図でも、この4段構成がそのまま描かれている。

GCADの全体アーキテクチャ:Prediction-based Gradient Generator → Granger Causality Discovery → Causal Graph Sparsification → Causal Deviation Scoring

出典: Liu et al., “GCAD: Anomaly Detection in Multivariate Time Series from the Perspective of Granger Causality,” AAAI 2025, Fig.1

上半分が 予測器(Prediction-based Gradient Generator) で、過去窓を Mixer Predictor Layer に通して各変量を予測し、Channel Separation Error Detector で変量ごとの損失を分けて取る。その損失を入力まで逆伝播(Back-propagation)させ、左下の チャネル分離勾配 $G_t$ を得る。下半分が後処理で、勾配から因果行列(Causality Matrix)を作り、非対称スパース化(Causality Graph Sparsification)で因果グラフにし、正常時の典型パターン(Get Typical Pattern)との乖離で異常スコア(Anomaly Scoring)を出す。学習されるのは上半分の予測器だけ で、下半分はすべて勾配からの事後処理である点が読み取れる。

GCAD のパイプラインはこうだ。過去窓 $X_{t-\tau:t-1} \in \mathbb{R}^{N\times\tau}$($N$ 変量・最大ラグ $\tau$)を チャネル分離予測器(TSMixer ―― 時間方向と特徴方向の MLP を交互に積む構造。時間 MLP は $N$ 変量で共有、特徴 MLP は $\tau$ ステップで共有し、スキップ接続で全結合の出力層へ送る)に入れ、各変量の次の値を予測する。損失は変量ごとに分けて逆伝播させる。

$$ \begin{equation} L_{t,j} = (\hat{y}_{t,j} – y_{t,j})^2 \end{equation} $$

ここで肝心なのは、因果グラフを別途学習しない ことだ。予測器を普通に訓練するだけで、因果グラフはその 勾配から事後的に取り出す。では、勾配がなぜ因果を測れるのか。

勾配ベースの Granger 因果推定

Granger因果の定義に立ち返ろう。「変量 $i$ の過去を揺らしたとき、変量 $j$ の予測が変わるなら、$i$ は $j$ を Granger 因果する」。これはまさに、予測損失 $L_{t,j}$ を入力 $x_{\phi,i}$ で偏微分した量 で測れる。

なぜ偏微分でよいのか、ひと押し説明を入れよう。入力 $x_{t’,i}$ を微小量 $\Delta$ だけ揺らしたときの損失の変化を一次のテイラー展開で見ると、

$$ \begin{equation} \lim_{\Delta\to 0} \left|L_{t,j} – L^{*}_{t,j}\right| = \left|\frac{\partial L_{t,j}}{\partial x_{t’,i}}\right|\cdot|\Delta| \end{equation} $$

となる($L^{*}_{t,j}$ は揺らした後の損失)。つまり 偏微分の絶対値が「変量 $i$ を揺らしたとき変量 $j$ の予測損失がどれだけ動くか」の比例係数 そのものであり、これは Granger 因果の操作的定義(介入による予測の変化)とぴったり対応する。だから因果効果を測るのに専用モデルは要らず、予測器の勾配を取るだけでよい。

勾配ベースのGranger因果:予測損失の入力に対する感度を時間ラグ全体で積分

$$ \begin{equation} a_{i,j} = \int_{t-\tau}^{t-1} \left|\frac{\partial L_{t,j}}{\partial x_{\phi,i}}\right| P(x_{\phi,i})\, dx_{\phi,i} \end{equation} $$

変量 $i$ を少し揺らすと変量 $j$ の予測損失がどれだけ動くか ―― その感度を、時間ラグ $\phi$ が $t-\tau$ から $t-1$ まで動く範囲で $P(x_{\phi,i})$ で重みづけて積分したものが、因果効果の強さ $a_{i,j}$ だ($P$ は着目する分布で、単純には一様)。実装上は、$j$ ごとの損失 $L_{t,j}$ を入力テンソル全体に逆伝播させると、$N\times N\times\tau$ の チャネル分離勾配 $G_t$ が一度に得られる(変量 $i$・対象 $j$・ラグ $\phi$ の3軸)。これをラグ軸 $\phi$ で集約すれば $N\times N$ の因果行列 $A=\{a_{i,j}\}$ になる。

従来の Granger 因果テストは線形回帰と F 検定に頼っていたが、GCAD は 非線形の深層予測器の偏微分 を使うので、非線形な因果関係も捕捉できる。しかも勾配は自動微分で効率よく計算でき、因果推定のための専用パラメータを一切持たない。ただし、この生の行列には「ただの相関」も混じる。それを落とすのが次の工夫だ。

非対称スパース化 ― 相関を捨て、因果だけを残す

因果と相関の決定的な違いは 方向性 だ。$i$ と $j$ が単に似て動くだけ(相関)なら、$a_{i,j}$ と $a_{j,i}$ は同じくらいの大きさになる(対称)。一方、$i$ が $j$ を一方向に駆動する因果なら、$a_{i,j}$ だけが大きい(非対称)。GCAD はこの非対称性を使ってスパース化する。

$$ \begin{equation} \tilde{A}_{i,j} = \max(0,\ A_{i,j} – A_{j,i}) \quad (i \neq j), \qquad \tilde{A}_{i,i} = A_{i,i} \end{equation} $$

非対角の要素だけ $A – A^\top$ で差を取り、対角(自己依存)はそのまま残す ―― ここがあとで「値の異常」を測る時間スコアの素地になる。

非対称スパース化:対称な相関成分を消し一方向の因果だけ残す

左の生の因果行列には、対称な相関成分(ただ似ているだけの関係)が混ざっている。中央の $A – A^\top$ を取ると、対称成分は打ち消し合い、一方向の因果だけが正の値として残る。右がスパース化後で、相関を落とした一方向因果のグラフだ。最後に閾値 $h$ 以下のエッジを 0 にして疎にし、弱い偽エッジ(ノイズ)を除く。$h$ を上げすぎると本物の因果まで消え、下げすぎるとノイズが残る ―― このトレードオフは後述のパラメータ感度図に表れる。シンプルだが、相関と因果を切り分ける効きのよい仕掛けだ。こうして得た因果グラフを、正常時の基準と比べる。

二重異常スコア ― 因果の崩壊と値の異常

GCAD は2つのスコアを足し合わせる。

二重異常スコア:因果グラフ全体の乖離Scと自己依存の乖離Stを統合

比較の基準となる 正常パターン $\bar{A}_{norm}$ は、訓練窓を Bernoulli サンプリングして複数の正常グラフ $\tilde{A}_{norm,i}$ を作り、その平均で作る。

$$ \begin{equation} \bar{A}_{norm} = \frac{1}{n}\sum_{i=1}^{n} \tilde{A}_{norm,i} \end{equation} $$

ひとつめのスコアは 因果スコア $Sc$ で、テスト時の因果グラフが正常時の平均グラフ $\bar{A}_{norm}$ からどれだけ離れたかを、要素ごとの 相対乖離 の和で測る。

$$ \begin{equation} Sc = \sum \frac{|\tilde{A}_{test} – \bar{A}_{norm}|}{\bar{A}_{norm} + \varepsilon} \end{equation} $$

分母に $\bar{A}_{norm}$ を置くのがポイントで、これにより「普段は強い因果が弱まった」変化が、絶対値が小さいエッジでも相対的に大きく効く。もうひとつは 時間スコア $St$ で、因果行列の 対角成分(各変量の自己依存=自分の過去がどれだけ自分を予測するか)の乖離を、同じく相対比で測る。

$$ \begin{equation} St = \sum \frac{\left|\,\mathrm{diag}(\tilde{A}_{test} – \bar{A}_{norm})\,\right|}{\mathrm{diag}(\bar{A}_{norm}) + \varepsilon} \end{equation} $$

自己依存が崩れるのは、その変量の値そのものが普段と違う動きをしたとき ―― つまり $St$ は 値の異常 を担う。最終スコアは両者の重み付き和だ。

$$ \begin{equation} S = Sc + \beta \cdot St \end{equation} $$

$Sc$ が変量間の 因果構造の崩壊(関係の異常)、$St$ が 自己依存の変化(値の異常) を担う。これで「値は正常範囲なのに因果だけが壊れた」異常も拾える。本当にそうなるか、デモで確かめよう。

値が正常でも因果の崩壊を捉える ― デモ

3変量のチェーン $x_0 \to x_1 \to x_2$(各ステップで時間ラグ1の因果)を作る。正常時は $x_1$ が $x_0$ の過去に従い、$x_2$ が $x_1$ の過去に従う。ここで、異常区間では $x_1$ を $x_0$ から切り離し(独立なノイズにする)、しかも $x_1$ の振幅は正常範囲に保つ ―― つまり値だけ見ても異常とわからないようにする。

因果グラフの崩壊:正常はx0→x1とx1→x2、異常中はx0→x1が消失

因果グラフで見ると一目瞭然だ。正常時は $x_0 \to x_1$ と $x_1 \to x_2$ の2つのエッジが立っている。異常中は $x_1 \to x_2$ は残るが、$x_0 \to x_1$ のエッジが消えている。右の差分行列で、消えた $x_0 \to x_1$ だけが赤く光る。値域は正常のまま、因果の網だけが破れたのだ。これを時系列スコアで追うと次のようになる。

値が正常範囲でも因果スコアがx0→x1の崩壊を明確に捉える

上段は変量 $x_1$ の値で、異常区間でも振幅は正常と変わらない ―― 値の閾値では捉えられない。中段の予測スコアは、$x_1$ が $x_0$ から切れて予測が外れるので反応する。そして下段の 因果スコア は、$x_0 \to x_1$ の因果エッジの崩壊を、構造の変化として明確に捉えている(異常区間で持続的にスパイク)。GCAD の二重スコアは、この因果の崩壊と予測の乱れの両方を統合する。実データではどう効くのか。

評価 ― 5データセットでベスト・ベースライン超え

論文は SWaT・SMD・MSL・SMAP・PSM の5つで評価し、ベースラインには DAGMM・USAD・GDN・Anomaly Transformer・GANF・MEMTO が並ぶ。

GCADと各データセットのベスト・ベースラインのAUC-ROC比較

AUC-ROC で見ると、SWaT 86.9%(GDN 84.9% 超え)、SMD 95.3%(USAD 92.7% 超え)、MSL 76.6%(MEMTO 72.7% 超え)、SMAP 72.7%(GANF 69.3% 超え)、PSM 76.2%(GDN 72.8% 超え)と、いずれもそのデータセットのベスト・ベースラインを上回る。これら5つは多変量時系列異常検知の定番ベンチで、SWaT は 51 変量・異常約 12%、SMD は 38 変量・約 9%、MSL は 55 変量(異常は希少で 1% 未満)、SMAP は 25 変量・約 2%、PSM は 25 変量・約 28% と、変量数も異常率も幅広い。AUC-PRC でも GCAD は SWaT 0.776・SMD 0.750 と他を引き離し、希少異常で効くことが分かる(SMAP-PRC のみ GANF が上)。アブレーションでも、非対称スパース化を外すと −1.3%、Granger 因果を外すと −2.1%、時間相関を外すと −2.9%(SWaT)と、各要素が効いている ―― なかでも Granger 因果の寄与が最大 で、因果という軸が性能の核であることが裏づけられる。

ハイパーパラメータの効きも論文が示している。

GCADのパラメータ感度:最大時間ラグτとスパース化閾値hに対するAUROC/AUPRC

出典: Liu et al., “GCAD: Anomaly Detection in Multivariate Time Series from the Perspective of Granger Causality,” AAAI 2025, Fig.2

(a) 最大時間ラグ $\tau$ と (b) スパース化閾値 $h$ を動かしたときの AUROC/AUPRC だ。どちらも 中庸の値(ここでは $\tau=5$、$h=0.01$ 付近)でピーク を取り、両端で性能が落ちる。$\tau$ が小さすぎると長い時間依存を見逃し、大きすぎると無関係なラグのノイズを拾う。$h$ も同様で、低すぎると偽エッジが残り、高すぎると本物の因果まで削れる ―― 前述のスパース化のトレードオフが、そのまま山なりの曲線として現れている。性能が単一の鋭いピークに依存せず、広い範囲でなだらかなのも実用上ありがたい点だ。

なお限界もある。Granger 因果は厳密な意味の真の因果ではなく、交絡変数(共通の隠れ原因)があると見かけの因果を拾いうる。明示的なコンテキストの統合はなく、レジーム変化と本物の異常の区別が難しい場合もある。

まとめ

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

  • 発想:変量間の Granger因果 の網が正常時に安定していることを使い、「普段ある因果が消える/普段ない因果が出る」という 因果構造の崩壊 を異常とする。
  • 勾配ベース因果推定:因果グラフを専用に学習せず、普通に訓練した深層予測器の 予測損失の偏微分 $a_{i,j} = \int |\partial L_{t,j}/\partial x_{\phi,i}|\,d\phi$ を因果効果として取り出す。非線形因果も捕捉。
  • 非対称スパース化:$\tilde{A} = \max(0, A – A^\top)$ で対称な相関成分を捨て、一方向の因果だけ を残す。相関と因果を切り分ける効きのよい仕掛け。
  • 二重スコア:因果グラフの乖離 $Sc$(関係の異常)と対角成分の乖離 $St$(値の異常)を $S = Sc + \beta St$ で統合。値が正常でも因果の崩壊を捉える。
  • 評価:SWaT・SMD・MSL・SMAP・PSM の5データセットで、各々のベスト・ベースラインを AUC-ROC で上回る。

「因果の崩壊を異常とする」という GCAD の発想は、関係の減少を見る SARAD、安定構造からの逸脱を見る OracleAD と同じ「正常な構造→異常な構造」の哲学を、方向性を持った因果 という形で突き詰めたものだ。関係ベース異常検知の中でも、相関・関連・構造・因果という「関係の測り方」の違いを読み比べると、この分野の設計地図がいっそう鮮明になる。

OracleAD:安定潜在構造からの逸脱で異常を捉える
正常な関係構造をSLSとして覚え逸脱を測る手法。GCADが因果グラフの崩壊を見るのと『正常な構造→異常な構造』の哲学を共有する。
SARAD:変量間の関係の崩壊を異常として捉える
関連の系統的な減少を異常とする関係ベース手法。GCADの方向を持つ因果と、対称な関連の違いを読み比べたい。
TICC:相関構造で時系列の『レジーム』を発見する
逆共分散で変量間の条件付き依存を捉える手法。相関・依存・因果という関係の測り方の違いを比較する起点に。