MEMTO:正常パターンを『記憶』して過剰汎化を断つメモリ誘導Transformer

再構成ベースの異常検知には、長く付きまとう弱点がある。過剰汎化(over-generalization) だ。オートエンコーダを正常データだけで学習させ「再構成しにくいもの=異常」と判定する ―― この発想は美しいが、ニューラルネットワークは表現力が高すぎて、学習に含まれない異常パターンまでうまく再構成してしまう。すると異常の再構成誤差が小さくなり、正常と区別がつかなくなる。Anomaly Transformer のように注意機構で工夫を凝らしても、この問題は根深く残る。

ここに「記憶」という発想で切り込んだのが MEMTO(Song et al., “MEMTO: Memory-guided Transformer for Multivariate Time Series Anomaly Detection,” NeurIPS 2023)である。MEMTO は 正常データのプロトタイプ的な特徴をメモリ項目として明示的に蓄え、再構成をそのメモリで誘導する。異常が入ってきても、メモリに蓄えた正常パターンで上書きされてしまうため、再構成がうまくいかず誤差が大きくなる ―― つまり過剰汎化を能動的に断つ。

本記事は論文(NeurIPS 2023)の方法論を一次情報から読み込み、Gatedメモリモジュール・二相訓練・二次元逸脱スコアを数式と図で深掘りする。なぜこれを学ぶのか ―― 「再構成誤差で異常を測る」という素朴な枠組みが、なぜそのままでは機能しにくいのか、そしてそれをどう正攻法で克服するのかを掴むためだ。本シリーズで何度もベースラインに登場した手法でもある。

MEMTOの概念:正常パターンの記憶で再構成を誘導し異常を再構成しにくくする

全体像はシンプルだ。入力時系列窓を Encoder(Transformer)で符号化し、その出力(クエリ)で Gatedメモリモジュール から関連する正常プロトタイプを検索する。クエリと検索結果を連結したものを Weak Decoder に渡して再構成する。鍵は、再構成がメモリに蓄えた正常パターンに依存する点だ。まずは、なぜこの「記憶」が必要なのかを過剰汎化の問題から見ていく。

過剰汎化:なぜ再構成だけでは異常を捉えにくいか

再構成ベース手法の理屈はこうだ ―― 正常データだけで学習したモデルは、正常をうまく再構成でき、異常はうまく再構成できない。だから再構成誤差が大きい点を異常とみなす。ところが現実には、表現力の高いモデルは異常さえ器用に再構成してしまう。

過剰汎化:強い再構成器は異常もそのまま復元してしまうが、MEMTOは記憶で異常を正常へ引き戻す

左は過剰汎化を起こしたオートエンコーダだ。異常区間(網掛け)でも入力をほぼそのまま再構成してしまい、再構成誤差は異常区間で 0.002、正常区間で 0.003 とほとんど差がない ―― 異常を見逃す。一方、右の MEMTO は異常区間を正常パターン(滑らかな周期)へ引き戻して再構成する。その結果、再構成誤差は異常区間で 2.690 と跳ね上がり、正常区間の 0.000 と明確に分かれる。記憶された正常プロトタイプが「異常をあえて正常に化けさせる」ことで、誤差を浮き上がらせるのだ。この引き戻しを実現する第一の仕掛けが、復号器をあえて弱くすることである。

Weak Decoder:復号器をあえて弱くする

なぜWeak Decoder(弱い復号器)か:強い復号器は符号化と無関係に入力を復元してしまう

MEMTO の復号器は全結合2層だけの弱い構造だ。直感に反するが、これは意図的な設計である。論文が指摘するように、深い層を重ねた強い復号器は、入力の情報を何も含まないランダムノイズからでも入力を正確に生成できてしまう。そうなると、再構成の良し悪しが Encoder の符号化能力と無関係になり、「再構成しにくい=異常」という前提が崩れる。

