問題設定:異常検知モデルのラベル付けコスト

異常検知モデルの設計は長らく分類モデルや統計学的な手法によって実施されてきた。だがこれらの方法では、多数の課題に人手で対処しなければならなかった。教師あり学習のアノテーションは、従来の方法の「人間」に対する依存を示す最たる例である。

分類モデルでは、最低限「正常」と「異常」を区別できる教師データのラベル付きサンプルを用意しなければならない。だが、「異常」と「正常」の区別は形式的に導入される。故にアノテーションやラベル付けの担当者次第では、それらの意味に揺らぎが伴う可能性がある。

仮に精確なアノテーションが揃ったとしても、「異常」データのサンプリングが間に合わない場合があり得る。学習・訓練データの分布とテスト用のデータが共に「真の分布」を近似し得るほどのデータ量に達しているか否かは判断し難い。

典型的な異常検知問題においては、経験的に「異常」と見做されるデータサンプルは少ない。よって、サンプリングされたデータ量が適切であると楽観視することはできないのである。そして、仮に十分な量のデータサンプルが得られたとしても、今度は時系列的なパターンを考慮した特徴工学が必要になる。信号データや映像データの中には、周期性や系列の特徴が潜在化していることは間々ある。

問題解決策:Encoder/Decoder for Anomaly Detection(EncDec-AD)

いわゆるEncoder/Decoder for Anomaly Detection(EncDec-AD)をはじめとする深層学習に準拠した異常検知モデルは、LSTMを用いたEncoder/Decoderスキーマや自己符号化器(Auto-encoder)の構造を利用することで、これらの課題を克服しつつある。これらのモデルは、「正常(normal)」な時系列的振る舞いを再構成(reconstruct)するために学習するモデルとして設計されている。ここでの「再構成誤差(reconstruct error)」が、異常検知における「異常度(anomalies)」として参照される。

Encoder/Decoderの訓練は、「正常(normal)」な時系列のインスタンスを再構成するために、入力値となる時系列それ自体を出力値の目的関数とすることで実施される。言い換えれば、このネットワーク構造は入力と出力が同値となるある種の自己符号化器(Auto-encoder)となる。再構成誤差は自己符号化の再構成誤差に他ならない。再構成誤差は異常度の尤度(Likelihood)を計算するために用いられる。Encoder/Decoderモデルは正常な系列のみを用いて学習する。これにより、異常度の検出を可能にする。

ここで直観(intuition)として導入されている前提は、Encoder/Decoderや自己符号化器が学習の最中に正常なインスタンスしか観測していないために、異常な系列が入力された時は、それを適切(well)に再構成することができないということである。つまり再構成誤差が高ければ高いほど、異常度も高まることになる、と直観的に想定されている。

深層学習に準拠した異常検知モデルは正常な系列データのみで学習を実行する。この構造は、異常なデータが入手困難な場合や疎の場合に有用となる。特に正常な系列データと異常な系列データの双方を交えた訓練データとテストデータが十分に入手できると期待できない場合に、正常な系列データさえあれば実践可能なモデルであるという点で、このモデルは有用となる。

EncDec-ADのアルゴリズム

長さ$$L$$の時系列的なベクトルを$$X = \{x^{(1)}, x^{(2)}, x^{(3)}, …, x^{(L)}\}$$と置く。ここで、各データポイント$$x^{(i)} \in \it{R}^m$$は、時刻インスタンス$$t_i$$における$$m$$の変量を有した$$m$$次元のベクトルである。再構成誤差は各ベクトルの諸要素に対して計算される。データポイント$$x^{(i)}$$に対応する再構成誤差、すなわち異常スコア(anomaly socre)を$$a^{(i)}$$と置く。この異常スコアが高ければ高いほど、異常性について高い尤度を指し示す。

