(57)【要約】  モデル学習装置において、学習データを用いて学習されたモデルのパラメータと、当該学習データとを格納する記憶部と、前記モデルを用いて、テストデータの異常の有無を判断し、判断結果及び当該テストデータを前記記憶部に格納する検知部と、前記判断結果、前記テストデータ、及び前記学習データを用いて、前記モデルの再学習を行う再学習部とを備える。
2019138655.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
【非特許文献３】Ringberg, Haakon, et al. "Sensitivity of PCA for traffic anomaly detection." ACM SIGMETRICS Performance Evaluation Review 35.1 (2007): 109-120.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような検知アルゴリズムを異常検知に使い続ける際には、観測対象のデータの傾向に変化がある場合、傾向の変化自体を異常として検知してしまう場合があるという課題がある。【０００５】
例えば、データがトラヒック量のようなデータであり、トラヒック量がネットワーク内で全体的に増加の傾向にある場合、異常検知アルゴリズムへの入力データが徐々に増加することで、単純なトラヒック量の増加を異常と検知してしまう場合があった。また、正常なデータを異常として判断してしまうような過検知や、異常なデータを正常として見逃してしまう非検知が発生する場合に、同様の過検知／非検知を繰り返し起こしてしまう課題もあった。【０００６】
すなわち、従来技術では、学習したモデルを用いる異常検知アルゴリズムを継続的に利用する際に、異常検知を適切に行えなくなる場合があるという課題があった。【０００７】
本発明は上記の点に鑑みてなされたものであり、学習したモデルを用いる異常検知アルゴリズムを継続的に利用する際に、異常検知が適切に行われるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
開示の技術によれば、学習データを用いて学習されたモデルのパラメータと、当該学習データとを格納する記憶部と、
前記モデルを用いて、テストデータの異常の有無を判断し、判断結果及び当該テストデータを前記記憶部に格納する検知部と、
前記判断結果、前記テストデータ、及び前記学習データを用いて、前記モデルの再学習を行う再学習部と
を備えることを特徴とするモデル学習装置が提供される。
【発明の効果】
【０００９】
開示の技術によれば、学習したモデルを用いる異常検知アルゴリズムを継続的に利用する際に、異常検知が適切に行われるようにする技術が提供される。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態におけるモデル学習装置１００の構成図である。
【図２】モデル学習装置１００のハードウェア構成の一例を示す図である。
【図３】実施例４におけるモデル学習装置１００の動作を説明するためのフローチャートである。
【図４】実施例５におけるモデル学習装置１００の動作を説明するためのフローチャートである。
【図５】実施例６におけるモデル学習装置１００の動作を説明するためのフローチャートである。
【図６】実施例７におけるモデル学習装置１００の動作を説明するためのフローチャートである。
【図７】実施例９におけるモデル学習装置１００の動作を説明するためのフローチャートである。
【図８】本発明の技術を用いなかった場合の異常度の変化を表すグラフである。
【図９】実施例４を用いてトレンドへの追従を行った場合の異常度の変化を表すグラフである。
【図１０】実施例４及び実施例５を用いてトレンドへの追従及び過検知の再学習を行った場合の異常度の変化を表すグラフである。
【図１１】各評価における過検知数を比較した結果である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態（本実施の形態）を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１２】
（システム構成）
図１に、本実施の形態におけるモデル学習装置１００の構成例を示す。図１に示すように、本実施の形態におけるモデル学習装置１００は、入力部１０１、記憶部１０２、検知部１０３、正解ラベル生成部１０４、再学習部１０５、パラメータ採否判定部１０６を有する。なお、最初にモデルの学習を実行する機能（ここでは学習部と呼ぶ）は、モデル学習装置１００が備えてもよいし、モデル学習装置１００の外部に備えられてもよいが、本実施の形態では、モデル学習装置１００の外部に備えられていることを想定している。
【００１３】
入力部１０１は、監視対象のデータ、異常検知モデル、各種パラメータ等の外部の情報をモデル学習装置１００に入力させる。
【００１４】
記憶部１０２は、入力部１０１より入力されたデータ、モデル及びパラメータや、再学習部１０５にて新たに計算されたモデル及びパラメータを保持する。
【００１５】
検知部１０３は、入力部１０１より入力されるか、又は記憶部１０２から読み出したデータ、モデル及びパラメータを用いて、データの異常の有無について判定する。
【００１６】
正解ラベル生成部１０４は、過去に入力された各データについて、正常性の確認を行い、正常であったか否かを示す正解ラベルを生成する。なお、正常性の確認の方法は特定の方法に限定されない。例えば、正解ラベル生成部１０４がデータを表示し、システムオペレータが目視で正常性の確認を行い、確認結果を正解ラベル生成部１０４に入力することにより、正解ラベルが生成されてもよい。
【００１７】
再学習部１０５は、記憶部１０２に保持されたデータ、モデル及びパラメータを用いて、予め定めた方法及びタイミングでモデルの再学習を行う。
【００１８】
パラメータ採否判定部１０６は、再学習部１０５にて新たに生成されたモデルを、それ以降の異常検知に用いるか否かの判断を行う。
【００１９】
上述した各機能部に関わる動作の詳細については後述する。
【００２０】
（ハードウェア構成例）
上述したモデル学習装置１００は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。
【００２１】
すなわち、モデル学習装置１００は、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、モデル学習装置１００で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００２２】
図２は、本実施の形態における上記コンピュータのハードウェア構成例を示す図である。図２のコンピュータは、それぞれバスＢで相互に接続されているドライブ装置１５０、補助記憶装置１５２、メモリ装置１５３、ＣＰＵ１５４、インターフェース装置１５５、表示装置１５６、及び入力装置１５７等を有する。
【００２３】
当該コンピュータでの処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１５１によって提供される。プログラムを記憶した記録媒体１５１がドライブ装置１５０にセットされると、プログラムが記録媒体１５１からドライブ装置１５０を介して補助記憶装置１５２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１５１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１５２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２４】
メモリ装置１５３は、プログラムの起動指示があった場合に、補助記憶装置１５２からプログラムを読み出して格納する。ＣＰＵ１５４は、メモリ装置１５３に格納されたプログラムに従って、モデル学習装置１００に係る機能を実現する。インターフェース装置１５５は、ネットワークに接続するためのインターフェースとして用いられる。表示装置１５６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１５７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。なお、表示装置１５６を備えないこととしてもよい。
【００２５】
（実施例）
次に、モデル学習装置１００の動作例を実施例１〜１１として以下に説明する。以下、実施例１〜２は動作の概要を示しており、その動作の詳細例については、実施例３以降で説明している。
【００２６】
＜実施例１＞
実施例１では、モデル学習装置１００は、教師なし異常検知アルゴリズムを用いる。当該教師なし異常検知アルゴリズムに基づき、モデル学習装置１００の検知部１０３は、テスト期間において、正常時のデータX_train={x_train_1, x_train_2,…,x_train_T}を用いて学習されたモデルを用い、当該モデルに対してテストデータx_testを入力し、データの異常度を出力する。また、モデル学習装置１００は、過去のテストデータを記憶部１０２に蓄積し、再学習部１０５において、蓄積したテストデータや学習データを用いてモデルの再学習を行うことで、データの持つ時間的なトレンドへの追従や、誤った検知を繰り返さないようなモデルの更新を行う。具体的な処理例については実施例４、５、６において説明する。
【００２７】
＜実施例２＞
実施例２では、モデル学習装置１００は、教師あり異常検知アルゴリズムを用いる。当該教師あり異常検知アルゴリズムに基づき、モデル学習装置１００の検知部１０３は、学習データとして、X_train={x_train_1, x_train_2,…,x_train_T}に加えて、それぞれが属するクラスのラベルであるラベルデータY_train={y_train_1, y_train_2,…,y_train_T}を用いて学習されたモデルをテスト期間において使用することで、テストデータのクラスを分類し、分類結果から異常の有無を判断する。その際に、モデル学習装置１００は、過去のテストデータを記憶部１０２に蓄積し、再学習部１０５において、蓄積したテストデータや学習データを用いてモデルの再学習を行うことで、データの持つ時間的なトレンドへの追従や、誤った検知を繰り返さないようなモデルの更新を行う。具体的な処理例については実施例７、８において説明する。
【００２８】
＜実施例３＞
実施例３では、実施例１において再学習部１０５が再学習を行う場合に、過去に学習したパラメータの重要度を考慮した学習を行うことで、過去に学習したデータの傾向を保持しつつ、新たなデータの傾向についての再学習を行う。
【００２９】
実施例３では、学習部でモデルの学習を行った際に、学習の結果得られたパラメータが、その学習においてどの程度重要であったかの重要度が算出され、その重要度が記憶部１０２に記憶される。なお、前述したように、学習部は、モデル学習装置１００の外部の機能部であるが、学習部がモデル学習装置１００に備えられる形態を採用してもよい。
【００３０】
ここでは、重要度を算出する方法について、モデルを確率モデルとみなした場合に、確率変数で与えられるデータXがパラメータに関して持つ情報量であるフィッシャー情報量（MLA Kirkpatrick, James, et al. "Overcoming catastrophic forgetting in neural networks." Proceedings of the National Academy of Sciences (2017): 201611835.参照）を、パラメータの重要度とみなした場合の例を示す。
【００３１】
学習部は、パラメータθを学習した後に、各パラメータのフィッシャー情報量についても計算し、それらをFとして記憶部１０２に保持する。再学習を行う場合には、再学習部１０５は、記憶部１０２に保持されたフィッシャー情報量Fを用いて、フィッシャー情報量の大きいパラメータについては大きく変化させないような学習を行う。そのような方法としては、例えば学習において最小化するべき関数に対し、ペナルティ項として、過去に学習したパラメータθ*_iとの二乗誤差に対し、フィッシャー情報量F_iを乗じたものを、全パラメータについて評価した値を加えるといった方法がある。
【００３２】
例えば、異常検知アルゴリズムとしてオートエンコーダ（非特許文献２）を用いる場合、学習において最小化するべき関数は、入力層x_1,x_2,…,x_Nと出力層x'_1, x'_2,…,x'_Nの平均二乗誤差L(x) =(1/N) Σ_i=1^N (x_i - x'_i)^2として与えられるが、フィッシャー情報量を用いた再学習は、最小化問題として
min_θ E(x, θ) = L(x) +(λ/2) * Σ_i=1^I F_i (θ_i −θ*_i )^2
のように与えられる。ここで、xは再学習で用いる学習データ、Iは全パラメータ数、λはペナルティ項に対する係数であり、λが大きいほどペナルティ項が強く効いて、再学習によるパラメータの変化が小さくなる。また、再学習で用いる学習データとしては、過去の学習データと過去に監視したテストデータの双方を用いてもよいが、過去の学習データを用いた学習に関する情報は、各パラメータの重要度としてFに集約されているため、再学習には過去に監視したテストデータのみを用いてもよい。再学習により新たなパラメータθ_newが得られたら、再学習部１０５は新たなパラメータについてのフィッシャー情報量を、再学習で用いた学習データxによって計算し、記憶部１０２に保持する。
【００３３】
＜実施例４＞
実施例４では、実施例１又は実施例３において、再学習部１０５が再学習を行う際に、過去に正常と判断されたテストデータを用いて再学習を行うことで、正常なデータの時間的なトレンドに追従した異常検知を実施する。ここでは、異常検知アルゴリズムとして、正常なデータのみを用いて学習を行うオートエンコーダ（非特許文献２）を用いた場合の例を示す。
【００３４】
実施例４におけるモデル学習装置１００の動作手順であるフローチャートを図３に示す。実施例４では、まず、学習データX_train={x_train_1, x_train_2, …, x_train_T}、及び、その学習データによって学習されたモデルが入力部１０１より入力され、記憶部１０２に保存される（Ｓ１）。ここで、モデルはパラメータの集合θで表現することができ、当該集合は、オートエンコーダの各層の重み及びバイアスといったパラメータの集合である。
【００３５】
次にテストフェーズにおいては、入力部１０１より監視対象のテストデータx_test、異常度に対する閾値γが入力される（Ｓ２）。検知部１０３は、記憶部１０２に保存されたモデルパラメータθと、入力されたテストデータx_testを用いて、テストデータの異常度をMSE（非特許文献２）として計算する（Ｓ３）。
【００３６】
検知部１０３は、計算された異常度と閾値γを比較し（Ｓ４）、異常度が閾値以上であった場合には、検知結果を「異常」とし、x_testを異常データとして記憶部１０２に保存する（Ｓ５）。一方で、異常度が閾値未満であった場合には、検知結果を「正常」とし、x_testを正常データとして記憶部１０２に保存する（Ｓ６）。
【００３７】
再学習部１０５は、記憶部１０２に正常データとして保存されたx_testが予め定めた量Tだけ蓄積されたら（Ｓ７のＹｅｓ）、x_test_1, x_test_2,…,x_test_T及び過去の学習データX_trainを用いて、モデルのパラメータθの再学習を行う（Ｓ８）。再学習の方法としては，例えばx_test_1, x_test_2,…,x_test_T及びX_trainの集合を新たな学習データとみなし確率的勾配降下法（Bottou, Leon. "Large-scale machine learning with stochastic gradient descent." Proceedings of COMPSTAT'2010. Physica-Verlag HD, 2010. 177-186.参照）を用いる方法や、最小化すべき関数（ここではMSEとして与えられる異常度）を最小化するような最急降下法などがある。
【００３８】
また、新たな学習データを用いる際に、x_test_1, x_test_2,…,x_test_Tを複製し学習データ内における量を増やすことで、x_test_1, x_test_2,…,x_test_Tが正常であるということを強く学習させるということを行ってもよい。また、実施例３のようにパラメータの重要度も考慮した方法を用いてもよい。再学習によって得られたパラメータθ_newを新たなモデルパラメータとして記憶部１０２に保存する。
【００３９】
＜実施例５＞
実施例５では、実施例１又は実施例３において、正常なデータx_testを異常として誤って判断した過検知が発生した際に、x_testが正常であるということを再学習させる。
【００４０】
実施例５のフローチャートを図４に示す。図４に示す例において、Ｓ１〜Ｓ６の動作は、実施例４（図３）のＳ１〜Ｓ６と同じである。
【００４１】
実施例５では、検知部１０３がx_testを正常あるいは異常として検知した場合に、Ｓ１１において、過去に入力された各データが正常であったか否かを示す正解ラベルが正解ラベル生成部１０４により生成される。正解ラベルの生成方法は特定の方法に限られないが、例えば、以下の方法がある。
【００４２】
例えば、正解ラベルの生成方法として、監視対象から生成されるログを元に、データ取得時が通常動作中の場合「正常」とし、予め定義した特殊な動作を行っていた場合「異常」とする方法がある。その他にも、並行して動作している他の監視システムによる判断結果を入力とする方法や、システムを利用中のユーザからの異常申告を元に生成する方法、システムオペレータの目視による判断を入力する方法などもある。
【００４３】
Ｓ１２において、再学習部１０５は、異常と判断したデータ（x_test）と正解ラベルとを比較し、比較した結果、判断が正しかった場合には再学習を行わないが、判断が誤っていた場合、すなわちx_testは正解ラベルでは「正常」となっていたにも関わらず、異常検知においては異常と判断していた場合は、再学習部１０５は、x_testが正常である旨をモデルに再学習させ、新たなパラメータθ_newを記憶部１０２に保存する（Ｓ１３）。
【００４４】
ここでは、例えば、実施例１と同様にオートエンコーダを用いた異常検知の場合を想定すると、再学習部１０５は、モデルf(x_test, θ)で与えられる異常度が、閾値γ未満になるような再学習を行う。再学習の方法としては、実施例１のように、x_testとX_trainを用いる方法や、実施例３のようにパラメータの重要度も考慮した再学習をf(x_test, θ)が閾値γ以下になるまで繰り返すといった方法がある。
【００４５】
＜実施例６＞
実施例６では、実施例１又は実施例３において、異常なデータx_testを正常として誤って判断した非検知が発生した際に、x_testが異常であるということを再学習させる。実施例６のフローチャートを図５に示す。
【００４６】
図５において、Ｓ１〜Ｓ１１は、実施例５（図４）におけるＳ１〜Ｓ１１と同様である。x_testの検知結果を「正常」として検知した結果が正解ラベル生成部１０４により生成された正解ラベルでは「異常」であった場合（Ｓ２１のＹｅｓ）、再学習部１０５は、モデルf(x_test, θ)で与えられる異常度が、閾値γ以上になるような再学習を行う。再学習の方法としては、実施例５の再学習を、アルゴリズムの学習における評価関数の正負の値を逆転させることで容易に実現できる。例えば、実施例３で示したオートエンコーダをアルゴリズムに用いる場合、再学習は−L(x) =−(1/N) Σ_i=1^N  (x_i - x'_i)^2を最小化する問題を解くことで実施できる。
【００４７】
＜実施例７＞
実施例７では、実施例２又は実施例３において、過去に分類を行ったテストデータについてその結果が正しいとみなせる場合に、分類結果をラベルとみなした過去のテストデータを新たな学習データとしてモデルの再学習を行うことで、データの時間的なトレンドに追従した異常検知を実施する。クラスの分類を行うモデルとしては、例えば、出力層がクラスの数だけノードを持つ多層ニューラルネットワークなどがあるが、これに限られるわけではない。
【００４８】
実施例７のフローチャートを図６に示す。まず、学習データX_train={x_train_1, x_train_2,…,x_train_T}、それぞれが属するクラスのラベルであるラベルデータY_train={y_train_1, y_train_2,…,y_train_T}、及び、その学習データによって学習されたモデルがパラメータθとして入力され、記憶部１０２に保存される（Ｓ３１）。
【００４９】
テストフェーズにおいては、入力部１０１より監視対象のテストデータx_testが入力され（Ｓ３２）、検知部１０３は記憶部１０２に保存されたモデルパラメータθと、入力されたテストデータx_testを用いて、テストデータが属するクラスを推定し、テストデータと共に記憶部１０２に保持する（Ｓ３３）。
【００５０】
検知部１０３は、推定したクラスと、予め与えられた各クラスの「正常」、「異常」に関する情報に基づき、テストデータが正常か異常かの判断を行い（Ｓ３４）、判断結果を記憶部１０２に保存する（Ｓ３５、Ｓ３６）。
【００５１】
再学習部１０５は、記憶部１０２に保持されたx_test及び推定されたクラスy_testの組が予め定めた量Tだけ蓄積されたら（Ｓ３７のＹｅｓ）、x_test_1, x_test_2,…,x_test_Tと、推定されたクラスy_test_1, y_test_2,…,y_test_T、及びX_train, Y_trainを用いて、モデルのパラメータθの再学習を行う（Ｓ３８）。又は、実施例３のようにパラメータの重要度も考慮した方法を用いてもよい。なお、実施例４では正常データのみを用いて学習を行うため、再学習には正常と判断されたデータのみが保持されたが、実施例７ではラベル情報を用いた教師あり学習を行うため、異常と判断されたデータについても記憶部１０２に保持され再学習に用いられる。
【００５２】
＜実施例８＞
実施例８では、実施例２又は実施例３において、検知部１０３が行ったクラス分類が誤っていると判断された場合に、x_testを正しくクラス分類するような新しいパラメータθ_newの再学習を行う。実施例８の基本的な処理の流れは実施例７（図６）と同様であるが、下記に説明するように、正解ラベルと判断結果との比較に基づく再学習実行判断を行う点が実施例７と異なる。
【００５３】
実施例８では、実施例７（図６）のＳ３３と同様に、検知部１０３がx_testについてクラスの分類を推定するが、その後、過去に入力された各データが属するクラスに関する正解ラベルが正解ラベル生成部１０４により生成される。
【００５４】
正解ラベルの生成方法としては、例えば、監視対象から生成されるログを元に、予め定義した、ログと各クラスの対応関係に基づいて、各データの取得時のログからそのデータが属するクラスの分類を行う方法がある。その他にも、並行して動作している他の分類システムによる分類結果を入力とする方法や、システムを利用中のユーザからの申告を元に生成する方法（例えば利用品質を「高」「中」「低」で分類し、ユーザからは品質の分類結果をフィードバックしてもらう）、システムオペレータの目視による判断を入力する方法などもある。
【００５５】
再学習部１０５は、検知部１０３による判断結果と正解ラベルとを比較し、比較した結果、判断が正しかった場合には再学習を行わず、判断が正しくなかった場合、すなわち正解ラベルで与えられたクラスと推定したクラスとが異なっていた場合には、再学習部１０５はx_testの属するクラスが、入力された実際のクラスy*_testであるということをモデルに再学習させる。再学習の方法としては，実施例２のように、x_test，y*_testとX_train，Y_trainを用いる方法や、実施例３のようにパラメータの重要度も考慮した再学習を繰り返すといった方法がある。
【００５６】
＜実施例９＞
実施例９では、実施例１〜８の再学習について、再学習した結果得られたパラメータを採用するか否かについてを、別途用意したバリデーションデータに対する検知精度に基づいて判断する。実施例９は、実施例１〜８のいずれにも適用できるが、一例として、実施例４の再学習で得られたパラメータについて、採否を判定するフローチャートを図７に示す。なお、バリデーションデータは既に記憶部１０２に格納されているものとする。
【００５７】
図７におけるＳ１〜Ｓ８の処理は、実施例４（図３）でのＳ１〜Ｓ８の処理と同じである。
【００５８】
再学習部１０５により新しいパラメータθ_newを得た後に、パラメータ採否判定部１０６は、記憶部１０２に保持されたバリデーションデータX_valid = {x_valid_1， x_valid_2，…，x_valid_M}と、それらのデータのラベルY_valid = {y_valid_1， y_valid_2，…，y_valid_M}を用いて、古いパラメータθを用いたモデルと、新しいパラメータθ_newを用いたモデルのそれぞれの精度を評価する（Ｓ４１）。
【００５９】
ここで、ラベルについては、実施例４〜６では「正常」「異常」の２種で与えられ、実施例７〜８では、分類対象のクラスが与えられる。また、精度については、例えば横軸にFalse Positive Rate、縦軸にTrue Positive Rateを取った場合に引かれる曲線の下側の面積であるArea Under Receiver Operating Characteristc(AUROC)などを使用することができる（池田，石橋，中野，渡辺，川原，"オートエンコーダを用いた異常検知におけるスパース最適化を用いた要因推定手法，"信学会IN研究会信学技報, vol. 117, no. 89, IN2017-18, pp. 61-66, Jun. 2017.参照）。
【００６０】
図７の例では、このAUROCを使用している。AUROCのように精度が良いほど高い値を示すメトリックを用いる場合、古いパラメータを用いたモデルによる精度に比べて、新しいパラメータを用いたモデルによる精度がε以上向上したら（Ｓ４２のＹｅｓ）、新しいパラメータθ_newをそれ以降のモデルのパラメータとして採用する（Ｓ４３）。ここで、εが正の場合には、ある程度以上精度が向上しない場合には新たなパラメータを採用しないことを示しており、εが負の場合には、精度の低下があっても新たなパラメータを積極的に採用することを示している。
【００６１】
＜実施例１０＞
実施例１０では、実施例１〜８において再学習部１０５が再学習を行う場合に用いるテストデータx_testについて、過去の学習データX_trainの部分集合と近すぎるデータや遠すぎるデータを再学習対象から取り除く事で、過学習や不適切な学習を防ぐ。例えば、実施例４で正常と判断されたテストデータを用いた再学習を行う場合、過去の学習データX_train={x_train_1, x_train_2,…,x_train_T}に近いテストデータは、過去の学習データとの違いが小さく、再学習に用いた場合に、過去の学習データにフィットしすぎたモデルとなる過学習を引き起こす可能性がある。
【００６２】
そのため、実施例１０では、パラメータ採否判断部１０６が、X_trainとテストデータの距離d(x_test, X_train)を計算し、距離が閾値以下であるテストデータは再学習に用いないこととする。なお、実施例１０におけるこの判断は、再学習部１０５が行うこととしてもよい。これにより、過学習を防ぐことが期待される。なお、距離関数d(x_test, X_train)については、例えばX_trainの重心x*_trainとx_testのユークリッド距離が考えられるが，単純なユークリッド距離だけではなく、t-SNE（Maaten, Laurens van der, and Geoffrey Hinton. "Visualizing data using t-SNE." Journal of Machine Learning Research 9.Nov (2008): 2579-2605.参照）等を用いて、x_test, x*_trainをそれぞれ低次元空間に写像した上での、写像先の空間上でのユークリッド距離を用いるなどの方法を用いてもよい。
【００６３】
また、データxについて異常検知モデルにより計算される異常度をG(x)とした場合に，G(x_train_i)，i=1,…,Tの分布と、G(x_test)との距離（例えばG(x_test)からG(x_train_i)，i=1,…,Tの平均を引いた値）をd(x_test, X_train)とみなしてもよい。
【００６４】
また、実施例５で異常と過検知された正常なテストデータを用いて再学習する場合、x_testがX_trainから遠すぎると、正常であるとは言え、再学習によりモデルの傾向が変化しすぎてしまい、再学習による精度の低下が懸念される。そのため、X_trainとの距離が閾値以上であるテストデータは再学習に用いないことで、再学習による精度の低下を防ぐことが期待される。また、過検知の再学習については、X_trainからの距離ではなく、過去に過検知されたデータ全体からの距離を指標とすることで、過去に発生した過検知に近いものについては再学習に採用することとしてもよい。
【００６５】
多クラス分類を行うモデルの場合、例えば実施例７で正しくクラス分類されたテストデータを用いた再学習を行う場合は、例えばあるクラスcとして分類されたテストデータx_testを再学習に用いるかどうかについて判断する場合、学習データにおいてラベルがy_train=cとなるような学習データ全体の重心との距離を元に判断を行うことが考えられる。実施例８でも同様に、クラスcとして正しく再学習させたいx_testを再学習させるかどうかについては、y_train=cとなるような学習データ全体との重心の距離が閾値以下である場合にのみ行うといった方法を用いることができる。
【００６６】
＜実施例１１＞
実施例１１では、実施例１〜１０の学習に用いるモデルとして、ニューラルネットワークを用いる。実施例１及びそれのバリエーションとなる実施例において、教師なし学習として異常検知を行うニューラルネットワークとしては、例えば、オートエンコーダ（非特許文献２）がある。実施例２及びそれのバリエーションとなる実施例において、教師あり学習として異常検知を行うニューラルネットワークとしては、例えばManikopoulos, Constantine, and Symeon Papavassiliou. "Network intrusion and fault detection: a statistical anomaly approach." IEEE Communications Magazine 40.10 (2002): 76-82.に記載されたニューラルネットワークがある。
【００６７】
（効果について）
実施例を用いて説明した本発明に係る技術により、入力データの正常／異常の判断についてモデルの学習に基づいて行う異常検知アルゴリズムにおいて、データのトレンドにモデルを追従させたり、誤った判断を繰り返さないようにさせたりするためのモデルの再学習が可能となる。
【００６８】
実際に実施例４及び実施例５を用いて、正常なデータのトレンドを再学習させた結果について、ネットワークの代表的なベンチマークであるNSL-KDD（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.）を用いて評価した結果について以下に説明する。
【００６９】
ベンチマークは正常な通信に関するデータと異常な通信に関するデータからなるが、本評価では、データから正常な通信のみを抽出した67344データについて、送り側の送信量を表す特徴量である「src_bytes」で昇順にソートし、前半10000データを学習データ、後半57344データをテストデータとした。そのため、テストデータにおいては、src_bytesが学習データに比べて上昇するトレンドを持つことになる。学習アルゴリズムとしては、正常なデータだけで学習が可能なオートエンコーダ（非特許文献２）を用いた。まず、再学習を行わなかった場合にオートエンコーダが出力した異常度のグラフを図８に示す。ここで、横軸はテストデータのID、縦軸はオートエンコーダの異常度を示しており、実線は学習したモデルが出力した異常度、点線は閾値を表している。なお、閾値については、学習したモデルに対して学習データを入力した時の異常度の分布の平均＋５×標準偏差によって与えている。
【００７０】
図８に示すように、テストデータのIDが20000手前から、異常度は閾値を超えて上昇し続けている。これは、src_bytesが上昇し続けているためであると考えられる。
【００７１】
次に、実施例４を用いて、正常と判断されたデータを用いて定期的に再学習することにより、データのトレンドに追従させた結果を図９に示す。ここでは、テストデータをID 10000から順番に入力し、異常度が閾値を下回った場合には正常データとして保存し、保存したデータが500だけ溜まったら、保存したデータを過去の学習データに追加し、再学習を行っている。なお、学習データ量が40000を超えた場合、新しい学習データの追加時には古いデータを削除している。また、学習データを更新した際には、その学習データを用いて閾値についても更新を行っている。再学習を行わない場合（図８）ではID 20000以降は全て閾値を上回っており、異常として過検知をしていたが、図９に示すように、再学習を行うことで、src_bytesの上昇トレンドを再学習し、正しく正常と判断できたデータが増えている。
【００７２】
更に、実施例４と実施例５を組み合わせることで、モデルをデータのトレンドに追従させながら、過検知が発生した際に同様の過検知が発生しないような再学習を行った結果を図１０に示す。ここで、実施例５での再学習方法については、実施例３のように過去の学習データを用いて計算したフィッシャー情報量を重みとしたペナルティ項を加える方法を用いており、過検知されたデータのみを用いた再学習を行っている。トレンドの学習を行っても頻繁に過検知が発生していた図９の場合に比べて、図１０では、大幅に過検知を削減できている点が確認できる。発生した過検知の数を比較した結果を図１１に示す。図１１より、トレンドの再学習だけでも大幅に過検知を削減できるが、実施例５の過検知再学習を更に組み合わせることにより、過検知数は元の過検知数の1%未満にまで抑えることができる。
【００７３】
（実施例のまとめ）
以上、説明したように、実施例１においては、数値ベクトルで表される監視データxの異常度をモデルf(x, θ)により計算するような異常検知について、予め正常であると分かっている学習データx_trainを用いてモデルf(x, θ)のパラメータθの学習が予めなされる。モデル学習装置１００は、監視するテストデータx_testについてf(x_test, θ)の出力に基づいて異常の有無を判断するとともに、学習データや、過去に監視したテストデータ及びモデルによる異常有無の判断結果を記憶部１０２に蓄積しておく。再学習部１０５は、各データの異常の有無の判断結果や、別途外部から与えられるそのデータが異常であったか否かを示す正解ラベルに基づいて、モデルf(x, θ)の再学習を行って、新しいパラメータθ_newを得る。
【００７４】
実施例２において、モデル学習装置１００は、数値ベクトルで表される監視データxについて多クラス分類を行った結果に基づき正常か異常の判断を行う異常検知を実施する。実施例２では、予め属するクラスがラベルy_trainとして与えられている学習データx_trainを用いてモデルf(x, θ)のパラメータθの学習が行われる。モデル学習装置１００は、監視するテストデータx_testについてf(x_test, θ)の出力に基づいてx_testが属するクラスを判別し、判別されたクラスに基づき異常の有無を判断するとともに、学習データや、過去に監視したテストデータ及びモデルによる分類結果を記憶部１０２に蓄積しておく。再学習部１０５は、各データの分類結果や、別途外部から与えられるそのデータが属するクラスを示す正解ラベルに基づいて、モデルf(x, θ)の再学習にそれらのデータを用いることで、新しいパラメータθ_newを得る。
【００７５】
実施例３では、実施例１又は実施例２において、モデル学習装置１００は、記憶部１０２に、過去に学習したパラメータの、学習データに対する重要度Fを保存しており、再学習部１０５による再学習の際には、重要度Fが大きいパラメータをなるべく変化させないようにしながら新しいパラメータθ_newを学習する。
【００７６】
実施例４では、実施例１又は実施例３において、モデル学習装置１００は、監視データが時間的なトレンドを持つとした時に、正常と判断されたテストデータがある一定量、記憶部１０２に蓄積されたら、それらのデータや過去の学習データを用いてモデルf(x, θ)を再学習し、新しいパラメータθ_newを学習することで、データが持つ時間的なトレンドに追従させる。
【００７７】
実施例５では、実施例１又は実施例３において、モデル学習装置１００は、正常なデータx_testについて異常と判断するような過検知が発生した場合に、過検知されたデータx_testを入力した時に、モデルが正しく正常と判断するような新しいパラメータθ_newを学習することで、同様の過検知を防ぐ。
【００７８】
実施例６では、実施例１又は実施例３において、モデル学習装置１００は、異常なデータx_testについて正常と判断するような非検知が発生した場合に、非検知されたデータx_testを入力した時に、モデルが正しく異常と判断するような新しいパラメータθ_newを学習することで、同様の非検知を防ぐ。
【００７９】
実施例７では、実施例２又は実施例３において、モデル学習装置１００は、例えば監視データが時間的なトレンドを持つとした時に、正しくクラス分類されたテストデータがある一定量、記憶部１０２に蓄積されたら、再学習部１０５において、そのデータと分類されたクラスや、過去の学習データとラベルを用いてモデルf(x, θ)を再学習し、新しいパラメータθ_newを学習することで、データが持つ時間的なトレンドに追従させる。
【００８０】
実施例８では、実施例２又は実施例３において、モデル学習装置１００は、テストデータx_testについて誤ったクラス分類を行ってしまった場合に、x_testを入力した時に、モデルが正しいクラスへの分類を行うような新しいパラメータθ_newを学習することで、同様の誤分類を防ぐ。
【００８１】
実施例９では、実施例１〜８において、予め正常か異常、又はクラスの分類について正解が分かっているバリデーションデータが存在するとし、当該バリデーションデータが記憶部１０２に保持される。再学習部１０５により新しいパラメータθ_newを得た後に、パラメータ採否判定部１０６は、θ_newを用いたモデルによるバリデーションデータの分類精度が、θを用いたモデルによる分類精度よりも予め定めた閾値ε以上向上しない場合には、パラメータの更新を行わず、θをモデルのパラメータとして使い続けるようにする。
【００８２】
実施例１０では、実施例１〜８において、過去のx_testを用いて再学習を行う際に、パラメータ採否判定部１０６は、予め定めた関数で定義される、x_testと過去の学習データX_train={x_train_1,…, x_train_T}との距離を表す関数d(x_test, X_train)が、予め定めた条件を満たす場合にのみパラメータの更新を行うことで、過去の学習データと傾向が近すぎるデータで再学習を行うことによる過学習や、極端に傾向の異なるデータの再学習による精度の劣化を防ぐこととする。
【００８３】
実施例１１では、実施例１〜１０において、モデル学習装置１００は、再学習部１０５において、ニューラルネットワークを用いた学習を行う。
【００８４】
上述したとおり、本発明の実施の形態により、学習データを用いて学習されたモデルのパラメータと、当該学習データとを格納する記憶部と、前記モデルを用いて、テストデータの異常の有無を判断し、判断結果及び当該テストデータを前記記憶部に格納する検知部と、前記判断結果、前記テストデータ、及び前記学習データを用いて、前記モデルの再学習を行う再学習部とを備えることを特徴とするモデル学習装置が提供される。
【００８５】
前記検知部は、前記モデルを用いて、前記テストデータのクラスを判別し、判別されたクラスに基づき当該テストデータの異常の有無を判断することとしてもよい。
【００８６】
前記再学習部は、前記パラメータの前記学習データに対する重要度を用い、重要度の大きさに応じて、再学習におけるパラメータの変化量を制限することとしてもよい。
【００８７】
前記再学習部は、前記テストデータの異常の有無に関する正解を用いることにより、誤った判断がなされたテストデータに対して正しい判断がなされるように、前記モデルの再学習を行うこととしてもよい。
【００８８】
前記モデル学習装置は、前記再学習部により、前記モデルの新たなパラメータが得られた後に、当該新たなパラメータを用いたバリデーションデータに対する異常検知の精度に基づいて、当該新たなパラメータを、前記検知部で用いる新たなパラメータとして採用するか否かを判定するパラメータ採否判定部を更に備えることとしてもよい。
【００８９】
前記再学習部は、前記テストデータと前記学習データとの距離に基づいて、当該テストデータを前記再学習に使用するか否かを判定することとしてもよい。
【００９０】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００９１】
本特許出願は２０１８年１月９日に出願した日本国特許出願第２０１８−００１４８５号に基づきその優先権を主張するものであり、日本国特許出願第２０１８−００１４８５号の全内容を本願に援用する。
【符号の説明】
【００９２】
１００  モデル学習装置
１０１  入力部
１０２  記憶部
１０３  検知部
１０４  正解ラベル生成部
１０５  再学習部
１０６  パラメータ採否判定部
１５０  ドライブ装置
１５１  記録媒体
１５２  補助記憶装置
１５３  メモリ装置
１５４  ＣＰＵ
１５５  インターフェース装置
１５６  表示装置
１５７  入力装置
【図１】
2019138655.tif 000003
【図２】
2019138655.tif 000004
【図３】
2019138655.tif 000005
【図４】
2019138655.tif 000006
【図５】
2019138655.tif 000007
【図６】
2019138655.tif 000008
【図７】
2019138655.tif 000009
【図８】
2019138655.tif 000010
【図９】
2019138655.tif 000011
【図１０】
2019138655.tif 000012
【図１１】
2019138655.tif 000013
【国際調査報告】
2019138655.tif 000014
2019138655.tif 000015
2019138655.tif 000016
2019138655.tif 000017