Transformerを用いた時系列データ異常検知
概要
話題のChatGPTにも活用されているTransformerを用いて、時系列データの異常検知を行いました。 Transfomerは自然言語処理分野で提案されたモデル[1]でしたが、画像、数値データにも応用できることが知られています。 異常検知において異常データが豊富にあることは、稀なので、正常データのみを学習して、異常を検知する手法を用いました。 今回は心電図データ[2]を用いて、データに含まれる異常なパターンを検知したいと思います。
異常検知
今回用いる手法では、Transformerに時系列予測(Forecasting)をさせ、正常データのみを学習させます。 その後、異常データを含むデータを使って、予測させると、Transformerは正常データのみを学習しているので、 異常を含む箇所は予測がうまくいきません。このことから、予測誤差の大きい箇所が異常と判断できます。
データの準備
学習に用いるのは、正常データのみで学習を行います。
モデルに学習させるのは、n個の時系列データから1つ先の時間ステップを予測させるタスクです。 そのため長さn+1の時系列データになるように、元の時系列データを整形します。長さn+1の時系列データのうち、 前のn個をモデルの入力として扱い、残りを予測対象として、モデルに学習させます。
また、必要に応じてデータの正規化も行います。
予測モデルの構築
今回用いるモデルはTransformer[1]です。モデル図は以下の通りです。
トレーニング
ハイパーパラメータを調整し、正常データが高精度に予測できるように学習させます。 学習の結果は以下の通りです。高精度に予測ができていることが分かります。
異常スコアの計算
最後に全てのデータを使ってTransformerに予測をさせます。絶対誤差を計算したところ、 元データの周期性が崩れている箇所がうまく予測できていないことが分かります。
この性質を利用して、時系列データの異常検知を行うことができます。
参考文献
関連製品
弊社では、お客様のご要望に応じたAI活用システムの提案、作成を行っております。まずはお気軽にご相談ください。