(57)【要約】【課題】深層学習を使ってログの異常検知を行う場合の学習データの前処理や選定、モデルの選択を適切に行えるようになることで、検知精度を向上させること。【解決手段】前処理部１３１は、学習用のデータ及び検知対象のデータを加工する。また、生成部１３２は、前処理部１３１によって加工された学習用のデータを基に、深層学習により正常状態のモデルを生成する。また、検知部１３３は、前処理部１３１によって加工された検知対象のデータをモデルに入力して得られた出力データを基に異常度を計算し、異常度を基に検知対象のデータの異常を検知する。【選択図】図１
2020140580.tif 000002
【特許請求の範囲】
【請求項１】
学習用のデータ及び検知対象のデータを加工する前処理部と、
前記前処理部によって加工された学習用のデータを基に、深層学習によりモデルを生成する生成部と、
前記前処理部によって加工された検知対象のデータを前記モデルに入力して得られた出力データを基に異常度を計算し、前記異常度を基に前記検知対象のデータの異常を検知する検知部と、
を有することを特徴とする検知装置。
【請求項２】
前記前処理部は、特徴量の時系列データである前記学習用のデータから、時間に対する変動の大きさの度合いが所定値以下である特徴量を特定し、
前記検知部は、前記検知対象のデータの特徴量うち、前記前処理部によって特定された特徴量、又は、前記前処理部によって特定された特徴量以外の特徴量の少なくともいずれかを基に異常を検知することを特徴とする請求項１に記載の検知装置。
【請求項３】
前記前処理部は、前記学習用のデータ及び検知対象のデータの一部又は全てを、当該データの所定の時刻間の差又は比に変換することを特徴とする請求項１に記載の検知装置。
【請求項４】
前記生成部は、深層学習にオートエンコーダ又はリカレントニューラルネットワークを用いることを特徴とする請求項１から３のいずれか１項に記載の検知装置。
【請求項５】
前記生成部は、前記学習用のデータに対して複数回学習を行い、
前記検知部は、前記生成部によって生成された各モデルのうち、互いの関係の強さに応じて選択されたモデルを用いて異常を検知することを特徴とする請求項４に記載の検知装置。
【請求項６】
前記前処理部は、時系列データである前記学習用のデータを所定の期間ごとのスライディングウィンドウで分割し、
前記生成部は、前記前処理部によって分割されたスライディングウィンドウごとのデータのそれぞれを基に、モデルを生成することを特徴とする請求項４又は５に記載の検知装置。
【請求項７】
前記前処理部は、前記学習用のデータに対する複数の異なる正規化手法ごとに生成されたモデル群、又は、それぞれに異なるモデルパラメータが設定されたモデル群のうちの少なくとも一方のモデル群に含まれる少なくとも１つのモデルを使って計算された異常度が所定の値より高いデータを前記学習用のデータから除外することを特徴とする請求項４から６のいずれか１項に記載の検知装置。
【請求項８】
コンピュータを、請求項１から７のいずれか１項に記載の検知装置として機能させるための検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検知装置及び検知プログラムに関する。
【背景技術】
【０００２】
従来、深層学習（Deep  Learning）を用いたモデルであるオートエンコーダ（ＡＥ：autoencoder）やリカレントニューラルネットワーク（ＲＮＮ：Recurrent  neural  network、ＬＳＴＭ：Long  short-term  memory、ＧＲＵ：Gated  recurrent  unit）を使った異常検知技術が知られている。例えば、オートエンコーダを用いた従来技術では、まず正常なデータの学習によりモデルが生成される。そして、検知対象のデータと、当該データをモデルに入力して得られる出力データとの間の再構成誤差が大きいほど異常の度合いが大きいと判断される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】池田  泰弘、石橋  圭介、中野  雄介、渡辺敬志郎、川原  亮一、「オートエンコーダを用いた異常検知におけるモデル再学習手法」、信学技報  IN2017-84
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術には、深層学習を使って異常検知を行う場合に、検知精度が低下する場合があるという問題がある。例えば、従来技術では、異常検知のための学習用のデータ又は検知対象のデータに対する適切な前処理が行われない場合がある。また、従来技術では、モデルの生成が乱数依存であるため、学習データに対して一意のモデルかどうかを確認するのが難しい。また、従来技術では、学習データに異常が含まれている可能性を考慮していない場合がある。いずれの場合も、異常検知における検知精度が低下することが考えられる。なお、ここでいう検知精度の低下は、異常なデータを異常と検知する検知率の低下、及び正常なデータを異常と検知する誤検知率の上昇を指すものとする。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、検知装置は、学習用のデータ及び検知対象のデータを加工する前処理部と、前記前処理部によって加工された学習用のデータを基に、深層学習によりモデルを生成する生成部と、前記前処理部によって加工された検知対象のデータを前記モデルに入力して得られた出力データを基に異常度を計算し、前記異常度を基に前記検知対象のデータの異常を検知する検知部と、を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、深層学習を使って異常検知を行う場合の学習データの前処理や選定、モデルの選択を適切に行えるようになり、検知精度を向上させることができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態に係る検知装置の構成の一例を示す図である。
【図２】図２は、オートエンコーダについて説明するための図である。
【図３】図３は、学習について説明するための図である。
【図４】図４は、異常検知について説明するための図である。
【図５】図５は、特徴量ごとの異常度について説明するための図である。
【図６】図６は、変動が小さい特徴量の特定について説明するための図である。
【図７】図７は、遁増するデータ及び遁減するデータの一例を示す図である。
【図８】図８は、遁増するデータ及び遁減するデータを変換したデータの一例を示す図である。
【図９】図９は、モデルが安定する場合の例を示す図である。
【図１０】図１０は、モデル安定しない場合の例を示す図である。
【図１１】図１１は、固定期間学習の結果の一例を示す図である。
【図１２】図１２は、スライディング学習の結果の一例を示す図である。
【図１３】図１３は、正規化手法ごとの異常度の一例を示す図である。
【図１４】図１４は、第１の実施形態に係る検知装置の学習処理の流れを示すフローチャートである。
【図１５】図１５は、第１の実施形態に係る検知装置の検知処理の流れを示すフローチャートである。
【図１６】図１６は、テキストログの異常度の一例を示す図である。
【図１７】図１７は、テキストログの異常度と障害情報との関係の一例を示す図である。
【図１８】図１８は、障害発生時のテキストログ及び特徴量ごとの異常度の一例を示す図である。
【図１９】図１９は、異常度が上昇したときのテキストログ及び特徴量ごとの異常度の一例を示す図である。
【図２０】図２０は、異常度が上昇した前後の時刻のテキストログＩＤのデータ分布の一例を示す図である。
【図２１】図２１は、数値ログの異常度の一例を示す図である。
【図２２】図２２は、数値ログの異常度と障害情報との関係の一例を示す図である。
【図２３】図２３は、障害発生時の数値ログ及び特徴量ごとの異常度の一例を示す図である。
【図２４】図２４は、数値ログの特徴量ごとの入力データと出力データの一例を示す図である。
【図２５】図２５は、検知プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００８】
以下に、本願に係る検知装置及び検知プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【０００９】
［第１の実施形態の構成］
まず、図１を用いて、第１の実施形態に係る検知装置の構成について説明する。図１は、第１の実施形態に係る検知装置の構成の一例を示す図である。図１に示すように、検知装置１０は、入出力部１１、記憶部１２及び制御部１３を有する。
【００１０】
入出力部１１は、データの入出力を行うためのインタフェースである。例えば、入出力部１１は、ネットワークを介して他の装置との間でデータ通信を行うためのＮＩＣ（Network  Interface  Card）であってもよい。
【００１１】
記憶部１２は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク等の記憶装置である。なお、記憶部１２は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）等のデータを書き換え可能な半導体メモリであってもよい。記憶部１２は、検知装置１０で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。さらに、記憶部１２は、プログラムの実行で用いられる各種情報を記憶する。また、記憶部１２は、モデル情報１２１を記憶する。
【００１２】
モデル情報１２１は、生成モデルを構築するための情報である。実施形態では、生成モデルはオートエンコーダであるものとする。また、オートエンコーダは、エンコーダ及びデコーダにより構成される。エンコーダ及びデコーダはいずれもニューラルネットワークである。このため、例えば、モデル情報１２１は、エンコーダ及びデコーダの層の数、各層の次元の数、ノード間の重み、層ごとのバイアス等を含む。また、以降の説明では、モデル情報１２１に含まれる情報のうち、重み及びバイアス等の学習により更新されるパラメータをモデルパラメータと呼ぶ場合がある。また、生成モデルを単にモデルと呼ぶ場合がある。
【００１３】
制御部１３は、検知装置１０全体を制御する。制御部１３は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路である。また、制御部１３は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。また、制御部１３は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部１３は、前処理部１３１、生成部１３２、検知部１３３及び更新部１３４を有する。
【００１４】
前処理部１３１は、学習用のデータ及び検知対象のデータを加工する。また、生成部１３２は、前処理部１３１によって加工された学習用のデータを基に、深層学習によりモデルを生成する。また、検知部１３３は、前処理部１３１によって加工された検知対象のデータをモデルに入力して得られた出力データを基に異常度を計算し、異常度を基に検知対象のデータの異常を検知する。なお、実施形態では、生成部１３２は、深層学習にオートエンコーダを用いる。また、以降の説明では、学習用のデータ及び検知対象のデータを、それぞれ学習データ及びテストデータと呼ぶ。
【００１５】
このように、検知装置１０は、制御部１３の各部の処理により、学習処理及び検知処理を行うことができる。また、生成部１３２は、生成したモデルの情報をモデル情報１２１として記憶部１２に格納する。また、生成部１３２は、モデル情報１２１を更新する。検知部１３３は、記憶部１２に記憶されたモデル情報１２１を基にオートエンコーダを構築し、異常検知を行う。
【００１６】
ここで、図２を用いて、実施形態におけるオートエンコーダについて説明する。図２は、オートエンコーダについて説明するための図である。図２に示すように、オートエンコーダを構成するＡＥネットワーク２は、エンコーダとデコーダを有する。ＡＥネットワーク２には、例えば、データに含まれる１つ以上の特徴量の値が入力される。そして、エンコーダは、入力された特徴量群を圧縮表現に変換する。さらにデコーダは、圧縮表現から特徴量群を生成する。このとき、デコーダは、入力されたデータと同様の構造を持つデータを生成する。
【００１７】
このように、オートエンコーダがデータを生成すること再構成と呼ぶ。また、再構成されたデータを再構成データと呼ぶ。また、入力されたデータと再構成データとの誤差を再構成誤差と呼ぶ。
【００１８】
図３を用いて、オートエンコーダの学習について説明する。図３は、学習について説明するための図である。図３に示すように、学習の際には、検知装置１０は、各時刻の正常なデータをＡＥネットワーク２に入力する。そして、検知装置１０は、再構成誤差が小さくなるようにオートエンコーダの各パラメータを最適化する。このため、十分に学習が行われると、入力データと再構成データが同値になる。
【００１９】
図４を用いて、オートエンコーダによる異常検知について説明する。図４は、異常検知について説明するための図である。図４に示すように、検知装置１０は、正常であるか異常であるかが未知のデータをＡＥネットワーク２に入力する。
【００２０】
ここで、時刻ｔ１のデータは正常であるものとする。このとき、時刻ｔ１のデータに対する再構成誤差は十分に小さくなり、検知装置１０は、時刻ｔ１のデータが再構成可能、すなわち正常であると判断する。
【００２１】
一方、時刻ｔ２のデータは異常であるものとする。このとき、時刻ｔ２のデータに対する再構成誤差は大きくなり、検知装置１０は、時刻ｔ１のデータが再構成不可能、すなわち異常であると判断する。なお、検知装置１０は、再構成誤差の大小を閾値により判定してもよい。
【００２２】
例えば、検知装置１０は、複数の特徴量を持つデータを使って学習及び異常検知を行うことができる。このとき、検知装置１０は、データごとの異常度だけでなく、特徴量ごとの異常度を計算することができる。
【００２３】
図５を用いて、特徴量ごとの異常度について説明する。図５は、特徴量ごとの異常度について説明するための図である。図５の例では、特徴量は、コンピュータにおける各時刻のＣＰＵ使用率、メモリ使用率、ディスクＩＯ速度等である。例えば、入力データの特徴量と再構成されたデータの特徴量とを比較すると、ＣＰＵ１とｍｅｍｏｒｙ１の値に大きく差がついている。この場合、ＣＰＵ１とｍｅｍｏｒｙ１を原因とする異常が発生している可能性があると推定することができる。
【００２４】
また、オートエンコーダのモデルは、学習データのサイズに依存せずにコンパクトにすることが可能である。また、モデルが生成済みであれば、検知は行列演算によって行われるため、高速に処理することが可能になる。
【００２５】
実施形態の検知装置１０は、検知対象の装置から出力されるログを基に、当該装置の異常を検知することができる。例えば、ログは、センサによって収集されるセンサデータであってもよい。例えば、検知対象の装置は、サーバ等の情報処理装置であってもよいし、ＩｏＴ機器であってもよい。例えば、検知対象の装置は、自動車に搭載された車載器、医療用のウェアラブル測定機器、生産ラインで使用される検査装置、ネットワークの末端のルータ等である。また、ログの種類は、数値及びテキストが含まれる。例えば、情報処理装置であれば、数値ログはＣＰＵやメモリなどの装置から収集される測定値、テキストログはsyslogやＭＩＢといったメッセージログである。
【００２６】
ここで、単にオートエンコーダの学習を行い、学習済みのモデルを使って異常検知を行うだけでは、十分な検知精度が得られない場合がある。例えば、各データに対し適切な前処理が行われない場合や、複数回学習した場合のモデル選択を誤った場合、学習データに異常が含まれている可能性を考慮していない場合に検知精度が低下することが考えられる。そこで、検知装置１０は、以下に説明する各処理の少なくともいずれかを実行することで、検知精度を向上させることができる。
【００２７】
（１．変動が小さい特徴量の特定）
学習データにおいては変動が小さかった特徴量が、検知対象データにおいてわずかでも変動した場合、検知結果に大きな影響を与える場合がある。この場合、本来異常でないデータに対する異常度が過剰に大きくなり、誤検知が起きやすくなる。
【００２８】
そこで、前処理部１３１は、特徴量の時系列データである学習用のデータから、時間に対する変動の大きさの度合いが所定値以下である特徴量を特定する。また、検知部１３３は、検知対象のデータの特徴量のうち、前処理部１３１によって特定された特徴量、又は、前処理部１３１によって特定された特徴量以外の特徴量の少なくともいずれかを基に異常を検知する。
【００２９】
つまり、検知部１３３は、テストデータの特徴量のうち、学習データにおいて変動が大きかった特徴量のみを用いて検知を行うことができる。これにより、検知装置１０は、学習データにおいては変動が小さかった特徴量が、検知対象データにおいてわずかでも変動した場合の異常度の影響を抑えることができ、異常でないデータの誤検知を抑制することができる。
【００３０】
一方、検知部１３３は、テストデータの特徴量のうち、学習データにおいて変動が小さかった特徴量のみを用いて検知を行うことができる。この場合、検知装置１０は、検知における異常度のスケールを大きくする。これにより、検知装置１０は、検知対象データにおいて変動が大きくなった場合のみを異常として検知することができる。
【００３１】
図６は、変動が小さい特徴量の特定について説明するための図である。図６の上部の表は、特徴量の学習データの標準偏差（ＳＴＤ）を計算し、閾値を設定したときの、各閾値に該当する特徴量の数である。例えば、閾値を０．１とした場合、ＳＴＤ≧０．１となる特徴量数（Ｇｒｏｕｐ１性能値数）は１３２個である。また、そのとき、ＳＴＤ＜０．１となる特徴量数（Ｇｒｏｕｐ２性能値数）は４８個である。
【００３２】
図６の例では、特徴量の標準偏差の閾値を０．１とする。このとき、前処理部１３１は、学習データから、標準偏差が０．１未満である特徴量を特定する。そして、検知部１３３が、テストデータから特定された特徴量を用いて検知を行った場合（ＳＴＤ＜０．１）、異常度は６．９×１０１２〜３．７×１０１６程度であった。一方、検知部１３３が、テストデータから特定された特徴量を除いて検知を行った場合（ＳＴＤ≧０．１）、異常度はＳＴＤ＜０．１の場合と比べて非常に小さくなり、最大でも２０，０００程度であった。
【００３３】
（２．遁増又は遁減するデータの変換）
サーバシステムから出力されるデータのように、遁増又は遁減するデータが存在する。このようなデータの特徴量は、学習データとテストデータにおいて取り得る値の範囲が異なる場合があり、誤検知の原因になる。例えば、累積値の場合、累積値そのものよりも値の変化度合い等に意味がある場合がある。
【００３４】
そこで、前処理部１３１は、学習用のデータ及び検知対象のデータの一部又は全てを、当該データの所定の時刻間の差又は比に変換する。例えば、前処理部１３１は、時刻間のデータの値の差分を取ってもよいし、ある時刻のデータの値を１つ前の時刻のデータの値で割ってもよい。これにより、検知装置１０は、学習データとテストデータのデータ取り得る範囲の違いによる影響を抑えることができ、誤検知の発生を抑え、さらに、テストデータにおいて、学習時と異なる変化をする特徴量の異常を検知しやすくなる。図７は、遁増するデータ及び遁減するデータの一例を示す図である。また、図８は、遁増するデータ及び遁減するデータを変換したデータの一例を示す図である。
【００３５】
（３．最適なモデルの選択）
モデルの学習を行う際には、モデルパラメータの初期値等をランダムに決定する場合がある。例えば、オートエンコーダを含むニューラルネットワークを用いたモデルの学習を行う際には、ノード間の重み等の初期値をランダムに決定する場合がある。また、誤差逆伝播の際にドロップアウトの対象になるノードがランダムに決定される場合がある。
【００３６】
このような場合、層（レイヤ）の数、層ごとの次元数（ノード数）が一定であっても、最終的に生成されるモデルが毎回同じものになるとは限らない。そのため、ランダム性のパターンを変えて学習を複数回試行すると、複数のモデルが生成されることになる。ランダム性のパターンを変えることは、例えば初期値として使用する乱数を発生させ直すことである。このような場合、各モデルから計算される異常度が異なることもあり、異常検知に使用するモデルによっては、誤検知が起きる原因になる。
【００３７】
そこで、生成部１３２は、複数のパターンごとに学習を行う。つまり、生成部１３２は、学習用のデータに対して複数回学習を行う。そして、検知部１３３は、生成部１３２によって生成されたモデルのうち、互いの関係の強さに応じて選択されたモデルを用いて異常を検知する。生成部１３２は、関係の強さとして、同一のデータを入力したときの再構成データから計算される異常度間の相関係数を計算する。
【００３８】
図９は、モデルが安定する場合の異常度の例を示す図である。各矩形内の数値は、各モデルの異常度間の相関係数である。例えば、trial3とtrial8との相関係数は０．８である。図９の例では、モデル間の相関係数が最低でも０．７７と高いため、生成部１３２がどのモデルを選択しても大きな差は生じないと考えられる。
【００３９】
一方、図１０は、モデルが安定しない場合の異常度の例を示す図である。図９と同様に、各矩形内の数値は、モデル間の相関係数である。例えば、trial3という試行で生成されたモデルと、trial8という試行で生成されたモデルとの相関係数は０．９２である。図１０の場合、これらのモデルからは選択せず、層の数や層ごとの次元数などを変更して、再度モデルの生成をやり直すのがよい。
【００４０】
（４．データの分布の時間変化への対応）
サーバシステムから出力されるデータのように、時間の経過に応じて分布が変化するデータがある。このため、分布の変化前に収集された学習データを使って生成されたモデルを用いて、分布の変化後に収集されたテストデータの検知を行った場合、テストデータの正常分布を学習していないために、正常なデータの異常度が大きくなることが考えられる。
【００４１】
そこで、前処理部１３１は、時系列データである学習用のデータを所定の期間ごとのスライディングウィンドウで分割する。そして、生成部１３２は、前処理部１３１によって分割されたスライディングウィンドウごとのデータのそれぞれを基に、モデルを生成する。また、生成部１３２は、固定期間の学習データに基づくモデルの生成（固定期間学習）と、当該固定期間をスライディングウィンドウで分割した期間それぞれの学習データに基づくモデルの生成（スライティング学習）の両方を行ってもよい。また、スライディング学習は、分割されたスライディングウィンドウごとのデータを基に生成されるモデルをすべて使用するのではなく、その中からいずれかを選択して使用してもよい。例えば、前日から一定期間遡ったデータを使って作成したモデルを、翌日１日の異常検知に適用することを繰り返してもよい。
【００４２】
図１１は、固定期間学習の結果の一例を示す図である。図１２は、スライディング学習の結果の一例を示す図である。図１１及び図１２は、各モデルから計算された異常度を表している。スライディング学習は、前日までの2週間のデータで作成したモデルで、翌日1日の異常度を算出している。スライディング学習の方が、固定期間学習と比べて異常度が上昇する期間が多い。これは、短期的に見ると、データ分布が細かく変化しているためであると見ることができる。
【００４３】
（５．学習データからの異常データの除去）
検知装置１０はいわゆるアノマリ検知を行うものであるため、学習データはなるべく正常なデータであることが望ましい。一方で、収集した学習データの中には、人が認識することが難しい異常データや外れ度が高いデータが含まれていることがある。
【００４４】
前処理部１３１は、学習用のデータに対する複数の異なる正規化手法ごとに生成されたモデル群、又は、それぞれに異なるモデルパラメータが設定されたモデル群のうちの少なくとも一方のモデル群に含まれる少なくとも１つのモデルを使って計算された異常度が所定の値より高いデータを学習用のデータから除外する。なお、この場合のモデルの生成及び異常度の計算は、それぞれ生成部１３２及び検知部１３３によって行われてもよい。
【００４５】
図１３は、正規化手法ごとの異常度の一例を示す図である。図１３に示すように、各正規化手法に共通して、０２／０１以降の異常度が高い。この場合、前処理部１３１は、学習データから０２／０１以降のデータを除外する。また、前処理部１３１は、少なくとも１つの正規化手法で異常度が高くなるデータを除外することができる。
【００４６】
また、異なるモデルパラメータが設定されたモデル群を用いて異常度を計算する場合も、図１３に示すような複数の異常度の時系列データが得られる。その場合も同様に、前処理部１３１は、いずれかの時系列データで異常度が高いデータを除外する。
【００４７】
［第１の実施形態の処理］
図１４を用いて、検知装置１０の学習処理の流れについて説明する。図１４は、第１の実施形態に係る検知装置の学習処理の流れを示すフローチャートである。図１４に示すように、まず、検知装置１０は、学習データの入力を受け付ける（ステップＳ１０１）。次に、検知装置１０は、遁増又は遁減する特徴量のデータを変換する（ステップＳ１０２）。例えば、検知装置１０は、各データを所定の時刻間の差又は比に変換する。
【００４８】
ここで、検知装置１０は、バリエーションごとの学習データに対する正規化を実行する（ステップＳ１０３）。バリエーションとは、正規化の手法であり、図１３に示すmin-max正規化、標準化（Z-score）、ロバスト正規化等が含まれる。
【００４９】
検知装置１０は、生成モデルを用いて、学習データからデータを再構成する（ステップＳ１０４）。そして、検知装置１０は、再構成誤差から異常度を計算する（ステップＳ１０５）。そして、検知装置１０は、異常度が高い期間のデータを除外する（ステップＳ１０６）。
【００５０】
ここで、未試行のバリエーションがある場合（ステップＳ１０７、Ｙｅｓ）、検知装置１０は、ステップＳ１０３に戻り、未試行のバリエーションを選択して処理を繰り返す。一方、未試行のバリエーションがない場合（ステップＳ１０７、Ｎｏ）、検知装置１０は、次の処理へ進む。
【００５１】
検知装置１０は、ランダム性のパターンを設定した上で（ステップＳ１０８）、生成モデルを用いて学習データからデータを再構成する（ステップＳ１０９）。そして、検知装置１０は、再構成誤差から異常度を計算する（ステップＳ１１０）。
【００５２】
ここで、未試行のパターンがある場合（ステップＳ１１１、Ｙｅｓ）、検知装置１０は、ステップＳ１０８に戻り、未試行のパターンを設定して処理を繰り返す。一方、未試行のパターンがない場合（ステップＳ１１１、Ｎｏ）、検知装置１０は、次の処理へ進む。
【００５３】
検知装置１０は、各パターンの生成モデルの相関の大きさを計算し、相関が大きい生成モデル群の中から生成モデルを選択する（ステップＳ１１２）。
【００５４】
図１５を用いて、検知装置１０の検知処理の流れについて説明する。図１５は、第１の実施形態に係る検知装置の検知処理の流れを示すフローチャートである。図１５に示すように、まず、検知装置１０は、テストデータの入力を受け付ける（ステップＳ２０１）。次に、検知装置１０は、遁増又は遁減する特徴量のデータを変換する（ステップＳ２０２）。例えば、検知装置１０は、各データを所定の時刻間の差又は比に変換する。
【００５５】
検知装置１０は、学習時と同じ手法でテストデータを正規化する（ステップＳ２０３）。そして、検知装置１０は、生成モデルを用いてテストデータからデータを再構成する（ステップＳ２０４）。ここで、検知装置１０は、学習データにおいて変動が小さい特徴量を特定する（ステップＳ２０５）。このとき、検知装置１０は、特定した特徴量を異常度の計算対象から除外してもよい。そして、検知装置１０は、再構成誤差から異常度を計算する（ステップＳ２０６）。さらに、検知装置１０は、異常度を基に異常を検知する（ステップＳ２０７）。
【００５６】
［第１の実施形態の効果］
前処理部１３１は、学習用のデータ及び検知対象のデータを加工する。また、生成部１３２は、前処理部１３１によって加工された学習用のデータを基に、深層学習によりモデルを生成する。また、検知部１３３は、前処理部１３１によって加工された検知対象のデータをモデルに入力して得られた出力データを基に異常度を計算し、異常度を基に検知対象のデータの異常を検知する。このように、実施形態によれば、深層学習を使って異常検知を行う場合の学習データの前処理や選定、モデルの選択を適切に行えるようになり、検知精度を向上させることができる。
【００５７】
前処理部１３１は、特徴量の時系列データである学習用のデータから、時間に対する変動の大きさの度合いが所定値以下である特徴量を特定する。また、検知部１３３は、検知対象のデータの特徴量のうち、前処理部１３１によって特定された特徴量、又は、前処理部１３１によって特定された特徴量以外の特徴量の少なくともいずれかを基に異常を検知する。これにより、検知装置１０は、検知精度を低下させるデータを除外することができる。
【００５８】
前処理部１３１は、学習用のデータ及び検知対象のデータの一部又は全てを、当該データの所定の時刻間の差又は比に変換する。これにより、検知装置１０は、学習データが特徴量の取りうる範囲を網羅していなくても誤検知を抑制できる。また、上昇または下降のトレンド成分の影響を取り除くことで、時間による値の範囲の変化の影響を抑えることができる。
【００５９】
生成部１３２は、深層学習にオートエンコーダを用いる。これにより、検知装置１０は、再構成誤差による異常度の計算及び異常検知を行うことができるようになる。
【００６０】
生成部１３２は、学習用のデータに対して複数回学習を行う。また、検知部１３３は、生成部１３２によって生成された各モデルのうち、互いの関係の強さに応じて選択されたモデルを用いて異常を検知する。これにより、検知装置１０は、最適なモデルを選択することができる。
【００６１】
前処理部１３１は、時系列データである学習用のデータを所定の期間ごとのスライディングウィンドウで分割する。また、生成部１３２は、前処理部１３１によって分割されたスライディングウィンドウごとのデータのそれぞれを基に、モデルを生成する。これにより、検知装置１０は、データ分布の変化に早期に追従したモデルを生成することができ、データ分布が変化することの影響による誤検知を抑えることができる。
【００６２】
前処理部１３１は、学習用のデータに対する複数の異なる正規化手法ごとに生成されたモデル群、又は、それぞれに異なるモデルパラメータが設定されたモデル群のうちの少なくとも一方のモデル群を使って計算された異常度が所定の値より高いデータを学習用のデータから除外する。これにより、検知装置１０は、検知精度を低下させるデータを除外することができる。
【００６３】
［検知装置の出力例］
ここで、検知装置１０による検知結果の出力例について説明する。検知装置１０は、例えばテキストログ及び数値ログの学習及び検知を行うことができる。例えば、数値ログの特徴量は、各種センサが計測した数値及び数値に統計的な処理を施した値である。また、例えば、テキストログの特徴量は、各メッセージを分類してＩＤを付与し、一定時刻ごとの各ＩＤの出現頻度を表す値である。
【００６４】
以降の出力結果を得るための設定等について説明する。まず、使用したデータは、OpenStack系のシステムの３つのコントローラノードから取得した数値ログ（約３５０メトリクス）及びテキストログ（約３０００〜４５００ＩＤ）である。また、データの収集期間は５／１〜６／３０であり、収集間隔は５分である。また、期間中に、メンテナンス日を含めて８回の異常イベントが発生した。
【００６５】
検知装置１０は、コントローラノードごとにモデルを生成した。また、検知装置１０は、各モデルを使って検知を行った。学習期間は５／１〜６／５である。また、検知の対象となる評価期間は、５／１〜６／３０である。
【００６６】
図１６は、テキストログの異常度の一例を示す図である。図１６に示すように、検知装置１０は、メンテナンスがあった５／１２や障害が発生した６／１９に高い異常度を出力している。また、図１７は、テキストログの異常度と障害情報との関係の一例を示す図である。図１７に示すように、検知装置１０は、異常が発生した５／７や６／１９に高い異常度を出力している。
【００６７】
図１８は、障害発生時のテキストログ及び特徴量ごとの異常度の一例を示す図である。なお、outlierが特徴量ごとの異常度を表しており、値が大きな上位１０のログメッセージを示している。図１８に示すように、rabbit関連の障害が発生した６／１９の該当時刻のログメッセージを見ると、rabbitに関する内容が多く、一部ではERRORが記されている。ここから、rabbitで何かあったことが原因ではないかと推測することが可能となる。
【００６８】
図１９は、異常度が上昇したときのテキストログ及び特徴ごとの異常度の一例を示す図である。また、図２０は、異常度が上昇した前後の時刻のテキストログＩＤのデータ分布の一例を示す図である。図１９に示すように、上位１０のログの特徴ごとの異常度は一致しており、これは４００以上のログで同じ値であった。また、図２０に示すように、各コントローラで発生したテキストログのＩＤが類似しており、１０：３１以前の時刻にこれらのＩＤは全く出現していなかったことがわかる。これより、１０：３１に普段出ないログが大量に出力されるような異常が発生したことが示唆されている。
【００６９】
図２１は、数値ログの異常度の一例を示す図である。図２１に示すように、検知装置１０は、メンテナンスがあった５／１２や障害が発生した５／２０に高い異常度を出力している。また、図２２は、数値ログの異常度と障害情報との関係の一例を示す図である。図２２に示すように、検知装置１０は、異常が発生した６／１４や６／１９に高い異常度を出力している。
【００７０】
図２３は、障害発生時の数値ログ及び特徴量ごとの異常度の一例を示す図である。図２３に示すように、rabbit関連の障害が発生した６／１９の同時刻に検知装置１０はrabbitのメモリ関連の特徴量が高い異常度を出力している。図２４は、６／１９の同時刻前後の数値ログの特徴量ごとの入力データと再構成データの一例を示す図である。originalが入力データを、reconstructが再構成データを表す。図２４に示すように、特徴量ごとの異常度が一番大きなtop1のrabbitのメモリ関連の特徴量は、該当時刻に入力データが大幅に小さな値となったが、その変化がうまく再構成できていないことがわかる。一方、残りの３つの特徴量は、該当時刻の再構成データが大きく上昇している様子が確認される。これは、rabbitのメモリ関連の特徴量が下降したときは、残りの３つの特徴量は上昇すると学習された結果であるが、下降度合いが学習期間の想定以上に大きかったため、異常度が大きくなったと推測される。
【００７１】
［その他の実施形態］
これまで、生成部１３２が深層学習にオートエンコーダを用いる場合の実施形態を説明した。一方で、生成部１３２は、深層学習にリカレントニューラルネットワーク（以降、ＲＮＮ）を用いてもよい。つまり、生成部１３２は、深層学習にオートエンコーダ又はＲＮＮを用いる。
【００７２】
ＲＮＮは、時系列データを入力とするニューラルネットワークである。例えば、ＲＮＮを使った異常検知方法には、予測モデルを構築する方法と、sequence-to-sequenceのオートエンコーダモデルを構築する方法がある。また、ここでいうＲＮＮには、単純なＲＮＮだけでなく、ＲＮＮのバリエーションであるＬＳＴＭやＧＲＵも含まれる。
【００７３】
予測モデルを構築する方法では、検知装置１０は、再構成誤差の代わりに、元のデータの値と予測値の誤差を基に異常を検知する。例えば、予測値は、所定の期間の時系列データを入力した場合のＲＮＮの出力値であり、ある時刻の時系列データの推定値である。検知装置１０は、実際に収集されたある時刻のデータと当該時刻の予測値との誤差の大きさを基に異常を検知する。例えば、検知装置１０は、誤差の大きさが閾値を超えている場合に、当該時刻に異常が発生したことを検知する。
【００７４】
sequence-to-sequenceのオートエンコーダモデルを構築する方法は、オートエンコーダを構築する点は第１の実施形態と共通しているが、ニューラルネットワークがＲＮＮである点、及び入力データ及び出力データ（再構成データ）が時系列データである点が異なる。この場合、検知装置１０は、時系列データの再構成誤差を異常度とみなし、異常を検知することができる。
【００７５】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、ＣＰＵ及び当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７６】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７７】
［プログラム］
一実施形態として、検知装置１０は、パッケージソフトウェアやオンラインソフトウェアとして上記の検知を実行する検知プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の検知プログラムを情報処理装置に実行させることにより、情報処理装置を検知装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistant）等のスレート端末等がその範疇に含まれる。
【００７８】
また、検知装置１０は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の検知に関するサービスを提供する検知サーバ装置として実装することもできる。例えば、検知サーバ装置は、学習データを入力とし、生成モデルを出力とする検知サービスを提供するサーバ装置として実装される。この場合、検知サーバ装置は、Ｗｅｂサーバとして実装することとしてもよいし、アウトソーシングによって上記の検知に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【００７９】
図２５は、検知プログラムを実行するコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００８０】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００８１】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、検知装置１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、検知装置１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００８２】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０は、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した実施形態の処理を実行する。
【００８３】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００８４】
１０  検知装置
１１  入出力部
１２  記憶部
１３  制御部
１２１  モデル情報
１３１  前処理部
１３２  生成部
１３３  検知部
【図１】
2020140580.tif 000003
【図２】
2020140580.tif 000004
【図３】
2020140580.tif 000005
【図４】
2020140580.tif 000006
【図５】
2020140580.tif 000007
【図６】
2020140580.tif 000008
【図７】
2020140580.tif 000009
【図８】
2020140580.tif 000010
【図９】
2020140580.tif 000011
【図１０】
2020140580.tif 000012
【図１１】
2020140580.tif 000013
【図１２】
2020140580.tif 000014
【図１３】
2020140580.tif 000015
【図１４】
2020140580.tif 000016
【図１５】
2020140580.tif 000017
【図１６】
2020140580.tif 000018
【図１７】
2020140580.tif 000019
【図１８】
2020140580.tif 000020
【図１９】
2020140580.tif 000021
【図２０】
2020140580.tif 000022
【図２１】
2020140580.tif 000023
【図２２】
2020140580.tif 000024
【図２３】
2020140580.tif 000025
【図２４】
2020140580.tif 000026
【図２５】
2020140580.tif 000027