コンサルでデータサイエンティスト

仕事でPythonを書いてます。機械学習、Webマーケティングに興味があります。趣味は旅です。

オートエンコーダを用いた異常検知についてまとめた

ニューラルネットワークおよび Deep Learning の応用として、オートエンコーダを用いた異常検知について紹介したいと思います。

 

目次

 

オートエンコーダとは

オートエンコーダ (Auto encoder) とは自己符号器と呼ばれるニューラルネットワークの一種です。ニューラルネットワークにはさまざまな役割を果たすものがありますが、オートエンコーダは入力データを次元削減して圧縮し、出力データを生成するニューラルネットワークです。この圧縮処理はエンコードと呼ばれ、オートエンコーダの名前の由来となっています。

統計・機械学習分野で使われている次元圧縮手法としては主成分分析 (PCA) が有名ですが、オートエンコーダの圧縮処理はこれとほとんど同じであると考えてよいでしょう。

ニューラルネットワークは入力データに対して、所望の出力になるように内部の重みを調整していくことで学習を行います。オートエンコーダでは、入力と出力が同じになるようにネットワークの学習を進めます。

 

f:id:hktech:20180905214819p:plain

オートエンコーダを用いた異常検知

オートエンコーダを用いて異常検知を行う方法についてご紹介します。オートエンコーダは学習された入力データについては、同じようなデータを出力しようとします。ここで、入出力されるデータとしては波形を想像してみてください。

学習がうまくできているオートエンコーダを使えば下記のような結果が得られます。

  • 正常波形入力 → 学習した波形と同じような波形の出力
  • 異常波形入力 → 学習した波形とは異なる波形の出力

このように、オートエンコーダの復元結果をもとに異常検知を実現することができます。

 

まとめ

オートエンコーダを用いた異常検知について紹介しました。ニューラルネットワークを用いることから、構造データや時系列データに限らず、画像データや文書データなどにも使えるという利点があります。簡単な異常検知手法がうまく適用できないような場面で、ぜひ試してみてはいかがでしょうか。