正常な時系列データのインスタンスの再構成のために、LSTM Encoder-Decoderの訓練を実行する。LSTMのEncoderは、入力された時系列データの固定された長さのベクトル表現を学習する。そして現在の隠れ層の状態と前回の時間ステップにおけるその推定値を利用することで、LSTMのDecoderがこの時系列の再構成を実行する。ベクトル$$\it{X}$$を前提に、$$h_E^{(i)}$$を時刻$$t_i (i \in \{1, 2, …, L\})$$におけるEncoderの隠れ層の状態(活性度)とする。ここで$$h_E^{(i)} \in \it{R}^c$$で、$$c$$はEncoderの隠れ層におけるLSTMのユニット数とする。時系列を逆順で再構成するために、EncoderとDecoderの訓練は結合した状態で実行される。そのため出力値のベクトルは$$\{x^{(L)}, x^{(L-1)}, x^{(L-2)}, …, x^{(1)}\}$$となる。Encoderの最終状態を意味する$$h_E^{(L)}$$はDecoderの初期状態を意味する。LSTMのDecoderの最上位層が推定を担う。言い換えればこの層の活性度が推定値となる。

訓練中、Decoderは$$x^{(i)}$$を$$h_D^{(i-1)}$$の状態から得られた入力値として参照する。そのため予測された$$x’^{(i-1)}$$は、目的となる$$x^{(i-1)}$$に対応する。推論中、予測された値となる$$x’^{(i)}$$は$$h_D^{(i-1)}$$と$$x’^{(i-1)}$$を得たDecoderへの入力となる。

以上のモデリングを前提とした上で、このモデルは次の目的関数を最小化する最適化問題を解くことになる。$$\sum_{X \in s_N}^{}\sum_{i=1}^{L}||X^{(i)} – x’^{(i)}||^2$$

ここで、$$s_N$$は正常な訓練データの集合を表す。

尚、通常のニューラルネットワークと同様に、線形層では$$c \times m$$のサイズの重みの行列$$w$$が配備されている。また最上位のDecoderにはバイアス$$b \in \it{R}^m$$が設けられている。このバイアスは活性化関数の入力値$$x’^{(i)} = w^{\mathrm{T}}h_D^{(i)} + b$$にて参照される。

EncDec-ADのモデル評価

実験アプローチとして、正常な系列データを四つの集合$$s_N, v_{N1}, v_{N2}, t_N$$に区別する。そして、異常な系列データを二つの集合$$v_A, t_A$$に区別する。系列集合$$s_N$$はLSTM Encoder-Decoderの再構成モデルの学習データとして利用する。$$v_{N1}$$は訓練を初期に止めた場合のデータとして利用する。$$t_i$$における再構成誤差ベクトルは$$e^{(i)} = |x^{(i)} – x’^{(i)}|$$から計算する。集合$$v_{N1}$$における系列のデータポイントにおいて、再構成誤差ベクトルは最尤推定を用いた$$\mu$$と$$\Sigma$$の正規分布$$\mathcal{N}(\mu, \Sigma)$$のパラメタ推定として参照される。どのデータポイント$$x^{(i)}$$においても、異常度スコア$$a^{(i)} = (e^{(i)} \mu)^{\mathrm{T}}\Sigma^{-1}(e^{(i)} \mu)$$から得る。

異常の判定は、$$a^{(i)} > \tau$$によって判定する。この条件を持たせば異常で、そうでなければ正常となる。十分な量の異常な系列データが利用可能ならば、閾値を意味する$$\tau$$は次のようなF値の最大化するように学習される。

$$F_{\beta} = (1 + \beta^2) \times P \times \frac{R}{(\beta^2P + R)}$$

ここで$$P$$は適合率(precision)で、$$R$$は再現率(recall)を表す。$$\beta$$は$$0 < \beta < 1$$のハイパーパラメタで、論文中では$$\beta = 0.1$$か$$\beta = 0.05$$が採用されている。

「異常」とは、ここでは正(positive)のクラスになる。逆に「正常」が負(negative)のクラスになる。任意の長さの「窓(window)」で分割された時系列データに一つでも「異常」が含まれている場合、その窓(window)全体が「異常」としてラベル付けされる。EncDec-ADのパラダイムで想定されているように、現実世界の多くの応用において、異常なデータが時系列データのどの部分に含まれているのかが正確に知り得ない場合に、このデータモデリングは有用となる。

参考文献

  • Malhotra, P., Ramakrishnan, A., Anand, G., Vig, L., Agarwal, P., & Shroff, G. (2016). LSTM-based encoder-decoder for multi-sensor anomaly detection. arXiv preprint arXiv:1607.00148.