【文献】
GHAZIKHANI, Adel, et al.,Class imbalance handling using wrapper-based random oversampling.,20th Iranian Conference on Electrical Engineering (ICEE2012).,2012年
【文献】
HAN, Hui, et al.,Borderline-SMOTE: a new over-sampling method in imbalanced data sets learning.,International conference on intelligent computing,2005年
【文献】
LIU, Fei Tony, et al.,Isolation-based anomaly detection.,ACM Transactions on Knowledge Discovery from Data (TKDD),2012年,Volume 6, Issue 1, No 3
(58)【調査した分野】(Int.Cl.,DB名)
前記プロセッサは、前記第一ノイズ付加ステップにおいて、前記第一領域内にある前記第三領域のそれぞれに含まれる前記データ要素の個数の中央値より小さい個数のいずれかを前記第一閾値Tの値として決定する
請求項1から5のいずれか1項に記載の情報処理装置。
【発明を実施するための形態】
【0018】
(本開示の基礎になった知見等)
車載ネットワークのセキュリティ対策として提案されている手法は、大きくに二つに分けられる。
【0019】
ひとつはメッセージの暗号化又は送信元の認証を利用するものである。ただし、この技術には、理論上は有効であるがECUの実装の変更が必要なものもあり、また、自動車1台当たりに搭載されるECUは数百を超える場合があることから、早期の普及は難しい。
【0020】
もうひとつは、車載ネットワークを流れるCANメッセージを監視するものである。この手法は、監視用のECU(ノード)を各自動車に追加することで実現可能であり、導入は比較的容易である。提案されているこのような手法をさらに分類すると、ルールベースの手法、データの送信周期を利用する手法、LOF(Local Outlier Factor)を用いてメッセージの内容の外れ値を検知する手法の三種類に大きく分けることができる。
【0021】
これらの三種類の手法のうち、ルールベースの手法及びデータの送信周期を利用する手法では既知の攻撃パターンに対応することができるが、未知の攻撃パターンを検知するには、LOFを利用する手法のようにメッセージの内容に基づく検知が必要である。
【0022】
ただし、LOFを利用する手法では、CANメッセージの評価のために大量の正常データを保持しておく必要があり、要求される計算量が大きい。しかしながら、車載ネットワークに接続されるECUは、データの処理能力及び記憶領域の容量がふんだんであるとは限らず、そのような実行環境でも時速数十km以上で道路を走る自動車で要求される速さで検知が可能な手法でなければ実用的ではない。
【0023】
そこで本発明者らは、LOFよりも要求される保持データが少なく、計算量の小さいIsolation Forest又はiForest(非特許文献1参照)と呼ばれる異常検知アルゴリズムを車載ネットワークの異常検知の手法に利用することに想到した。また、さらに本発明者らは、Isolation Forestを利用する上で、限られた計算機資源で実行される場合であっても、必要な速さで、かつ極力高い精度での異常検知の実行を可能にする技術を提案する。
【0024】
本発明の一態様に係る情報処理装置は、プロセッサを備える情報処理装置であって、このプロセッサは、Isolation Forestの訓練データとして用いられるN個(Nは2以上の整数)のM次元のベクトル(Mは2以上の整数)であるデータ要素の入力を受けるデータ要素取得ステップと、訓練データをM次元の第一領域に渡って分布させるよう正規化する正規化ステップと、第一領域より大きく第一領域を包含するM次元の第二領域を、大きさの等しいL
M個(Lは4以上の整数)のM次元の超立方体である第三領域に分割する分割ステップと、第三領域のそれぞれが含むデータ要素の個数S(Sは0以上の整数)を取得し、第三領域のうち、第一閾値T(Tは自然数)より少ない個数のデータ要素を含む第三領域のそれぞれに、(T−S)個のM次元のベクトルであるノイズ要素を一様分布で付加する第一ノイズ付加ステップと、データ要素及びノイズ要素を含むノイズ付加訓練データを生成する生成ステップと、ノイズ付加訓練データを用いてIsolation Forestの学習辞書データを生成して出力する学習辞書データ出力ステップとを実行する。
【0025】
これにより、より低い誤検知率でのIsolation Forestの実行を可能にする学習辞書を得ることができる。
【0026】
また例えば、プロセッサは、Nが所定の第二閾値以上であるか否かを判定する第一判定ステップを実行し、第一判定ステップにおいてNが第二閾値以上ではないと判定した場合、分割ステップ及び第一ノイズ付加ステップを実行してから生成ステップ及び学習辞書データ出力ステップを実行してもよい。
【0027】
これにより、例えば訓練データのデータ要素の個数が、プロセッサの負荷状況に対して過大である場合は、この訓練データを用いた学習辞書データの生成を延期することができる。
【0028】
また例えば、プロセッサは、第一判定ステップにおいてNが第二閾値以上であると判定した場合、K個(KはNより小さい自然数)のM次元のベクトルであるノイズ要素を第二領域内に一様な密度で付加する第二ノイズ付加ステップを実行してから生成ステップ及び学習辞書データ出力ステップを実行してもよい。
【0029】
これにより、訓練データの大きさで変わる処理負荷に応じてノイズの付加方法を切り替えることができ、学習辞書を実行環境に適した速さで生成することができる。
【0030】
また例えば、プロセッサはさらに、第一判定ステップにおいてNが第二閾値以上でないと判定した場合、Isolation Forestのテスト用データの入力を受けるテスト用データ取得ステップと、Nが所定の第三閾値以上であるか否かを判定する第二判定ステップとを実行し、第二判定ステップにおいてNが第三閾値以上でないと判定した場合、分割ステップ、第一ノイズ付加ステップ、生成ステップ、及び学習辞書データ出力ステップのセットを、分割ステップで値の異なるLを用いて複数回実行して複数の学習辞書データを出力し、さらに、複数の学習辞書データのそれぞれを用いてテスト用データに対する異常検知を実行し、異常検知の結果に基づいて複数の学習辞書データのそれぞれを評価する評価ステップと、評価ステップの結果に基づいて複数の学習辞書データから最良の学習辞書データを選択する学習辞書データ選択ステップとを実行し、第二判定ステップにおいてNが第三閾値以上であると判定した場合、分割ステップで所定の値であるLを用いてセットを1回実行してもよい。
【0031】
これにより、訓練データの大きさで変わる処理負荷に応じて、複数の学習辞書データを生成して最適なものを出力するか、ひとつの学習辞書データを生成して出力するかを切り替えることができる。したがって、学習辞書を実行環境に適した速さで生成することができる。
【0032】
また例えば、プロセッサは、第二判定ステップにおいてNが第三閾値以上でないと判定した場合、Nの値と負の相関を有するようLの異なる値の個数を決定してもよい。
【0033】
これにより、訓練データが大きければ、第三領域への分割数を減らすことで処理負荷が減る。したがって、学習辞書を実行環境に適した速さで生成することができる。
【0034】
また例えば、プロセッサは、第一ノイズ付加ステップにおいて、第一領域内にある第三領域のそれぞれに含まれるデータ要素の個数の中央値より小さい個数のいずれかを第一閾値Tの値として決定してもよい。
【0035】
これにより、訓練データが大きければ、ノイズ要素が付加される第三領域の個数を減らすことで処理負荷の増大を抑えることができる。したがって、学習辞書を実行環境に適した速さで生成することができる。
【0036】
また例えば、プロセッサは、第一判定ステップにおいてNが第二閾値以上であると判定した場合、Isolation Forestのテスト用データの入力を受けるテスト用データ取得ステップと、Nが所定の第四閾値以上であるか否かを判定する第三判定ステップとを実行し、第三判定ステップにおいてNが第四閾値以上でないと判定した場合、第二ノイズ付加ステップ、生成ステップ、及び学習辞書データ出力ステップのセットを、第二ノイズ付加ステップで値の異なるKを用いて複数回実行して複数の学習辞書データを出力し、さらに、複数の学習辞書データのそれぞれを用いてテスト用データに対する異常検知を実行して複数の学習辞書データのそれぞれを評価する評価ステップと、評価ステップの結果に基づいて複数の学習辞書データから最良の学習辞書データを選択する学習辞書データ選択ステップとを実行し、第三判定ステップにおいてNが第四閾値以上であると判定した場合、第二ノイズ付加ステップで所定の値であるKを用いてセットを1回実行してもよい。
【0037】
これにより、訓練データの大きさで変わる処理負荷に応じて、複数の学習辞書データを生成して最適なものを出力するか、ひとつの学習辞書データを生成して出力するかを切り替えることができる。したがって、学習辞書を実行環境に適した速さで生成することができる。
【0038】
また例えば、プロセッサは、第三判定ステップにおいてNが第四閾値以上でないと判定した場合、Nの値と負の相関を有するようKの異なる値の個数を決定してもよい。
【0039】
これにより、生成する学習辞書の個数を減らすことで処理負荷の増大を抑えることができる。したがって、学習辞書を実行環境に適した速さで生成することができる。
。
【0040】
また例えば、第一領域をM次元の空間における[0,1]
Mの超立方体で画定される領域とすると、第二領域は、このM次元の空間において[−0.5,1.5]
Mの超立方体で画定される領域であってもよい。
【0041】
これにより、学習辞書の生成に利用可能な訓練データに外れ値が少ない場合であっても、より低い誤検知率での異常検知を可能にする学習辞書を得ることができる。
【0042】
また、本発明の一態様に係る異常検知システムは、上記に記載の情報処理装置のいずれかと、情報処理装置から出力された学習辞書データを記憶するメモリ及びプロセッサを備え、ネットワークに接続される異常判定装置であって、プロセッサは、ネットワークを流れるデータを取得し、取得されたデータの異常判定をメモリに記憶されている学習辞書データに基づいて実行する異常判定装置とを備える。
【0043】
これにより、精度を考慮した上で迅速に更新される学習辞書を利用して異常検知が実行される。
【0044】
また、本発明の一態様に係る情報処理方法は、プロセッサを備える情報処理装置を用いて実行される情報処理方法であって、このプロセッサに、Isolation Forestの訓練データとして用いられるN個(Nは2以上の整数)のM次元のベクトル(Mは2以上の整数)であるデータ要素の入力を受けさせるデータ要素取得ステップと、訓練データをM次元の第一領域に渡って分布させるよう正規化させる正規化ステップと、第一領域より大きく第一領域を包含するM次元の第二領域を、大きさの等しいL
M個(Lは4以上の整数)のM次元の第三領域に分割させる分割ステップと、第三領域のそれぞれが含むデータ要素の個数S(Sは0以上の整数)を取得させ、第三領域のうち、第一閾値T(Tは自然数)より少ない個数のデータ要素を含む第三領域のそれぞれに、(T−S)個のM次元のベクトルであるノイズ要素を一様分布で付加させる第一ノイズ付加ステップと、データ要素及びノイズ要素を含むノイズ付加訓練データを生成させる生成ステップと、ノイズ付加訓練データを用いてIsolation Forestの学習辞書データを生成して出力させる学習辞書データ出力ステップとを含む。
【0045】
また、本発明の一態様に係るプログラムは、コンピュータが備えるプロセッサに、上記の情報処理方法を実行させるプログラムである。
【0046】
このような方法又はプログラムによっても、より低い誤検知率でのIsolation Forestの実行を可能にする学習辞書を得ることができる。
【0047】
なお、これらの全般的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム、又はコンピュータで読み取り可能なCD−ROM等の記録媒体のいずれで実現されてもよく、システム、方法、集積回路、コンピュータプログラム又は記録媒体の任意な組み合わせで実現されてもよい。
【0048】
以下、実施の形態に係る情報処理装置、情報処理方法等について、図面を参照しながら説明する。ここで示す実施の形態は、いずれも本発明の一具体例を示すものである。したがって、以下の実施の形態で示される数値、構成要素、構成要素の配置及び接続形態、並びに、ステップ(工程)及びステップの順序等は、一例であって本発明を限定するものではない。
【0049】
また、以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意に付加可能な構成要素である。各図は模式図であり、必ずしも厳密に図示されたものではない。
【0050】
また、以下に含まれるCAN及びIsolation Forestに関する説明は、本発明の理解の一助を主な趣旨とするものであり、この説明のうち請求項に含まれない事項については、本発明を限定する趣旨で記載されるものではない。
【0051】
(実施の形態1)
[構成]
[概要]
図1Aから
図1Cは、実施の形態1における情報処理装置を含む異常検知システムの一構成例をそれぞれ示すブロック図である。
【0052】
図1Aから
図1Cには、構成の異なる異常検知システム100A、100B、及び100Cがそれぞれ示される。
【0053】
異常検知システム100A〜100Cは、監視対象であるネットワークを流れるデータの異常を、Isolation Forestと呼ばれるアルゴリズムを用いて検知するシステムであり、いずれも異常判定部110及び学習部120を備える。
【0054】
異常判定部110は、車両20が備える車載ネットワーク210を流れるデータが正常か異常かを判定する。車両20は例えば自動車である。
【0055】
車載ネットワーク210は、例えばCANの規格に対応するネットワークであり、
図1Aから
図1Cの各構成例では、バスと、このバスに接続される複数のECU及び診断用ポートとを含む。複数のECUには、各種のセンサから測定データを収集して分析するECU、エンジンを制御するECU、ブレーキを制御するECU、ネットワークを監視するECU等の、機能の異なるECUが含まれる。車載ネットワーク210を流れるデータとは、バスを流れるメッセージのデータである。
【0056】
学習部120は、異常判定部110が上記の判定を行うための事前の学習を行う。より具体的には、学習部120は、訓練データを用いて学習し異常判定部110が上記の判定に用いる学習辞書を生成する。生成された学習辞書のデータ(以下、学習辞書データともいう)は、例えば記憶装置(図示なし)に格納される。
【0057】
異常判定部110は、記憶装置から学習辞書を読み込み、正常か異常かの判定の対象である未知のデータ、つまり車載ネットワーク210から取得したメッセージのデータがこの学習辞書に照らして逸脱しているか否かに基づいて異常であるか否かを判定する。より詳細には、学習部120が生成する学習辞書は複数の二分木からなり、異常判定部110は、これらの複数の二分木から算出したスコアの平均値を用いてデータが異常であるか否かを判定する。なお、Isolation Forestで用いられるこの二分木は、Isolation Tree又はiTreeと呼ばれる。
【0058】
異常判定部110及び学習部120は、所定のプログラムを読み込んで実行するプロセッサによって提供される機能的な構成要素である。そして
図1Aから
図1Cの各構成例では、これらのプロセッサの機能的な構成要素を提供するプロセッサの場所が異なる。
【0059】
図1Aに示される構成例では、学習部120が、車両20の外部にある、いわゆるサーバコンピュータである外部サーバ10が備えるプロセッサ及びメモリによって提供される。外部サーバ10は、本実施の形態における情報処理装置の例のひとつである。
【0060】
この場合、学習部120は例えば車載ネットワーク210を流れるメッセージを訓練データとして通信網を経由して車両20から取得する。また学習部120は、この訓練データを用いて生成したIsolation Forestの学習辞書データを出力し、通信網を経由して車両20の異常判定部110に提供する。
【0061】
また、車両20では、学習辞書データは例えば車載ネットワーク210に接続されるネットワーク監視用の監視ECUが備えるマイクロコントローラのフラッシュメモリ等の記憶装置に格納され、このマイクロコントローラのプロセッサによって異常判定部110が提供される。異常判定部110は、バスから取得したメッセージに対して、この記憶装置から学習辞書データを取得した学習辞書データを用いてメッセージの異常判定を実行する。
【0062】
なお、このような構成では、車両20の出荷後に更新された学習辞書データを異常判定部110に提供することができる。
【0063】
図1Bに示される構成例では、異常判定部110及び学習部120の両方が、車両20の外部にある外部サーバ10が備えるプロセッサ及びメモリによって提供される。このような外部サーバ10も、本実施の形態における情報処理装置の例のひとつである。
【0064】
この場合も、学習部120は例えば車載ネットワーク210を流れるメッセージを訓練データとして通信網を経由して車両20から取得する。また学習部120は、この訓練データを用いて生成したIsolation Forestの学習辞書データを出力するが、出力先は外部サーバ10の外ではなく、例えば外部サーバ10が備えるハードディスクドライブ等の記憶装置(図示なし)に格納される。
【0065】
この構成では、異常判定は車両20上ではなく、外部サーバ10で行われる。つまり、車載ネットワーク210を流れるメッセージは、通信網を介して外部サーバ10に送信される。外部サーバ10が受信したこのメッセージは、異常判定部110に入力される。異常判定部110は、記憶装置から学習辞書データを取得し、この学習辞書データを用いてメッセージの異常判定を実行し、その結果を通信網を介して車両20に送信する。
【0066】
なお、このような構成では、外部サーバ10において異常判定部110が利用する学習辞書データは随時更新される。
【0067】
図1Cに示される構成例では、異常判定部110及び学習部120の両方が、車両20の車載ネットワーク210に接続されて車載ネットワーク210を監視するECUである監視ECUが備えるマイクロコントローラによって提供される。監視ECU10は、本実施の形態における情報処理装置の例のひとつである。
【0068】
この場合、学習部120は例えば車載ネットワーク210を流れるメッセージを訓練データとして直接取得して利用する。また学習部120は、この訓練データを用いて生成したIsolation Forestの学習辞書データを出力するが、出力先は車両20の外ではなく、車両20上にある記憶装置、例えば監視ECU内のフラッシュメモリ等の記憶装置に格納される。
【0069】
この構成では、学習辞書の生成も異常判定も車両20上で行われる。例えば、監視ECUにおいて、学習部120はこの監視ECUが接続されている車載ネットワーク210を流れるメッセージのデータを取得し、訓練データとして用いて学習辞書を生成する。生成した学習辞書のデータは、監視ECUの記憶装置に格納される。また、監視ECUにおいては、さらに異常判定部110が記憶装置から学習辞書データを取得し、この学習辞書データを用いてメッセージの異常判定を実行する。
【0070】
なお、このような構成でも、車両20上の異常判定部110が利用する学習辞書データの更新は可能である。
【0071】
また、
図1Aから
図1Cに示される各構成は出荷後の車両20で固定的な構成ではなく、車両20上で動的に変更可能な構成であってもよい。例えば車両20と外部サーバ10との間の通信速度、監視ECUの計算機資源の使用率、車両20が電気自動車である場合の残電力量、又は運転者の操作に応じて、これらの構成間での切替が可能であってもよい。
【0072】
[異常判定部及び学習部の構成]
構成の概要で記載した異常検知システム100A、100B、及び100Cそれぞれの構成要素である異常判定部110及び学習部120の構成について説明する。なお、以下では、異常検知システム100A、100B、及び100Cの一部のいずれかを特定せずに、又は全部を集合的に指して異常検知システム100とも呼ぶ。
【0073】
図2は、異常検知システム100を構成する異常判定部110及び学習部120の構成例を示すブロック図である。
【0074】
図2に示されるように、学習部120は、訓練データ受信部122及び学習辞書生成部124を有する。
【0075】
訓練データ受信部122は、訓練データの入力を受ける。ここでいう訓練データとは、2個以上のM次元のベクトルであり、Mは2以上の整数である。各次元の値は、例えば最大8バイトであるCANメッセージのペイロードの先頭からの各バイトの値である。
【0076】
学習部120は、訓練データ受信部122が入力を受けた訓練データを用いて学習辞書データを生成し、この学習辞書データを後述の異常判定部110の蓄積部112に向けて出力する。
【0077】
図3は、M=2の場合における訓練データのデータ要素、及びこの訓練データを用いて生成された学習辞書を説明するための模式図である。
図3では、データ要素は、M次元空間内に分布する点群であって各点は白抜きの丸で示され、学習辞書は、M次元空間における境界であって太い実線で示される。この境界のことを以下では判定境界ともいう。なお、M=2の場合、判定境界は境界線である。
【0078】
さらに
図2に示されるように、異常判定部110は、蓄積部112、判定対象データ受信部114、判定対象データ変換部116、及び判定実行部118を備える。
【0079】
蓄積部112は、上述のとおり学習部120から出力された学習辞書データを保存する。また、後述する判定対象データの変換に用いられるデータも蓄積部112に保存される。
【0080】
判定対象データ受信部114は、異常判定の対象であるデータ、つまりCANメッセージを車載ネットワーク210から取得する。
【0081】
判定対象データ変換部116は、判定対象データ受信部114が受信したCANメッセージを、判定実行部118で処理するための形式に変換する。この変換では、例えばCANメッセージからの判定対象の部分の抽出、上記の判定対象データの変換用のデータを用いた正規化等が行われる。正規化については後述する。
【0082】
判定実行部118は、蓄積部112に学習辞書データとして保存されている学習辞書に基づいて、判定対象データが正常であるか異常であるかの判定、つまり異常判定を実行する。
【0083】
図4は、この異常判定を説明するための模式図である。
図4では、判定対象データAと判定対象データBの2件のデータがその値に基づいてM次元空間内に示されている。
【0084】
判定実行部118は、各データが学習辞書の判定境界の内側に位置するか外側に位置するかに基づいて正常か異常かを判定し、その結果を出力する。この例では、判定境界の内側に位置する判定対象データAは正常であると判定され、判定境界の外側に位置する判定対象データBは異常であると判定される。異常であるとの判定がなされた場合、異常判定部110及び学習部を含む監視ECUでは、例えばこの判定結果を入力として受ける他のプログラムが実行されてエラーメッセージをバスに出力したり、他のECUの機能の一部又は全部を制限又は他のECUを異常時対応の特別な動作モードに移行させるための命令を送信したりする。また、車両20の運転者に向けた異常発生の通知が、計器盤での表示又は音声によって発せられてもよい。その他、異常発生に関する情報がログに記録されてもよい。このログは、例えば車両20の整備士等が車載ネットワーク210に含まれる診断用ポートを通じて取得し利用する。
【0085】
異常判定部110及び学習部120の各構成要素はIsolation Forestのアルゴリズムの一部を実行し、上記のように連携してIsolation Forestのアルゴリズムの全体を実行する。
【0086】
[異常検知システムにおける処理の概要]
上記の構成要素を備える異常判定部110及び学習部120でのデータの流れを
図5及び
図6に表す。
図5は、学習辞書を生成する学習部120でのデータの流れを示す図である。
図6は、異常判定を行う異常判定部110でのデータの流れを示す図である。なお、これらの図はデータの流れを示すシーケンス図を基本として、各部における処理順序を示すフロー図も兼ねた体裁で表されている。
【0087】
図5に示されるように、学習辞書を生成する学習部120では、まず訓練データ受信部122が入力を受けて訓練データが取得される(ステップS51)。訓練データの入力元は、学習辞書の生成の実行が車両20の出荷前であれば、例えばこの段階で人為的に指定又はあらかじめ設定された記憶装置内の場所である。また、学習辞書の生成の実行が車両20の出荷後であれば、例えば学習部120を含む監視ECUが接続されている車載ネットワーク210である。
【0088】
次に学習部120では、入力された訓練データを、学習辞書生成部124が正規化し(ステップS52)、正規化済みの訓練データを用いてIsolation Forestの手法で学習辞書を生成する(ステップS53)。なお、正規化とは、入力された訓練データのM次元空間での元の分布範囲を、各訓練データの相対的な位置関係を保持してその分布範囲が同空間内の所定の領域内に渡るよう変換する計算処理である。
【0089】
生成された学習辞書のデータは異常判定部110に渡され(ステップS54)、異常判定部110ではこの学習辞書データが蓄積部112に保存される(ステップS55)。また、学習辞書データと合わせて、上記の正規化の計算処理に用いられたデータも学習部120から異常判定部110に渡される。このデータには、変換に必要な特徴ベクトルの各成分の最大値及び最小値等が含まれる。異常判定部110では、このデータを用いて判定対象である未知データの正規化が実行される。
【0090】
また、
図6に示されるように、異常判定を行う異常判定部110では、まず判定対象データ受信部114が、車載ネットワーク210から異常判定の対象であるCANメッセージのデータが取得される(ステップS61)。
【0091】
次に異常判定部110では、判定実行部118が、蓄積部112に保存された学習辞書データを読み込む(ステップS62)。また、判定対象データ変換部116は、訓練データの正規化に用いられた係数等のデータを蓄積部112から読み込み、このデータを用いて判定対象データ、つまり取得されたCANメッセージのデータを正規化する(ステップS63)。判定実行部118は、学習辞書データに基づいて、この正規化されたデータが正常か異常か判定する(ステップS64)。
【0092】
以上が異常検知システム100において実行される、訓練データを用いての学習辞書の生成から、この学習辞書を用いての異常判定までの工程を含む異常検知の処理の概要である。この異常検知にIsolation Forestの手法を採用することで計算機資源への負荷が従来と比べて軽減され、より高速に処理を実行することができる。
【0093】
しかしながら、Isolation Forestのアルゴリズムにおいて、学習の結果として得られた学習辞書の判定境界が正常な訓練データのM次元空間の分布に適切にフィットしない場合がある。
図7は、このような不適切な判定境界の例である。このように、判定境界が正常なデータ要素の分布の外縁よりも内側にある場合、異常判定では実際は正常であるのに異常であると判定される誤判定がなされる。
図7の例では、黒く塗りつぶされた丸で示されるデータ要素は異常データと判定されるデータ要素であり、この中には、実際には正常であるデータ要素が多く含まれる。以下では、このように正常であるデータを異常であるとする誤判定による誤検知のことを、過検知ともいう。
【0094】
誤判定の原因となるこのような学習辞書は、例えば訓練データに含まれる異常データの量が不十分である場合に起こりえる。以下では、このような場合にも適切な学習辞書を得るために異常検知システム100で行われる処理について説明する。
【0095】
[適切な学習辞書を得るための処理]
以下では、本実施の形態における適切な学習辞書を得るための処理方法の例を2つ説明する。
【0096】
[第一処理方法]
図8は、上記で述べた適切な学習辞書を得るための訓練データの処理方法の一例である第一処理方法を示すフロー図である。
【0097】
第一処理方法は、2個以上のM次元のベクトルからなるIsolation Forestの訓練データの入力を受けた後の学習部120において、学習辞書生成部124によって実行される。ただし以下では、学習辞書生成部124による処理であっても学習部120の処理として説明することがある。
図9Aは、M=2の場合における、M次元空間、つまり2次元平面に分布する入力された訓練データの初期状態の例である。
【0098】
まず学習部120は、本処理に用いるパラメータを読み込む(ステップS80)。パラメータの詳細については以降のステップで説明する。
【0099】
次に学習部120は、入力された訓練データのデータ要素の個数を取得する(ステップS81)。
【0100】
次に学習部120は、訓練データに付加するノイズ要素の個数をデータ要素の個数に基づいて決定する(ステップS82)。ノイズ要素もまた、M次元のベクトルである。ステップS80で取得されたパラメータは、ステップS82でのノイズ要素の個数の決定に用いられ、例えば0より大きく1より小さい実数である。そして訓練データに付加されるノイズ要素の個数は、ステップS81で取得されたデータ要素の個数にこのパラメータを乗じた値を整数に丸めた値が用いられる。つまり、ノイズ要素の個数は、訓練データのデータ要素の個数よりも小さくなるよう決定される。
【0101】
次に学習部120は、訓練データを正規化する(ステップS83)。
図9Bは、2次元平面に分布する正規化後の訓練データの例を示す。この例では、正規化前は
図9Aに示されるように分布していた訓練データの分布範囲が、2次元平面における[0,1]
2の領域に渡るよう変換されている。このような領域は、本実施の形態における第一領域の例である。
【0102】
次に学習部120は、ステップS82で決定された個数のノイズ要素を、第一領域より大きく、且つ第一領域を包含するM次元空間、つまりこの例では2次元平面の領域内に渡って付加する(ステップS84)。
図9Cは、M次元空間に分布するノイズ要素の付加後の訓練データの例であり、ノイズ要素は2次元平面内に分布する破線の輪郭の丸で示される。この例では、ノイズ要素が[−0.5,1.5]
2の領域に渡って分布するよう付加されている。なお、このような領域は、本実施の形態における第二領域の例である。
【0103】
図9Cに示されるように、ステップS84の工程の結果、元の訓練データのデータ要素よりも少ない個数のノイズ要素が、元の訓練データの分布範囲よりも広い領域に分布するよう付加される。したがって、ノイズ要素の分布密度は元の訓練データのデータ要素の分布密度に比べて低い。また、ノイズ要素は上記の領域において、全体としては一様分布となるよう付加される。
【0104】
次に学習部120は、第二領域内にあるM次元のベクトルである要素、つまり、いずれも2次元のベクトルである訓練データのデータ要素及びノイズ要素をともに含むノイズ付加訓練データを生成する(ステップS85)。
【0105】
最後に学習部120は、ステップS85で生成されたノイズ付加訓練データを用いてIsolation Forestの学習辞書データを生成し、この学習辞書データを出力する(ステップS86)。
【0106】
なお、上記の各ステップのうち、ステップS82及びステップS84は第二ノイズ付加ステップ、ステップS85は生成ステップ、ステップS86は学習辞書データ出力ステップの本実施の形態における例である。
【0107】
つまり学習部120は、従来のように正規化した訓練データをそのままは用いない。これに代えて学習部120は、M次元空間において、正規化された訓練データの分布範囲の周辺を含む領域にノイズを加えたものを用いて学習辞書を生成する。
【0108】
このようなノイズ付加訓練データを用いて学習辞書を生成することで、訓練データに含まれる異常データが少ない場合にも、
図7に示されるような多数の正常データが判定境界の外側に位置するような学習辞書を得ることが回避される。その結果、異常検知システム100では、過検知率を抑えた異常検知をすることができる。
【0109】
なお、第一処理方法についての上記の説明では、元の訓練データのデータ要素よりも少ないノイズ要素の個数の決定を0より大きく1より小さい実数値を取るパラメータを用いることで行っていたが、ノイズ要素の個数の決定の方法はこれに限定されない。例えばノイズ要素の個数は、訓練データのデータ要素の個数から一定の数を引いたものであってもよい。また、訓練データの個数を複数の範囲に区切り、各範囲に対して予め定めた個数のノイズ要素が用いられてもよい。このような訓練データの個数とノイズ要素の個数との対応は、例えばデータテーブルに含めて情報処理装置のメモリに記憶される。
【0110】
また、第一処理方法は、訓練データのデータ要素が2次元のベクトルである場合を例に説明したが、第一処理方法が基づく考え方はより高次元の空間に一般化して適用することができ、第一処理方法は3次元以上のベクトルである訓練データにも適用することができる。訓練データがM次元のベクトルであれば、上記の第一領域の範囲は[0,1]
M、第二領域の範囲は[−0.5,1.5]
Mと読み替えて適用される。つまり、第一領域はM次元の空間における超立方体である第一超立方体で画定されるM次元空間の領域、第二領域はM次元の空間において第一超立方体より大きくこれを包含する超立方体である第二超立方体で画定されるM次元空間の領域である。
【0111】
[第二処理方法]
図10は、上記で述べた適切な学習辞書を得るための訓練データの処理方法の他の一例である第二処理方法を示すフロー図である。
【0112】
第二処理方法も、2個以上のM次元のベクトルからなるIsolation Forestの訓練データの入力を受けた後の学習部120において、学習辞書生成部124によって実行される。ただし以下では、学習辞書生成部124による処理であっても学習部120の処理として説明することがある。第二処理方法も、
図9Aに示される訓練データの初期状態から始める場合を例に説明する。また、第一処理方法と共通の工程については説明を簡略化することがある。
【0113】
まず学習部120は、本処理に用いるパラメータを読み込む(ステップS100)。パラメータの詳細については以降のステップで説明する。
【0114】
次に学習部120は、入力された訓練データを正規化する(ステップS101)。この工程の内容は第一処理方法と共通であり、
図9Bは、2次元平面に分布する正規化後の訓練データの例を示す。また、正規化前は
図9Aに示されるように分布していた訓練データの分布範囲が、2次元平面における[0,1]
2の領域に渡るよう変換されている。このような領域は、本実施の形態における第一領域の例である。
【0115】
次に学習部120は、第一領域より大きく、且つ第一領域を包含するM次元空間、つまりこの例では2次元平面の領域である第二領域を設定し、第二領域を、大きさの等しいM次元の超立方体である第三領域に分割する(ステップS102)。
図11Aは、2次元平面における第二領域及び第三領域を説明するための図である。
図11Aに示される例では、は[−0.5,1.5]
2の領域であり、第三領域は、第二領域を64個に分割して得られるサブ領域である。
【0116】
ここで、ステップS100で取得されたパラメータは、ステップS102で第二領域を分割して得られる第三領域の個数の決定に用いられ、
図11Aの例ではこのパラメータの値は8であり、分割数は8のM乗、つまりこの例では2乗で64個である。
【0117】
次に学習部120は、第三領域のそれぞれが含む訓練データのデータ要素の個数S(Sは0以上の整数)を取得する(ステップS103)。なお、この時点では第一領域の外にある第三領域内には訓練データのデータ要素はないため、いずれの第三領域についてもS=0である。
【0118】
次に学習部120は、各第三領域内にある訓練データのデータ要素についての閾値である第一閾値T(Tは自然数)を決定する(ステップS104)。第一閾値Tの決定には、例えばステップS100で取得されたパラメータが用いられる。ステップS102で用いられるパラメータと同じでもよいし、異なっていてもよい。異なる場合には、ステップS102で用いられるパラメータから算出されてもよい。
【0119】
ステップS104で用いられるこのパラメータのより具体的な例を挙げると、例えば第一領域内にあるいずれかの第三領域に含まれる訓練データのデータ要素の個数を特定するものであってもよい。具体例としては、第三領域に含まれる訓練データのデータ要素の個数を大きさ順で並べた順位で特定の順位を示すものであってもよい。この場合、第一閾値には、この特定の順位の第三領域に含まれる訓練データのデータ要素の個数が用いられる。順位の示し方としては、最小値若しくは最大値から何番目であるか、又は平均値若しくは中央値を始点として大小いずれかの何番目であるかで示されてもよい。
【0120】
ここから学習部120は、上記のS及びTを用いて各第三領域へのノイズ要素の付加の要否の判断、及び各第三領域に付加するノイズ要素の個数を決定してノイズ要素を付加する手順を実行する。
【0121】
まず学習部120は、ノイズ要素の付加の要否に関する判断がなされていない第三領域があるか確認し(ステップS105)、ある場合(ステップS105でYES)には、その第三領域からひとつを選択し(ステップS106)、第三領域の訓練データのデータ要素の個数Sが第一閾値Tより小さいか否か判断する(ステップS107)。
【0122】
その第三領域の訓練データのデータ要素の個数Sが第一閾値Tより小さい場合(ステップS107でYES)、その第三領域のデータ要素とノイズ要素との合計数がTになるよう、(T−S)個のノイズ要素を追加する(ステップS108)。
【0123】
その第三領域の訓練データのデータ要素の個数Sが第一閾値T以上である場合(ステップS107でNO)、未処理の第三領域がさらにあるかを確認する(ステップS105)。
【0124】
全ての第三領域について、ステップS105からステップS107又はS108までの処理がなされると(ステップS105でNO)、学習部120は第二領域内にあるデータ要素及びノイズ要素を含むノイズ付加訓練データを生成する(ステップS109)。
図11Bは、ステップS105でNOの場合の2次元空間に分布する訓練データ及びノイズ要素の例を説明するための図である。
図11Bにおいてもノイズ要素は破線の輪郭の丸で示されている。
【0125】
図11Bの例は、第一閾値T=9である場合の例である。第一領域の左下隅にある第三領域は、訓練データのデータ要素の個数S=6であったため、T−S=3個のノイズ要素が付加されている。第一領域の左下隅にある第三領域は、訓練データのデータ要素の個数S=8であったため、T−S=1個のノイズ要素が付加されている。第一領域内の他の第三領域は、全てSが9以上であったため、ノイズ要素は付加されていない。ハッチングが施された他の第三領域は第一領域の外にあって訓練データのデータ要素を含まないため、それぞれ9個のノイズ要素が付加されている。なお、ノイズ要素は各第三領域において、その領域内で一様分布に従う乱数とする。
【0126】
最後に学習部120は、ステップS109で生成されたノイズ付加訓練データを用いてIsolation Forestの学習辞書データを生成し、この学習辞書データを出力する(ステップS110)。
【0127】
なお、上記の各ステップのうち、ステップS101は正規化ステップ、ステップS102は分割ステップ、ステップS103からS108までは第一ノイズ付加ステップ、ステップS109は生成ステップ、ステップS110は学習辞書データ出力ステップの本実施の形態における例である。
【0128】
第二処理方法においても、学習部120は、従来のように正規化した訓練データをそのままは用いない。これに代えて学習部120は、M次元空間において、正規化された訓練データの分布範囲の周辺を含む領域にノイズを加えたものを用いて学習辞書を生成する。
【0129】
このようなノイズ付加訓練データを用いて学習辞書を生成することで、訓練データに含まれる異常データが少ない場合にも、
図7に示されるような多数の正常データが判定境界の外側に位置するような学習辞書を得ることが回避される。その結果、異常検知システム100では、過検知率を抑えた異常検知をすることができる。
【0130】
また、第二処理方法では第一処理方法と異なり、訓練データが分布する第一領域内に付加するノイズ要素の個数が、より細分化した領域ごとの疎密に応じて決定される。したがって第二処理方法では、第一処理方法では第一領域内で生じ得るデータ要素とノイズ要素との過密な場所の発生が抑えられる。Isolation Forestでは、訓練データにおいてベクトルのデータが過密な場所は、判定境界の内側になりやすい。したがって、データ要素とノイズ要素の過密が生じやすいと、異常なデータであっても正常と判定される誤判定の可能性が高まる。異常であるデータを正常であるとする誤判定による誤検知については、以下では上記の過検知に対して検知漏れともいう。第二処理方法を実行して生成された学習辞書に基づいて未知データの異常判定が行われる異常検知システム100では、過検知の発生を抑えるとともに検知漏れの可能性も抑えた異常検知をすることができる。
【0131】
なお、第二処理方法も第一処理方法と同じく、本処理方法が基づく考え方はより高次元の空間に一般化して適用することができ、第二処理方法は3次元以上のベクトルである訓練データにも適用することができる。訓練データがM次元のベクトルであれば、上記の第一領域の範囲は[0,1]
M、第二領域の範囲は[−0.5,1.5]
Mと読み替えて適用される。つまり、第一領域はM次元の空間における超立方体である第一超立方体で画定されるM次元空間の領域、第二領域はM次元の空間において第一超立方体より大きくこれを包含する超立方体である第二超立方体で画定されるM次元空間の領域である。
【0132】
[効果]
ここで、上記の第二処理方法によって訓練データにノイズを付加することによる効果の実例を示す。
【0133】
図12A及び
図12Bは、訓練データにノイズを付加せずに用いて生成した学習辞書の判定境界と、同じ訓練データに上記の処理方法でノイズを付加したものを用いて生成した学習辞書の判定境界とを示す図である。なお、
図12Aの訓練データ1と
図12Bの訓練データ2とは、同一の実車の車載ネットワークから取得された種類の異なるデータである。訓練データ1と訓練データ2とを比較すると、訓練データ1はデータ要素が分布の中心から周縁までほぼ一様に分布し、訓練データ2は周縁でデータ要素の分布が疎になる。訓練データ2は、訓練データ1よりも外れ値を含む可能性が高いともいえる。
【0134】
図12A及び
図12Bのいずれにおいても、丸は訓練データのデータ要素を示す。また、実線の囲みはノイズを付加しない訓練データを用いて生成した学習辞書の判定境界、破線の囲みはノイズを付加した訓練データを用いて生成した学習辞書の判定境界である。なお、ノイズ要素は各図中で示していない。
【0135】
これらの図から分かるように、ノイズを付加した場合に得られた学習辞書の判定境界の内側には、ノイズを付加しない場合に得られた学習辞書の判定境界の内側の訓練データの全て、及びその外側の訓練データの多くが含まれている。
【0136】
さらに発明者らは、ノイズを付加した場合に得られた学習辞書の方が適切であるかを確認するためにテスト用のデータを用いて各学習辞書での異常検知試験を行った。
図12Cはこの異常検知試験での誤検知率を示す。各訓練データの左の柱は訓練データにノイズを付加しないで得た学習辞書での誤検知率、右の柱は訓練データにノイズを付加して得た学習辞書での誤検知率である。
【0137】
図12Cからわかるように、ノイズを付加して得た学習辞書での誤検知率には、ノイズを付加しないで得た学習辞書に比べて大幅な改善が見られる。つまり、ノイズを付加した場合に得られた学習辞書の方がより適切であることがわかる。また、この改善は、外れ値を含む可能性が高く、ノイズを付加しないで得た学習辞書でも誤検知率がある程度低かった訓練データ2の場合でも見られる。時速数十km以上で走る車両での異常検知では、過検知であるか検知漏れであるかを問わず誤検知が低く抑えられることの重要性は高い。
【0138】
一方で、CAN等の規格に準拠するネットワークから得られる訓練データとして、例えばアプリケーション層での異常に由来する異常データも含めて十分なゆらぎを持つデータを収集するのは、必ずしも容易ではない。未知の攻撃パターンで発生する異常データに近い訓練データとなれば、なおのこと用意するのは困難である。つまり、このような訓練データをIsolation Forestでの学習辞書の生成に利用していた従来は、異常検知での誤検知率を抑えるのが困難であった。
【0139】
しかしながら、本実施の形態における処理方法を実行することで、正常データ要素を多く含む元の訓練データに、この訓練データからある程度外れたデータ要素が、元の訓練データより少量、低い密度でデータ空間内に付加される。この付加されるデータ要素を上記ではノイズ要素と呼んでいる。そしてこの訓練データを用いて生成した学習辞書を用いる異常検知システムでは、従来よりも抑えられた誤検知率での異常検知が可能である。
【0140】
(実施の形態2)
実施の形態1で説明した第一処理方法と第二処理方法とは、それぞれを実現するために情報処理装置において実行されるプログラムのアルゴリズムの差であり、例えばあるプロセッサで読み込むプログラムを切り替えることで選択的に実行が可能である。
【0141】
ただし第一処理方法と第二処理方法とでは、次のような差がある。
【0142】
まず、ノイズ要素の付加に要する時間が、第二処理方法は第一処理方法よりも訓練データの量数への依存度が大きく、訓練データが増えるほど時間がかかる。つまり、第二処理方法の方が、プロセッサへの処理負荷が大きい。
【0143】
その一方で、生成される学習辞書での検知の精度(誤検知率の低さ)は、上述のとおりいずれでも従来に比べて改善されるが、第二処理方法の方が優れる。
【0144】
精度の高さという観点では、異常検知システムでは常に第二処理方法が実行されるのが望ましい。そして上記のような処理負荷の差は、
図1Aの異常検知システム100A又は
図1Bの異常検知システム100Bでは十分な計算機資源を投入しやすいため問題になりにくい。しかしながら、
図1Cの異常検知システム100Cのような構成では、プロセッサの演算速度等計算機資源に制限がある場合が想定される。つまり、走行する車両においては、第二処理方法では必要な速度で学習辞書の生成又は更新ができない可能性がある。
【0145】
また、異常検知システムでの検知の時間コスト及び精度に影響するものとしては、処理方法の違いだけでなく、各処理方法におけるパラメータがある。
【0146】
第一処理方法では、ノイズ要素の個数の決定に用いられるパラメータは0より大きく1より小さい実数を値として取り得る。しかし、この範囲のどの値で異常検知により適した学習辞書が生成されるかをあらかじめ予想するのは困難であり、これを知るには、例えばパラメータの値を変えて生成した複数の学習辞書でテスト用のデータに対して行う異常検知の精度を比較する。ただし当然のことながら、このような最適なパラメータの探索のために比較をすれば、異常検知に用いる学習辞書が決定されるまでにより多くの時間がかかる。学習辞書の決定が遅ければ、異常検知は学習辞書の決定まで実行できないか、古い学習辞書を用いて実行されるために精度が落ちる。
【0147】
第二処理方法では、第二領域を分割して得られる第三領域の個数の決定に用いられるパラメータ、及び第一閾値Tの決定に用いられるパラメータがある。これらの2つのパラメータのうち前者は、例えば、各次元で第一領域内で1回以上分割することで2個以上、また、第一領域の外では両側に第三領域が1個以上、計4個以上の第三領域が並ぶと想定して、Lは4以上の整数値を取り得る。後者は、例えば第二領域にある第三領域のいずれかの特定に用いられる値であれば、1以上で第二領域にある第三領域の個数以下の実数の値を取り得る。これらのパラメータについても、第一処理方法と同様のことがあてはまり、探索を行えばより精度のよい異常検知が可能な学習辞書が得られる可能性があるが、異常検知に用いる学習辞書が決定されるまでにより多くの時間がかかる。したがって、異常検知の実行が遅れるか、精度が犠牲となる。
【0148】
発明者らはこれらの点を考慮し、必要な速さで、かつ極力高い精度での異常検知を異常検知システムに実行させるには、訓練データの処理方法の選択又はパラメータの探索の実行の有無に関する迅速な決定を異常検知システムでさせる手法に想到した。
【0149】
以下、このような異常検知システムについて説明する。なお、本実施の形態の異常検知システムの構成は実施の形態1と共通でよいため異常検知システム100として説明を省略し、その動作について説明する。
【0150】
[動作]
以下では、異常検知システム100において訓練データの処理方法の選択又はパラメータの探索の実行の有無に関する迅速な決定のための処理全体について説明し、その説明の中でパラメータの探索のための処理について説明する。
【0151】
図13は、異常検知システム100において実行される、訓練データの処理方法の選択及び各処理方法でのパラメータの探索の実行の有無に関する決定のための処理方法の一例を示すフロー図である。
【0152】
この処理方法は、2個以上のM次元のベクトルからなるIsolation Forestの訓練データの入力を受けた後の学習部120において、学習辞書生成部124によって実行される工程がある。ただし以下では、学習辞書生成部124による処理であっても学習部120の処理として説明する。また、異常判定部110の各構成要素によって実行される工程もあるが、以下では、異常判定部110による処理として説明することがある。
【0153】
また、以下では、初期状態で訓練データ受信部122が訓練データの入力を既に受けていることを想定して説明する。
【0154】
まず学習部120は、訓練データのデータ要素の個数Nを取得する(ステップS130)。
【0155】
次に学習部120は、Nが所定の第二閾値以上であるか否かを判定する(ステップS131)。第二閾値は、訓練データの処理方法として第一処理方法と第二処理方法とのいずれを用いるかの判断のために用いられる閾値であり、例えば学習部120を実現するプロセッサの演算能力等の利用可能な計算機資源によって決定されて情報処理装置のメモリに格納されている。このように所定の閾値を用いることで、迅速な判断が可能である。
【0156】
Nが第二閾値以上であると判定した場合、つまり訓練データのデータ要素の個数が多い場合、学習部120は、より短時間で完了できる第一処理方法を選択する(ステップS132)。
【0157】
Nが第二閾値以上でないと判定した場合、つまり訓練データのデータ要素の個数が少ない場合、学習部120は、より精度の高い異常検知が可能な学習辞書が得られる第二処理方法を選択する(ステップS133)。
【0158】
次に学習部120は、Nが所定の第三閾値以上であるか否かを判定する(ステップS134)。第三閾値は、訓練データの各処理方法の実行時にパラメータの探索を実行するか否かの判断のために用いられる閾値である。第三閾値も第二閾値と同様に、例えば学習部120を実現するプロセッサの演算能力等の利用可能な計算機資源によって決定され、情報処理装置のメモリに格納されている。第二閾値とは関連があってもよいし、相互に独立した値でもよい。このように所定の閾値を用いることで、迅速な判断が可能である。
【0159】
Nが第三閾値以上であると判定した場合、つまり訓練データのデータ要素の個数が多い場合、学習部120は、より短時間で完了できるようパラメータ探索は実行しないと決定する(ステップS135)。
【0160】
Nが第三閾値以上でないと判定した場合、つまり訓練データのデータ要素の個数が少ない場合、学習部120は、より精度の高い異常検知が可能な学習辞書を得るためのパラメータ探索を実行する(ステップS136)。
【0161】
ステップS132及びステップS135を経て学習辞書データの生成及び出力(ステップS137)をする場合、学習部120は、
図8のフロー図に示される第一処理方法を実行する。
【0162】
ステップS133及びステップS135を経て学習辞書データの生成及び出力(ステップS137)をする場合、学習部120は、
図10のフロー図に示される第二処理方法を実行する。
【0163】
ステップS132及びステップS136を経て学習辞書データの生成及び出力(ステップS137)をする場合、学習部120は、
図14のフロー図に示される第一処理方法を実行する。
図14は、異常検知システム100において実行される、パラメータ探索を含む第一処理方法のフロー図である。
図14のフロー図では、
図8のフロー図に示される第一処理方法と共通の工程は共通の参照符号で示し、詳細な説明は省略する。
【0164】
図14のフロー図に示される第一処理方法では、学習部120は、S82、S84〜S86の工程のセットを、パラメータの値を入れ替えて複数回実行する。その結果として生成され出力される複数の学習辞書データは、異常判定部110の蓄積部112に保存される。また、学習部120からは、ステップS83で正規化に用いられたデータも異常判定部110に提供されて蓄積部112に保存される。
【0165】
異常判定部110は、Isolation Forestのテスト用データを取得している。このテスト用データは、例えば予め異常判定部110に入力され、蓄積部112に保存されており、ステップS131でNが第二閾値以上でないと判定された場合に異常判定部110がこのテスト用データを蓄積部112から読み込んで取得する。そして、異常判定部110は、ステップS83で正規化に用いられたデータを用いてテスト用データを正規化し、各学習辞書データを用いてテスト用データに対する異常判定を実行する(ステップS140)。
【0166】
最後に学習部120は、ステップS140でなされた各学習辞書データを用いた異常判定の評価をし、この評価結果に基づいて最良の学習辞書データを実際の異常検知に用いられる学習辞書データとして選択する(ステップS141)。この評価には、例えば再現率、F値等の既知の評価尺度を利用することができる。なお、ステップS141は異常判定部110によって実施されてもよい。
【0167】
なお、上記の各ステップのうち、ステップS82及びステップS84は第二ノイズ付加ステップ、ステップS85は生成ステップ、ステップS86は学習辞書データ出力ステップの本実施の形態における例である。また、ステップS131は第一判定ステップ、ステップS134は第二判定ステップの本実施の形態における例である。また、ステップS140及びS141はテスト用データ取得ステップ、評価ステップ、及び学習辞書データ選択ステップに対応する本実施の形態における例である。
【0168】
ステップS132及びステップS135を経て第一処理方法が実行される場合との違いのひとつは、ステップS82、S84〜S86の工程のセットが異常検知に用いられる学習辞書データが出力されるまでに1回のみ実行されるのか複数回実行されるかという点にある。また、テスト用データを用いて複数の学習辞書データが評価され、この評価の結果に基づいて最良の学習辞書データが異常検知に用いられる学習辞書データとして選択される点も異なる。
【0169】
ステップS133及びステップS136を経て学習辞書データの生成及び出力(ステップS137)をする場合、学習部120は、
図15のフロー図に示される第二処理方法を実行する。
図15は、異常検知システム100において実行される、パラメータ探索を含む第二処理方法のフロー図である。
図15のフロー図では、
図10のフロー図に示される第二処理方法と共通の工程は共通の参照符号で示し、詳細な説明は省略する。
【0170】
図15のフロー図に示される第二処理方法では、学習部120は、ステップS102〜S110の工程のセットを、2種類のパラメータの値の組み合わせを入れ替えて複数回実行する。その結果として生成され出力される複数の学習辞書データは、異常判定部110の蓄積部112に保存される。また、学習部120からは、ステップS101で正規化に用いられたデータも異常判定部110に提供されて蓄積部112に保存される。
【0171】
ステップS150及びS151の内容は、それぞれステップS140及びS141と共通である。
【0172】
なお、上記の各ステップのうち、ステップS102は分割ステップ、ステップS103からS108まで第一ノイズ付加ステップ、ステップS109は生成ステップ、ステップS110は学習辞書データ出力ステップの本実施の形態における例である。また、ステップS131は第一判定ステップ、ステップS134は第二判定ステップの本実施の形態における例である。また、ステップS150及びS151はテスト用データ取得ステップ、評価ステップ、及び学習辞書データ選択ステップに対応する本実施の形態における例である。
【0173】
ステップS133及びステップS135を経て第二処理方法が実行される場合との違いのひとつは、ステップS102〜S110の工程のセットが異常検知に用いられる学習辞書データが出力されるまでに1回のみ実行されるのか複数回実行されるかという点にある。また、テスト用データを用いて複数の学習辞書データが評価され、この評価の結果に基づいて最良の学習辞書データが異常検知に用いられる学習辞書データとして選択される点も異なる。
【0174】
以上に説明したとおり、
図13に示されるフロー図ではノイズ付加の処理方法が2通り、各処理方法についてのパラメータ探索の実行の有無で2通りある。つまり、異常検知に用いられる学習辞書データが決定して異常検知の実行が可能になるまで4通りの処理パターンがある。これらの処理パターンのうち、時間コストがもっとも大きいのは、パラメータ探索を含めて第二処理方法が実行されるパターンである。次いで時間コストが大きいのは、パラメータ探索を含めて第一処理方法が実行される場合である。これらの2パターンに比べて残る2パターンの時間コストは大幅に小さい。上記では第二閾値と第三閾値とは独立の値でもよいとしているが、この時間コストの大小関係を考慮して決定されてもよい。
【0175】
また、ステップS131での判断の結果に応じて、つまりノイズの付加に用いられるのが第一処理方法であるか第二処理方法であるかに応じて、ステップS134で用いられる閾値が切り替えられてもよい。例えば第二処理方法が用いられる場合には、第三閾値が用いられ、第一処理方法が用いられる場合には、第三閾値に代えて別の所定の閾値である第四閾値が用いられてもよい。このように第四閾値が用いられる場合のステップS134は、本実施の形態における第三判定ステップの例である。
【0176】
また、
図13のフロー図では、ノイズ付加の処理方法の判断と、各処理方法についてのパラメータ探索の実行の有無の判断との2つの判断がなされているが、時間コストの調整にはこれらの両方が必須ではない。これらの判断のうち一方のみで時間コストの調整が図られてもよい。
【0177】
また、
図13のフロー図では、パラメータ探索の実行について用意されている選択肢は実行するかしないかの2つであるが、例えば訓練データのデータ要素の個数に応じて、探索のために入れ替えるパラメータの個数が段階的に変更されてもよい。つまり、訓練データのデータ要素の個数が多いほど、入れ替えられるパラメータの個数が減らされてもよい。この場合、パラメータの個数はデータ要素の個数から算出される値であってもよいし、データ要素の所定範囲ごとにあらかじめ決められた値でもよい。つまり、訓練データのデータ要素の個数とパラメータの個数との間に負の相関があればよい。これにより、訓練データのデータ要素が多い場合には、学習辞書データの決定までに要する時間が長くなり過ぎないように演算処理の負荷の増加が抑えられる。
【0178】
また、
図13のフロー図では、訓練データのデータ要素の個数Nの第二閾値との比較の結果に応じて、訓練データの処理のために第一処理方法を実行するか第二処理方法を実行するかが選択されるが、これに限定されない。例えば、訓練データの処理を実行しないという選択肢がさらにあってもよい。例えば、情報処理装置において他の処理によるプロセッサへの負荷が大きいため、異常検知には現行の学習辞書を継続して利用し、更新のための新たな学習辞書の生成を延期するという場合にこのような判断がされてもよい。また、選択肢は、第一処理方法の実行又は第二処理方法の実行の一方と、訓練データの処理を実行しないという2つの選択肢であってもよい。
【0179】
(他の実施の形態)
以上のように、本発明に係る技術の例示として実施の形態1、2を説明した。しかしながら、本発明に係る技術は、これに限定されず、適宜、変更、置き換え、付加、省略等を行った実施の形態にも適用可能である。例えば、以下のような変形例も本発明の一実施態様に含まれる。
【0180】
上記実施の形態における各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAM等を含んで構成されるコンピュータシステムである。このRAMには、コンピュータプログラムが記録されている。また、このマイクロプロセッサが、RAMに記録されているコンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。また、上記各装置を構成する構成要素の各部は、個別に1チップ化されていてもよいし、一部又は全部を含むように1チップ化されてもよい。また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブルプロセッサを利用してもよい。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
【0181】
上記各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。このICカード又はモジュールは、マイクロプロセッサ、ROM、RAM等から構成されるコンピュータシステムである。また、このICカード又はモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、ICカード又はモジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【0182】
なお、上記実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPU又はプロセッサなどのプログラム実行器が、ハードディスク又は半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態の情報処理装置などを実現するソフトウェアは、次のようなプログラムである。
【0183】
すなわち、このプログラムは、コンピュータに、Isolation Forestの訓練データとして用いられるN個(Nは2以上の整数)のM次元のベクトル(Mは2以上の整数)であるデータ要素の入力を受けさせるデータ要素取得ステップと、訓練データをM次元の第一領域に渡って分布させるよう正規化させる正規化ステップと、第一領域より大きく第一領域を包含するM次元の第二領域を、大きさの等しいL
M個(Lは4以上の整数)のM次元の超立方体である第三領域に分割させる分割ステップと、第三領域のそれぞれが含むデータ要素の個数S(Sは0以上の整数)を取得させ、第三領域のうち、第一閾値T(Tは自然数)より少ない個数のデータ要素を含む第三領域のそれぞれに、(T−S)個のM次元のベクトルであるノイズ要素を一様分布で付加させる第一ノイズ付加ステップと、データ要素及びノイズ要素を含むノイズ付加訓練データを生成させる生成ステップと、ノイズ付加訓練データを用いてIsolation Forestの学習辞書データを生成して出力させる学習辞書データ出力ステップとを含む情報処理方法を実行させる。
【0184】
また、本発明は上記の実施の形態に記載される、訓練データを用いて学習辞書データを生成し、この学習辞書データを異常判定を実行する異常判定装置に提供する情報処理装置として実現可能である。また、この情報処理装置及び異常判定装置を備える異常検知システムとしても実現可能である。この異常判定装置は、例えば
図1A又は
図1Cに示される構成の異常検知システム内であれば、車載ネットワーク210に接続される異常判定部を実現する監視ECUである。また、
図1BCに示される構成の異常検知システム内であれば、異常判定部を実現する外部サーバ10である。いずれの場合も、情報処理装置から出力された学習辞書データを記憶するメモリ及びプロセッサを備えネットワークに接続される。このネットワークは、典型的には上述のとおり車載のCANネットワークであるが、これに限定されない。
【0185】
例えば、CAN−FD(CAN with Flexible Data rate)、FlexRay、Ethernet、LIN(Local Interconnect Network)、MOST(Media Oriented Systems Transport)などのネットワークであってもよい。あるいはこれらのネットワークをサブネットワークとして、CANネットワークと組み合わせた車載ネットワークであってもよい。
【0186】
また、上記実施の形態において、各構成要素は、回路でもよい。複数の構成要素が、全体として1つの回路を構成してもよいし、それぞれ別々の回路を構成してもよい。また、回路は、それぞれ、汎用的な回路でもよいし、専用の回路でもよい。
【0187】
以上、一つ又は複数の態様に係る情報処理装置などについて、実施の形態に基づいて説明したが、本開示は、この実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、及び異なる実施の形態における構成要素を組み合わせて構築される形態も、一つ又は複数の態様の範囲内に含まれてもよい。
【0188】
例えば、上記実施の形態において、特定の構成要素が実行する処理を特定の構成要素の代わりに別の構成要素が実行してもよい。また、複数の処理の順序が変更されてもよいし、複数の処理が並行して実行されてもよい。