【論文紹介】Anomaly Detection using One-Class Neural Networks - 12月 08, 2018 論文紹介記事です。 紹介する論文はKDD2018で発表された以下の論文です。 [Anomaly Detection using One-Class Neural Networks](https://arxiv.org/pdf/1802.06360.pdf) ### 1行まとめ 異常検知で用いられるone class svmをneural networkに適用した研究。 ### 既存研究 deepをつかうもの、one class的な考え方のものが列挙されていた * NNを使用して得た特徴ベクトルをOC-SVMに用いる手法(=hybrid型) * Deep Autoencoderを使う系のもの * one class svm hybrid型では特徴ベクトルの獲得が異常検知用にカスタマイズされたものではないため、非効率的である。 一方、提案手法では特徴量獲得もOne-Class 的な考え方に基づいて行われるように改良し、性能改善が期待できるとのこと。 ### One class SVMの仕組み 普通のSVMは分類をのためのアルゴリズム。 そのため教師あり学習に属する。 一方One class SVMは教師なし学習であり、正常なデータのみを用いて異常を検知する。 SVMでは、正例と負例のマージンを最大化するように境界面を決定する。 One class SVMは、原点と正常なデータのマージンを最大化するように境界面を決定する。 それ以外はSVMと同じなので、カーネルトリックを使って非線形分離を行うこと、ソフトマージンを採用してきっちり完全に分類できない場合も許容するなどの工夫はそのまま使える。 マージンの部分が境界面を$f(x;w,b)=wx-r$とすると $\frac{r}{|w|}$ となる。これを最大化することは、$\frac{1}{2}|w|^2-r$を最小化することと同じ。 加えて、ソフトマージン的な感じで、分類に失敗することもある程度許容するため、目的関数に以下の項を付け加える。 sumの部分では、正常な点が境界面より原点から遠ければ何もせず、原点側に落ちてしまった場合にペナルティをかけるというイメージ。 $\frac{1}{\nu}\frac{1}{N}\sum_{n=1}^N \max (0,r-w\Phi(X_n))$ $\nu$は分類失敗を許容する度合いを表すハイパーパラメータである。 $\nu$が大きいほど許容する。小さいほどハードマージンに近づいていく。 ### One class NNの仕組み 基本的にはSVMの場合と同じ。 カーネルトリックを使って高次元空間に写像する部分がニューラルネットの一層目に置き換わっているようなイメージ。 そして、目的関数にはその変更の他に、一層目の重み行列もマージンと捉えて最小化の対象に加える。 こうすることで、より異常検知に適した中間表現が得られるようになることが期待される(カーネルトリックはあらかじめどのカーネル関数を使うかを決める必要があるし、それは必ずしも異常検知タスクに特化した表現になっているわけではないため。) モデル構成は単純に3層MLP。 One-Class NNの目的関数はこのようになります。 ただ、このようにするとSVMの場合と異なり、最適化問題がnon-convexになる。 (SVMの場合は2次計画問題である。) これを解くために論文では$w,V$と$r$を交互に最適化を行う手法を提案している。 ### 最適化アルゴリズム $w$と$V$(ニューラルネットの重み。$V$は入力層から中間層)の最適化は普通のback propagationをする。 この時$r$はfixしている。 次に、$w$と$V$をfixして$r$の最適化を行う。 $\mathrm{argmin}_r (\frac{1}{N\nu}\sum_n^N \max(0,r-wg(VX_n)))$ これは実は解析的に解くことができることを論文中で示している。 結論から言うと、 現在fixしている$w,V$を用いて出力される$wg(VX_n)$の列のうち、$N*\nu$番目に小さい$wg(VX_n)$が最適な$r$である。 証明は論文を参照。 といっても普通に最小化したい関数を$r$で微分するだけですが。 ### 実験設定 人工データのほかに、画像系のよくあるやつ三つと、系列データのデータセット一つ使って比較実験。 * Synthetic data * MNIST * USPS * CIFAR-10 * PFAM 提案手法に画像そのまま、系列画像そのままは使えないので convolutional auto encoderやLSTM auto encoderを使って中間表現を得てからそれを入力に使っている つまり前処理の部分は訓練後くっつけるけど重みは固定する。 ### 結果・考察 * mnistとかuspsなどの簡単なデータだとoc-svmとあんまりパフォーマンス変わらないけど、cifar-10だと提案手法が強い。->複雑なデータにも異常検知のためにカスタマイズされた表現を得ることができる? * 系列データでも強かった * 学習には時間かかる ### 疑問とか考えたこととか * hybrid モデルとは違うんだ!とか言う割にこの手法も前処理部分に事前学習使ってるっていうね * future workでend to endのモデルを考えたいとは言ってるけど ### おわりに 異常検知の論文を読むのは初めてだったので、まずOne-Class SVMの知識がなくてそこからの勉強でしたが、異常検知でのディープラーニングの利用って今こんな感じなのか〜ということがわかってよかったです。 また何か読んだら紹介するのでよろしくお願いします。 この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