そこで復号器をあえて弱くし、再構成を 符号化(=メモリ誘導された表現)に強く依存させる。復号器が非力なぶん、Encoder とメモリが用意した表現の質がそのまま再構成の質に直結する。異常クエリがメモリで正常プロトタイプに置き換えられれば、弱い復号器はそれを忠実に「正常らしく」再構成し、入力との差が大きくなる。では、その中核であるメモリモジュールはどう正常パターンを学ぶのか。

Gatedメモリモジュール:ゲートで更新量を制御する

メモリモジュールは $M$ 個の記憶項目 $m_i \in \mathbb{R}^C$ を持ち、各項目が正常データのプロトタイプ的特徴を蓄える。MEMTO の新規性は、各記憶項目を「どれだけ更新するか」をデータ駆動で学習するゲート機構 にある。

Gatedメモリ更新ステージ:ゲートψが各記憶項目の更新量を制御する

まず、各記憶項目 $m_i$ とクエリ $q^s_t$ の関連度を、内積のソフトマックスで query-conditioned memory attention $v^s_{i,t}$ として定義する。

$$ \begin{equation} v^s_{i,t} = P(m_i \to q^s_t) = \frac{\exp(\langle m_i, q^s_t \rangle / \tau)}{\sum_{p=1}^{L} \exp(\langle m_i, q^s_p \rangle / \tau)} \end{equation} $$

ここで $\tau$ は温度パラメータだ。$v^s_{i,t}$ は「記憶項目 $m_i$ が時刻 $t$ のクエリにどれだけ反応するか」を表す。次に、更新ゲート $\psi$ を導入する。

$$ \begin{equation} \psi = \sigma\!\left(U_\psi m_i + W_\psi \sum_{t=1}^{L} v^s_{i,t} q^s_t\right) \end{equation} $$

$$ \begin{equation} m_i \leftarrow (1 – \psi) \circ m_i + \psi \circ \sum_{t=1}^{L} v^s_{i,t} q^s_t \end{equation} $$

$U_\psi, W_\psi$ は線形射影、$\sigma$ はシグモイド、$\circ$ は要素ごとの積である。式(3)を読み解こう。$\sum_t v^s_{i,t} q^s_t$ は「この記憶項目に関連するクエリの重み付き集約」=新しく観測された正常パターンだ。ゲート $\psi$ は、既存の記憶 $m_i$ をどれだけ残し、新しいパターンをどれだけ取り込むか を要素ごとに決める。$\psi$ が1に近ければ新しい正常パターンを強く吸収し、0に近ければ既存の記憶を保持する。

ここが先行手法との決定的な差だ。MemAE や MNAD はメモリに関連クエリの加重和を単に足すだけで、注入量を制御できなかった。MEMTO はゲートによって「どの記憶項目をどれだけ更新するか」を学習する ―― これが多様な正常パターンへの適応を可能にする。なお、このメモリ更新は訓練時のみ実行される。更新された記憶を使って、今度はクエリ側を補強する。

クエリ更新ステージ:正常プロトタイプで異常を相殺する

クエリ更新ステージ:記憶から正常プロトタイプを検索しクエリに連結する

クエリ更新ステージでは、逆にクエリ $q^s_t$ を使ってメモリから関連プロトタイプを検索する。検索重み $w^s_{t,i}$ をクエリと記憶項目の類似度のソフトマックスで求め、検索結果 $\tilde q^s_t = \sum_i w^s_{t,i} m_i$ を得る。これをクエリと特徴次元方向に連結し、更新クエリ $\hat q^s_t = [q^s_t; \tilde q^s_t] \in \mathbb{R}^{2C}$ を作る。これが復号器への入力だ。

狙いは明快だ。異常クエリ $q^s_t$ が持つ「異常としての固有な性質」が、検索された正常プロトタイプ $\tilde q^s_t$ によって相殺される。その結果、異常の再構成出力は正常サンプルに似てしまい、再構成が困難になる ―― 過剰汎化を防ぎ、正常と異常をより明確に分離する。

