特許第6858798号(P6858798)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧
特許6858798特徴量生成装置、特徴量生成方法及びプログラム
<>
  • 特許6858798-特徴量生成装置、特徴量生成方法及びプログラム 図000003
  • 特許6858798-特徴量生成装置、特徴量生成方法及びプログラム 図000004
  • 特許6858798-特徴量生成装置、特徴量生成方法及びプログラム 図000005
  • 特許6858798-特徴量生成装置、特徴量生成方法及びプログラム 図000006
  • 特許6858798-特徴量生成装置、特徴量生成方法及びプログラム 図000007
  • 特許6858798-特徴量生成装置、特徴量生成方法及びプログラム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6858798
(24)【登録日】2021年3月26日
(45)【発行日】2021年4月14日
(54)【発明の名称】特徴量生成装置、特徴量生成方法及びプログラム
(51)【国際特許分類】
   G06F 11/07 20060101AFI20210405BHJP
   G06N 20/00 20190101ALI20210405BHJP
【FI】
   G06F11/07 151
   G06N20/00
【請求項の数】7
【全頁数】16
(21)【出願番号】特願2018-565935(P2018-565935)
(86)(22)【出願日】2017年10月31日
(86)【国際出願番号】JP2017039336
(87)【国際公開番号】WO2018142694
(87)【国際公開日】20180809
【審査請求日】2019年6月26日
(31)【優先権主張番号】特願2017-17921(P2017-17921)
(32)【優先日】2017年2月2日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】池田 泰弘
(72)【発明者】
【氏名】中野 雄介
(72)【発明者】
【氏名】渡辺 敬志郎
(72)【発明者】
【氏名】石橋 圭介
(72)【発明者】
【氏名】川原 亮一
【審査官】 多胡 滋
(56)【参考文献】
【文献】 国際公開第2015/072085(WO,A1)
【文献】 特開2006−285982(JP,A)
【文献】 特開2004−078618(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成部と
テスト期間において、前記生成部によって生成された数値ベクトルごとに、当該数値ベクトルと、学習期間において出力された学習結果とに基づいて異常を検知する検知部と、
を有し、
前記学習結果は、前記学習期間において異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成し、当該数値ベクトルを学習することにより生成されたものであり、
前記生成部は、前記非数値のテキストデータ又は前記非数値のテキストデータの単語にIDを付与し、前記学習期間において付与されたIDの総数に所定数のIDの個数を追加した数を次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記テスト期間における非数値のテキストデータ又は非数値のテキストデータの単語が、前記学習期間においてIDが付与されていない未知のテキストデータ又は未知の単語である場合、当該非数値のテキストデータ又は当該非数値のテキストデータの単語に前記所定数のIDのいずれかを付与して数値ベクトルを生成する、特徴量生成装置。
【請求項2】
前記学習期間において付与されたIDの総数をMとし、前記所定数のIDの個数をKとするとき、
前記生成部は、前記未知のテキストデータ又は前記未知の単語がn番目に出現した場合、前記非数値のテキストデータ又は前記未知の単語を、前記数値ベクトルのM+mod(n,K)番目の次元で表現する、請求項1に記載の特徴量生成装置。
【請求項3】
異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成部と、
テスト期間において、前記生成部によって生成された数値ベクトルごとに、当該数値ベクトルと、学習期間において出力された学習結果とに基づいて異常を検知する検知部と、
を有し、
前記学習結果は、前記学習期間において異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成し、当該数値ベクトルを学習することにより生成されたものであり、
前記生成部は、前記非数値のテキストデータ又は前記非数値のテキストデータの単語にIDを付与し、前記学習期間において付与されたIDの総数を次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記学習期間において付与されなかったIDが前記テスト期間における非数値のテキストデータ又は非数値のテキストデータの単語で出現した場合、当該非数値のテキストデータ又は当該非数値のテキストデータの単語を無視する、特徴量生成装置。
【請求項4】
コンピュータが実行する特徴量生成方法であって、
異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成手順と
テスト期間において、前記生成手順において生成された数値ベクトルごとに、当該数値ベクトルと、学習期間において出力された学習結果とに基づいて異常を検知する検知手順と、
有し、
前記学習結果は、前記学習期間において異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成し、当該数値ベクトルを学習することにより生成されたものであり、
前記生成手順において、前記非数値のテキストデータ又は前記非数値のテキストデータの単語にIDを付与し、前記学習期間において付与されたIDの総数に所定数のIDの個数を追加した数を次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記テスト期間における非数値のテキストデータ又は非数値のテキストデータの単語が、前記学習期間においてIDが付与されていない未知のテキストデータ又は未知の単語である場合、当該非数値のテキストデータ又は当該非数値のテキストデータの単語に前記所定数のIDのいずれかを付与して数値ベクトルを生成する、特徴量生成方法。
【請求項5】
コンピュータが実行する特徴量生成方法であって、
異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成手順と、
テスト期間において、前記生成手順において生成された数値ベクトルごとに、当該数値ベクトルと、学習期間において出力された学習結果とに基づいて異常を検知する検知手順と、
を有し、
前記学習結果は、前記学習期間において異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成し、当該数値ベクトルを学習することにより生成されたものであり、
前記生成手順において、前記非数値のテキストデータ又は前記非数値のテキストデータの単語にIDを付与し、前記学習期間において付与されたIDの総数を次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記学習期間において付与されなかったIDが前記テスト期間における非数値のテキストデータ又は非数値のテキストデータの単語で出現した場合、当該非数値のテキストデータ又は当該非数値のテキストデータの単語を無視する、特徴量生成方法。
【請求項6】
請求項1又は2に記載の各部としてコンピュータを機能させるためのプログラム。
【請求項7】
請求項3に記載の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特徴量生成装置、特徴量生成方法及びプログラムに関する。
【背景技術】
【0002】
コンピュータシステムのリアルタイムな異常検知の方法として、システム上の様々なデータを定期的に観測し、データが正常時と異なる傾向を示した場合に「異常」として検知するアルゴリズムが考えられる。
【0003】
例えば、予め正常時として定義された「学習期間」のデータが教師データとして用いられて学習され、異常検知を行う「テスト期間」においては、観測されたテストデータの傾向と、学習した教師データの傾向との比較が行われる異常検知アルゴリズムが考えられる。
【0004】
異常検知アルゴリズムとしては様々な手法が提案されているが、その多くにおいて入力されるデータは正規化された数値ベクトルで表現されることが望まれる(例えば、非特許文献1、非特許文献2参照)。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】櫻田 麻由,矢入 健久,"オートエンコーダを用いた次元削減による宇宙機の異常検知", 人工知能学会全国大会論文集 28, 1-3, 2014
【非特許文献2】Banerjee, Amit, Philippe Burlina, and Chris Diehl. "A support vector method for anomaly detection in hyperspectral imagery." IEEE Transactions on Geoscience and Remote Sensing 44.8 (2006): 2282.
【非特許文献3】Kimura, Tatsuaki, et al. "Proactive failure detection learning generation patterns of large-scale network logs." Network and Service Management (CNSM), 2015 11th International Conference on. IEEE, 2015.
【非特許文献4】Mikolov, Tomas, et al. "Efficient estimation of word representations in vector space." arXiv preprint arXiv:1301.3781 (2013).
【非特許文献5】Mitchell, Jeff, and Mirella Lapata. "Composition in distributional models of semantics." Cognitive science 34.8 (2010): 1388-1429.
【発明の概要】
【発明が解決しようとする課題】
【0006】
ネットワークにおける観測データに基づいて異常検知を行う場合、観測データには各ホストにおけるログメッセージ(例えば、syslogのメッセージ)のような非数値のテキストデータが含まれることが考えられる。しかし、このような非数値のテキストデータは異常検知を行うのに適しておらず、異常検知のための数値ベクトルへと変換するための工夫が必要である。
【0007】
本発明は、上記の点に鑑みてなされたものであって、非数値のテキストデータが異常の検知対象から収集されるデータに含まれる場合に、非数値のテキストデータから異常検知のための特徴量の生成を行うことを目的とする。
【課題を解決するための手段】
【0008】
そこで上記課題を解決するため、特徴量生成装置は、異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成部と、テスト期間において、前記生成部によって生成された数値ベクトルごとに、当該数値ベクトルと、学習期間において出力された学習結果とに基づいて異常を検知する検知部とを有し、
前記学習結果は、前記学習期間において異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成し、当該数値ベクトルを学習することにより生成されたものであり、
前記生成部は、前記非数値のテキストデータ又は前記非数値のテキストデータの単語にIDを付与し、前記学習期間において付与されたIDの総数に所定数のIDの個数を追加した数を次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記テスト期間における非数値のテキストデータ又は非数値のテキストデータの単語が、前記学習期間においてIDが付与されていない未知のテキストデータ又は未知の単語である場合、当該非数値のテキストデータ又は当該非数値のテキストデータの単語に前記所定数のIDのいずれかを付与して数値ベクトルを生成する
また、特徴量生成装置は、異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成する生成部と、テスト期間において、前記生成部によって生成された数値ベクトルごとに、当該数値ベクトルと、学習期間において出力された学習結果とに基づいて異常を検知する検知部とを有し、
前記学習結果は、前記学習期間において異常の検知対象から複数のタイミングで収集される非数値のテキストデータを数値化し、当該数値化されたデータに応じた特徴量を要素とする数値ベクトルを生成し、当該数値ベクトルを学習することにより生成されたものであり、
前記生成部は、前記非数値のテキストデータ又は前記非数値のテキストデータの単語にIDを付与し、前記学習期間において付与されたIDの総数を次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルを生成し、
前記学習期間において付与されなかったIDが前記テスト期間における非数値のテキストデータ又は非数値のテキストデータの単語で出現した場合、当該非数値のテキストデータ又は当該非数値のテキストデータの単語を無視する。
【発明の効果】
【0009】
非数値のテキストデータが異常の検知対象から収集されるデータに含まれる場合に、非数値のテキストデータから異常検知のための特徴量の生成を行うことができる。
【図面の簡単な説明】
【0010】
図1】第1の実施の形態におけるシステム構成例を示す図である。
図2】第1の実施の形態における異常検知装置10のハードウェア構成例を示す図である。
図3】第1の実施の形態における異常検知装置10の機能構成例を示す図である。
図4】第1の実施の形態における学習処理の処理手順の一例を説明するためのフローチャートである。
図5】第1の実施の形態における検知処理の処理手順の一例を説明するためのフローチャートである。
図6】オートエンコーダを説明するための図である。
【発明を実施するための形態】
【0011】
以下、図面に基づいて本発明の実施の形態を説明する。図1は、第1の実施の形態におけるシステム構成例を示す図である。図1において、ネットワークN1は、異常の検知対象とされるネットワークである。ネットワークN1は、ルータやサーバ装置等の複数のノードが相互に接続されることによって構成され、所定のサービスを提供するために任意のノード間においてパケットの送受信が行われる。
【0012】
ネットワークN1の複数箇所には測定装置20が配置されている。測定装置20は、配置箇所を監視することで得られる観測データを複数のタイミングで採取する。収集される観測データの一例として、syslogのメッセージのような非数値のテキストデータ等が挙げられる。
【0013】
syslogは、測定装置20がログメッセージをネットワーク上で転送するための規格である。syslogで転送されるログメッセージは、「時刻、メッセージ、ホスト」等を含む。時刻は、メッセージが出力された時刻であり、以下の説明では「タイムスタンプ」と呼ばれる。メッセージは測定装置20が出力したメッセージの内容であり、非数値のテキストデータである。ホストは、メッセージを出力した測定装置20を識別するための識別子である。
【0014】
測定装置20によって採取された観測データは、異常検知装置10によって収集される。異常検知装置10は、収集された観測データから、正常時の特徴を学習し、学習結果に基づいて、その後に入力される観測データについて、異常の発生を検知する(異常の有無を判定する)コンピュータである。なお、正常時の特徴の学習が行われる処理を「学習処理」といい、学習処理が行われる期間を「学習期間」という。学習処理において学習された結果に基づいて異常の検知が行われる処理を「テスト処理」といい、テスト処理が行われる期間を「テスト期間」という。
【0015】
図2は、第1の実施の形態における異常検知装置10のハードウェア構成例を示す図である。図2の異常検知装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
【0016】
異常検知装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0017】
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って異常検知装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
【0018】
図3は、第1の実施の形態における異常検知装置10の機能構成例を示す図である。図3において、異常検知装置10は、受信部11、学習処理制御部12、前処理部13、学習部14、検知処理制御部15及び検知部16等を有する。これら各部は、異常検知装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。異常検知装置10は、また、教師データ記憶部121、パラメータ記憶部122、観測データ記憶部123、学習結果記憶部124、学習データ記憶部125及び辞書データ記憶部126等を利用する。これら各記憶部は、例えば、補助記憶装置102、又は異常検知装置10にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【0019】
教師データ記憶部121には、予め正常時に収集されたことが確認されている観測データが教師データとして記憶されている。但し、教師データは、観測データから選別されるのではなく、人為的に作成されてもよい。
【0020】
受信部11は、測定装置20から観測データを受信する。受信された観測データは、観測データ記憶部123に記憶される。
【0021】
学習処理制御部12は、学習処理を制御する。
【0022】
前処理部13は、教師データの集合、観測データの集合、又は学習データ記憶部125に記憶されている学習データの集合について前処理を実行する。前処理とは、データ集合からの単位時間ごとの特徴量の抽出や、抽出された特徴量の正規化等の処理である。特徴量は、数値ベクトルの形式で表現される。非数値のテキストデータは、ID等によって数値ベクトル化され、特徴量が抽出される。数値ベクトル化には、辞書データ記憶部126に予め記憶された、テキストデータを数値化するための辞書が利用されてもよい。なお、学習期間には、教師データ記憶部121に記憶されている教師データ群が前処理の対象とされる。テスト期間において、受信部11によって観測データの受信が開始されると、観測データ群が前処理の対象とされる。更に、検知部16による異常の検知が開始され、正常であると判定され、学習データとして学習データ記憶部125に記憶された観測データが所定数に達すると、当該学習データ群が前処理の対象とされてもよい。
【0023】
前処理部13は、また、教師データ群又は学習データ群について前処理を実行する際に、観測データ又は学習データを正規化するためのパラメータ(以下、「正規化パラメータ」という。)を生成又は更新し、生成又は更新された正規化パラメータをパラメータ記憶部122に記憶する。また、前処理部13は、メッセージに付与したIDをパラメータ記憶部122に記憶する。
【0024】
学習部14は、教師データ又は学習データに基づいて学習を実行する。学習部14による学習結果は、学習結果記憶部124に記憶される。
【0025】
検知処理制御部15は、検知処理を制御する。
【0026】
検知部16は、観測データ記憶部123に記憶されている観測データが前処理部13によって前処理されることで生成される数値ベクトルと、学習結果記憶部124に記憶されている学習結果とに基づいて異常の発生を検知する。具体的には、検知部16は、前処理された数値ベクトルについて、学習結果との違いを異常度として算出し、当該異常度を閾値と比較することで異常の発生を検知する。異常が検知されなかった数値ベクトルの正規化前の値は、学習データとして学習データ記憶部125に記憶されてもよい。
【0027】
以下、異常検知装置10が実行する処理手順について説明する。図4は、第1の実施の形態における学習処理の処理手順の一例を説明するためのフローチャートである。
【0028】
学習処理が開始されると、学習処理制御部12は、教師データ記憶部121から教師データ群を取得し、当該教師データ群を前処理部13へ入力する(S101)。
【0029】
続いて、前処理部13は、入力された教師データ群を、単位時間ごとの集合に分割する(S102)。なお、教師データ記憶部121には、単位時間×Uの期間(学習期間)分の教師データが記憶されていることとする。したがって、教師データ群は、U個の集合に分割される。
【0030】
続いて、前処理部13は、分割された集合ごとに、目的に応じた特徴量を抽出し、抽出された特徴量を各次元の要素とする多次元数値ベクトルを生成する。
【0031】
例えば、単位時間が1分で、前処理部13が、1分間ごとの特徴量を抽出するとする。教師データがsyslogのメッセージであるとすると、教師データは、タイムスタンプの付いたテキストデータの集合ltrain_d={wtrain_{d,w}}(d=1,...,D,w=1,...,W_d,D:教師データの数,W_d:d番目のテキスト)として表され、例えば下記のような「タイムスタンプ」と「テキスト」の属性を持ったフォーマットを取る。
タイムスタンプ テキスト
12:00:00 I have a pen
12:00:03 I have an apple
・・・
前処理部13は、教師データの各テキストltrain_1,ltrain_2,...ltrain_Dに対して、何らかの方法で各テキストに対応したIDを付与することによってテキストデータを数値化する(S103)。IDが付与された教師データは下記のような「タイムスタンプ」「ID」の属性を持ったフォーマットを取る。
タイムスタンプ ID
12:00:00 0
12:00:03 1
・・・
ここで、0は「I have a pen」に、1は「I have an apple」に与えられたIDである。テキストに対してIDを付与する方法としては、テキストの集合を与えることで、テキストに対する事前知識を要すること無く、同内容のテキストに同じIDを割り当てることができる技術等が考えられる(例えば、非特許文献3参照)。
【0032】
先頭の教師データのフロー開始時刻が12:00:00であるとすると、前処理部13は、全教師データのうち、フロー開始時刻tが11:59:00<=t<12:00:00であるような教師データの集合について、各IDiの出現回数xtrain_{τtrain,i}(τtrain:出現回数の計算対象となる単位時間)を計算する。前処理部13は、IDの総数Mを次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルの時系列データを生成する(S104)。例えば、教師データのタイムスタンプが12:59:59までであり、付与されたIDの総数が3であった場合、要素を単純に出現回数とすると、時系列データは下記のようなフォーマットを取る。
時間 ID_0 ID_1 ID_2
12:00 2 1 0
12:01 1 2 3
12:02 0 3 3
・・・
12:59 3 0 1
なお、ここで付与された全ID(ここでは{0,1,2})については、パラメータ記憶部122に記憶される。
【0033】
続いて、前処理部13は、各数値ベクトルにおける各メトリックi(各IDiの出現回数)の最大値xmax_iを算出し、算出したxmax_iをパラメータ記憶部122に記憶する(S105)。すなわち、第1の実施の形態において、各メトリックiの最大値xmax_iが、正規化パラメータである。
【0034】
上記の時系列データの場合、これらの数値ベクトルの各メトリックの最大値xmax_iは、{3,3,3}である(すなわち、xmax_1=3,xmax_2=3,xmax_2=3である)。
【0035】
続いて、前処理部13は、正規化パラメータに基づいて、各数値ベクトルを正規化する(S106)。正規化は、各数値ベクトルのメトリックiの値が最大値xmax_iによって除されることにより行われる。したがって、正規化された数値ベクトルの時系列データは下記のようなフォーマットを取る。
時間 ID_0 ID_1 ID_2
12:00 0.66 0.33 0
12:01 0.33 0.66 1
12:02 0 1 1
・・・
12:59 1 0 0.33
続いて、学習部14は、当該数値ベクトルについて学習器を利用して学習する(S107)。学習結果は、学習結果記憶部124に記憶される。
【0036】
図5は、第1の実施の形態における検知処理の処理手順の一例を説明するためのフローチャートである。図5の処理手順は、図4のステップS107が少なくとも1回実行された後であれば、いつ開始されてもよい。すなわち、図5の処理手順は、図4の処理手順と並行して実行される。
【0037】
ステップS201において、検知処理制御部15は、単位時間の経過を待機する。当該単位時間は、図4の説明における単位時間と同じ時間長である。この待機中に、リアルタイムに収集され、受信部11によって受信された観測データは観測データ記憶部123に記憶される。
【0038】
単位時間が経過すると(S201でYes)、検知処理制御部15は、直近の単位時間分の観測データ群を観測データ記憶部123から取得し、当該観測データ群を前処理部13へ入力する(S202)。
【0039】
続いて、前処理部13は、当該観測データ群から目的に応じた特徴量を抽出し、抽出された特徴量を各次元の要素とする多次元数値ベクトルを生成する。例えば、前処理部13は、観測データの各テキストltest_t={wtest_{t,w}}(t=1,...,T,w=1,...,W_t,T:異常検知対象となる全時間,W_t:時間tにおけるテキスト)に対して、ステップS103と同様にIDを付与することによって数値化する(S203)。また、前処理部13は、ステップS104と同様に各IDの出現回数を計算する(S204)。このとき、パラメータ記憶部122に記憶されている、教師データに付与された全IDを参照し、教師データに付与されなかったIDが観測データで出現した場合、出現回数をカウントせず、観測データを無視する。そのため、ID_0、ID_1、ID_3の3つのIDを用いる例では、3次元の数値ベクトルが生成される。
【0040】
続いて、前処理部13は、生成された数値ベクトルを、パラメータ記憶部122に記憶されている最大値xmax_iに基づいて正規化する(S205)。すなわち、当該数値ベクトルの各メトリックiが、最大値xmax_iによって除算される。
【0041】
続いて、検知部16は、異常判定処理を実行する(S206)。異常判定処理では、正規化された数値ベクトルと、学習結果記憶部124に記憶されている最新の学習結果とに基づいて、ネットワークN1について異常の有無が判定される。
【0042】
異常が無いと判定された場合、検知処理制御部15は、当該数値ベクトルの正規化前の数値ベクトルを、学習データとして学習データ記憶部125に記憶してもよい。異常が有ると判定された場合、当該数値ベクトルの正規化前の数値ベクトルは、学習データ記憶部125に記憶されない。したがって、学習データ記憶部125には、正常時の数値ベクトルのみが記憶される。
【0043】
図4のステップS107において、学習部14は、教師データを用いて学習器を生成する。学習器としては数値ベクトルのメトリック間の相関関係の学習による異常検知を行うオートエンコーダ(非特許文献1)や主成分分析等を用いることができる。主成分分析については、例えば、「Ringberg, Haakon, et al. "Sensitivity of PCA for traffic anomaly detection." ACM SIGMETRICS Performance Evaluation Review 35.1 (2007): 109-120.」に詳しい。本実施の形態では、学習器にオートエンコーダを用いる例について説明する。
【0044】
図6は、オートエンコーダを説明するための図である。オートエンコーダは、ディープラーニングによる異常検知アルゴリズムである。オートエンコーダは、正常時の入力データがメトリック間で相関関係を持ち、低次元に圧縮可能であることを利用する。異常時には入力データの相関関係が崩れるため、圧縮が正しく行われず入力データと出力データとの差が大きくなる。
【0045】
図6の(1)に示されるように、学習部14が生成する学習器(オートエンコーダ)は、出力層(Layer L)が入力層(Layer L)に近くなるように学習を行う。具体的には、学習部14は、数値ベクトルを2つに複製し、一方を入力層へ当てはめ、他方を出力層に当てはめて学習を行い、学習結果を出力する。学習結果は、学習結果記憶部124に記憶される。学習結果は、学習器に対するパラメータ群である。なお、学習器は、データ種別ごとに生成されるため、学習結果もデータ種別ごとに出力され、学習結果記憶部124に記憶される。
【0046】
一方、検知部16も、学習部14と同様に学習器を生成する。当該学習器には、学習部14によって生成される学習器と同様にオートエンコーダ又は主成分分析等のうち、学習部14が生成する学習器に対応する方法を用いることができる。
【0047】
図5のステップS206において、検知部16は、学習結果記憶部124に記憶されている学習結果に基づいて、学習器を生成する。すなわち、検知部16によって生成される学習器は、当該学習結果の出力時において学習部14によって生成された学習器と同じである。検知部16は、学習器に対する入力データと出力データとの距離(メトリック間の相関関係の崩れの程度を示す指標)を異常度として計算する。本実施の形態ではオートエンコーダの入力層と出力層との距離である平均二乗誤差(MSE:Mean Squared Error)が異常度として計算される。MSEの計算式は、以下の通りである。
【0048】
【数1】
本実施の形態では、メッセージの出現回数のMSEが得られる。検知部16は、得られたMSEの平均を、最終的な異常度として計算し、最終的な異常度が予め定められた閾値を超えていた場合に異常であると判定する。そうでない場合、検知部16は、正常とであると判定する。
【0049】
上述したように、第1の実施の形態によれば、非数値のテキストデータから異常検知を行うための特徴量が生成される。したがって、非数値のテキストデータが教師データ及び観測データに含まれる場合であっても、異常検知を行うことができる。
【0050】
次に、第2の実施の形態について説明する。第2の実施の形態では第1の実施の形態と異なる点について説明する。第2の実施の形態において特に言及されない点については、第1の実施の形態と同様でもよい。
【0051】
第2の実施の形態では、図4のステップS104において、IDの総数Mを次元数とするのではなく、IDの総数Mに所定数のIDの個数Kを追加した数M+Kを次元数とする。教師データにおいてはM+1〜M+K番目の要素を全て0とする。例えば、K=1の場合、第1の実施の形態における時系列データの例では、下記のように「ID_*」の次元を加え、その要素は全て0とする。
時間 ID_0 ID_1 ID_2 ID_*
12:00 2 1 0 0
12:01 1 2 3 0
12:02 0 3 3 0
・・・
12:59 3 0 1 0
また、図5のステップS204において、教師データに付与されなかったIDが観測データで出現した場合、「ID_*」の要素で表現を行う。表現方法としては、教師データには付与されなかったIDの出現回数を要素とする方法や、教師データには付与されなかったIDが存在した場合に1とし、そうでない場合に0とする方法が考えられる。後者の例は、教師データに付与されなかったIDの出現回数が1以上である場合に1とし、そうでない場合に0とすると表現されてもよい。また、K>1の場合、複数の未知のIDが出現した場合に、それらをK種類に分類して、M+1〜M+Kの次元でそれぞれ表現する場合が考えられる。例えば、n番目に出現した未知のIDについては,M+mod(n,K)番目の次元で表現するとした場合、1番目に出現した未知のIDについてはM+1番目の次元で表現し、2番目に出現した未知のIDについてはM+2番目の次元で表現し、・・・、K番目に出現した未知のIDについてはM+K番目の次元で表現し、K+1番目に出現した未知のIDについてはM+1番目の次元で表現し、・・・といったように振り分けられる。
【0052】
第2の実施の形態によっても、第1の実施の形態と同様の効果を得ることができる。また、教師データに出現しなかったIDが観測データで出現しても、M+1〜M+Kの次元で表現できるため、未知のログに関しても、異常検知を行うことができる。
【0053】
次に、第3の実施の形態について説明する。第3の実施の形態では第1の実施の形態と異なる点について説明する。第3の実施の形態において特に言及されない点については、第1の実施の形態と同様でもよい。
【0054】
第3の実施の形態では、図4のステップS103において、テキストにIDを付与するのではなく、テキスト内の単語にIDを付与する。ここでは単語とIDの対応関係を表す辞書を用いるが、辞書は予め辞書データ記憶部126に保存しておくか、教師データに基づいて生成する方法が考えられる。教師データに基づいて生成する場合、テキスト内での出現順にIDを付与すると仮定すると、第1の実施の形態における教師データの例では、{0:I, 1:have, 2:a, 3:pen, 4:an, 5:apple,・・・}のように辞書が生成される。前処理部13は、下記のように「タイムスタンプ」「出現ID」の属性を持ったフォーマットを取る教師データを生成する。
タイムスタンプ 出現ID
12:00:00 {0,1,2,3}
12:00:03 {0,1,4,5}
・・・
ここで付与された全ID(ここでは{0,1,2,3,4,5})については、パラメータ記憶部122に記憶される。
【0055】
図4のステップS104において、前処理部13は、上記のような教師データに基づいて、IDの総数Nを次元数として各IDの出現回数に応じた特徴量を要素とする数値ベクトルの時系列データを生成する。数値ベクトル化の方法としては、付与されたIDの総数Nを次元とし、対応するIDが出現した場合に1とし、そうでない場合に0とするような方法が考えられる。すなわち、IDの出現回数が1以上である場合に1とし、そうでない場合に0とする。
【0056】
例えば、上記の例において、付与されたIDの総数が6である場合、下記のように「タイムスタンプ」「数値ベクトル」を要素とするデータが生成される。
タイムスタンプ 数値ベクトル
12:00:00 {1,1,1,1,0,0}
12:00:03 {1,1,0,0,1,1}
・・・
また、出現回数を要素の値とする方法も考えられる。例えば、テキスト内に「pen」が2回出現する場合、その単語の数値ベクトルを2とする。前処理部13は、上記のデータに基づいて、単位時間毎の数値ベクトルの時系列データを生成する。タイムスタンプ毎の数値ベクトルを単位時間あたりの数値ベクトルへと集約する方法としては、例えば重心を取る方法等が考えられる。上記の例で、12:00:00〜12:00:59までに出現したテキストが上記の2件だけである場合、重心を取ることで下記のような時系列データが生成される。
時間 数値ベクトル
12:00 {1,1,0.5,0.5,0.5,0.5}
図5のステップS203においても同様に、観測データのテキスト内の単語にIDを付与する。図5のステップS204において、パラメータ記憶部122に記憶されている、教師データに付与された全IDを参照し、教師データに付与されなかったIDが観測データの単語で出現した場合、出現回数をカウントせず、その単語を無視する。そのため、ID_0〜ID_5の6個のIDを用いる例では、6次元の数値ベクトルが生成される。
【0057】
第3の実施の形態によっても、第1の実施の形態と同様の効果を得ることができる。
【0058】
次に、第4の実施の形態について説明する。第4の実施の形態では第3の実施の形態と異なる点について説明する。第4の実施の形態において特に言及されない点については、第3の実施の形態と同様でもよい。
【0059】
第4の実施の形態では、図4のステップS104において、IDの総数Nを次元数とするのではなく、IDの総数Nに所定数のIDの個数Kを追加した数N+Kを次元数とする。教師データにおいてはN+1〜N+K番目の要素を全て0とする。例えば、K=1の場合、第3の実施の形態における時系列データの例では、下記のようにN+1番目の要素を0とする。
時間 数値ベクトル
12:00 {1,1,0.5,0.5,0.5,0.5,0}
また、図5のステップS204において、教師データに付与されなかったIDが観測データの単語で出現した場合、N+1〜N+K番目の要素で表現を行う。表現方法としては、教師データには付与されなかったIDの出現回数を要素とする方法や、教師データには付与されなかったIDが存在した場合に1とし、そうでない場合に0とする方法が考えられる。後者の例は、教師データに付与されなかったIDの出現回数が1以上である場合に1とし、そうでない場合に0とすると表現されてもよい。また、K>1の場合、複数の未知のIDが出現した場合に、それらをK種類に分類して、M+1〜M+Kの次元でそれぞれ表現する場合が考えられる。例えば、n番目に出現した未知のIDについては,M+mod(n,K)番目の次元で表現するとした場合、1番目に出現した未知のIDについてはM+1番目の次元で表現し、2番目に出現した未知のIDについてはM+2番目の次元で表現し、・・・、K番目に出現した未知のIDについてはM+K番目の次元で表現し、K+1番目に出現した未知のIDについてはM+1番目の次元で表現し、・・・といったように振り分けられる。
【0060】
第4の実施の形態によっても、第3の実施の形態と同様の効果を得ることができる。また、教師データに出現しなかったIDが観測データで出現しても、N+1〜N+Kの次元で表現できるため、未知の単語が出現するログに関しても、異常検知を行うことができる。
【0061】
次に、第5の実施の形態について説明する。第5の実施の形態では第3の実施の形態と異なる点について説明する。第5の実施の形態において特に言及されない点については、第3の実施の形態と同様でもよい。
【0062】
第5の実施の形態では、図4のステップS103において、テキスト内の単語にIDを付与するのではなく、単語の数値ベクトル表現に基づいてテキストを数値ベクトル化する。単語への数値ベクトルの付与の方法としては、word2vecを用いた方法等が考えられる(非特許文献4参照)。例えば、{cat{0.3,0.2,0.5},dog{0.1,0.4,0.2},・・・}等の単語に対して次元Nのベクトルを付与した辞書を用いるが、辞書は予め辞書データ記憶部126に保存しておくか、教師データに基づいて生成する方法が考えられる。前処理部13は、予め用意された複数の単語の数値ベクトル表現に基づいてテキストの数値ベクトル化する。その結果、「タイムスタンプ」「数値ベクトル」を要素とするデータが生成される。
【0063】
図4のステップS104において、前処理部13は、各単語に対応するベクトルを合成して数値ベクトルの時系列データを生成する。各単語に対応するベクトルの合成の方法としては、単純にベクトルの和をとる方法、重み付けの和を取る方法、要素の積を取る方法等、様々な手法が考えられる(非特許文献5参照)。
【0064】
図5のステップS203においても同様に、観測データのテキストを数値ベクトル化する。図5のステップS204において、辞書に存在しない単語が観測データで出現した場合、その単語を無視する。
【0065】
第5の実施の形態によっても、第3の実施の形態と同様の効果を得ることができる。
【0066】
なお、上記各実施の形態は、ネットワーク以外から収集されるデータに関して適用されてもよい。例えば、コンピュータシステムから収集されるデータに関して上記各実施の形態が適用されてもよい。
【0067】
なお、上記各実施の形態において、異常検知装置10は、特徴量生成装置の一例である。前処理部13は、生成部の一例である。
【0068】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0069】
本国際出願は2017年2月2日に出願した日本国特許出願2017−017921号に基づく優先権を主張するものであり、2017−017921号の全内容を本国際出願に援用する。
【符号の説明】
【0070】
10 異常検知装置
11 受信部
12 学習処理制御部
13 前処理部
14 学習部
15 検知処理制御部
16 検知部
20 測定装置
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
121 教師データ記憶部
122 パラメータ記憶部
123 観測データ記憶部
124 学習結果記憶部
125 学習データ記憶部
B バス
N1 ネットワーク
図1
図2
図3
図4
図5
図6