(57)【要約】  異常情報推定装置は、正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力部と、前記異常データに足し合わすことで前記異常度が小さくなるベクトルを、各次元が異常の要因である尤もらしさを考慮して探索し、探索したベクトルに基づいて異常の要因を推定する推定部と、を有することで、検知された異常に関する詳細な情報の推定を可能とする。
2018211721.tif 000002
【特許請求の範囲】
【請求項１】
正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力部と、
前記異常データに足し合わすことで前記異常度が小さくなるベクトルを、各次元が異常の要因である尤もらしさを考慮して探索し、探索したベクトルに基づいて異常の要因を推定する推定部と、
を有することを特徴とする異常情報推定装置。
【請求項２】
前記推定部は、前記探索したベクトルにおいて値が非０である次元を異常の要因として推定する、
ことを特徴とする請求項１記載の異常情報推定装置。
【請求項３】
前記推定部は、前記数値ベクトルの各次元が取りうる範囲を制約条件として前記ベクトルを探索する、
ことを特徴とする請求項１又は２記載の異常情報推定装置。
【請求項４】
前記入力部は、前記異常データの各次元について、正常な状態の前記数値ベクトルからのずれを示す値を入力し、
前記推定部は、前記異常データと前記ずれを示す値に基づいて特定される値を初期値として、前記ベクトルを探索する、
ことを特徴とする請求項１乃至３いずれか一項記載の異常情報推定装置。
【請求項５】
前記入力部は、前記異常データの各次元について、正常な状態の前記数値ベクトルからのずれを示す値を入力し、
前記推定部は、前記ずれを示す値が閾値未満である次元を０に固定して、前記ベクトルを探索する、
ことを特徴とする請求項１乃至４いずれか一項記載の異常情報推定装置。
【請求項６】
前記探索したベクトルに基づき、異常の要因に関する情報を出力する出力部を有する、
ことを特徴とする請求項１記載の異常情報推定装置。
【請求項７】
前記出力部は、前記探索したベクトルの各次元のうち、絶対値が閾値を超える次元を異常の要因として出力する、
ことを特徴とする請求項６記載の異常情報推定装置。
【請求項８】
前記閾値は、過去の異常データについて探索したベクトルの各次元に基づく値である、
ことを特徴とする請求項７記載の異常情報推定装置。
【請求項９】
前記出力部は、前記探索したベクトルの各次元の絶対値をソートし、隣接する次元との絶対値の差分が最も大きい点に基づいて、異常の要因である次元を出力する、
ことを特徴とする請求項６記載の異常情報推定装置。
【請求項１０】
前記出力部は、前記探索したベクトルの各次元の絶対値に関してクラスタリングを行い、前記絶対値の統計量が大きい側のクラスタに属する次元を異常の要因として出力する、
ことを特徴とする請求項６記載の異常情報推定装置。
【請求項１１】
正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力部と、
前記異常データに足し合わすことで前記異常度が小さくなる第１のベクトルを、各次元が異常の要因である尤もらしさを考慮して探索する探索部と、
異常の原因が既知の複数の数値ベクトルのそれぞれについて前記第１のベクトルと同様に探索された第の２ベクトルと、前記第１のベクトルとの距離に基づいて、異常の原因を出力する出力部、
を有することを特徴とする異常情報推定装置。
【請求項１２】
正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力部と、
前記異常データに足し合わすことで前記異常度が小さくなる第１のベクトルを、各次元が異常の要因である尤もらしさを考慮して探索する探索部と、
異常の原因が既知の複数の数値ベクトルのそれぞれについて前記第１のベクトルと同様に探索された第の２ベクトルと、前記第１のベクトルとに関するクラスタリングの結果に基づいて、異常の原因を出力する出力部と、
を有することを特徴とする異常情報推定装置。
【請求項１３】
正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力手順と、
前記異常データに足し合わすことで前記異常度が小さくなるベクトルを、各次元が異常の要因である尤もらしさを考慮して探索し、当該ベクトルにおいて値が非０である次元を異常の要因として推定する推定手順と、
をコンピュータが実行することを特徴とする異常情報推定方法。
【請求項１４】
正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力手順と、
前記異常データに足し合わすことで前記異常度が小さくなる第１のベクトルを、各次元が異常の要因である尤もらしさを考慮して探索する探索手順と、
異常の原因が既知の複数の数値ベクトルのそれぞれについて前記第１のベクトルと同様に探索された第の２ベクトルと、前記第１のベクトルとの距離に基づいて、異常の原因を出力する出力手順と、
をコンピュータが実行することを特徴とする異常情報推定方法。
【請求項１５】
正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力手順と、
前記異常データに足し合わすことで前記異常度が小さくなる第１のベクトルを、各次元が異常の要因である尤もらしさを考慮して探索する探索手順と、
異常の原因が既知の複数の数値ベクトルのそれぞれについて前記第１のベクトルと同様に探索された第の２ベクトルと、前記第１のベクトルとに関するクラスタリングの結果に基づいて、異常の原因を出力する出力手順、
をコンピュータが実行することを特徴とする異常情報推定装置。
【請求項１６】
請求項１乃至１２いずれか一項記載の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常情報推定装置、異常情報推定方法及びプログラムに関する。
【背景技術】
【０００２】
観測対象のシステムから様々なデータをリアルタイムで観測する機能を有するシステムに関して、正常時のデータを用いて正常時におけるメトリック間（観測データ間）の相関関係を学習し、正常時におけるメトリック間の相関関係がテストデータにおいて崩れていた場合に、そのテストデータの「異常度」を出力するようなアルゴリズムが提案されている（例えば、非特許文献１、非特許文献２）。このようなアルゴリズムでは、観測するデータが大量にあるような場合でも、一次元の「異常度」というメトリックで異常の有無を判断できる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Hodge, Victoria J., and Jim Austin. "A survey of outlier detection methodologies." Artificial intelligence review 22.2 (2004): 85-126.
【非特許文献２】櫻田 麻由 ・ 矢入 健久，"オートエンコーダを用いた次元削減による宇宙機の異常検知"， 人工知能学会全国大会論文集 28, 1-3, 2014
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術では、「異常度」により、異常の有無を判断することは可能であるが、異常と判断された場合に、異常に関する詳細な情報を得るのは困難であった。【０００５】
本発明は、上記の点に鑑みてなされたものであって、検知された異常に関する詳細な情報の推定を可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、異常情報推定装置は、正常時の数値ベクトルの学習に基づいて、前記数値ベクトルの入力データの異常度を出力する異常検知アルゴリズムによって異常が検知された異常データを入力する入力部と、前記異常データに足し合わすことで前記異常度が小さくなるベクトルを、各次元が異常の要因である尤もらしさを考慮して探索し、探索したベクトルに基づいて異常の要因を推定する推定部と、を有する。
【発明の効果】
【０００７】
検知された異常に関する詳細な情報の推定を可能とすることができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施の形態における異常要因推定装置１０のハードウェア構成例を示す図である。
【図２】第１の実施の形態における異常要因推定装置１０の機能構成例を示す図である。
【図３】第１の実施の形態における異常要因推定装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【図４】第８の実施の形態の一例を説明するための図である。
【図５】第１０の実施の形態において出力部１３が実行する処理手順の一例を説明するためのフローチャートである。
【図６】第１０の実施の形態を説明するための図である。
【図７】第１１の実施の形態において出力部１３が実行する処理手順の一例を説明するためのフローチャートである。
【図８】第１の実施の形態で要因推定を行った場合の各特徴量の要因度を絶対値でソートしたグラフを示す図である。
【図９】第１の実施の形態で要因推定を行った場合の実際の要因を推定できた割合を示す図である。
【図１０】第３の実施の形態で要因推定を行った場合の初期値を与えたときの計算時間を示す図である。
【図１１】第６の実施の形態の推定の精度の一例を示す図である。
【図１２】第１１の実施の形態を用いて要因度をクラスタリングした結果の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、第１の実施の形態における異常要因推定装置１０のハードウェア構成例を示す図である。図１の異常要因推定装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１０】
異常要因推定装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１１】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って異常要因推定装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１２】
図２は、第１の実施の形態における異常要因推定装置１０の機能構成例を示す図である。異常要因推定装置１０は、観測対象のシステムにおいて観測された複数種類の観測データに基づいて異常を検知するための異常検知アルゴリズムにおいて異常と判断された場合の要因を推定する際に、各次元（各観測データ）が要因となる尤もらしさを考慮することで精度よく要因推定を行う。斯かる要因推定の実行のため、異常要因推定装置１０は、入力部１１、演算部１２及び出力部１３等を有する。これら各部は、異常要因推定装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００１３】
なお、観測対象のシステムは、ネットワークであってもよい。この場合の観測データは、ＭＩＢ（Management Information Base）データ、ＮｅｔＦｌｏｗによるフローデータ、ＣＰＵ使用率等であってもよい。
【００１４】
図３は、第１の実施の形態における異常要因推定装置１０が実行する処理手順の一例を説明するためのフローチャートである。ここでは、異常検知アルゴリズムとしてオートエンコーダ（非特許文献２）が用いられるとする。但し、主成分分析やバリエーショナルオートエンコーダ（Variational AutoEncoder）等、公知の他のアルゴリズムが異常検知アルゴリズムとして用いられてもよい。
【００１５】
異常検知時において、或る観測データ（テストデータ）について異常ありと判断された場合、入力部１１より当該テストデータ（異常データ）の特徴ベクトルｘ＿ｔｅｓｔ＝（ｘ＿ｔｅｓｔ＿１，ｘ＿ｔｅｓｔ＿２，…，ｘ＿ｔｅｓｔ＿Ｎ）、オートエンコーダのパラメータセットθ、特徴ベクトルにおける各次元の特徴量の要因のなりにくさｃ（又は要因としての尤もらしさ）＝（ｃ＿１、…、ｃ＿Ｎ）、及び異常度の閾値βが入力される（Ｓ１０１）。
【００１６】
テストデータの特徴ベクトルとは、例えば、各観測データの単位時間あたりの特徴量を次元とする数値ベクトルである。例えば、単位時間が１分で、１分間ごとの特徴量を抽出するとする。また、特徴量を、各プロトコル（ＴＣＰ，ＵＤＰ）の全送信バイト数であるとする。この場合、１分間のＴＣＰの送信データの集合と、１分間のＵＤＰの送信データの集合とについて、プロトコルがＴＣＰである全フローの全送信バイト数、プロトコルがＵＤＰである全フローの全送信バイト数等が計算され、それらの特徴量を各次元の要素とする２次元数値ベクトルが生成される。
【００１７】
また、θは、正常時におけるデータで学習されたオートエンコーダに対するパラメータであり、オートエンコーダが出力する異常度は、ｆ（ｘ＿ｔｅｓｔ，θ）として表される。以下、簡単のためθの表記は省略し、異常度を単純にｆ（ｘ＿ｔｅｓｔ）として表す。
【００１８】
続いて、演算部１２は、ｘ＿ｔｅｓｔの各次元に対応する次元を足し合わせることでオートエンコーダに入力した際の異常度が閾値β以下となるようなベクトルｘを探索する（Ｓ１０２）。すなわち、ｆ（ｘ＿ｔｅｓｔ＋ｘ）が閾値β以下となるｘが探索される。探索されたｘにおいて、値が非ゼロである次元が、異常の要因として推定される。
【００１９】
探索において、要因のなりにくさｃ＿ｉの大きい特徴量（次元）が要因として選ばれにくくするようにするための項として、λ｜｜ｃ・ｘ｜｜＿ｌ＿ｐが考慮（追加）される。すなわち、
ｆ（ｘ＿ｔｅｓｔ＋ｘ）＋λ｜｜ｃ・ｘ｜｜＿ｌ＿ｐ
を目的関数とし、当該目的関数が閾値β以下となるようなベクトルｘが探索される。ここで、λは、項の係数、ｃ・ｘは、ｃとｘとの要素ごとの積、｜｜・｜｜＿ｌ＿ｐは、ｌ＿ｐノルムを表す。特に、ｐ≦１の場合には、λ｜｜ｃ・ｘ｜｜＿ｌ＿ｐは、ｘにおける非ゼロの要素の数をできるだけ抑えるスパース項の役割を果たす。以下、ｐ＝１の場合について示す。
【００２０】
λは、どれだけ非ゼロの要素を抑えるのかを調整するためのパラメータであり、λが大きいほど非ゼロの要素は少なくなる。λの与え方としては、入力部１１より直接λを入力する方法や、入力部１１には所望のスパース性、すなわち、非ゼロの要素を何個以下に押さえたいのかが入力され、λについては様々な値を内部（例えば、補助記憶装置１０２等）で保持しておき、それぞれを採用した際の解の中で、最も所望のスパース性に近かったものを解として用いる方法等が考えられる。
【００２１】
ｃの与え方としては、例えば、対応する特徴量が異常の要因となる確率が既知である場合に、その確率の逆数に比例する値や、対応する特徴量の正常時における分布の平均がｘ＿ｔｒａｉｎ＿ｍｅａｎ＿ｉであり、標準偏差がｘ＿ｔｒａｉｎ＿ｓｔｄ＿ｉである場合に、平均からの誤差を標準偏差で除した値を外れ度合いと定義したときの、外れ度合いの絶対値の逆数に比例する値や、異常検知アルゴリズムが、入力されたテストデータと同次元の数値ベクトルを出力し、出力ベクトルとテストデータのベクトルの距離を異常度とみなすようなアルゴリズムである場合に、テストデータの値ｘ＿ｔｅｓｔ＿ｉと、ｘ＿ｔｅｓｔ＿ｉに対応する次元の出力ベクトルｙ＿ｉの誤差である再構成誤差ｘ＿ｔｅｓｔ＿ｉ−ｙ＿ｉの絶対値の逆数に比例する値等が考えられる。
【００２２】
また、全ての特徴量の要因のなりにくさが等しい場合、すなわちｃ＿１＝ｃ＿２＝…＝ｃ＿Ｎ＝１である場合、λ｜｜ｃ・ｘ｜｜＿ｌ＿ｐは、一般的なスパース項となる。
【００２３】
ここでは、ｃ＿１＝ｃ＿２＝…＝ｃ＿Ｎ＝１の例について示す。この時、演算部１２が解くべき最適化問題は、下記のように表される。
ｍｉｎ＿ｘｆ（ｘ＿ｔｅｓｔ＋ｘ）＋λ｜｜ｘ｜｜＿１
上記の最適化問題を、ｆ（ｘ＿ｔｅｓｔ＋ｘ）≦βとなるまで解くことで、異常度を閾値β以下にするようなベクトルが探索される。上記のようなｌ＿１ノルム最適化問題を解く手法としては様々なものが提案されており、例えば、加速付き近接勾配法を用いて効率的に解くことができる。加速付き近接勾配法については、「Beck, Amir, and Marc Teboulle. "A fast iterative shrinkage-thresholding algorithm for linear inverse problems." SIAM journal on imaging sciences 2.1 (2009): 183-202.」等の文献が参考とされてもよい。
【００２４】
続いて、出力部１３は、ｘにおいて非ゼロであるような次元に対応する特徴量を、異常の要因である特徴量、ｘにおいて非ゼロであるような次元の値にマイナスをかけた値を要因の度合いとして出力する（Ｓ１０３）。すなわち、ｘにおいて非ゼロであるような次元に対応する特徴量が、異常の要因であると推定される。マイナスの値をかけるのは、例えば、ｘ＿ｉが正の値である場合、当該ｘ＿ｉは、ｘ＿ｔｅｓｔ＿ｉをさらに増加させれば異常度が下がることを示しており、つまり、ｘ＿ｔｅｓｔ＿ｉが正常時に比べて低い値をとっているということを表すためである。
【００２５】
次に、第２の実施の形態について説明する。第２の実施の形態では第１の実施の形態と異なる点について説明する。第２の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００２６】
第２の実施の形態では、異常の要因を推定する際に、特徴量が取りうる値を制約条件として与えて解くことで、より尤もらしい要因を推定する方法を示す。
【００２７】
ステップＳ１０１において、入力部１１によって、第１の実施の形態におけるパラメータに加えて、各特徴量が取りうる値の制約条件が入力される。制約条件としては、例えば、最小値や最大値が入力されてもよい。この場合、トラヒック量のように負の値を取らない特徴量であれば、最小値が０として入力される。
【００２８】
ステップＳ１０２において、演算部１２は、第１の実施の形態の最適化問題に対して、入力された制約条件を追加した最適化問題を解く。例えば、入力情報が全て負の値を取らない特徴量であれば、最適化問題は下記のように表される。
ｍｉｎ＿ｘｆ（ｘ＿ｔｅｓｔ＋ｘ）＋λ｜｜ｘ｜｜＿１
ｓｂｊ．ｔｏ  ｘ＿ｔｅｓｔ＿ｉ＋ｘ＿ｉ≧０  ｆｏｒ  ａｌｌ  ｉ
制約条件を含んだ最適化問題を解く方法としては、制約条件を侵害した時に目的関数を大きくするような項を目的関数に与えるペナルティ法などが考えられる。ペナルティ法については、「Kurt Bryan and Yosi Shibberu, " Penalty Functions and Constrained Optimization." Dept. of Mathematics, Rose-Hulman Institute of Technology, 2005.」等の文献が参考とされてもよい。
【００２９】
次に、第３の実施の形態について説明する。第３の実施の形態では第１の実施の形態と異なる点について説明する。第３の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００３０】
第３の実施の形態では、異常の要因を推定する最適化問題を解く際に、解の初期値を予め与えることで、より尤もらしい要因を推定しつつ、問題を解く計算時間を低減する方法を示す。
【００３１】
ステップＳ１０１において、入力部１１によって、第１の実施の形態におけるパラメータに加えて、テストデータの各次元（各特徴量）の正常な状態からのずれを示す値が入力される。ずれを示す値としては、例えば、第１の実施の形態における外れ度合いや再構成誤差が考えられる。
【００３２】
ステップＳ１０２において、演算部１２は、最適化問題を解く際に、ｘの初期値をｘ＿０とし、ｘ＿０を入力部１１より入力された各特徴量のずれにマイナスを乗じた値に比例する値として与える。例えば、ずれを示す値として再構成誤差を用いた場合、ｘ＿０＿ｉ＝−α（ｘ＿ｔｅｓｔ＿ｉ−ｙ＿ｉ）として与えられる。ここで、αは比例定数である。ｙ＿ｉは、他の次元とｉ番目の次元との相関関係を考慮してｉ番目の次元を再構成した値である。ｘ＿ｔｅｓｔ＿ｉ−ｙ＿ｉが正の値であるときは、ｘ＿ｔｅｓｔ＿ｉは他の次元との相関関係を考慮した場合、もっと低い値である方がよい可能性が高いため、探索の初期値ｘ＿０＿ｉを−（ｘ＿ｔｅｓｔ＿ｉ−ｙ＿ｉ）に比例した正の値にとる。その結果、より早く最適解を得られ、計算時間を低減できると考えられる。また最適化問題の解法によっては、初期値に依存した局所解が出力される場合があるが、この場合、外れ度合いや再構成誤差に基づいて初期値を与えることで、より尤もらしい要因が解として出力されることが期待される。
【００３３】
次に、第４の実施の形態について説明する。第４の実施の形態では第１の実施の形態と異なる点について説明する。第４の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００３４】
第４の実施の形態では、異常の要因を推定する最適化問題を解く際に、解の探索時に動かす次元を制限することで、より尤もらしい要因を推定しつつ、問題を解く計算時間を低減する方法を示す。
【００３５】
ステップＳ１０１において、入力部１１によって、第３の実施の形態と同様に、第１の実施の形態におけるパラメータに加えて、各特徴量の正常な状態からのずれを示す値及び閾値γが入力される。
【００３６】
ステップＳ１０２において、演算部１２が最適化問題を解く際には、ｘについて、入力された正常な状態からのずれが閾値γ未満である次元は０として固定され、正常な状態からのずれが閾値γ以上である次元のみを動かして探索が行われる。これは、正常な状態からのずれが小さい次元は異常の要因である可能性が低いためである。そのような次元は動かさず、それ以外の次元のみを探索対象とすることで、最適化問題の探索領域を制限し、計算時間を低減できると考えられる。また、このように制約を与えることで、異常の要因である可能性が低い次元を動かさないため、より尤もらしい要因を解として出力されることが期待される。
【００３７】
次に、第５の実施の形態について説明する。第５の実施の形態では第１の実施の形態と異なる点について説明する。第５の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００３８】
第５の実施の形態では、異常の要因を推定する最適化問題を解く際に、第３の実施の形態と同様に初期値を与え、かつ、第４の実施の形態と同様に探索領域を制限することで、最適化問題の計算時間をより短縮する。
【００３９】
なお、上記各実施の形態の組合せは第３及び第４の実施の形態に限られない。上記各実施の形態が適宜組み合わされてよい。
【００４０】
次に、第６の実施の形態について説明する。第６の実施の形態では、第１の実施の形態と異なる点について説明する。第６の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００４１】
第６の実施の形態において、出力部１３は、更に、ｘの各次元の絶対値に対して閾値θを与え、絶対値が閾値θを超えるような次元に対応する特徴量を、異常の要因である特徴量として出力する。ここでは、閾値θとしてｘの各次元の絶対値の全体の統計量を取ることを考える。統計量の例として、ｘの各次元の絶対値の平均値などが挙げられる。
【００４２】
次に、第７の実施の形態について説明する。第７の実施の形態では、第１の実施の形態と異なる点について説明する。第７の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００４３】
第７の実施の形態において、出力部１３は、更に、ｘの各次元の絶対値に対して閾値θを与え、絶対値が閾値θを超えるような次元に対応する特徴量を、異常の要因である特徴量として出力する。ｘの各次元の絶対値に対する閾値θは、過去に異常と判断されたテストデータの各次元の要因度と、各次元が実際に異常であったかを示す情報とに基づいて定められる。ここで、要因度とは、ｘの各次元の値をいう。
【００４４】
過去に異常と判断されたテストデータｙ＿ｔ＝（ｙ＿｛ｔ，１｝，…，ｙ＿｛ｔ，Ｎ｝），各次元が実際に異常の要因であったか否かを示すラベルｚ＿ｔ＝（ｚ＿｛ｔ，１｝，…，ｚ＿｛ｔ，Ｎ｝），ｔ＝１，…，Ｔが、予め補助記憶装置１０２に記憶されているとする。ここで、ｚ＿｛ｔ，ｉ｝は、ｙ＿｛ｔ，ｉ｝が異常の要因であった場合に１、そうでない場合に０となる。この際、閾値θについては、異常の要因であった次元の要因度に関する統計量と、異常の要因ではなかった次元の要因度に関する統計量から決定される。ここでは、異常の要因であった次元の要因度の絶対値の平均値と、異常の要因ではなかった次元の要因度の絶対値の平均値との、さらに平均の値を、閾値θとして与えることにする。すなわち、
θ＝（Σ＿｛ｉ＝１｝ＮΣ＿｛ｔ＝１｝Ｔｚ＿｛ｔ，ｉ｝ｙ＿｛ｔ，ｉ｝／Σ＿｛ｉ＝１｝ＮΣ＿｛ｔ＝１｝Ｔｚ＿｛ｔ，ｉ｝＋Σ＿｛ｉ＝１｝ＮΣ＿｛ｔ＝１｝Ｔ（１−ｚ＿｛ｔ，ｉ｝）ｙ＿｛ｔ，ｉ｝／Σ＿｛ｉ＝１｝ＮΣ＿｛ｔ＝１｝Ｔ（１−ｚ＿｛ｔ，ｉ｝））／２
として計算される。
【００４５】
次に、第８の実施の形態について説明する。第８の実施の形態では、第１の実施の形態と異なる点について説明する。第８の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００４６】
第８の実施の形態において、出力部１３は、ｘの各次元の絶対値をソートし、隣接する次元との絶対値の差分が最も大きい点を、異常の要因である次元と要因でない次元との境界として、絶対値が大きい側に含まれる次元を異常の要因である次元として出力する。これは、要因度の絶対値で全次元をソートした場合、異常の要因ではない次元と異常の要因である次元とでは、要因度の絶対値が大きく変化するであろうという前提に基づく。
【００４７】
図４は、第８の実施の形態の一例を説明するための図である。例えば、図４に示す例では、ｘの各次元（すなわち、各要因度）の絶対値が大きい順に左から右に並んでおり、隣との差分がｄ＿１，…，ｄ＿６として与えられている。これらの差分のうち最も大きいｄ＿４の部分が異常の要因である次元とそうではない次元との境界と判定され、絶対値が大きい側の次元が、異常の要因である次元として出力される。
【００４８】
次に、第９の実施の形態について説明する。第９の実施の形態では、第１の実施の形態と異なる点について説明する。第９の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００４９】
第９の実施の形態において、出力部１３は、異常の要因である次元においては要因度の絶対値が大きく、そうでない次元においては要因度の絶対値が小さくなる点に着目し、要因度の絶対値を一次元データとみなして、全次元を２クラスタにクラスタリングを行い、要因度の絶対値の平均が大きい側のクラスタに含まれた次元を異常の要因である次元として出力する。クラスタリングを行う手法として、クラスタ数を指定したクラスタリングを行えるＫ−ｍｅａｎｓ等が考えられる。Ｋ−ｍｅａｎｓについては、例えば、「Jain, Anil K. "Data clustering: 50 years beyond K-means." Pattern recognition letters 31.8 (2010): 651-666.」等が参考とされてもよい。
【００５０】
なお、上記では、クラスタ間において、要因度の絶対値の平均を比較する例について説明したが、クラスタ間で比較される値は、クラスタ全体の傾向を示す統計量であれば所定の統計量に限定されない。したがって、例えば、中央値がクラスタ間で比較されてもよい。
【００５１】
次に、第１０の実施の形態について説明する。第１０の実施の形態では、第１の実施の形態と異なる点について説明する。第１０の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００５２】
第１０の実施の形態において、出力部１３は、原因が分かっている異常データとその要因度ベクトルが与えられている際に、ベクトルｘとの距離が最も近い要因度ベクトルに対応する異常データの原因をテストデータの原因として出力する。ここで、原因とは、例えば、ルータの故障等、異常そのものの原因をいい、異常データ全体に対する概念である。また、原因が分かっている異常データの要因度ベクトルは、例えば、当該異常データに関して演算部１２が図３のステップＳ１０２と同様の処理を実行することにより得られる。
【００５３】
図５は、第１０の実施の形態において出力部１３が実行する処理手順の一例を説明するためのフローチャートである。第１０の実施の形態では、図３のステップＳ１０３の代わりに、図５に示す処理手順が実行される。また、第１０の実施の形態では、原因が分かっているＬ個の異常データのそれぞれの要因度ベクトルであるａ＿ｌ（ｌ＝１，…，Ｌ）が予め補助記憶装置１０２に保存されているとする。換言すれば、ａ＿ｌは、異常の原因を示すラベルであるともいえる。
【００５４】
ステップＳ１０３−１１において、出力部１３は、各異常データの要因度ベクトルａ＿ｌ（ｌ＝１，…，Ｌ）を読み込む。続いて、出力部１３は、要因度ベクトルａ＿ｌの中で、ベクトルｘとの距離が最も近いａ＿ｌ＊、すなわち、ａ＿ｌ＊＝ａｒｇｍｉｎ＿｛ａ＿ｌ｝｜｜ｘ−ａ＿ｌ｜｜を計算する（Ｓ１０３−１２）。続いて、出力部１３は、ａ＿ｌ＊の原因を、ｘに係る原因（検知された異常の原因）であるとして出力する（Ｓ１０３−１３）。
【００５５】
図６は、第１０の実施の形態の一例を説明するための図である。図６に示す例では、原因が分かっている異常データの要因度ベクトルａ１、ａ２、ａ＿３が与えられているが、テストデータの要因度ベクトルｘとの距離が最も近いａ２の原因である「原因××」がテストデータの原因として推定される。
【００５６】
次に、第１１の実施の形態について説明する。第１１の実施の形態では、第１の実施の形態と異なる点について説明する。第１１の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。
【００５７】
第１１の実施の形態において、出力部１３は、原因が分かっている複数の異常データとそれぞれの当該異常データの要因度ベクトルが与えられている際に、ベクトルｘと当該要因度ベクトルとについてクラスタリングを行うことで、ベクトルｘと同じクラスタに属する異常データに対応する原因を、テストデータに関する異常の原因として出力する。
【００５８】
図７は、第１１の実施の形態において出力部１３が実行する処理手順の一例を説明するためのフローチャートである。第１１の実施の形態では、図３のステップＳ１０３の代わりに、図７に示す処理手順が実行される。また、第１１の実施の形態では、原因が分かっているＬ個の異常データのそれぞれの要因度ベクトルａ＿ｌ（ｌ＝１，…，Ｌ）と、過去に異常と判断された各テストデータのそれぞれの要因度ベクトルｂ＿ｔ（ｔ＝１，…，Ｔ）とが予め補助記憶装置１０２に保存されているとする。
【００５９】
ステップＳ１０３−２１において、出力部１３は、各要因度ベクトルａ＿ｌ及び要因度ベクトルｂ＿ｔを補助記憶装置１０２から読み込む。続いて、出力部１３は、異常と判断されたテストデータの要因度ベクトルｘと、読み込んだａ＿ｌ及びｂ＿ｔとを合わせたデータセット（ａ＿１，…，ａ＿Ｌ，ｂ＿１，…，ｂ＿Ｔ，ｘ）について、クラスタリングを実施する（Ｓ１０３−２２）。
【００６０】
クラスタリングの手法としては、先述のＫ−ｍｅａｎｓを用いる方法や、ＤＢＳｃａｎ、ｔ−ＳＮＥなど様々な手法が考えられる。ＤＢＳｃａｎについては、例えば、「Tran, Thanh N., Klaudia Drab, and Michal Daszykowski. "Revised DBSCAN algorithm to cluster data with dense adjacent clusters." Chemometrics and Intelligent Laboratory Systems 120 (2013): 92-96.等」が参考とされてもよい。ｔ−ＳＮＥについては、例えば、「Maaten, Laurens van der, and Geoffrey Hinton. "Visualizing data using t-SNE." Journal of Machine Learning Research 9.Nov (2008): 2579-2605.」等が参考とされてもよい。また、要因度ベクトルをそのままクラスタリングするのではなく、要因度ベクトルに対して更にオートエンコーダ等を用いた次元圧縮をしたデータに対してクラスタリングを行う方法も考えられる。
【００６１】
出力部１３は、クラスタリングを行ったら、ｘが属するクラスタにａ＿１，…ａ＿Ｌが存在するかを確認する（Ｓ１１３−２３）。もし、一つのａ＿ｌだけがｘが属するクラスタに存在した場合、出力部１３は、当該ａ＿ｌの原因をｘに係る原因（検知された異常の原因）として出力する。ａ＿１，…，ａ＿Ｌのうち複数のａ＿ｌが、ｘが属するクラスタに存在した場合、出力部１３は、その中で原因として最も多いものを選択する。原因の数が等しい場合は、ランダムに選ぶ等の方法が考えられる。クラスタ内にａ＿１，…，ａ＿Ｌが存在しなかった場合、出力部１３は、原因は不明として出力してもよいし、第１０の実施の形態の方法で最も距離が近いａ＿ｌを選択し、当該ａ＿ｌの原因を出力してもよい。
【００６２】
次に、実際に第１の実施の形態を用いて要因の推定を行った結果について示す。ここでは、学習データ及びテストデータを人工的に生成し、テストデータにおいて異常を発生させた次元を正しく推定できるかについて評価を行った。データは１００次元とし、学習データについては各次元について下記のように生成した。
ｘ＿１〜ｘ＿１０：  Ｎ（１０００，２００２）（平均１０００、標準偏差２００の正規分布に従う乱数）
ｘ＿｛ｉ＋ｊ×１０｝：  （１＋０．１×ｉ）×ｘ＿ｉ２＋Ｎ（１００，５０２）ｆｏｒ  ｉ＝１：１０、ｊ＝１：９（ｘ＿１〜ｘ＿１０の二乗に比例した値に、平均１００、標準偏差５０の正規分布に従うノイズを付加）
学習データとして、上記の１００次元ベクトルを１万レコード生成した。一方、テストデータについては１レコードとし、１００次元ベクトルを学習データと同様に生成した後、ｘ＿９１〜ｘ＿１００を、元の値の１／１０とした。すなわち、ｘ＿９１〜ｘ＿１００の１０次元が、異常の要因となる次元である。
【００６３】
異常検知アルゴリズムとしてはオートエンコーダ（非特許文献２）を用い、中間層の次元数を１０、活性化関数をシグモイド関数、学習エポック数を５００として学習データで学習を行い、テストデータに対して異常検知を行った。なお、学習データ及びテストデータの双方について、各次元の値を、学習データにおける平均及び分散に基づいて標準化を行った上で学習及び異常検知を行った。
【００６４】
第１の実施の形態における要因推定では、ｐ＝１、ｃ＿１＝ｃ＿２＝…＝ｃ＿Ｎ＝１、λ＝０．０００５として、一般的なスパース項付きの最適化問題として、近接勾配法を用いて解いた。出力された要因の度合いを「要因度」とした場合に、要因度の絶対値が大きい順に並べたグラフを図８に示す。
【００６５】
ここでは、比較として、第１の実施の形態における外れ度合い、再構成誤差、最適化問題についてスパース項を付加しなかった場合の要因度についても同様に絶対値でソートされている。
【００６６】
図８より、外れ度合い、再構成誤差、要因度（スパース項なし）については多くの次元において値を持つが、スパース項をつけた要因度では、１０個の次元のみが値を持っており、その他の次元についてはほぼ０に近い値となった。これら１０個の次元は、テストデータにおいて異常の要因としたｘ＿９１〜ｘ＿１００であった。つまり、スパース項をつけた要因度のみが、要因と推定される次元（＝特徴量）について絞り込めていることが分かる。
【００６７】
次に、要因度の絶対値の大きい上位１０個において、実際の要因であるｘ＿９１〜ｘ＿１００が含まれる割合（以下、「計算精度」ともいう。）を図９に示す。ここでは、学習データ及びテストデータをランダムに生成した試行を１０回行い、それぞれの試行において各評価値（外れ度合い、再構成誤差、要因度（スパース項なし）、要因度（スパース項あり））の絶対値の大きい上位１０個において、実際の要因であるｘ＿９１〜ｘ＿１００が含まれる割合及び各割合の平均を評価している。図９より、スパース項をつけた要因度のみが、どの試行においても１００％の精度で要因を推定できていることが分かる。
【００６８】
また、第３の実施の形態を用いて、最適化問題を解く際の初期値を与えた場合の計算速度を評価した結果を図１０に示す。ここで、単位は秒であり、ｏｕｔｌｉｅｒは、外れ度合いを初期値に用いた場合、ｒｅｃｏｎ．は、再構成誤差を用いた場合の結果であり、α＝０．５とした。計算精度は、いずれも１であった。図１０より、初期値を外れ度合いや再構成誤差に基づいて与えることで、計算時間を削減できていることが確認できる。
【００６９】
次に、第６の実施の形態を用いて、要因度の絶対値に対して、要因度の絶対値の平均を閾値として与えた上で、要因度の絶対値が閾値を超えた次元を要因の次元として推定した場合の精度を図１１に示す。図１１では、外れ度合い、再構成誤差、要因度（スパース項なし）、要因度（スパース項あり）が、それぞれｏｕｔｌｉｅｒ，ｒｅｃｏｎ．，ｗ／ｏ  Ｌ１，ｃａｕｓａｌとして示されている。無地の棒グラフは、異常の要因として推定された次元が実際の要因である次元に対して占める割合であるｒｅｃａｌｌ、グレーの棒グラフは、要因であると抽出した次元のうち実際に要因の次元であった割合であるｐｒｅｃｉｓｉｏｎである。それぞれ網掛けの無い無地の棒グラフはβ＝１００、γ＝５０、網掛けの有る棒グラフはβ＝２００、γ＝５０の結果を示している。
【００７０】
図１１より、α、βに依らず、ｃａｕｓａｌ以外の方法ではｒｅｃａｌｌは高いもののｐｒｅｃｉｓｉｏｎが非常に低く、異常の要因として推定された次元の中に、実際には要因ではなかった次元が多く含まれていることが分かる。一方で、ｃａｕｓａｌにおいては、ｒｅｃａｌｌ及びｐｒｅｃｉｓｉｏｎのいずれもが比較的高く、実際の要因の次元をほぼ推定した上で、誤って要因として推定した次元の数が低く抑えられていることが分かる。以上より、第６の実施の形態により、精度よく異常の要因である次元を推定できることが分かる。
【００７１】
次に、第１１の実施の形態を用いて、ネットワークの代表的なベンチマークであるＮＳＬ−ＫＤＤ（Tavallaee, Mahbod, et al. "A detailed analysis of the KDD CUP 99 data set." Computational Intelligence for Security and Defense Applications, 2009. CISDA 2009. IEEE Symposium on. IEEE, 2009.）に対して、同様にオートエンコーダによる異常検知及びスパース項付きの最適化問題を用いた要因推定アルゴリズムを実施し、計算された要因度ベクトルをクラスタリングした結果を図１２に示す。
【００７２】
図１２では、クラスタリング手法としてｔ−ＳＮＥを用いており、入力データをそのままクラスタリングした結果（図１２左）と、要因度ベクトルを用いてクラスタリングした結果（図１２右）とが示されている。ここでは、ｔ−ＳＮＥによって多次元の要因度をその距離の関係を保ったまま２次元空間に写像した結果をプロットしているため、要因度ベクトルが近いデータは２次元空間上においても近くにプロットされ、同じクラスタを形成する。また、図１２では、度実際の原因に応じたクラスタリングがどの程できているのかを示すため、データの実際の異常の原因（ＤｏＳ，Ｒ２Ｌ，Ｕ２Ｒ，Ｐｒｏｂｅ，Ｎｏｒｍａｌ）に応じて異なる記号でプロットされている。なお、Ｎｏｒｍａｌは、実際には異常でないことを示し、図１２右側内にある円状のクラスタは、要因度ベクトルの各次元の要因度が全てゼロ、すなわち、異常と判断されなかったクラスタを示す。
【００７３】
異常は頻繁に発生しないため、原因が分かっている異常データを十分に得られず、教師あり学習による原因の特定が難しいという課題があるが、図１２のように、同じ原因のデータが同じクラスタに属する傾向にある。したがって、第１１の実施の形態により、原因が分かっている異常データが少ない場合にも異常の原因を特定できる可能性が示されている。
【００７４】
上述したように、上記各実施の形態によれば、入力データの異常度を算出するような異常検知アルゴリズムによって異常が検知された際に、異常度を小さくするベクトルを探索し、当該ベクトルと入力データのベクトルとの誤差に基づいて異常の要因が推定される。この際、各次元が要因である「尤もらしさ」に関する項（ｃ）を探索の目的関数に入れることで、異常の検知された入力データについて精度の高い要因推定を行うことができる、また、探索の初期値や探索領域を入力データやアルゴリズムの出力に応じて与えることで、探索に要する時間を削減することができる。
【００７５】
なお、本実施の形態において、異常要因推定装置１０は、異常情報推定装置の一例である。演算部１２は、推定部及び探索部の一例である。
【００７６】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００７７】
本出願は、２０１７年５月１７日に出願された日本国特許出願第２０１７−０９８０８０号に基づきその優先権を主張するものであり、同日本国特許出願の全内容を参照することにより本願に援用する。
【符号の説明】
【００７８】
１０          異常要因推定装置
１１          入力部
１２          演算部
１３          出力部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
Ｂ            バス
【図１】
2018211721.tif 000003
【図２】
2018211721.tif 000004
【図３】
2018211721.tif 000005
【図４】
2018211721.tif 000006
【図５】
2018211721.tif 000007
【図６】
2018211721.tif 000008
【図７】
2018211721.tif 000009
【図８】
2018211721.tif 000010
【図９】
2018211721.tif 000011
【図１０】
2018211721.tif 000012
【図１１】
2018211721.tif 000013
【図１２】
2018211721.tif 000014
【国際調査報告】
2018211721.tif 000015
2018211721.tif 000016