(57)【要約】  入力層、中間層、及び出力層を有し、前記入力層のデータを前記出力層で再現するようにパラメータを学習するオートエンコーダの機能を備える異常検知装置において、複数種別の正常データを入力する入力手段と、前記中間層において、正常データの次元数よりも小さい次元数のデータを用いて、データ種別間に跨る特徴を学習することにより、前記入力層の正常データを前記出力層で再現するようにパラメータを学習する学習手段と、前記学習手段により学習されたパラメータを用いた前記オートエンコーダにテストデータを入力し、当該オートエンコーダの出力データと、前記テストデータとに基づいて、当該テストデータの異常度を算出する異常度算出手段とを備える。
2019087987.tif 000002
【特許請求の範囲】
【請求項１】
入力層、中間層、及び出力層を有し、前記入力層のデータを前記出力層で再現するようにパラメータを学習するオートエンコーダの機能を備える異常検知装置であって、
複数種別の正常データを入力する入力手段と、
前記中間層において、正常データの次元数よりも小さい次元数のデータを用いて、データ種別間に跨る特徴を学習することにより、前記入力層の正常データを前記出力層で再現するようにパラメータを学習する学習手段と、
前記学習手段により学習されたパラメータを用いた前記オートエンコーダにテストデータを入力し、当該オートエンコーダの出力データと、前記テストデータとに基づいて、当該テストデータの異常度を算出する異常度算出手段と
を備えることを特徴とする異常検知装置。
【請求項２】
前記オートエンコーダは、前記入力層としての第１層と、前記中間層としての３層である第２層、第３層、及び第４層と、前記出力層としての第５層とを有し、
前記学習手段は、前記第２層と前記第４層において、正常データの次元数よりも小さい次元数でデータ種別毎の特徴を抽出し、前記第３層において、データ種別間に跨る特徴を抽出する
ことを特徴とする請求項１に記載の異常検知装置。
【請求項３】
前記学習手段は、前記入力層のデータと前記出力層のデータとの間のMSEを最小化するように前記パラメータを学習する、又は、前記出力層における値をパラメータとした、予め定めた確率分布の元で前記入力層のデータが観測される尤度関数の正負を逆転した値を最小化するように前記パラメータを学習する
ことを特徴とする請求項１又は２に記載の異常検知装置。
【請求項４】
前記学習手段は、データ種別毎の学習を個別に実行することにより得られたパラメータを初期値として使用することにより、前記オートエンコーダにおけるパラメータを学習する
ことを特徴とする請求項１ないし３のうちいずれか１項に記載の異常検知装置。
【請求項５】
前記異常度算出手段は、データ種別毎の重みを用いて、前記テストデータの異常度をデータ種別毎の再構成誤差の重み付け平均として算出する
ことを特徴とする請求項１ないし４のうちいずれか１項に記載の異常検知装置。
【請求項６】
前記学習手段は、データ種別毎の重みを用いて、データ種別毎の再構成誤差の重み付け平均を最小化するようなパラメータの学習を行う
ことを特徴とする請求項１ないし５のうちいずれか１項に記載の異常検知装置。
【請求項７】
入力層、中間層、及び出力層を有し、前記入力層のデータを前記出力層で再現するようにパラメータを学習するオートエンコーダの機能を備える異常検知装置が実行する異常検知方法であって、
複数種別の正常データを入力する入力ステップと、
前記中間層において、正常データの次元数よりも小さい次元数のデータを用いて、データ種別間に跨る特徴を学習することにより、前記入力層の正常データを前記出力層で再現するようにパラメータを学習する学習ステップと、
前記学習ステップにより学習されたパラメータを用いた前記オートエンコーダにテストデータを入力し、当該オートエンコーダの出力データと、前記テストデータとに基づいて、当該テストデータの異常度を算出する異常度算出ステップと
を備えることを特徴とする異常検知方法。
【請求項８】
コンピュータを、請求項１ないし６のうちいずれか１項に記載の異常検知装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムから収集される多様なデータを監視し、システムの異常を検知する技術において、データ種別間に跨る相関関係の崩れとして表れるような異常を検知するための技術に関するものである。
【背景技術】
【０００２】
様々なデータをリアルタイムで観測する機能が存在するシステムにおいて、正常時のデータを用いて正常時におけるメトリック間の相関関係を、正常データ空間よりも少ない次元の空間に射影することで学習し、正常時におけるメトリック間の相関関係がテストデータにおいて崩れていた場合に、そのテストデータの「異常度」を出力する技術が提案されている（非特許文献１〜４）。【０００３】
当該技術では、観測データ数が増えるほど学習するべき正常データ空間と射影データ空間の関係が組み合わせ的に増加し、必要な正常データが増加してしまうという問題がある（非特許文献３）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Hodge, Victoria J., and Jim Austin. "A survey of outlier detection methodologies." Artificial intelligence review 22.2 (2004): 85-126.
【非特許文献２】櫻田 麻由 ・ 矢入 健久，"オートエンコーダを用いた次元削減による宇宙機の異常検知"， 人工知能学会全国大会論文集 28, 1-3, 2014
【非特許文献３】池田，中野，渡辺，石橋，川原，"オートエンコーダを用いたネットワーク異常検知における精度向上に向けた一検討, Mar. 2017.
【非特許文献４】池田，石橋，中野，渡辺，川原，"オートエンコーダを用いた異常検知におけるスパース最適化を用いた要因推定手法，"信学会IN研究会信学技報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、複数種別のデータを入力とする異常検知技術において、観測データ数が増加するに従い正常データが分布する空間が組み合わせ的に増加する問題を解決することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
開示の技術によれば、入力層、中間層、及び出力層を有し、前記入力層のデータを前記出力層で再現するようにパラメータを学習するオートエンコーダの機能を備える異常検知装置であって、
複数種別の正常データを入力する入力手段と、
前記中間層において、正常データの次元数よりも小さい次元数のデータを用いて、データ種別間に跨る特徴を学習することにより、前記入力層の正常データを前記出力層で再現するようにパラメータを学習する学習手段と、
前記学習手段により学習されたパラメータを用いた前記オートエンコーダにテストデータを入力し、当該オートエンコーダの出力データと、前記テストデータとに基づいて、当該テストデータの異常度を算出する異常度算出手段と
を備えることを特徴とする異常検知装置が提供される。
【発明の効果】
【０００７】
開示の技術によれば、複数種別のデータを入力とする異常検知技術において、観測データ数が増加するに従い正常データが分布する空間が組み合わせ的に増加する問題を解決することを可能とする技術が提供される。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態における異常検知装置の構成例を示すブロック図である。
【図２】異常検知装置のハードウェア構成の一例を示す図である。
【図３】実施例１における異常検知装置の動作を示すフローチャートである。
【図４】実施例１で用いるモデル及び実施例６を用いた学習方法を説明するための図である。
【図５】実施例４における異常検知装置の動作を示すフローチャートである。
【図６】実施例１をベースとした実施例６における異常検知装置の動作を示すフローチャートである。
【図７】実施例４をベースとした実施例６における異常検知装置の動作を示すフローチャートである。
【図８】実施例１をベースとした実施例６及び７を用いてテストベッドの異常検知を行う際に、収集したデータから特徴ベクトルを生成した際のkey及びvalueの一覧を示す図である。
【図９】実施例１をベースとした実施例６及び７を用いてテストベッドの異常検知を行った際に各障害を検知できたかどうかを示す表である。
【図１０】各データ種別の学習データの再構成誤差を、実施例１の方法で学習したMAEと、中間層のノード数をMAEの３層目と同じにした通常のオートエンコーダと比較した結果を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施の形態（本実施の形態）を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１０】
（装置構成）
図１に、本発明の実施の形態における異常検知装置１００の構成例を示す。図１に示すように、演算部１０１、記憶部１０２、入力部１０３、及び出力部１０４を有する。
【００１１】
演算部１０１は、学習フェーズでのパラメータ学習処理、及びテストフェーズでの異常度の計算処理を実行する。演算部１０１により実行される処理の詳細は後述する。記憶部１０２は、各種データ、パラメータ等を格納するストレッジである。入力部１０３は、各種データを入力し、出力部１０４は、異常度の出力を行う。
【００１２】
（ハードウェア構成例）
異常検知装置１００は、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、異常検知装置１００は、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、当該異常検知装置１００で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００１３】
図２は、本実施の形態における上記コンピュータのハードウェア構成例を示す図である。図２のコンピュータは、それぞれバスＢで相互に接続されているドライブ装置１５０、補助記憶装置１５２、メモリ装置１５３、ＣＰＵ１５４、インターフェース装置１５５、表示装置１５６、及び入力装置１５７等を有する。
【００１４】
当該コンピュータでの処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１５１によって提供される。プログラムを記憶した記録媒体１５１がドライブ装置１５０にセットされると、プログラムが記録媒体１５１からドライブ装置１５０を介して補助記憶装置１５２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１５１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１５２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１５】
メモリ装置１５３は、プログラムの起動指示があった場合に、補助記憶装置１５２からプログラムを読み出して格納する。ＣＰＵ１５４は、メモリ装置１５３に格納されたプログラムに従って、異常検知装置１００に係る機能を実現する。インターフェース装置１５５は、ネットワークに接続するためのインターフェースとして用いられる。表示装置１５６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１５７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。なお、表示装置１５６を備えないこととしてもよい。
【００１６】
（動作例）
【００１７】
以下、異常検知装置１００の動作例として、実施例１〜実施例８を説明する。以下、実施例１がベースとなる処理であり、実施例２〜８については、基本的に、実施例１と異なる点や、実施例１に対して追加される点を説明している。また、実施例１〜８のうちの任意の複数の実施例は、矛盾が生じない限り、組み合わせて実施することが可能である。
【００１８】
ここで、各実施例を詳細に説明する前に、各実施例の概要を説明する。
【００１９】
（１）実施例１の概要
まず、異常検知装置１００が実行する動作の概要を説明する。異常検知装置１００が実行する異常検知手法のベースとなる異常検知手法は、次のとおりである。
【００２０】
まず、多次元数値ベクトルで表されるデータxに対し、元のデータ空間Xと異なる空間Zへの写像fと、Zから元のデータ空間Xへの写像gについて、xとして正常データが与えられた時には、xをfでZに射影し、更にgで元のデータ空間に射影した再構成データと元のデータの距離である再構成誤差ができるだけ小さくなるようにfとgを学習する。そして、異常検知の対象となるテストデータについて、テストデータをXから写像fでZに射影し、Zから写像gでXに射影した際の再構成誤差をそのデータの異常度とみなす。
【００２１】
実施例１における異常検知装置１００が実行する異常検知手法の概要は次のとおりである。
【００２２】
異常検知装置１００に正常データが入力される。ここでは、複数種別（全K種）のデータが存在する。元のデータ空間X上において、種別kのデータがXの部分空間X_k上に存在するとし、異常検知装置１００は、X_kから他の空間Yの部分空間Y_kへの写像f1_k（k=1, …, K）と、空間Y上のデータを新たな空間Zに写像する写像f2と、ZからYへの写像g1及びYの部分空間Y_kから元のデータ空間Xの部分空間X_kへの写像g2_k(k=1,…,K)を学習する。
【００２３】
そして、異常検知装置１００は、学習した各写像を使用することで、テストデータを写像f1_k (k=1,…,K)によってYに射影し、Yから写像f2によってZに射影し、Zから写像g1によってYに射影し、Yから写像g2_k (k=1,…,K)によってXに射影した際の再構成誤差を異常度とみなす。これにより、データ種別間に跨るような特徴の抽出により異常検知を行うこととしている。
【００２４】
（２）実施例２の概要
実施例２では、実施例１において、データの種別以外の観点でデータを分類し、それぞれがXの部分空間X_kに存在するとみなす。
【００２５】
（３）実施例３の概要    
実施例３では、実施例１における各写像について、空間Aから空間Bへの写像fを、f=f1○f2○…, ○f_nのようなn個の写像の合成写像として学習する。
【００２６】
（４）実施例４の概要
実施例４では、実施例１において、正常データが最終的に写像される空間をXではなく空間Pとし、データの異常度を、予め定めた確率分布Fについて、パラメータを正常データが空間P上に写像された際の値で与えた場合の、その確率分布の元で正常データが観測される尤度関数の正負を逆転させた値として与える。
【００２７】
（５）実施例５の概要
実施例５では、実施例１において、予め定めた確率分布Gについて、パラメータを正常データが空間Z上に写像された際の値で与え、その確率分布に従った乱数を空間Z'上に与え、空間Z'上からYへの写像を学習する。
【００２８】
（６）実施例６の概要
実施例６では、実施例１〜５において、各写像パラメータの学習を個別に行う事で得られた写像パラメータを初期値とした上で、元データと再構成データの距離が近くなるような写像パラメータを学習することで、データ種別毎の再構成データと元のデータの距離がより小さくなるような学習を行う。
【００２９】
（７）実施例７の概要
実施例７では、実施例１〜６において、データ種別毎の再構成のし易さを考慮した重みw_kを用いて、データの異常度をデータ種別毎の再構成誤差の重み付け平均として与える。
【００３０】
（８）実施例８の概要
実施例８では、実施例１〜６において、データ種別毎の再構成のし易さを考慮した重みw_kを用いて、各写像パラメータの学習を行う際にデータ種別毎の再構成誤差の重み付け平均を最小化するようなパラメータの学習を行う。
【００３１】
以下、実施例１〜８をより詳細に説明する。
【００３２】
（実施例１）
まず、実施例１を説明する。実施例１では、多種のデータの相関関係の学習による異常検知を行う際に、データ種別毎の相関関係に基づいた特徴の抽出と、データ種別を跨る相関関係の学習に基づいた特徴の抽出を行うような異常検知を実施する。なお、多種のデータは、複数種のデータと言い換えてもよい。また、多種のデータは、例えば、MIBデータ、フローデータ、syslog、CPU情報等である。また、実施例１〜８においては、教師なし学習により異常検知を実施する。
【００３３】
ここでは、異常検知装置１００により実行される特徴抽出を行う異常検知アルゴリズムとして、オートエンコーダ（非特許文献２）を応用したアルゴリズムの例を示す。なお、オートエンコーダは、入力層、中間層、及び出力層を有し、入力層のデータを出力層で再現するようにパラメータを学習する、ニューラルネットワークを用いた機能である。異常検知装置１００は、当該オートエンコーダの機能を含む。具体的には、当該オートエンコーダの機能は、演算部１０１による演算処理に相当する。
【００３４】
図３のフローチャートを参照して、実施例１における異常検知装置１００の動作を説明する。図３において、Ｓ１０１、Ｓ１０２が学習フェーズであり、Ｓ１０３〜Ｓ１０５がテストフェーズ（異常検知フェーズと呼んでもよい）である。
【００３５】
まず学習フェーズのＳ１０１において、入力部１０３から学習データx_t(t=1, …, T)が入力される。学習データは正常データである。入力された学習データは記憶部１０２に格納される。各学習データは、K種のデータ種別からなるデータであり、x_t = {x_t^1, …, x_t^K}として表される。以下、場合によってはtを省略しk番目の種別のデータをx^kと標記する。なお、データxは、ある次元のベクトルである。また、tは例えば時刻を表す。
【００３６】
次に、Ｓ１０２において、演算部１０１は、学習データを用いてパラメータの学習を以下のようにして行う。ここでは、学習されるモデルは５層からなるマルチモーダルオートエンコーダを応用した異常検知モデルであるとする。マルチモーダルエンコーダについては、例えば、Zhang, Hanwang, et al. "Start from scratch: Towards automatically identifying、 modeling, and naming visual attributes." Proceedings of the 22nd ACM international conference on Multimedia. ACM, 2014.等が参考とされてもよい。
【００３７】
５層からなるマルチモーダルオートエンコーダのモデルのイメージ図を図４（ｃ）に示す。１層目は入力データの層、２層目及び４層目はデータ種別毎の特徴を抽出する層であり、３層目はデータ種別間に跨る特徴を抽出する層である。当該モデルの目的は、１層目に入力されたデータを５層目の出力層で再構成するようにパラメータの学習を行うことである。
【００３８】
より具体的には、例えば、２層目及び４層目はそれぞれ、MIBデータの次元削減をしたデータによりMIBデータの特徴を抽出するノードと、フローデータの次元削減をしたデータによりフローデータの特徴を抽出するノードと、syslogの次元削減をしたデータによりsyslogの特徴を抽出するノードと、CPU情報の次元削減をしたデータによりCPU情報の特徴を抽出するノードからなる。３層目のノードは、２層目のノードからの出力データを重み付けして足し合わせること等により、これらのデータ種別間に跨る特徴を抽出する。なお、図４（ａ）、（ｂ）については、実施例６において説明する。
【００３９】
図４（ｃ）において、１層目から２層目へのマッピングが前述した写像f1_k（k=1, …, K）に対応し、２層目から３層目へのマッピングが写像f2に対応し、３層目から４層目へのマッピングが写像g1に対応し、４層目から５層目へのマッピングが前述した写像g2_k（k=1, …, K）に対応する。
【００４０】
具体的には、演算部１０１は、下記の最適化問題を解くことでパラメータW^{k, (l)}, b^{k, (l)}, l=2, …, 5, for all kを学習する。すなわち、演算部１０１は、入力データと出力層のデータの再構成誤差（下記の式（１）、ここではMSEを使用）を最小化するようなパラメータW^{k,(l)}, b^{k,(l)}, l=2,…,5を求め、求めたパラメータを記憶部１０１に保存する。
【００４１】
【数１】
2019087987.tif 000003
ただし、N_kはデータ種別kの次元数である。また、x^{k, (l)}, l=2, 4, 5は、k番目のデータ種別のl層目の出力を示し、x^{(3)}は、３層目の出力を示し、それぞれ下記のとおりである。
【００４２】
【数２】
2019087987.tif 000004
【００４３】
【数３】
2019087987.tif 000005
【００４４】
【数４】
2019087987.tif 000006
【００４５】
【数５】
2019087987.tif 000007
上記の各式において、W^{k, (l)}はk番目のデータ種別に関するl-1層からl層の接続重みであり、b^{k, (l)}はk番目のデータ種別に関するl層のバイアス項であり、φ^(l)はl層目の活性化関数である。ここで、２層目及び４層目の次元数は、各データの次元数よりも小さい。これにより、データ種別毎の次元を削減し、次元削減されたデータを用いてデータ種別を跨る相関関係を３層目で学習するため、データ種別を跨る相関のない次元の増加による正常空間の組み合わせ的増加を防ぐことが可能である。演算部１０１により学習されたパラメータは記憶部１０２に保存される。
【００４６】
なお、前述した写像f1_k（k=1, …, K）、f2、g1、及びg2_k（k=1, …, K）を学習することは、パラメータW^{k,(l)}, b^{k,(l)}, l=2,…,5を学習することに相当する。
【００４７】
テストフェーズのＳ１０３において入力部１０４からテストデータx_testが入力される。演算部１０１は、記憶部１０２に保存されたパラメータW^{k,(l)}, b^{k,(l)}，l=2,…,5, for all kを元に上記の式（２）〜（５）を用いて出力層のベクトルx_test^(5)を計算し、その平均二乗誤差（MSE）を異常度として計算する（S１０４）。そして、異常度を出力部１０４より出力する（Ｓ１０５）。すなわち、テストフェーズでは、学習フェーズにより学習されたパラメータを用いたオートエンコーダ（ここでは、マルチモーダルオートエンコーダ）にテストデータを入力し、当該オートエンコーダの出力データと、テストデータとに基づいて、当該テストデータの異常度を算出する。
【００４８】
（実施例２）
次に、実施例２を説明する。実施例２では、実施例１においてデータをデータ種別で分けるのではなく、その他の観点で分類を行う。分類の仕方としては、例えばデータの収集機器毎の分類や、収集箇所毎の分類など、データの属性に応じて分類を行う方法がある。また、事前にデータに対してクラスタリングを行い、クラスタに応じた分類を行う方法を採用してもよい。
【００４９】
実施例２における異常検知装置１００の処理内容は実施例１における処理内容と同じである。実施例２では、実施例１におけるK種のデータx_t = {x_t^1, …, x_t^K }を、実施例２における観点で分類したKグループのデータとすればよい。
【００５０】
なお、「データ種別」を、実施例１でのデータの分類と実施例２でのデータの分類の両方を含む意味であると解釈してもよい。
【００５１】
実施例２においても、データ種別を跨る相関のない次元の増加による正常空間の組み合わせ的増加を防ぐことが可能である。
【００５２】
（実施例３）
次に、実施例３を説明する。実施例３では、実施例１においてオートエンコーダの層の数を更に増やすことにより、より複雑な特徴抽出を行う。例えば、１層目から２層目の間の層数及び４層目から５層目の間の層数を増やす事により、データ種別毎の特徴抽出において、より複雑な特徴を抽出できることが期待される。また、２層目と３層目の間の層数、及び／又は、３層目と４層目の間の層数を増やすことで、データ全体の特徴抽出において、より複雑な特徴を抽出できることが期待される。
【００５３】
実施例３によっても、データ種別を跨る相関のない次元の増加による正常空間の組み合わせ的増加を防ぐことが可能である。また、実施例３では、特に、データが複雑で次元削減が難しい場合に、層数を増やすことで、より正確な次元削減を行うことが可能である。
【００５４】
（実施例４）
次に、実施例４を説明する。実施例４では、実施例１においてデータの異常度を入力層と出力層との間のMSEで表わすことに代えて、出力層における値をパラメータとした、予め定めた確率分布の元で入力層のデータが観測される尤度関数の正負を逆転した値を異常度とみなす。なお、尤度関数の正負を逆転した値を、尤度関数にマイナスを掛けた値と言い換えてもよい。このような異常度の定義は、Variational Autoencoderを用いた異常検知においても行われている。Variational Autoencoderを用いた異常検知については、例えば、An, Jinwon, and Sungzoon Cho. Variational Autoencoder based Anomaly Detection using Reconstruction Probability. Technical Report, 2015.等が参考とされてもよい。
【００５５】
図５は、実施例４における異常検知装置１００の動作を示すフローチャートである。図５において、Ｓ４０１、Ｓ４０２が学習フェーズであり、Ｓ４０３〜Ｓ４０５がテストフェーズである。
【００５６】
Ｓ４０１において、入力部１０３から学習データx_t (t=1,…,T)及び確率分布F(x,θ)が入力される。入力された学習データは記憶部１０２に格納される。
【００５７】
Ｓ４０２において、演算部１０１は、出力層における値をθとしたF(x,θ)の元で入力層のデータが観測される尤度関数の正負を逆転した値を最小化するようなパラメータW^{k,(l)}, b^{k,(l)}, l=2,…,5を求め、求めたパラメータを記憶部１０２に保存する。すなわち、実施例４では、演算部１０１は、実施例１の式（１）〜（５）において、式（１）を、出力層における値をθとしたF(x,θ)の元で入力層のデータが観測される尤度関数の正負を逆転した値を最小化することを表す目的関数とした最適化問題を解く。
【００５８】
テストフェーズのＳ４０３において入力部１０４からテストデータx_testが入力される。
【００５９】
Ｓ４０４において、演算部１０１は、記憶部１０２から読み込んだパラメータW^{k,(l)}, b^{k,(l)}, l=2,…,5を用いて，出力層における値をθとしたF(x,θ)の元で入力層のデータが観測される尤度関数の正負を逆転した値を異常度として計算する。Ｓ４０５において、出力部１０４からテストデータの異常度を出力する。
【００６０】
上述したとおり、実施例４では、実施例１におけるMSEの計算の代わりに、尤度関数の正負の値を逆転した値を計算し、その値を最小化するようなパラメータの学習を行う。また、異常度の定義においても、その値をテストデータの異常度として定義を行う。
【００６１】
実施例４によっても、データ種別を跨る相関のない次元の増加による正常空間の組み合わせ的増加を防ぐことが可能である。
【００６２】
（実施例５）
次に、実施例５を説明する。実施例５では、実施例１において３層目と４層目の間に新たな層を定義し、３層目の値をパラメータとした、予め定めた確率分布によって生成した乱数を新たな層の値とし、その値を実施例１における４層目に写像する。このような乱数を導入した写像は前述したVariational Autoencoder（例えば、An, Jinwon, and Sungzoon Cho. Variational Autoencoder based Anomaly Detection using Reconstruction Probability. Technical Report, 2015.参照）においても行われており、そこでは確率分布として正規分布が与えられ、３層目における値を正規分布の平均及び分散とみなして乱数を発生させ、その乱数を４層目の値として用いる。
【００６３】
実施例５における異常検知装置１００の処理フローは基本的には図３に示した処理フローと同様である。ただし、Ｓ１０２において、実施例５では、実施例１における式（１）〜（５）の最適化問題に対し、以下に説明する変更を加えた最適化問題を解く。
【００６４】
すなわち、実施例５では、式（３）で計算されたx^(3)の各次元の値のうち予め定めた半数を平均、残りの半数を分散とみなし、共分散は0として、x^(3)の次元数の半分の次元の乱数x^(3)'を正規分布に従い発生させる。x^(3)'を４層目に写像する式は、式（４）における入力x^(3)をx^(3)'とみなし、W^{k,(4)}及びb^{k,(4)}もx^(3)'の次元数に合わせた行列及びベクトルになるような式である。テストフェーズにおいても同様である。
【００６５】
実施例５によっても、データ種別を跨る相関のない次元の増加による正常空間の組み合わせ的増加を防ぐことが可能である。
【００６６】
（実施例６）
次に、実施例６を説明する。実施例６は、実施例１あるいは実施例４をベースとする。実施例１をベースとする場合において、実施例１における写像の学習をデータ種別毎に個別で行うことで、データ種別毎に再構成が十分に行われるようなパラメータの学習を行う。このように、写像の学習をデータ種別毎に個別で行うことは実施例２〜５にも適用できる。
【００６７】
例えば、実施例１のオートエンコーダに基づいたモデルを使用する場合、式（１）の最適化によるパラメータの学習を行うが、この時、再構成をし易いデータ種別と、再構成をし難いデータ種別が混在している場合、式（１）内における二乗誤差は後者の方が大きくなり易く、全てのパラメータは後者の二乗誤差を小さくするように更新される。そのため、前者のデータ種別については再構成できるような学習が十分に行われない可能性がある。
【００６８】
そこで、実施例６では、データ種別毎に十分に再構成が行われるパラメータを最初に学習し、そのパラメータを初期値とした上で全体の再構成誤差を小さくするような学習を行う。
【００６９】
図６は、実施例１をベースとする実施例６における異常検知装置１００の動作を示すフローチャートである。ここでは実施例１と同様のマルチモーダルオートエンコーダの例を示す。図６において、Ｓ５１１〜Ｓ５１４が学習フェーズであり、Ｓ５１５〜Ｓ５１７がテストフェーズである。
【００７０】
Ｓ５１１において、入力部１０３から学習データx_t (t=1,…,T)が入力される。入力された学習データは記憶部１０２に格納される。
【００７１】
続いて、Ｓ５１２、Ｓ５１３において、演算部１０１は、データ種別毎の特徴抽出による再構成を十分に行えるようなパラメータW^{k,(l)}, b^{k,(l)}，l=2,5, for all kの学習と、全データ種別の特徴抽出による再構成を十分に行えるようなパラメータW^{k,(l)}, b^{k,(l)}，l=3,4, for all kの学習をそれぞれ事前学習として行う。
【００７２】
すなわち、図６に示すとおり、Ｓ５１２において、演算部１０１は、W^{k,(l)}, b^{k,(l)}, l=2,5, for all kを用いたオートエンコーダの再構成誤差を最小化するようなパラメータを、x_tを学習データとして用いて求める。また、Ｓ５１３において、演算部１０１は、W^{k,(l)}, b^{k,(l)}, l=3,4, for all kを用いたオートエンコーダの再構成誤差を最小化するようなパラメータを、x_tをW^{k,(l)}, b^{k,(l)}，l=2, for all kを用いて式（２）に従って変換したデータを学習データとして用いて求める。
【００７３】
Ｓ５１２、Ｓ５１３における事前学習のイメージを図４（ａ）、（ｂ）に示す。ここでは、まず、図４（ａ）に示すように、１層目と２層目の間のパラメータがW^{k,(l)}, b^{k,(l)}，l=2, for all k、２層目と３層目の間のパラメータがW^{k,(l)}, b^{k,(l)}，l=5, for all kであるオートエンコーダについて、正常データを用いて入力データと出力データの再構成誤差が小さくなるようにパラメータを学習する。
【００７４】
次に、図４（ｂ）に示すように、１層目と２層目の間の間のパラメータがW^{k,(l)}, b^{k,(l)}，l=3, for all k，２層目と３層目の間のパラメータがW^{k,(l)}, b^{k,(l)}，l=4, for all kであるようなオートエンコーダについて、正常データを、W^{k,(l)}, b^{k,(l)}，l=2, for all kを用いて式（２）で変換したデータを入力として、再構成誤差が小さくなるようにパラメータを学習する。
【００７５】
その後、図４（ｃ）に示すように、学習されたパラメータを初期値として、式（１）の学習を行う。
【００７６】
より詳細には、図６のＳ５１４において、演算部１０１は、Ｓ５１２、Ｓ５１３において既に求めたパラメータを初期値とした上で、再構成誤差（式（１））を最小化するようなパラメータW^{k,(l)}, b^{k,(l)}, l=2,…,5 for all kを求め、求めたパラメータを記憶部１０２に保存する。
【００７７】
テストフェーズＳ５１５〜Ｓ５１７における処理内容は、実施例１における図３のＳ１０３〜Ｓ１０５と同じである。
【００７８】
実施例４をベースとする場合、演算部１０１は、W^{k,(l)}, b^{k,(l)}，l=2,5, for all kの学習においては実施例４と同様に尤度関数の正負を逆転させた値を学習し、W^{k,(l)}, b^{k,(l)}，l=3,4, for all kの学習においては再構成誤差が小さくなるようなパラメータの学習を行う。
【００７９】
図７は、実施例４をベースとした実施例６における異常検知装置１００の動作を示すフローチャートである。図７において、Ｓ５４１〜Ｓ５４４が学習フェーズであり、Ｓ５４５〜Ｓ５４７がテストフェーズである。
【００８０】
Ｓ５４１において、入力部１０３から学習データx_t (t=1,…,T)及び確率分布F(x,θ)が入力される。
【００８１】
Ｓ５４２において、演算部１０１は、W^{k,(l)}, b^{k,(l)}, l=2,5,for all kを用いたオートエンコーダの出力層における値をθとしたF(x,θ)の元で入力層のデータが観測される尤度関数の正負を逆転した値を最小化するようなパラメータを、x_tを学習データとして用いて求める。
【００８２】
Ｓ５４３において、演算部１０１は、W^{k,(l)}, b^{k,(l)}, l=3,4, for all kを用いたオートエンコーダの再構成誤差を最小化するようなパラメータを、x_tをW^{k,(l)}, b^{k,(l)}，l=2, for all kを用いて式(2)に従って変換したデータを学習データとして用いて求める。
【００８３】
そして、Ｓ５４４において、演算部１０１は、既に求めたパラメータを初期値とした上で、出力層における値をθとしたF(x,θ)の元で入力層のデータが観測される尤度関数の正負を逆転した値を最小化するようなパラメータW^{k,(l)}, b^{k,(l)}, l=2,…,5, for all kを求め、求めたパラメータを記憶部１０２に保存する。
【００８４】
テストフェーズＳ５４５〜Ｓ５４７における処理内容は、実施例４における図５のＳ４０３〜Ｓ４０５と同じである。
【００８５】
実施例６により、実施例１、４の効果に加えて、データ種別毎の学習のし易さがデータ全体の相関関係の学習やテストデータの異常度算出に影響を与えるという課題を解決できる効果がある。
【００８６】
（実施例７）
次に、実施例７を説明する。実施例７では、実施例１〜６における異常度の計算において、データ種別毎の再構成のし易さ、又は、尤度の大きさを考慮した重み付けを行う。例えば実施例１の場合、データ種別毎に再構成のし易さが異なる場合、再構成し易いデータにおいて発生した異常による再構成誤差の変動が、再構成し難いデータの正常時の再構成誤差に比べて小さくなる可能性があり、そのような異常を検知できない原因となる。
【００８７】
そこで、実施例７において、演算部１０１は、MSEの計算を、以下のような重み付け平均二乗誤差として行う。
【００８８】
【数６】
2019087987.tif 000008
上記の式（６）において、w_kはデータ種別kの再構成のし易さを表す係数であり、データ種別kが再構成し易いほど大きく、し難いほど小さくなる。これは、再構成し易いデータは再構成誤差が小さくなる傾向にあり、再構成し難いデータは再構成誤差が大きくなる傾向にあるため、その違いを相殺するためである。w_kの与え方としては、例えば学習済みのモデルに対して正常データを入力した際の再構成誤差の分布の平均の逆数などが考えられる。
【００８９】
実施例４の場合には、尤度関数が大きくなり易いデータについては、尤度関数の正負を逆転させた値は小さくなり易く、実施例１の場合と同様、異常が発生した場合に検知できない原因となる可能性がある。そのため、実施例７の重み付けを実施例４に適用する場合には、データ種別毎の尤度関数の正負を逆転させた値について、同様に重み付けした値を異常度とする。すなわち、実施例７の重み付けを実施例４に適用する場合には、w_kは、データ種別kにおける尤度関数の正負を逆転させた値が小さいほど大きく、データ種別kにおける尤度関数の正負を逆転させた値が大きいほど小さくなる。
【００９０】
実施例７によっても、データ種別毎の学習のし易さがデータ全体の相関関係の学習やテストデータの異常度算出に影響を与えるという課題を解決できる。
【００９１】
（実施例８）
次に、実施例８を説明する。実施例８では、実施例１〜７における学習時において、実施例７と同様にデータ種別毎の再構成のし易さ、又は、尤度関数の大きさを考慮した重み付けを行う。これは、実施例６で説明したように、再構成し難いデータのMSEの最小化、又は、尤度関数が小さくなりやすいデータの尤度関数の正負を逆転させた値の最小化が学習時において支配的になるのを防ぐためである。実施例８において、演算部１０１は、学習フェーズにおいて下記の式を最小化するようなパラメータを求める。
【００９２】
【数７】
2019087987.tif 000009
w_kの与え方としては、例えば実施例１の場合、その時点におけるパラメータを用いたモデルに対して正常データを入力した際の再構成誤差の分布の平均の逆数rなどが考えられる。
【００９３】
実施例８によっても、データ種別毎の学習のし易さがデータ全体の相関関係の学習やテストデータの異常度算出に影響を与えるという課題を解決できる。
【００９４】
（実施の形態の効果について）
以上、説明したように、本実施の形態における技術により、複数種別のデータを入力とした異常検知を行う際に生じる、学習すべき正常状態の組み合わせ的増加や、学習のし易さの違いによる影響を解決することが可能となる。ここでは、実施例１をベースとした実施例６及び実施例７を用いて、テストベッドネットワークにおいて、異常検知装置１００が異常検知を行った結果によって本技術の効果を示す。
【００９５】
テストベッドネットワークから、フローデータ、MIBデータ、syslogの３種のデータを収集し、図８に示すようなkeyとvalueの組み合わせによって特徴ベクトルの生成を行った。ここで、syslogについてはSTE(Statistical Template Extraction)を用いてテンプレートIDを付与し、そのIDの出現回数を特徴量としている。STEについては、例えば、Kimura, Tatsuaki, et al. "Spatio-temporal factorization of log data for understanding network events." INFOCOM, 2014 Proceedings IEEE. IEEE, 2014.等が参考とされてもよい。正常データとして、１ヶ月分のデータから、工事を行っていた時間と、トラブルチケットに報告があった障害の時間±６時間のデータを用い、テストデータとして１.５ヶ月分のデータを用いた際に、トラブルチケットに報告のあった障害を検知できたかどうかを確認した。
【００９６】
ここでは、MSEの閾値を、工事以外の期間や障害の期間±6時間以外の正常な期間においてMSEが閾値を超えた割合が3%になるように設定した際に、20種類の異常について検知できたか否かを図９に示す。ここで、図９に示すMAEは実施例６及び実施例７を組み合わせた手法であり、normal AEは、全てのデータ種別の入力データを1次元のベクトルに結合し、一つのオートエンコーダで学習をおこなった際の検知結果である。×はMSEが閾値に届かず検知できなかった場合、１つのチェックマークはMSEが閾値を超えて検知できた場合を示し、２つのチェックマークは、MSEが閾値を超えたのが障害に起因するものであると確認ができた場合を示している。
【００９７】
図９に示すように、実施例６及び実施例７を組み合わせた方法（MAE）では、通常のオートエンコーダに比べて検知精度が向上している。特に、#7の障害については通常のオートエンコーダでは見逃しているのがMAEでは検知できている。これは、syslogに出現した異常が、通常のオートエンコーダではデータ種別毎の再構成誤差の違いによってMSEとして他と比べて大きく現れなかったためであるが、MAEでは実施例７によりデータ種別毎の再構成誤差の違いを考慮しているため、syslogの異常によるMSEの変動を検知できている。
【００９８】
また、MAEが各データ種別の次元削減を行った上でデータ間の相関関係を学習することで、正常データが分布する空間が組み合わせ的に増加する問題を解決している点を示すために、各データ種別の学習データの再構成誤差を、実施例１の方法で学習したMAEと、中間層のノード数をMAEの３層目と同じにした通常のオートエンコーダと比較した結果を図１０に示す。図１０に示すように、MAEでは通常のオートエンコーダに比べて再構成誤差が小さくなっており、MAEが通常のオートエンコーダに比べて３層目でより正確にデータ種別間の相関関係を学習できていることがわかる。
【００９９】
（実施の形態のまとめ）
以上、説明したとおり、本実施の形態により、入力層、中間層、及び出力層を有し、前記入力層のデータを前記出力層で再現するようにパラメータを学習するオートエンコーダの機能を備える異常検知装置であって、複数種別の正常データを入力する入力手段と、前記中間層において、正常データの次元数よりも小さい次元数のデータを用いて、データ種別間に跨る特徴を学習することにより、前記入力層の正常データを前記出力層で再現するようにパラメータを学習する学習手段と、前記学習手段により学習されたパラメータを用いた前記オートエンコーダにテストデータを入力し、当該オートエンコーダの出力データと、前記テストデータとに基づいて、当該テストデータの異常度を算出する異常度算出手段とを備えることを特徴とする異常検知装置が提供される。
【０１００】
実施例で説明した入力部１０３は入力手段の例であり、演算部１０１は、学習手段と異常度算出手段の例である。
【０１０１】
前記オートエンコーダは、前記入力層としての第１層と、前記中間層としての３層である第２層、第３層、及び第４層と、前記出力層としての第５層とを有し、前記学習手段は、前記第２層と前記第４層において、正常データの次元数よりも小さい次元数でデータ種別毎の特徴を抽出し、前記第３層において、データ種別間に跨る特徴を抽出することとしてもよい。
【０１０２】
前記学習手段は、前記入力層のデータと前記出力層のデータとの間のMSEを最小化するように前記パラメータを学習する、又は、前記出力層における値をパラメータとした、予め定めた確率分布の元で前記入力層のデータが観測される尤度関数の正負を逆転した値を最小化するように前記パラメータを学習することとしてもよい。
【０１０３】
前記学習手段は、データ種別毎の学習を個別に実行することにより得られたパラメータを初期値として使用することにより、前記オートエンコーダにおけるパラメータを学習することとしてもよい。
【０１０４】
前記異常度算出手段は、データ種別毎の重みを用いて、前記テストデータの異常度をデータ種別毎の再構成誤差の重み付け平均として算出することとしてもよい。
【０１０５】
前記学習手段は、データ種別毎の重みを用いて、データ種別毎の再構成誤差の重み付け平均を最小化するようなパラメータの学習を行うこととしてもよい。
【０１０６】
また、本実施の形態により、入力層、中間層、及び出力層を有し、前記入力層のデータを前記出力層で再現するようにパラメータを学習するオートエンコーダの機能を備える異常検知装置が実行する異常検知方法であって、複数種別の正常データを入力する入力ステップと、前記中間層において、正常データの次元数よりも小さい次元数のデータを用いて、データ種別間に跨る特徴を学習することにより、前記入力層の正常データを前記出力層で再現するようにパラメータを学習する学習ステップと、前記学習ステップにより学習されたパラメータを用いた前記オートエンコーダにテストデータを入力し、当該オートエンコーダの出力データと、前記テストデータとに基づいて、当該テストデータの異常度を算出する異常度算出ステップとを備えることを特徴とする異常検知方法が提供される。
【０１０７】
また、本実施の形態により、コンピュータを、上記異常検知装置における各手段として機能させるためのプログラムが提供される。
【０１０８】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１０９】
本特許出願は２０１７年１１月２日に出願した日本国特許出願第２０１７−２１２８０１号に基づきその優先権を主張するものであり、日本国特許出願第２０１７−２１２８０１号の全内容を本願に援用する。
【符号の説明】
【０１１０】
１００  異常検知装置
１０１  演算部
１０２  記憶部
１０３  入力部
１０４  出力部
１５０  ドライブ装置
１５１  記録媒体
１５２  補助記憶装置
１５３  メモリ装置
１５４  ＣＰＵ
１５５  インターフェース装置
１５６  表示装置
１５７  入力装置
【図１】
2019087987.tif 000010
【図２】
2019087987.tif 000011
【図３】
2019087987.tif 000012
【図４】
2019087987.tif 000013
【図５】
2019087987.tif 000014
【図６】
2019087987.tif 000015
【図７】
2019087987.tif 000016
【図８】
2019087987.tif 000017
【図９】
2019087987.tif 000018
【図１０】
2019087987.tif 000019
【国際調査報告】
2019087987.tif 000020
2019087987.tif 000021
2019087987.tif 000022
2019087987.tif 000023