ただし、検索重み $w^s_{t,i}$ が密(多くの記憶項目に分散)になると、一部の異常が「いろいろな正常パターンの寄せ集め」でうまく再構成されてしまう。これを防ぐため、エントロピー損失 で重みを疎に保つ。

$$ \begin{equation} L_{entr} = \frac{1}{N} \sum_{s=1}^{N} \sum_{t=1}^{L} \sum_{i=1}^{M} -w^s_{t,i} \log(w^s_{t,i}) \end{equation} $$

全体の目的関数は、再構成損失 $L_{rec} = \frac{1}{N}\sum_s \lVert X^s – \hat X^s \rVert_2^2$ とエントロピー損失の重み付き和になる。

$$ \begin{equation} L = L_{rec} + \lambda L_{entr} \end{equation} $$

エントロピー損失が $w$ を尖らせ、少数の密接に関連する正常プロトタイプだけ を検索させる。これで「異常を寄せ集めで再構成する」抜け道を塞ぐ。ところで、記憶項目は逐次更新されるため、初期値が悪いと学習が不安定になる。そこを支えるのが二相訓練だ。

二相訓練:K-meansで記憶を初期化する

二相訓練:K-meansで記憶項目を初期化し更新の不安定さを防ぐ

記憶項目を逐次更新する以上、ランダム初期化では訓練が不安定になりやすい。MEMTO は二相訓練でこれを解決する。

  • 第1相:MEMTO を再構成の自己教師ありタスクで学習し、訓練データの10%をランダムサンプリングして、学習済み Encoder でクエリを生成する。
  • K-means初期化:それらのクエリを K-means でクラスタリングし、各クラスタ重心 $c_i$ を記憶項目の初期値 $m_i \leftarrow c_i$ とする。重心は正常データのプロトタイプ的パターンに近いので、良い初期値になる。
  • 第2相:メモリモジュールを組み込んだ状態で全体を再学習する。

右の散布図のように、クラスタ重心(★)が正常パターンの「代表点」を捉える。ランダムな初期値から逐次更新を始める不安定さを避け、最初から正常プロトタイプに近い位置から学習を進められる。学習が済んだら、いよいよ異常をどう測るかだ。

二次元逸脱スコア:潜在空間と入力空間を掛け合わせる

MEMTO の異常スコアは、入力空間と潜在空間の両方 を見る二次元逸脱基準だ。2つの逸脱を定義する。

$$ \begin{equation} \mathrm{LSD}(q^s_t, m) = \lVert q^s_t – m^{s,pos}_t \rVert_2^2 \end{equation} $$

$$ \begin{equation} \mathrm{ISD}(X^s_{t,:}, \hat X^s_{t,:}) = \lVert X^s_{t,:} – \hat X^s_{t,:} \rVert_2^2 \end{equation} $$

LSD(Latent Space Deviation) は、潜在空間でクエリ $q^s_t$ と最近傍の記憶項目 $m^{s,pos}_t$ との距離だ。各記憶項目は正常プロトタイプなので、異常点ほど最近傍プロトタイプから離れ、LSD が大きくなる。ISD(Input Space Deviation) は入力空間での再構成誤差そのものである。この2つを掛け合わせる。

$$ \begin{equation} A(X^s) = \mathrm{softmax}\!\left([\mathrm{LSD}(q^s_t, m)]_{t=1,\dots,L}\right) \circ [\mathrm{ISD}(X^s_{t,:}, \hat X^s_{t,:})]_{t=1,\dots,L} \end{equation} $$

正規化した LSD を重みとして ISD に掛け、正常と異常のギャップを増幅する。

二次元逸脱スコア:潜在空間(LSD)で入力空間(ISD)を重み付け増幅する

上段の LSD は異常区間で 1.88(正常0.30)、中段の ISD は再構成誤差、下段が最終スコアだ。softmax(LSD) が異常区間に大きな重みを与え、ISD を掛けることで最終スコアは異常区間で 10.07、正常区間で 0.00 と劇的に分離する。潜在空間の「プロトタイプからの距離」と入力空間の「再構成誤差」は別々の手がかりであり、両者を掛け合わせることで一方だけでは曖昧な点もくっきり浮かび上がる。この設計が効くことは、結果とアブレーションが裏づける。

