(57)【要約】【課題】揺らぎが大きい時系列データの異常検知を精度よく行うこと。【解決手段】異常検知装置１０は、異常検知対象に関する時系列データを取得し、敵対的生成ネットワークにおける生成器によって時系列データを基に生成されたフェイクデータと時系列データとを識別するように学習された識別器を用いて、時系列データの識別結果を出力し、該識別結果に基づいて、時系列データの異常を検知する。【選択図】図１
2020071845.tif 000002
【特許請求の範囲】
【請求項１】
異常検知対象に関する時系列データを取得する取得部と、
敵対的生成ネットワークにおける生成器によって前記時系列データを基に生成されたフェイクデータと前記時系列データとを識別するように学習された識別器を用いて、前記取得部によって取得された時系列データの識別結果を出力し、該識別結果に基づいて、前記時系列データの異常を検知する検知部と
を有することを特徴とする異常検知装置。
【請求項２】
前記取得部によって取得された時系列データおよびノイズデータを入力として、前記生成器を用いて前記フェイクデータを生成し、該フェイクデータと実測値データとを前記識別器に入力して該フェイクデータと前記実測値データとを識別し、識別結果を基に、前記実測値データに似ている前記フェイクデータを生成できるように前記生成器を最適化し、前記フェイクデータと前記実測値データの識別精度が向上できるように前記識別器を最適化する学習部をさらに有することを特徴とする請求項１に記載の異常検知装置。
【請求項３】
前記学習部は、前記取得部によって取得された各モードの時系列データおよびノイズデータとともに、各時系列データと同種のモードの過去の時系列データを参考データとして前記生成器に入力して前記フェイクデータを生成し、該フェイクデータおよび実測値データとともに、前記参考データを前記識別器に入力して該フェイクデータと前記実測値データとを識別し、前記生成器および前記識別器を最適化し、
前記検知部は、前記取得部によって取得された検知対象の時系列データとともに、該検知対象の時系列データと同一モードの参考データを前記識別器に入力し、時系列データの識別結果を出力し、該識別結果に基づいて、異常を検知することを特徴とする請求項２に記載の異常検知装置。
【請求項４】
異常検知装置によって実行される異常検知方法であって、
異常検知対象に関する時系列データを取得する取得工程と、
敵対的生成ネットワークにおける生成器によって前記時系列データを基に生成されたフェイクデータと前記時系列データとを識別するように学習された識別器を用いて、前記取得工程によって取得された時系列データの識別結果を出力し、該識別結果に基づいて、前記時系列データの異常を検知する検知工程と
を含んだことを特徴とする異常検知方法。
【請求項５】
異常検知対象に関する時系列データを取得する取得ステップと、
敵対的生成ネットワークにおける生成器によって前記時系列データを基に生成されたフェイクデータと前記時系列データとを識別するように学習された識別器を用いて、前記取得ステップによって取得された時系列データの識別結果を出力し、該識別結果に基づいて、前記時系列データの異常を検知する検知ステップと
をコンピュータに実行させることを特徴とする異常検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検知装置、異常検知方法および異常検知プログラムに関する。
【背景技術】
【０００２】
従来、大量の時系列データを取得し、普段と異なるふるまい、例えば、通信量の急な増加などの異常を検知する異常検知技術が知られている。時系列データの異常検知の例としては、工場のラインで動いているロボットの故障検知や、株価の暴騰のアラートなどが挙げられる。
【０００３】
また、時系列データに対する異常検知の手法としては、自己回帰モデル等のデータを予測する予測モデルを作成し、その予測結果と観測値との予測誤差を基に異常度を計算する手法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７３９０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記したような従来の予測モデルを用いて異常検知を行う手法では、精度よく異常検知を行うことができない場合があるという課題があった。例えば、ネットワークや株価のような揺らぎの大きい時系列データでは、精度の高い予測モデルを作成することが難しく、精度よく異常検知を行うことができない場合がある。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明の異常検知装置は、異常検知対象に関する時系列データを取得する取得部と、敵対的生成ネットワークにおける生成器によって前記時系列データを基に生成されたフェイクデータと前記時系列データとを識別するように学習された識別器を用いて、前記取得部によって取得された時系列データの識別結果を出力し、該識別結果に基づいて、前記時系列データの異常を検知する検知部とを有することを特徴とする。
【０００７】
また、本発明の異常検知方法は、異常検知装置によって実行される異常検知方法であって、異常検知対象に関する時系列データを取得する取得工程と、敵対的生成ネットワークにおける生成器によって前記時系列データを基に生成されたフェイクデータと前記時系列データとを識別するように学習された識別器を用いて、前記取得工程によって取得された時系列データの識別結果を出力し、該識別結果に基づいて、前記時系列データの異常を検知する検知工程とを含んだことを特徴とする。
【０００８】
また、本発明の異常検知プログラムは、異常検知対象に関する時系列データを取得する取得ステップと、敵対的生成ネットワークにおける生成器によって前記時系列データを基に生成されたフェイクデータと前記時系列データとを識別するように学習された識別器を用いて、前記取得ステップによって取得された時系列データの識別結果を出力し、該識別結果に基づいて、前記時系列データの異常を検知する検知ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、揺らぎが大きい時系列データの異常検知を精度よく行うことができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施形態に係る異常検知装置の構成例を示すブロック図である。
【図２】図２は、生成器によってフェイクデータを生成して識別器に入力する処理例について説明する図である。
【図３】図３は、識別器によって入力データを識別する処理を説明する図である。
【図４】図４は、生成器および識別器を学習する処理を説明する図である。
【図５】図５は、識別器を用いて異常度を出力する処理を説明する図である。
【図６】図６は、第１の実施形態に係る異常検知装置における学習処理の流れの一例を示すフローチャートである。
【図７】図７は、第１の実施形態に係る異常検知装置における異常検知処理の流れの一例を示すフローチャートである。
【図８】図８は、第２の実施形態に係る異常検知装置の構成例を示すブロック図である。
【図９】図９は、参考データを入力して生成器および識別器を学習する処理を説明する図である。
【図１０】図１０は、参考データを入力して識別器を用いて異常度を出力する処理を説明する図である。
【図１１】図１１は、異常検知対象の時系列データがどのモードに属するかを踏まえた上で、異常度を出力する処理を説明する図である。
【図１２】図１２は、異常検知プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願に係る異常検知装置、異常検知方法および異常検知プログラムの実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本願に係る異常検知装置、異常検知方法および異常検知プログラムが限定されるものではない。
【００１２】
［第１の実施形態］
以下の実施の形態では、第１の実施形態に係る異常検知装置１０の構成、異常検知装置１０の処理の流れを順に説明し、最後に第１の実施形態による効果を説明する。
【００１３】
［異常検知装置の構成］
まず、図１を用いて、異常検知装置１０の構成を説明する。図１は、第１の実施形態に係る異常検知装置の構成例を示すブロック図である。図１に示すように、異常検知装置１０は、ユーザ端末２０とネットワーク３０を介して接続されている。
【００１４】
ここでユーザ端末２０は、例えば、デスクトップ型ＰＣ、タブレット型ＰＣ、ノート型ＰＣ、携帯電話機、スマートフォン、ＰＤＡ（Personal  Digital  Assistant）等の情報処理装置である。
【００１５】
また、図１に示すように、この異常検知装置１０は、通信処理部１１、制御部１２および記憶部１３を有する。以下に異常検知装置１０が有する各部の処理を説明する。
【００１６】
通信処理部１１は、各種情報に関する通信を制御する。例えば、通信処理部１１は、ユーザ端末２０から時系列データおよび異常度の検知要求を受信する。また、通信処理部１１は、ユーザ端末２０に対して異常度の検知結果を送信する。なお、本実施形態では、異常検知装置１０とユーザ端末２０とがネットワーク３０を介して通信を行う場合を例に説明しているが、これに限定されるものではなく、ユーザ端末２０と接続することなく異常検知装置１０がローカルな環境で動作してもよい。
【００１７】
記憶部１３は、制御部１２による各種処理に必要なデータおよびプログラムを格納し、時系列データ記憶部１３ａを有する。例えば、記憶部１３は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置などである。
【００１８】
時系列データ記憶部１３ａは、異常検知対象に関する時系列データを記憶する。時系列データ記憶部１３ａは、時系列データとして、例えば、銀行のサイトやニュースサイトにおけるネットワークトラフィックに関するデータや、工場や機器などに設置されたセンサのデータ（例えば、温度や圧力、音、振動等のデータ）などを記憶する。
【００１９】
制御部１２は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、取得部１２ａ、学習部１２ｂおよび検知部１２ｃを有する。ここで、制御部１２は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路やＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路である。
【００２０】
制御部１２の各機能部によって実行される処理は、敵対的生成モデルの機械学習を行う学習フェーズと、学習フェーズにおいて学習された敵対的生成モデルの識別器を用いて異常を検知する異常検知フェーズとに大別される。制御部１２における学習部１２ｂは、学習フェーズにおける処理を行う機能部であり、制御部１２における検知部１２ｃは、異常検知フェーズにおける処理を行う機能部である。
【００２１】
なお、第１の実施形態に係る異常検知装置１０は、学習フェーズにおける学習処理および異常検知フェーズにおける異常検知処理の両方を行う装置として説明するが、これに限定されるものではなく、異常検知フェーズにおける異常検知処理のみを行うようにしてもよい。この場合には、異常検知装置１０は、事前に機械学習処理が行われた敵対的生成モデルの識別器が予め設定されているものとする。  
【００２２】
また、学習フェーズにおいては、例えば、ニューラルネットワークの一種である敵対的生成ネットワークであるＧＡＮ（Generative  Adversarial  Network）を利用し、生成器と識別器という二つのニューラルネットワークを組み合わせて学習が行われる。例えば、敵対的生成ネットワークでは、学習処理として、対象データが時系列データである場合には、生成器はランダムなフェイクデータを生成するようにするとともに、識別器は入力されたデータが本物の実測値データであるのか生成器が生成したフェイクデータであるのかを識別するように構築される。
【００２３】
ここで、図２を用いて、学習フェーズにおいて、生成器によってフェイクデータを生成して識別器に入力する処理の概要について説明する。図２は、生成器によってフェイクデータを生成して識別器に入力する処理例について説明する図である。図２に例示するように、異常検知装置１０は、所定期間の時系列データ（例えば、０：００〜０：５９の時系列データ）をＲＮＮ（Recurrent  Neural  Network）に入力し、生成器に入力して時系列データの特徴量を得る。
【００２４】
そして、異常検知装置１０は、時系列データの特徴量とランダムに生成されたノイズとを生成器に入力して所定時点のフェイクデータ（例えば、１：００のデータ）を生成し、該フェイクデータを識別器に入力する。識別器は、入力されたデータが本物の実測値データであるのか生成器が生成したフェイクデータであるのかを識別し、入力されたデータに対する正常らしさ、言い換えると異常らしさを出力する。例えば、識別器は、「０」〜「１」の値を出力するように設定され、「１」に近いほど異常らしさが高く、「０」に近いほど正常らしさが高いものとする。そして、異常検知装置１０は、識別器の識別結果が正解に近くなるように、生成器および識別器を最適化する。つまり、識別器は、フェイクデータが入力された場合には、異常度が高い値（１に近い値）を出力し、実測値データの場合が入力された場合には、異常度が低い値（「０」に近い値）を出力することができるように、学習により最適化する。
【００２５】
また、図３を用いて、異常検知フェーズにおいて、識別器によって入力データを識別する処理を説明する。図３は、識別器によって入力データを識別する処理を説明する図である。図３に例示するように、異常検知装置１０は、所定期間の時系列データをＲＮＮに入力し、生成器に入力して時系列データの特徴量を得る。
【００２６】
そして、異常検知装置１０は、時系列データの特徴量と判定したい実測値データを、学習フェーズによって得られた識別器に入力し、識別結果を出力する。例えば、識別器は、異常度として、「０」〜「１」の値を出力するように設定され、「１」に近いほど異常度が高く、「０」に近いほど異常度が低いものとする。なお、学習フェーズにおける学習処理および異常検知フェーズにおける異常検知処理については、後に図を用いて詳述する。以下では、各機能部について説明する。
【００２７】
取得部１２ａは、異常検知対象に関する時系列データを取得する。例えば、取得部１２ａは、ユーザ端末２０から時系列データを取得し、取得した時系列データを時系列データ記憶部１３ａに格納する。取得部１２ａは、時系列データを定期的に取得するようにしてもよいし、まとめて取得するようにしてもよい。
【００２８】
ここで、時系列データとは、例えば、銀行のサイトやニュースサイトにおけるネットワークトラフィックに関するデータや、工場や機器などに設置されたセンサのデータ等どのようなデータであってもよい。また、例えば、取得部１２ａは、ユーザ端末２０からではなく、通信機器やセンサからリアルタイム時系列データを取得するようにしてもよい。また、取得部１２ａは、取得した時系列データに対して、空値補完処理や正規化処理等の既存のデータ前処理を行うようにしてもよい。
【００２９】
学習部１２ｂは、取得部１２ａによって取得された時系列データおよびノイズデータを入力として、生成器を用いてフェイクデータを生成し、該フェイクデータと実測値データとを識別器に入力して該フェイクデータと実測値データとを識別する。また、学習部１２ｂは、識別結果を基に、実測値データに似ている前記フェイクデータを生成できるように生成器を最適化し、フェイクデータと実測値データの識別精度が向上できるように識別器を最適化する。
【００３０】
ここで、図４を用いて、生成器および識別器を学習する処理について説明する。図４は、生成器および識別器を学習する処理を説明する図である。図４に例示するように、学習部１２ｂは、所定期間の時系列データ（図４の例では、Ｘｔ−ｗ〜Ｘｔ−１の期間の時系列データ）をＲＮＮに入力し、生成器に入力して時系列データの特徴量を得る。そして、学習部１２ｂは、時系列データの特徴量とランダムに生成されたノイズとを生成器に入力してＸｔ時点のフェイクデータを生成する。
【００３１】
そして、学習部１２ｂは、時系列データの特徴量と、生成したＸｔ時点のフェイクデータと、Ｘｔ時点の実測値データとを順次識別器に入力する。ここで、識別器は、入力されたフェイクデータおよび実測値データがそれぞれ本物の実測値データであるのか生成器が生成したフェイクデータであるのかを識別する。例えば、識別器は、識別結果として、「０」〜「１」の値を出力するように設定される。
【００３２】
そして、この学習部１２ｂは、識別結果に基づいて、生成器および識別器を最適化する。つまり、学習部１２ｂは、識別器が実測値データを正常と識別し、フェイクデータを異常と識別できるように識別器を最適化するとともに、生成器が実測値データらしいフェイクデータを生成できるように生成器を最適化する。
【００３３】
検知部１２ｃは、敵対的生成ネットワークにおける生成器によって時系列データを基に生成されたフェイクデータと時系列データとを識別するように学習された識別器を用いて、取得部１２ａによって取得された時系列データの識別結果を出力し、該識別結果に基づいて、異常を検知する。
【００３４】
ここで、図５を用いて、識別器を用いて識別結果を異常度として出力する処理を説明する。図５は、識別器を用いて異常度を出力する処理を説明する図である。図５に例示するように、検知部１２ｃは、Ｘｔ−ｗ〜Ｘｔ−１の期間の時系列データをＲＮＮに入力し、生成器に入力して時系列データの特徴量を得る。そして、検知部１２ｃは、Ｘｔ−ｗ〜Ｘｔ−１の期間の時系列データの特徴量と、Ｘｔの実測値データとを識別器に入力し、異常度を出力する。
【００３５】
そして、検知部１２ｃは、識別器から出力された異常度の値が所定の閾値（例えば、０．６）以上であるか判定し、異常度の値が所定の閾値以上である場合には異常を検知し、ユーザ端末２０に異常発生に関する警告を出力する。例えば、検知部１２ｃは、警告サインとして、一定時間後に異常検知対象に異常が発生する可能性がある旨の警告メッセージを出力してもよいし、警告を報知する音を出力するようにしてもよい。
【００３６】
［異常検知装置の処理手順］
次に、図６および図７を用いて、第１の実施形態に係る異常検知装置１０による処理手順の例を説明する。図６は、第１の実施形態に係る異常検知装置における学習処理の流れの一例を示すフローチャートである。図７は、第１の実施形態に係る異常検知装置における異常検知処理の流れの一例を示すフローチャートである。
【００３７】
まず、図６を用いて、異常検知装置１０における学習処理の流れを説明する。図６に例示するように、取得部１２ａが、時系列データを取得すると（ステップＳ１０１肯定）、学習部１２ｂは、時系列データを入力データとして、生成器を用いてフェイクデータを生成する（ステップＳ１０２）。例えば、学習部１２ｂは、Ｘｔ−ｗ〜Ｘｔ−１の期間の時系列データの特徴量とランダムに生成されたノイズとを生成器に入力してＸｔ時点のフェイクデータを生成する。
【００３８】
そして、学習部１２ｂは、実測値データとフェイクデータとを識別器を用いて識別する（ステップＳ１０３）。例えば、識別器は、入力されたフェイクデータおよび実測値データがそれぞれ本物の実測値データであるのか生成器が生成したフェイクデータであるのかを識別する。続いて、学習部１２ｂは、識別結果に基づいて生成器および識別器を学習する（ステップＳ１０４）。例えば、学習部１２ｂは、識別器が実測値データを正常と識別し、フェイクデータを異常と識別できるように識別器を最適化するとともに、生成器が実測値データらしいフェイクデータを生成できるように生成器を最適化する。
【００３９】
次に、図７を用いて、異常検知装置１０における異常検知処理の流れを説明する。図７に例示するように、取得部１２ａが、時系列データを取得すると（ステップＳ２０１肯定）、検知部１２ｃは、時系列データを入力データとして、学習部１２ｂによって学習された識別器を用いて異常度を出力する（ステップＳ２０２）。
【００４０】
そして、検知部１２ｃは、識別器から出力された異常度が所定の閾値以上であるか判定し（ステップＳ２０３）、異常度が所定の閾値以上でない場合には（ステップＳ２０３否定）、そのまま処理を終了する。また、検知部１２ｃは、異常度の値が所定の閾値以上である場合には（ステップＳ２０３肯定）、時系列データの異常を検知する（ステップＳ２０４）。ここで、検知部１２ｃは、異常を検知した場合には、例えばユーザ端末２０に異常発生に関する警告を出力するようにしてもよい。
【００４１】
（第１の実施形態の効果）
第１の実施形態に係る異常検知装置１０は、異常検知対象に関する時系列データを取得し、敵対的生成ネットワークにおける生成器によって時系列データを基に生成されたフェイクデータと時系列データとを識別するように学習された識別器を用いて、時系列データの識別結果を出力し、該識別結果に基づいて、時系列データの異常を検知する。これにより、異常検知装置１０は、精度よく異常検知を行うことが可能である。
【００４２】
つまり、異常検知装置１０は、過去の時系列データを用いて、敵対的生成ネットワークにおける生成器および識別器を学習し、学習した識別器を適用して、時系列データの異常を検知するので、データの予測誤差を計算することなく、時系列データの異常を検知することができる。
【００４３】
また、異常検知装置１０は、学習時において、過去の時系列データを与えて識別器を学習することで、識別器が通常と異なる異常なデータを識別できるようにし、予測モデルの構築が困難な揺らぎが大きい時系列データに対しても、精度よく異常検知を行うことが可能である。つまり、従来では、ネットワークトラフィックや株価のような、揺らぎの大きい系列データでは、予測モデルを構築することが難しかった。第１の実施形態に係る異常検知装置１０では、学習時において、過去の時系列データを与えて識別器を学習することで、識別器が通常と異なる異常なデータを識別できるようにし、予測モデルの構築が困難な揺らぎが大きい時系列データに対しても、精度よく異常検知を行うことが可能である。
【００４４】
［第２の実施形態］
上述した第１の実施形態では、異常検知装置１０が、時系列データを用いて生成器および識別器を学習する場合を説明したが、これに限定されるものではなく、例えば、参考データとして、時系列データと同種のモードに属する過去の大量の時系列データをさらに用いて生成器および識別器を学習するようにしてもよい。
【００４５】
そこで、以下では、第２の実施形態に係る異常検知装置１０Ａが、異常検知対象となり得る時系列データと同種のモードに属する過去の時系列データをさらに用いて生成器および識別器を学習し、異常検知する際には、異常検知対象の時系列データがどのモードに所属しているかを踏まえた上で、異常検知を行う場合について説明する。つまり、第２の実施形態における学習フェーズでは、異常検知装置１０Ａが、異常検知対象となり得る複数のモードの時系列データと複数のモードの参考データを用いて、学習処理を行い、いずれかのモードに特化したモデルではなく、汎用的なモデルを学習して識別器を得る。言い換えると、異常検知装置１０Ａは、学習フェーズにおいて、複数のモードの時系列データを同時に使用して一つのモデルを学習する。また、同種のモードとは、同一のモードだけでなく、同一種別のモードも含むものとする。例えば、時系列データが銀行サイトのネットワークトラフィックデータ等である場合には、参考データとして、過去の銀行サイトのネットワークトラフィックデータだけでなく、別のネットワークトラフィックデータを用いてもよい。そして、第２の実施形態における異常検知フェーズでは、異常検知対象とする時系列データと、当該時系列データと同種のモードに属する過去の時系列データを識別器に入力して、異常検知しようとしているデータがどのモードに所属しているかを踏まえた上で、異常検知を行う。ここで、モードとは、例えば、銀行サイトのネットワークトラフィックに関するモードや、ニュースサイトのネットワークトラフィックに関するモード等がある。例えば、異常検知フェーズにおいて、異常検知対象の時系列データが銀行サイトのネットワークトラフィックデータである場合には、参考データとして、過去の銀行サイトのネットワークトラフィックデータを識別器に入力するものとする。なお、第１の実施形態に係る異常検知装置１０と同様の構成や処理については説明を省略する。
【００４６】
図８を用いて、第２の実施形態に係る異常検知装置１０Ａの構成例について説明する。図８は、第２の実施形態に係る異常検知装置の構成例を示すブロック図である。図８に示すように、第２の実施形態に係る異常検知装置１０Ａは、第１の実施形態に係る異常検知装置１０と比較して、参考データ記憶部１３ｂを新たに有する点が異なる。
【００４７】
参考データ記憶部１３ｂは、異常検知対象に関する過去の時系列データを記憶する。例えば、参考データ記憶部１３ｂは、異常検知対象に関する過去の時系列データとして、過去１日分、１か月分、１年分等の大量の時系列データを記憶する。参考データ記憶部１３ｂは、複数のモードについて、過去の時系列データをそれぞれ記憶する。つまり、参考データ記憶部１３ｂは、例えば、銀行のサイトやニュースサイトにおけるネットワークトラフィックに関する過去の時系列データや、工場や機器などに設置されたセンサの時系列データ（例えば、温度や圧力、音、振動等のデータ）等を記憶する。なお、参考データ記憶部１３ｂに記憶されるデータは、事前に格納されたデータであって、適宜更新可能なデータである。
【００４８】
取得部１２ａは、異常検知対象に関する時系列データを取得する。例えば、取得部１２ａは、一定期間、ユーザ端末２０から複数のモードの時系列データを取得し、取得した時系列データを時系列データ記憶部１３ａに格納する。
【００４９】
学習部１２ｂは、取得部１２ａによって取得された各モードの時系列データおよびノイズデータとともに、各時系列データと同種のモードの過去の時系列データを参考データとして生成器に入力してフェイクデータを生成し、該フェイクデータおよび実測値データとともに、参考データを識別器に入力して該フェイクデータと実測値データとを識別し、生成器および識別器を最適化する。
【００５０】
ここで、図９を用いて、参考データを入力して生成器および識別器を学習する処理を説明する。図９は、参考データを入力して生成器および識別器を学習する処理を説明する図である。図９に例示するように、学習部１２ｂは、所定期間の時系列データ（図４の例では、Ｘｔ−ｗ〜Ｘｔ−１の期間の時系列データ）をＲＮＮに入力し、生成器に入力して時系列データの特徴量を得る。そして、学習部１２ｂは、時系列データの特徴量とランダムに生成されたノイズとともに、入力した時系列データと同種のモードの参考データを生成器に入力してＸｔ時点のフェイクデータを生成する。
【００５１】
そして、学習部１２ｂは、時系列データの特徴量と、生成したＸｔ時点のフェイクデータと、Ｘｔ時点の実測値データととともに、時系列データと同種のモードの参考データを識別器に入力する。ここで、識別器は、入力されたデータが本物の実測値データであるのか生成器が生成したフェイクデータであるのかを識別する。そして、この学習部１２ｂは、識別結果に基づいて、生成器および識別器を最適化する。つまり、学習部１２ｂは、識別器が実測値データを正常と識別し、フェイクデータを異常と識別できるように最適化するとともに、生成器が実測値データらしいフェイクデータを生成できるように最適化する。また、学習部１２ｂは、複数のモードについても、上記の学習処理を繰り返し行う。つまり、第２の実施形態における学習フェーズでは、学習部１２ｂが、複数のモードの時系列データや参考データを用いて、学習処理を行うので、いずれかのモードに特化したモデルではなく、汎用的なモデルを作ることができる。
【００５２】
検知部１２ｃは、取得部１２ａによって取得された検知対象の時系列データとともに、該検知対象の時系列データと同一モードの参考データを識別器に入力し、時系列データの異常度を出力し、該異常度に基づいて、異常を検知する。
【００５３】
ここで、図１０を用いて、参考データを入力して識別器を用いて異常度を出力する処理を説明する。図１０は、参考データを入力して識別器を用いて異常度を出力する処理を説明する図である。図１０に例示するように、検知部１２ｃは、Ｘｔ−ｗ〜Ｘｔ−１の期間の時系列データをＲＮＮに入力し、生成器に入力して時系列データの特徴量を得る。そして、検知部１２ｃは、Ｘｔ−ｗ〜Ｘｔ−１の期間の時系列データの特徴量と、Ｘｔの実測値データとともに、入力した時系列データと同一モードの参考データを識別器に入力し、異常度を出力する。これにより、識別器は、異常を検知しようとしているデータが、どのモードに所属しているかを踏まえた上で、異常検知を行うことができる。
【００５４】
例えば、図１１に例示するように、検知部１２ｃは、異常を検出したいＡ銀行の時系列データ（ネットワークトラフックデータ）を識別器に入力する場合には、参考データとして、Ａ銀行の普段の時系列データも識別器に入力することで、そのモードに特化した異常検知を行うことが可能である。図１１は、異常検知対象の時系列データがどのモードに属するかを踏まえた上で、異常度を出力する処理を説明する図である。また、識別器自体は全てのモードやデータを通して一つだけでよく、参考データを変えることで識別器の振る舞いを変えることが出来る。
【００５５】
このように、第２の実施形態に係る異常検知装置１０Ａでは、予測モデルの構築が困難な揺らぎの大きいモードの時系列データに対しても、異常度の計算を行うことが可能である。さらに、異常検知装置１０Ａでは、時系列データが属するモードの挙動を踏まえた異常検知ができることから、一つの識別器で、異なるモードに対して最適な異常検知を行うことが可能である。
【００５６】
従来では、異なるモード毎に異常検知モデルを用意した場合には、モードの数だけ異常検知モデルが必要となってしまう。つまり、従来では、挙動の異なる各モードについて、異常検知モデルを構築し、該異常検知モデルを用いて異常検知をそれぞれ行う場合には、モード毎に異常検知モデルを用意しなければならず、複数の異常検知モデルが必要となる。一方、従来では、全てのモードに同一の異常検知モデルを用いた場合には、精度がよく異常検知を行うことが困難であった。このため、従来では、全てのモードに適用できる異常検知モデルを構築することが困難であった。
【００５７】
これに対して、第２の実施形態に係る異常検知装置１０Ａでは、異常を検知したいモードと同種の時系列データおよび参考データを用いて、学習処理を行っているので、予測モデルの構築が困難な揺らぎの大きいモードの時系列データに対しても、異常度の計算を行うことが可能である。さらに、異常検知装置１０Ａでは、識別器に参考データを与えることで、時系列データが属するモードの挙動を踏まえた異常検知ができることから、一つの識別器で、異なるモードに対して最適な異常検知を行うことが可能である。
【００５８】
（システム構成等）
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵやＧＰＵおよび当該ＣＰＵやＧＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５９】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６０】
（プログラム）
また、上記実施形態において説明した異常検知装置が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係る異常検知装置１０が実行する処理をコンピュータが実行可能な言語で記述した異常検知プログラムを作成することもできる。この場合、コンピュータが異常検知プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる異常検知プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された異常検知プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。
【００６１】
図１２は、異常検知プログラムを実行するコンピュータを示す図である。図１２に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００６２】
メモリ１０１０は、図１２に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１２に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１２に例示するように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図１２に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１２に例示するように、例えばディスプレイ１１３０に接続される。
【００６３】
ここで、図１２に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の、異常検知プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００６４】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、各種処理手順を実行する。
【００６５】
なお、異常検知プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、異常検知プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００６６】
上記の実施形態やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００６７】
１０、１０Ａ  異常検知装置
１１  通信処理部
１２  制御部
１２ａ  取得部
１２ｂ  学習部
１２ｃ  検知部
１３  記憶部
１３ａ  時系列データ記憶部
１３ｂ  参考データ記憶部
２０  ユーザ端末
３０  ネットワーク
【図１】
2020071845.tif 000003
【図２】
2020071845.tif 000004
【図３】
2020071845.tif 000005
【図４】
2020071845.tif 000006
【図５】
2020071845.tif 000007
【図６】
2020071845.tif 000008
【図７】
2020071845.tif 000009
【図８】
2020071845.tif 000010
【図９】
2020071845.tif 000011
【図１０】
2020071845.tif 000012
【図１１】
2020071845.tif 000013
【図１２】
2020071845.tif 000014