論文読みメモ: 深層自己符号化器+混合ガウスモデルによる教師なし異常検知(その3)

以下の論文を読みます。

Bo Zong, Qi Song, Martin Renqiang Min, Wei Cheng, Cristian Lumezanu, Daeki Cho, Haifeng Chen. Deep Autoencoding Gaussian Mixture Model for Unsupervised Anomaly Detection. International Conference on Learning Representations, 2018. https://openreview.net/forum?id=BJJLHbb0-
※ キャラクターに元ネタはないです。お気付きの点がありましたらお手数ですがコメント等にてご指摘ください。
前回:その2 / 次回:まだ
f:id:cookie-box:20180513082851p:plain:w60

前回までのあらすじです。

f:id:cookie-box:20180521234046p:plain:w600

f:id:cookie-box:20180513082908p:plain:w60

あらすじにはなってないよね!?

f:id:cookie-box:20180513082851p:plain:w60

ここで一旦2節の Related Work に戻りましょうか。高次元データに対する異常検知の先行手法は3タイプに分類されると書いています(この辺りの話、全体的に抽象的ですが…)。

  • 「異常サンプルは低次元に圧縮しにくいだろう」という考えのもと、次元削減を試行するタイプ。
    • 次元削減したときにデコードが上手くいかないようなデータは異常なはずだ、ということです。このアプローチでは元々 PCA や kernel PCA やその他の PCA の亜種が用いられ、近年では深層自己符号化器を用いた手法が提案されています。ただ、サンプルの異常性を専ら「再構築エラー」のみから判断しているために限界がある、と書かれていますね。普通に正常サンプル並みの再構築エラーになる異常サンプルもあるだろうと。特にデータが全体的に再構築しにくい場合や、逆に次元削減手法の表現力があらゆるサンプルをカバーする場合はそうなるだろうと言っています。
  • (特徴空間に写像した後に)クラスタリングしてから孤立サンプル/少数クラスタを判別するタイプ。
    • そのままですが、このアプローチでもクラスタリングをする以上、高次元データに対しては次元削減必須です。この手法では次元削減とクラスタリングの学習が分離しているために、クラスタリングに必要な情報が次元削減の段階で失われうると指摘されています。これに対処するために、深層自己符号化器を利用して次元削減とクラスタリングを一貫で学習する手法も提案されていますが、クラスタリング時のモデルが単純すぎたり、自己符号化器の事前学習がクラスタリング側からの modify を妨げていると。
      • 3タイプの分類とは別枠で「次元削減と混合分布の学習の結合にも関心が高まっていた」という記述があるのですが(別枠なのはこれは必ずしも異常検知でないからですね)、話としてはこの2タイプ目に該当するのではないかと思うのでここに書いておきますね。といっても、この種の先行手法は次元削減が線形であったり、次元削減が事前学習を前提としていて柔軟性がなかったり、という主張が繰り返されているだけですね。それらに比べて本手法 DAGMM は「次元削減が事前学習不要で」「かつ非線形で」「かつGMMと結合して学習する」というのがよいのだと。それに加えて、特に異常検知のために再構築エラーも活用していると。
  • (特徴空間に写像した後に)一定割合の外れ値を覗いた正常データを囲む境界面を求めようとするタイプ(=One Class SVM)。
    • これもそのままです。特徴空間で正常データと異常データを分離する超平面を探そうということですね。このアプローチは高次元だと次元の呪いのために局所最適解に陥りやすいと書かれています。あ、Qiita で以下のような記事を見つけました。
      異常検知のための One Class SVM - Qiita
今回の提案手法 DAGMM は2番目のアプローチに1番目のアプローチの要素も取り入れたものといった位置付けなのですかね。そんなこんなで、今回の検証で DAGMM の比較対象にする先行手法は以下です。
OC-SVM
(Chen2001)
これは上の3番目の One Class SVM です。カーネル関数は通常の RBF カーネルを採用したとのことです。
DSEBM-e
(Zhai2016)
これらは上の1番目のアプローチで、ナブラを取ると深層自己符号化器の再構築エラーとなるようなエネルギー関数を定義するようですね。それで、DSEBM-e ではエネルギーが大きいサンプルを異常とみなし、DSEBM-r では再構築エラーが大きいサンプルを異常とみなします。
DSEBM-r
(Zhai2016)
DCN
(Yang2017)
異常検知に限らない次元削減と混合分布の結合学習のところで出てきた先行手法ですが、3タイプの分類だと2番目に該当するでしょうね。これは自己符号化器(深層ではない)の学習を後段の k-means が制御します。今回の異常検知の用途では、所属するクラスタクラスタ中心から距離が離れたデータを異常とみなします。

f:id:cookie-box:20180513082908p:plain:w60

色々なアプローチにつて最新の手法と比較したってことなのかな。One Class SVM はちょっと古いけど、もう最近の研究はないのかな。SVM は異常検知に利用するには柔軟性に欠ける?

f:id:cookie-box:20180513082851p:plain:w60

あと、上の比較対象の先行手法とは別に、DAGMM のフレームワークの各要素の有効性の検証のため、以下の DAGMM の亜種でも異常検知を行って DAGMM の結果と比較してみます。

GMM-EN学習時のみ目的関数から「再構築エラー」部分を取り除いたものです。学習後の異常検知は元の DAGMM で行います。
PAE目的関数から「エネルギー」ごと取り除いたものです。なのでもはやただの深層自己符号化器です。再構築エラーによって異常検知します。また、この場合は深層自己符号化器に事前学習(Vincent2010)を施すようです。
E2E-AEモデルの設定は上の PAE と同じそうなのですが、end-to-end で学習するようです。ちょっとよくわからなかったのですが、Zhai2016 と同様のエネルギー関数を利用して尤度を最大化しようとするということなのでしょうか。再構築エラーによって異常検知するということです。
PAE-GMM-EMまず事前学習済の深層自己符号化器を学習してから、EMアルゴリズムによってGMMのパラメータを推定します。学習後の異常検知は元の DAGMM と同じエネルギー関数で行います。
PAE-GMM上の PAE-GMM-EM とほとんど同じですが、EMアルゴリズムではなく推定ネットワークによってGMMのパラメータを推定します。
DAGMM-p上の PAE-GMM と似ているのですが、まず圧縮ネットワークを学習した後、次にモデル全体を結合学習します。
DAGMM-NVIDAGMM のエネルギー関数を、neural variational inference のそれに置き換えたものです。

f:id:cookie-box:20180513082908p:plain:w60

亜種多いな!

f:id:cookie-box:20180513082851p:plain:w60

なんかもう楽しそうですね。それで、再構築エラーには relative Euclidean distance  || x - x' ||_2 / ||x||_2 及びコサイン類似度  x \cdot  x' / (||x||_2 ||x'||_2) を採用したと書いてあるんですが、これは  f(x, x') \in \mathbb{R}^2 ってことなんですよね? あ、これらの距離関数を選定した理由は Appendix を読むようにと。

(次回があれば)つづく