評価:Anomaly Transformerを上回る

論文は SMD・MSL・SMAP・SWaT・PSM の5ベンチマークで MEMTO を評価している。

5ベンチF1:MEMTO平均95.74%がAnomaly Transformer 93.62%を上回る

F1スコアで MEMTO は SMD 93.54・MSL 94.36・SMAP 96.61・SWaT 95.83・PSM 98.34、平均 95.74% を達成し、それまでの最先端だった Anomaly Transformer の 93.62% を上回った。特に SMD・SWaT で差が大きい。記憶による過剰汎化の抑制が、難しいデータセットほど効いていることがうかがえる。この優位がどの要素から来るのかを、アブレーションが明らかにする。

アブレーション:異常基準は両空間の併用が必須、メモリ除去で−32.56pの大幅低下

左の異常基準のアブレーションは衝撃的だ。ISD のみでは平均F1 69.23%、LSD のみでは 60.16% にとどまるが、両者を掛け合わせると 95.73% へ跳ね上がる。潜在空間と入力空間は単独ではどちらも不十分で、併用が必須 だと分かる。右のメモリモジュールのアブレーションでは、Gatedメモリを取り除くと平均F1が −32.56ポイント も低下し(特に SWaT は3分の1未満に崩壊)、メモリこそが MEMTO の心臓部であることを示す。MemAE や MNAD のメモリ機構に置き換えても MEMTO の Gatedメモリには及ばず、ゲートによる更新量制御の効果が裏づけられる。

まとめ

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

  • 問題:再構成ベース異常検知の過剰汎化 ―― 表現力の高いモデルは異常まで器用に再構成し、誤差で区別できなくなる。
  • Gatedメモリモジュール:$M$ 個の記憶項目に正常プロトタイプを蓄え、更新ゲート $\psi=\sigma(\cdot)$ で「各項目をどれだけ更新するか」をデータ駆動で学習(式1-3)。MemAE/MNAD の単純加算を超える。
  • クエリ更新 + Weak Decoder:検索した正常プロトタイプをクエリに連結し異常の固有性を相殺。復号器をあえて弱くして再構成をメモリ誘導に依存させる。エントロピー損失で検索重みを疎に保つ。
  • 二相訓練:第1相で Encoder を学習→クエリを K-means クラスタリング→重心で記憶を初期化→第2相で再学習。逐次更新の不安定さを回避。
  • 二次元逸脱スコア:潜在空間の逸脱 LSD と入力空間の逸脱 ISD を掛け合わせ(式9-11)、正常-異常のギャップを増幅。アブレーションで両空間の併用が必須と判明。
  • 結果:5ベンチ平均F1 95.74% で Anomaly Transformer を上回り、メモリ除去で −32.56p の崩壊。

MEMTO は「正常を覚える」という古典的なメモリネットワークの発想を、ゲート制御と二次元スコアで時系列異常検知に最適化した一手だ。Anomaly Transformer が「関連の乖離」で異常を測ったのに対し、MEMTO は「記憶からの逸脱」で測る ―― 異常をどの空間・どの基準で捉えるかという設計の幅が、両者を読み比べると見えてくる。

Anomaly Transformer:関連の乖離で異常を測る
MEMTOが上回った直前の最先端。注意機構による異常検知と、メモリ誘導の再構成を比較したい。
USAD:敵対訓練で再構成を強化する異常検知
同じ再構成ベースで過剰汎化に立ち向かう手法。敵対訓練とメモリ誘導という異なるアプローチを読み比べたい。
VUS:時系列異常検知の評価指標
再構成ベース手法のF1評価で注意すべきpoint-adjustの水増しを避ける指標。MEMTOの結果を読む土台に。