(57)【特許請求の範囲】
【請求項１】
異常の検知対象が正常である場合に前記検知対象から得られる第１の数値ベクトルを学習した学習器と、前記検知対象について複数のタイミングで得られる第２の数値ベクトルとに基づいて、前記検知対象の異常を検知する検知部と、
異常が検知された前記第２の数値ベクトルについて、前記検知部によって異常が検知されない第３の数値ベクトルを探索し、当該第２の数値ベクトルと前記第３の数値ベクトルとのメトリックごとの差分を、当該異常の要因のメトリックを推定するための情報として算出する第３の算出部と、
を有することを特徴とする異常要因推定装置。
【請求項２】
異常の検知対象が正常である場合に前記検知対象から得られる第１の数値ベクトルを学習した学習器と、前記検知対象について複数のタイミングで得られる第２の数値ベクトルとに基づいて、前記検知対象の異常を検知する検知部と、
第１の算出部、第２の算出部及び第３の算出部のうちのいずれか２以上と、
第４の算出部とを有し、
前記第１の算出部は、異常が検知された前記第２の数値ベクトルのメトリックごとに、当該メトリックの値から前記第１の数値ベクトルにおける当該メトリックの平均を差し引いた結果を、前記第１の数値ベクトルにおける当該メトリックの標準偏差で除することで得られる値を算出し、
前記第２の算出部は、異常が検知された前記第２の数値ベクトルのメトリックごとに、当該メトリックの値と、当該第２の数値ベクトルを前記学習器に入力して得られる数値ベクトルの当該メトリックの値との差分を算出し、
前記第３の算出部は、異常が検知された前記第２の数値ベクトルについて、前記検知部によって異常が検知されない第３の数値ベクトルを探索し、当該第２の数値ベクトルと前記第３の数値ベクトルとのメトリックごとの差分を算出し、
前記第４の算出部は、前記第１の算出部によって算出される値と、前記第２の算出部によって算出される差分と、前記第３の算出部によって算出される差分とのいずれか２以上に基づいて、前記異常の要因のメトリックを推定するための情報を算出する、
ことを特徴とする異常要因推定装置。
【請求項３】
異常の検知対象が正常である場合に前記検知対象から得られる第１の数値ベクトルを学習した学習器と、前記検知対象について複数のタイミングで得られる第２の数値ベクトルとに基づいて、前記検知対象の異常を検知する検知手順と、
異常が検知された前記第２の数値ベクトルについて、前記検知手順において異常が検知されない第３の数値ベクトルを探索し、当該第２の数値ベクトルと前記第３の数値ベクトルとのメトリックごとの差分を、当該異常の要因のメトリックを推定するための情報として算出する第３の算出手順と、
をコンピュータが実行することを特徴とする異常要因推定方法。
【請求項４】
異常の検知対象が正常である場合に前記検知対象から得られる第１の数値ベクトルを学習した学習器と、前記検知対象について複数のタイミングで得られる第２の数値ベクトルとに基づいて、前記検知対象の異常を検知する検知手順と、
第１の算出手順、第２の算出手順及び第３の算出手順のうちのいずれか２以上と、
第４の算出手順とをコンピュータが実行し、
前記第１の算出手順は、異常が検知された前記第２の数値ベクトルのメトリックごとに、当該メトリックの値から前記第１の数値ベクトルにおける当該メトリックの平均を差し引いた結果を、前記第１の数値ベクトルにおける当該メトリックの標準偏差で除することで得られる値を算出し、
前記第２の算出手順は、異常が検知された前記第２の数値ベクトルのメトリックごとに、当該メトリックの値と、当該第２の数値ベクトルを前記学習器に入力して得られる数値ベクトルの当該メトリックの値との差分を算出し、
前記第３の算出手順は、異常が検知された前記第２の数値ベクトルについて、前記検知手順において異常が検知されない第３の数値ベクトルを探索し、当該第２の数値ベクトルと前記第３の数値ベクトルとのメトリックごとの差分を算出し、
前記第４の算出手順は、前記第１の算出手順において算出される値と、前記第２の算出手順において算出される差分と、前記第３の算出手順において算出される差分とのいずれか２以上に基づいて、前記異常の要因のメトリックを推定するための情報を算出する、
ことを特徴とする異常要因推定方法。
【請求項５】
請求項１又は２記載の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常要因推定装置、異常要因推定方法及びプログラムに関する。
【背景技術】
【０００２】
様々なデータをリアルタイムで観測する機能が存在するシステムにおいて、データが正常時と異なる傾向を示した場合に、システムに異常が発生しているとみなすような異常検知を考える。【０００３】
このような異常検知機能は、「正常時」の教師データを学習しておき、異常検知を行う「テスト時」には、テストデータが教師データとは異なる傾向を示した時に異常と判断する。【０００４】
観測するデータのメトリック毎に正常時との比較を行うとすると、観測メトリック数が増加した場合に、少なくとも一つのメトリックが異常な傾向を示す確率が増加し、多くの時間帯において「異常」と検知されてしまう事態が生じる。例えば、全てのデータが正規分布に従うとした場合、観測値が平均からのずれが±３σに収まらない確率は約０．６％である（非特許文献１参照）。しかし、観測メトリック数がＮ個であるとすると、全てのメトリックの観測値が平均±３σに収まる確率は０．９９４Ｎであり、この確率はＮ＝１００で約５４％にまで低減する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】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）データ、ＮｅｔＦｌｏｗによるフローデータ、ＣＰＵ使用率等が挙げられる。
【００１３】
ＭＩＢは、ネットワーク機器を監視するためのメーカ間の共通ポリシーである。ＭＩＢデータは、例えば、５分単位で集約され、「時刻、ホスト名、インターフェース（ＩＦ）名、入力データ量（ｉｂｐｓ）、出力データ量（ｏｂｐｓ）」等を含む。
【００１４】
ＮｅｔＦｌｏｗは、フロー単位でのネットワーク監視をおこなう技術であり、通信が終了した段階でそのフローに関する情報が出力される。また、フローとは、「何処」と「何処」が「どのような通信」を「どれだけの量」行っているかを把握するための単位をいい、通信の送り手側のＩＰアドレス（ｓｒｃＩＰ）、送り手側のポート番号（ｓｒｃｐｏｒｔ）、受け手側のＩＰアドレス（ｄｓｔＩＰ）、受け手側のポート番号（ｄｓｔｐｏｒｔ）、通信プロトコル（ｐｒｏｔｏ）の５属性によりまとめられる。フローデータは、「フロー開始時刻、ｓｒｃＩＰ、ｓｒｃｐｏｒｔ、ｄｓｔＩＰ、ｄｓｔｐｏｒｔ、ｐｒｏｔｏ、フロー継続時間、総送信パケット数、総送信バイト数」等を含む。
【００１５】
ＣＰＵ使用率は、例えば、ネットワークＮ１に含まれるサーバ装置又はルータ等のＣＰＵの使用率である。
【００１６】
測定装置２０によって採取された観測データは、異常検知装置１０によって収集される。異常検知装置１０は、収集された観測データから、正常時の特徴を学習し、学習結果に基づいて、その後に入力される観測データについて、異常の発生を検知する（異常の有無を判定する）コンピュータである。なお、正常時の特徴の学習が行われる処理を「学習処理」という。学習処理において学習された結果に基づいて異常の検知が行われる処理を「テスト処理」という。
【００１７】
図２は、第１の実施の形態における異常検知装置１０のハードウェア構成例を示す図である。図２の異常検知装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１８】
異常検知装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１９】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って異常検知装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００２０】
図３は、第１の実施の形態における異常検知装置１０の機能構成例を示す図である。図３において、異常検知装置１０は、受信部１１、学習処理制御部１２、前処理部１３、学習部１４、検知処理制御部１５、検知部１６及び後処理部１７等を有する。これら各部は、異常検知装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。異常検知装置１０は、また、教師データ記憶部１２１、パラメータ記憶部１２２、観測データ記憶部１２３、学習結果記憶部１２４及び学習データ記憶部１２５等を利用する。これら各記憶部は、例えば、補助記憶装置１０２、又は異常検知装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００２１】
教師データ記憶部１２１には、予め正常時に収集されたことが確認されている観測データが教師データとして記憶されている。但し、教師データは、観測データから選別されるのではなく、人為的に作成されてもよい。
【００２２】
受信部１１は、測定装置２０から観測データを受信する。受信された観測データは、観測データ記憶部１２３に記憶される。
【００２３】
学習処理制御部１２は、学習処理を制御する。
【００２４】
前処理部１３は、教師データの集合、観測データの集合、又は学習データ記憶部１２５に記憶されている学習データの集合について前処理を実行する。前処理とは、データ集合からの単位時間ごとの特徴量の抽出や、抽出された特徴量の正規化等の処理である。特徴量は、数値ベクトルの形式で表現される。なお、１回目の学習時には、教師データ記憶部１２１に記憶されている教師データ群が前処理の対象とされる。受信部１１によって観測データの受信が開始されると、観測データ群が前処理の対象とされる。更に、検知部１６による異常の検知が開始され、正常であると判定され、学習データとして学習データ記憶部１２５に記憶された観測データが所定数に達すると、当該学習データ群が前処理の対象とされる。
【００２５】
前処理部１３は、また、教師データ群又は学習データ群について前処理を実行する際に、観測データ又は学習データを正規化するためのパラメータ（以下、「正規化パラメータ」という。）を生成又は更新し、生成又は更新された正規化パラメータをパラメータ記憶部１２２に記憶する。
【００２６】
学習部１４は、教師データ又は学習データに基づいて学習を実行する。学習部１４による学習結果は、学習結果記憶部１２４に記憶される。
【００２７】
検知処理制御部１５は、検知処理を制御する。
【００２８】
検知部１６は、観測データ記憶部１２３に記憶されている観測データが前処理部１３によって前処理されることで生成される数値ベクトルと、学習結果記憶部１２４に記憶されている学習結果とに基づいて異常の発生を検知する。具体的には、検知部１６は、前処理された数値ベクトルについて、学習結果との違いを異常度として算出し、当該異常度を閾値と比較することで異常の発生を検知する。異常が検知されなかった数値ベクトルの正規化前の値は、学習データとして学習データ記憶部１２５に記憶される。
【００２９】
後処理部１７は、異常が検知された際の数値ベクトルのメトリックごとの異常度に基づいて、異常の要因となっているメトリックの推定を行う。
【００３０】
以下、異常検知装置１０が実行する処理手順について説明する。図４は、第１の実施の形態における学習処理の処理手順の一例を説明するためのフローチャートである。なお、以下においては、便宜上、フローデータが処理対象である例について示す。
【００３１】
学習処理が開始されると、学習処理制御部１２は、教師データ記憶部１２１から教師データ群を取得し、当該教師データ群を前処理部１３へ入力する（Ｓ１０１）。
【００３２】
続いて、前処理部１３は、入力された教師データ群を、単位時間ごとの集合に分割する（Ｓ１０２）。なお、教師データ記憶部１２１には、単位時間×Ｕの期間（以下、「学習期間」という。）分の教師データが記憶されていることとする。したがって、教師データ群は、Ｕ個の集合に分割される。
【００３３】
続いて、前処理部１３は、分割された集合ごとに、目的に応じた特徴量を抽出し、抽出された特徴量を各次元の要素とする多次元数値ベクトルを生成する（Ｓ１０３）。
【００３４】
例えば、単位時間が１分で、前処理部１３が、１分間ごとの特徴量を抽出するとする。また、特徴量を、各プロトコル（ＴＣＰ、ＵＤＰ）の全送信バイト数であるとする。この場合、先頭の教師データのフロー開始時刻が１２：００：００であるとすると、前処理部１３は、全教師データのうち、フロー開始時刻ｔが１１：５９：００＜＝ｔ＜１２：００：００であるような教師データ（フローデータ）の集合について、プロトコルがＴＣＰである全フローの全送信バイト数、プロトコルがＵＤＰである全フローの全送信バイト数等を計算し、それらの特徴量を各次元の要素とする２次元数値ベクトルを生成する。（Ｕ−１）個の他の集合についても同様に、数値ベクトルが生成される。
【００３５】
なお、特徴量の属性としては、「ＴＣＰかつ送信ポート番号が８０」のような組合せとして指定することも可能である。また、各フローが「フロー数：１」のような値を持つと見なせば、各属性を持つフローの総フロー数についても同様に計算し、特徴量としてみなすことが可能である。
【００３６】
続いて、前処理部１３は、各数値ベクトルにおける各メトリックｉ（各次元ｉ）の最大値ｘｍａｘ＿ｉを算出し、算出したｘｍａｘ＿ｉをパラメータ記憶部１２２に記憶する（Ｓ１０４）。すなわち、第１の実施の形態において、各メトリックｉの最大値ｘｍａｘ＿ｉが、正規化パラメータである。
【００３７】
ここで、Ｕ＝３とする。また、ステップＳ１０３において生成された数値ベクトルが｛｛８０，２０｝，｛９０，３５｝，｛１００，５０｝｝であるとする。これは、或る３分におけるＴＣＰの総送信バイト数及びＵＤＰの総送信バイト数がそれぞれ「ＴＣＰ：８０ｂｙｔｅ，ＵＤＰ：２０ｂｙｔｅ」、「ＴＣＰ：９０ｂｙｔｅ，ＵＤＰ：３５ｂｙｔｅ」、「ＴＣＰ：１００ｂｙｔｅ，ＵＤＰ：５０ｂｙｔｅ」であったことを示す。この場合、これらの数値ベクトルの各メトリックの最大値ｘｍａｘ＿ｉは、｛１００，５０｝である（すなわち、ｘｍａｘ＿１＝１００，ｘｍａｘ＿２＝５０である）。
【００３８】
続いて、前処理部１３は、正規化パラメータに基づいて、各数値ベクトルを正規化する（Ｓ１０５）。正規化は、各数値ベクトルのメトリックｉの値が最大値ｘｍａｘ＿ｉによって除されることにより行われる。したがって、正規化された数値ベクトルは、｛｛０．８，０．４｝，｛０．９，０．７｝，｛１，１｝｝となる。
【００３９】
続いて、学習部１４は、当該数値ベクトルについて学習器を利用して学習する（Ｓ１０６）。学習結果は、学習結果記憶部１２４に記憶される。
【００４０】
続いて、学習処理制御部１２は、学習データ記憶部１２５に、学習期間分の学習データが記憶（蓄積）されるのを待機する（Ｓ１０７）。すなわち、Ｕ個の正規化前の数値ベクトルが学習データ記憶部１２５に記憶されるまで待機が継続する。なお、学習データ記憶部１２５には、検知部１６によって正常である（異常が発生していない）と判定された数値ベクトルが記憶される。
【００４１】
学習期間分の数値ベクトルが学習データ記憶部１２５に記憶されると（Ｓ１０７でＹｅｓ）、学習処理制御部１２は、学習データ記憶部１２５から数値ベクトル群を取得し、当該数値ベクトル群を前処理部１３へ入力する（Ｓ１０８）。なお、取得された数値ベクトル群は、学習データ記憶部１２５から削除される。続いて、当該数値ベクトル群について、ステップＳ１０４以降が実行される。したがって、次のステップＳ１０５では、新たに計算されるｘｍａｘ＿ｉに基づいて正規化が行われる。
【００４２】
図５は、第１の実施の形態における検知処理の処理手順の一例を説明するためのフローチャートである。図５の処理手順は、図４のステップＳ１０６が少なくとも１回実行された後であれば、いつ開始されてもよい。すなわち、図５の処理手順は、図４の処理手順と並行して実行される。
【００４３】
ステップＳ２０１において、検知処理制御部１５は、単位時間の経過を待機する。当該単位時間は、図４の説明における単位時間と同じ時間長である。この待機中に、リアルタイムに収集され、受信部１１によって受信された観測データは観測データ記憶部１２３に記憶される。
【００４４】
単位時間が経過すると（Ｓ２０１でＹｅｓ）、検知処理制御部１５は、直近の単位時間分の観測データ群を観測データ記憶部１２３から取得し、当該観測データ群を前処理部１３へ入力する（Ｓ２０２）。
【００４５】
続いて、前処理部１３は、当該観測データ群から目的に応じた特徴量を抽出し、抽出された特徴量を各次元の要素とする多次元数値ベクトルを生成する（Ｓ２０３）。例えば、プロトコルがＴＣＰである全フローの全送信バイト数、プロトコルがＵＤＰである全フローの全送信バイト数が抽出され、これらを各次元の要素とする２次元数値ベクトルが生成される。ここでは、１つの数値ベクトルが生成される。
【００４６】
続いて、前処理部１３は、生成された数値ベクトルを、パラメータ記憶部１２２に記憶されている最大値ｘｍａｘ＿ｉに基づいて正規化する（Ｓ２０４）。すなわち、当該数値ベクトルの各メトリックｉが、最大値ｘｍａｘ＿ｉによって除算される。
【００４７】
例えば、図４のステップＳ１０４が上記の教師データに基づいて１回のみ実行されている場合、最大値ｘｍａｘ＿ｉは、｛１００，５０｝である。したがって、当該数値ベクトルが｛６０，４０｝である場合、当該数値ベクトルは、｛０．６，０．８｝に正規化される。
【００４８】
続いて、検知部１６は、異常判定処理を実行する（Ｓ２０５）。異常判定処理では、正規化された数値ベクトルと、学習結果記憶部１２４に記憶されている最新の学習結果とに基づいて、ネットワークＮ１について異常の有無が判定される。
【００４９】
異常が無いと判定された場合（Ｓ２０６でＹｅｓ）、検知処理制御部１５は、当該数値ベクトルの正規化前の数値ベクトルを、学習データとして学習データ記憶部１２５に記憶する（Ｓ２０７）。異常が有ると判定された場合（Ｓ２０６でＮｏ）、当該数値ベクトルの正規化前の数値ベクトルは、学習データ記憶部１２５に記憶されない。したがって、学習データ記憶部１２５には、正常時の数値ベクトルのみが記憶される。
【００５０】
続いて、ステップＳ２０１以降が繰り返される。なお、ステップＳ２０１以降が繰り返される過程において、ステップＳ２０４で利用される正規化パラメータは、並行して実行されている図４のステップＳ１０４において随時更新される。その結果、入力される観測データのトレンドを考慮して数値ベクトルを正規化することができる。
【００５１】
例えば、Ｕ＝３である場合、ステップＳ２０７が３回実行されて、｛｛６０，４０｝，｛４５，２０｝，｛３０，３０｝｝が学習データ記憶部１２５に記憶されたとする。この場合、ｘｍａｘ＿１＝６０、ｘｍａｘ＿２＝４０に更新され、更新結果がパラメータ記憶部１２２に反映される。
【００５２】
なお、上記では、観測データがフローデータである例について説明したが、フローデータ、ＭＩＢデータ、及びＣＰＵ使用率が並列的に観測データとして受信されてもよい。この場合、図４及び図５の処理手順の各ステップでは、データ種別ごと（フローデータ、ＭＩＢデータ、及びＣＰＵ使用率ごと）に実行されればよい。
【００５３】
なお、例えば｛ｈｏｓｔＩＤ，ｉｎｔｅｒｆａｃｅＩＤ，ｉｂｐｓ，ｏｂｐｓ｝のような形式で与えられるＭＩＢデータについては、「単位時間におけるホストＩＤａのｉｂｐｓ」、「単位時間におけるホストＩＤａのｏｂｐｓ」、「単位時間におけるホストＩＤｂのｉｂｐｓ」、「単位時間におけるホストＩＤｂのｏｂｐｓ」...「単位時間におけるｉｎｔｅｒｆａｃｅＩＤｘのｉｂｐｓ」、「単位時間におけるｉｎｔｅｒｆａｃｅＩＤｘのｏｂｐｓ」、「単位時間におけるｉｎｔｅｒｆａｃｅＩＤｙのｉｂｐｓ」、「単位時間におけるｉｎｔｅｒｆａｃｅＩＤｙのｏｂｐｓ」のように、数値ベクトルを抽出することが可能である。
【００５４】
続いて、図４のステップＳ１０６及び図５のステップＳ２０５の一例について説明する。ステップＳ１０６及びＳ２０５では、データ種別がラベルとして付与された数値ベクトル群が学習部１４又は検知部１６に入力される。本実施の形態において、ラベルは「フローデータ」、「ＭＩＢデータ」、及び「ＣＰＵ使用率」のいずれかである。ラベルは、例えば、測定装置２０又は受信部１１によって教師データ及び観測データに付与される。すなわち、観測データの採取元に基づいて当該観測データに付与すべきラベルが特定可能である。当該ラベルは、前処理部１３によって生成される数値ベクトルに引き継がれる。
【００５５】
図４のステップＳ１０６において、学習部１４は、データ種別ごとに学習器を生成する。学習部１４は、入力される数値ベクトルに付与されているラベルに基づいて数値ベクトルを分類し、分類結果に対応する学習器へ当該数値ベクトルを入力する。本実施の形態では「フローデータの学習器」、「ＭＩＢデータの学習器」、「ＣＰＵ使用率の学習器」が生成される。学習器としては数値ベクトルのメトリック間の相関関係の学習による異常検知を行うオートエンコーダ（非特許文献２）や主成分分析等を用いることができる。主成分分析については、例えば、「Ringberg, Haakon, et al. "Sensitivity of PCA for traffic anomaly detection." ACM SIGMETRICS Performance Evaluation Review 35.1 (2007): 109-120.」に詳しい。本実施の形態では、学習器にオートエンコーダを用いる例について説明する。
【００５６】
図６は、オートエンコーダを説明するための図である。オートエンコーダは、ディープラーニングによる異常検知アルゴリズムである。オートエンコーダは、正常時の入力データがメトリック間で相関関係を持ち、低次元に圧縮可能であることを利用する。異常時には入力データの相関関係が崩れるため、圧縮が正しく行われず入力データと出力データとの差が大きくなる。
【００５７】
図６の（１）に示されるように、学習部１４が生成する学習器（オートエンコーダ）は、出力層（Ｌａｙｅｒ  Ｌ３）が入力層（Ｌａｙｅｒ  Ｌ１）に近くなるように学習を行う。具体的には、学習部１４は、数値ベクトルを２つに複製し、一方を入力層へ当てはめ、他方を出力層に当てはめて学習を行い、学習結果を出力する。学習結果は、学習結果記憶部１２４に記憶される。学習結果は、学習器に対するパラメータ群である。なお、学習器は、データ種別ごとに生成されるため、学習結果もデータ種別ごとに出力され、学習結果記憶部１２４に記憶される。
【００５８】
一方、検知部１６も、学習部１４と同様に、データ種別ごとに学習器を生成する。当該学習器には、学習部１４によって生成される学習器と同様にオートエンコーダ又は主成分分析等のうち、学習部１４が生成する学習器に対応する方法を用いることができる。
【００５９】
図５のステップＳ２０５において、検知部１６は、学習結果記憶部１２４に記憶されている学習結果に基づいて、「フローデータの学習器」、「ＭＩＢデータの学習器」、「ＣＰＵ使用率の学習器」を生成する。すなわち、検知部１６によって生成される学習器は、当該学習結果の出力時において学習部１４によって生成された学習器と同じである。検知部１６は、図６の（２）に示されるように、ステップＳ２０５において入力されたデータ種別ごとの数値ベクトルを当該数値ベクトルのデータ種別に対応する学習器へ入力し、学習器に対する入力データと出力データとの距離（メトリック間の相関関係の崩れの程度を示す指標）を異常度として計算する。本実施の形態ではオートエンコーダの入力層と出力層との距離である平均二乗誤差（ＭＳＥ：Mean Squared Error）が異常度として計算される。ＭＳＥの計算式は、以下の通りである。
【００６０】
【数１】
0006751168.tif 000002
本実施の形態では、フローデータのＭＳＥ、ＭＩＢデータのＭＳＥ、ＣＰＵ使用率のＭＳＥの３種のＭＳＥが得られる。検知部１６は、得られたＭＳＥの平均を、最終的な異常度として計算し、最終的な異常度が予め定められた閾値を超えていた場合に異常であると判定する。そうでない場合、検知部１６は、正常とであると判定する。なお、検知部１６は、異常であると判定した場合の数値ベクトル等を、後処理部１７へ入力する。
【００６１】
続いて、検知部１６から数値ベクトルが入力された場合に、後処理部１７が実行する処理手順について説明する。
【００６２】
図７は、第１の実施の形態において後処理部１７が実行する処理手順の一例を説明するためのフローチャートである。なお、第１の実施の形態では、教師データ記憶部１２１に記憶されている教師データ群に基づく正規化前の数値ベクトル群について、メトリックｉごとの分布情報（平均μ＿ｉ及び標準偏差σ＿ｉ）が算出され、教師データ記憶部１２１に記憶されていることとする。
【００６３】
ステップＳ３０１において、後処理部１７は、教師データ群に基づく数値ベクトル群のメトリックｉごとの平均μ＿ｉ及び標準偏差σ＿ｉを教師データ記憶部１２１から取得する。
【００６４】
続いて、後処理部１７は、検知部１６から入力された数値ベクトルのメトリックｉごとに、教師データに基づく数値ベクトル群における当該メトリックの分布からの外れ度合いγ１＿ｉを算出する（Ｓ３０２）。γ１＿ｉの計算式は、以下の通りである。
γ１＿ｉ＝（ｘ＿ｉ−μ＿ｉ）／σ＿ｉ
続いて、後処理部１７は、γ１＿ｉの絶対値が予め定められた閾値を超えたメトリックｉを抽出する（Ｓ３０３）。続いて、後処理部１７は、抽出されたメトリックｉを異常の要因候補として、当該メトリックｉのＩＤ（識別子）と、当該メトリックｉの外れ度合いγ１＿ｉとの一覧を、異常の要因を推定するための情報として出力する（Ｓ３０４）。なお、出力順は、外れ度合いγ１＿ｉの降順でもよい。
【００６５】
なお、ステップＳ３０１において取得される平均μ＿ｉ及び標準偏差σ＿ｉは、学習データ記憶部１２５に学習期間分の学習データ群が記憶されていれば、当該学習データ群における各メトリックｉの平均μ＿ｉ及び標準偏差σ＿ｉであってもよい。
【００６６】
上述したように、第１の実施の形態によれば、異常が検知された場合の観測データに基づく数値ベクトルについて、メトリックごとに、教師データ群に基づく数値ベクトルの分布からの外れ度合いが算出され、当該外れ度合いが閾値を超えるメトリックが出力される。その結果、ユーザは、出力されたメトリックが異常の要因であると推定することができる。したがって、異常の検知対象について異常が検知された場合の要因の推定を支援することができる。
【００６７】
次に、第２の実施の形態について説明する。第２の実施の形態では第１の実施の形態と異なる点について説明する。第２の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。第２の実施の形態では、図７の処理手順が図８の処理手順に置き換わる。
【００６８】
図８は、第２の実施の形態において後処理部１７が実行する処理手順の一例を説明するためのフローチャートである。第２の実施の形態では、検知部１６によって異常が検知された際に学習器に入力されていた数値ベクトルｘ（図６（２）の入力層の数値ベクトル）と、当該学習器から出力された数値ベクトルｙ（図６（２）の出力層の数値ベクトル）とが検知部１６から後処理部１７へ入力される。
【００６９】
ステップＳ４０１において、後処理部１７は、数値ベクトルｘ＝（ｘ＿１，ｘ＿２，…，ｘ＿Ｎ）と、数値ベクトルｙ＝（ｙ＿１，ｙ＿２，…，ｙ＿Ｎ）とについて、メトリックｉごとに外れ度合いγ２＿ｉを算出する（Ｓ４０１）。第２の実施の形態において、外れ度合いγ２＿ｉは、ｘ＿ｉとｙ＿ｉとの距離（差分）である。
γ２＿ｉ＝ｙ＿ｉ−ｘ＿ｉ
続いて、後処理部１７は、γ２＿ｉの絶対値が予め定められた閾値を超えたメトリックｉを抽出する（Ｓ４０３）。続いて、後処理部１７は、抽出されたメトリックｉを異常の要因候補として、当該メトリックｉのＩＤと、当該メトリックｉの外れ度合いγ２＿ｉとの一覧を、異常の要因を推定するための情報として出力する（Ｓ４０４）。なお、出力順は、外れ度合いγ２＿ｉの降順でもよい。
【００７０】
上述したように、第２の実施の形態によれば、第１の実施の形態と同様に、異常の検知対象について異常が検知された場合の要因の推定を支援することができる。
【００７１】
次に、第３の実施の形態について説明する。第３の実施の形態では第１の実施の形態と異なる点について説明する。第３の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。第３の実施の形態では、図７の処理手順が図９の処理手順に置き換わる。
【００７２】
ステップＳ５０１において、後処理部１７は、検知部１６から入力された数値ベクトル（以下、「入力ベクトル」という。）について、検知部１６が異常を検知した学習器（関数）において、異常度が最小化される数値ベクトルを探索する。当該学習器（関数）の内部パラメータ（学習結果）を固定した状態で異常度が最小化されるような数値ベクトルを探索することで、異常の要因となっている次元が修正される。なお、斯かる探索には、例えば、最急降下法等、公知の方法を用いることができる。
【００７３】
続いて、後処理部１７は、入力ベクトルと、探索された数値ベクトル（探索ベクトル）とについて、メトリックｉごとに差分γ３＿ｉを算出する。
【００７４】
続いて、後処理部１７は、γ３＿ｉの絶対値が予め定められた閾値を超えたメトリックｉを抽出する（Ｓ５０３）。続いて、後処理部１７は、抽出されたメトリックｉを異常の要因候補として、当該メトリックｉのＩＤと、当該メトリックｉの差分γ３＿ｉとの一覧を、異常の要因を推定するための情報として出力する（Ｓ５０４）。なお、出力順は、差分γ３＿ｉの降順でもよい。
【００７５】
上述したように、第３の実施の形態によれば、第１又は第２の実施の形態と同様に、異常の検知対象について異常が検知された場合の要因の推定を支援することができる。
【００７６】
次に、第４の実施の形態について説明する。第４の実施の形態では第１の実施の形態と異なる点について説明する。第４の実施の形態において特に言及されない点については、第１の実施の形態と同様でもよい。第４の実施の形態は、第１、第２、及び第３の実施の形態を組み合わせたものである。第４の実施の形態では、図７の処理手順が図１０の処理手順に置き換わる。
【００７７】
ステップＳ６０１において、後処理部１７は、図７のステップＳ３０１及びＳ３０２を実行して、入力された数値ベクトルのメトリックごとに、外れ度合いγ１＿ｉを算出する。
【００７８】
続いて、後処理部１７は、図８のステップＳ４０１を実行して、入力された数値ベクトルのメトリックごとに、外れ度合いγ２＿ｉを算出する（Ｓ６０２）。
【００７９】
続いて、後処理部１７は、図９のステップＳ５０１及びＳ５０２を実行して、入力された数値ベクトルのメトリックごとに、差分γ３＿ｉを算出する（Ｓ６０３）。
【００８０】
続いて、後処理部１７は、γ１＿ｉ、γ２＿ｉ及びγ３＿ｉを組み合わせて、メトリックｉの統合的な外れ度合いγ＿ｉを決定する（Ｓ６０４）。組み合せ方としては、単純な平均（γ＿ｉ＝（γ１＿ｉ＋γ２＿ｉ＋γ３＿ｉ）／３）でもよいし、重み付け平均でもよいし、最大値が選択されてもよいし、中央値が選択されてもよいし、他の方法が採用されてもよい。
【００８１】
続いて、後処理部１７は、γ＿ｉの絶対値が予め定められた閾値を超えたメトリックｉを抽出する（Ｓ６０５）。続いて、後処理部１７は、抽出されたメトリックｉを異常の要因候補として、当該メトリックｉのＩＤ（識別子）と、当該メトリックｉの差分γ＿ｉとの一覧を、異常の要因を推定するための情報として出力する（Ｓ６０６）。なお、出力順は、差分γ＿ｉの降順でもよい。
【００８２】
なお、ステップＳ６０１、Ｓ６０２及びＳ６０３のいずれか一つが省略されてもよい。
【００８３】
上述したように、第４の実施の形態によれば、第１、第２又は第３の実施の形態と同様に、異常の検知対象について異常が検知された場合の要因の推定を支援することができる。
【００８４】
なお、上記各実施の形態は、ネットワーク以外から収集されるデータに関して適用されてもよい。例えば、コンピュータシステムから収集されるデータに関して上記各実施の形態が適用されてもよい。
【００８５】
なお、上記各実施の形態において、異常検知装置１０は、異常要因推定装置の一例である。後処理部１７は、第１の算出部、第２の算出部、第３の算出部及び第４の算出部の一例である。
【００８６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００８７】
本出願は、２０１７年２月２日に出願された日本国特許出願第２０１７−０１７９２２号に基づきその優先権を主張するものであり、同日本国特許出願の全内容を参照することにより本願に援用する。
【符号の説明】
【００８８】
１０          異常検知装置
１１          受信部
１２          学習処理制御部
１３          前処理部
１４          学習部
１５          検知処理制御部
１６          検知部
１７          後処理部
２０          測定装置
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１２１        教師データ記憶部
１２２        パラメータ記憶部
１２３        観測データ記憶部
１２４        学習結果記憶部
１２５        学習データ記憶部
Ｂ            バス
Ｎ１          ネットワーク
【図１】
0006751168.tif 000003
【図２】
0006751168.tif 000004
【図３】
0006751168.tif 000005
【図４】
0006751168.tif 000006
【図５】
0006751168.tif 000007
【図６】
0006751168.tif 000008
【図７】
0006751168.tif 000009
【図８】
0006751168.tif 000010
【図９】
0006751168.tif 000011
【図１０】
0006751168.tif 000012