(57)【要約】【課題】データ及び異常ラベルが与えられたときに、異常ラベルを有効に活用し、高い性能で異常度を推定することを可能とする技術を提供する。【解決手段】学習装置において、データと、データが異常か否かを示すラベルとを入力する入力データ読み込み部と、異常度に関するパラメータを適用してデータの異常度を算出するための所定の関数と、前記ラベルとに基づく目的関数の値を、前記データと前記パラメータの値とを用いて算出する目的関数計算部と、前記パラメータの値を更新しながら、前記目的関数計算部による処理を繰り返し実行することにより、前記目的関数の値を最大化する前記パラメータの値を算出するパラメータ更新部とを備える。【選択図】図１
2020091661.tif 000002
【特許請求の範囲】
【請求項１】
データと、データが異常か否かを示すラベルとを入力する入力データ読み込み部と、
異常度に関するパラメータを適用してデータの異常度を算出するための所定の関数と、前記ラベルとに基づく目的関数の値を、前記データと前記パラメータの値とを用いて算出する目的関数計算部と、
前記パラメータの値を更新しながら、前記目的関数計算部による処理を繰り返し実行することにより、前記目的関数の値を最大化する前記パラメータの値を算出するパラメータ更新部と
を備えることを特徴とする学習装置。
【請求項２】
前記所定の関数を用いて算出される異常度は、出現する確率が高いデータに対してはその値が低くなり、出現する確率が低いデータに対してはその値が高くなるような異常度である
ことを特徴とする請求項１に記載の学習装置。
【請求項３】
前記パラメータ更新部は、異常データの異常度を正常データの異常度よりも高くするための制約を用いて前記パラメータの値を更新する
ことを特徴とする請求項１又は２に記載の学習装置。
【請求項４】
前記目的関数は、異常データの異常度が正常データの異常度よりも高い場合に大きな値を取り、異常データの異常度が正常データの異常度よりも低い場合に小さな値を取る関数を含む
ことを特徴とする請求項１又は２に記載の学習装置。
【請求項５】
請求項１ないし４のうちいずれか１項に記載の学習装置により得られた、前記目的関数の値を最大化する前記パラメータの値を適用した前記所定の関数にデータを入力することにより、当該データの異常度を算出する異常度計算部
を備えることを特徴とする推定装置。
【請求項６】
学習装置が実行するパラメータ算出方法であって、
データと、データが異常か否かを示すラベルとを入力する入力ステップと、
異常度に関するパラメータを適用してデータの異常度を算出するための所定の関数と、前記ラベルとに基づく目的関数の値を、前記データと前記パラメータの値とを用いて算出する目的関数計算ステップと、
前記パラメータの値を更新しながら、前記目的関数計算ステップを繰り返し実行することにより、前記目的関数の値を最大化する前記パラメータの値を算出するパラメータ算出ステップと
を備えることを特徴とするパラメータ算出方法。
【請求項７】
コンピュータを、請求項１ないし４のうちいずれか１項に記載の学習装置における各部として機能させるためのプログラム。
【請求項８】
コンピュータを、請求項５に記載の推定装置における異常度計算部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データが与えられたときに、当該データに含まれる異常度を推定するための技術に関連するものである。
【背景技術】
【０００２】
データが与えられたときに異常を検知するタスクは、異常検知と呼ばれる。異常検知の技術は、例えば、機器異常やネットワーク異常、クレジットカード詐欺の検知に利用されている。 
異常検知の方法として、教師なし手法が提案されている（例えば非特許参考文献１）。しかし、 各データが異常か異常でないかを表す異常ラベルが与えられている場合、従来の教師なし手法では、その異常ラベルを有効に活用できないという問題がある。
【０００３】
また、異常検知の方法として、教師あり手法も提案されている（例えば非特許参考文献２）。しかし、従来の教師あり手法では、異常データが少ない場合、高い性能が達成できないという問題がある。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Liu, Fei Tony, Kai Ming Ting, and Zhi-Hua Zhou. "Isolation forest." 2008 Eighth IEEE International Conference on Data Mining. IEEE, 2008.
【非特許文献２】Zhang, J., Zulkernine, M., & Haque, A. (2008). Random-forests-based network intrusion detection systems. IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews), 38(5), 649-659.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は上記の点に鑑みてなされたものであり、データ及び異常ラベルが与えられたときに、異常ラベルを有効に活用し、高い性能で異常度を推定することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
開示の技術によれば、データと、データが異常か否かを示すラベルとを入力する入力データ読み込み部と、
異常度に関するパラメータを適用してデータの異常度を算出するための所定の関数と、前記ラベルとに基づく目的関数の値を、前記データと前記パラメータの値とを用いて算出する目的関数計算部と、
前記パラメータの値を更新しながら、前記目的関数計算部による処理を繰り返し実行することにより、前記目的関数の値を最大化する前記パラメータの値を算出するパラメータ更新部と
を備えることを特徴とする学習装置が提供される。
【発明の効果】
【０００７】
開示の技術によれば、データ及び異常ラベルが与えられたときに、異常ラベルを有効に活用し、高い性能で異常度を推定することを可能とする技術が提供される。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態におけるシステムの構成図である。
【図２】装置のハードウェア構成の例を示す図である。
【図３】学習装置の処理のフローチャートである。
【図４】本発明の評価結果を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施の形態を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。例えば、以下の説明では、データとして多次元ベクトルを用いているが、本発明は、多次元ベクトルに限らず、時系列データやグラフデータなどの構造データなど、任意のデータに対して適用可能である。
【００１０】
なお、以下の明細書のテキストにおいて、「Ａバー」は、「Ａ」の頭にバー「−」が付された記号を意味し、θ＾は、「θ」の頭に「＾」が付された記号を意味する。
【００１１】
（システム構成例）
図１に、本発明の実施の形態におけるシステムの構成例を示す。図１に示すように、本システムは、入力データから異常度に関するパラメータの値を算出する学習装置１００と、学習装置１００で算出されたパラメータの値を用いて入力データから異常度を算出する推定装置２００とを有する。
【００１２】
図１に示すように、学習装置１００は、入力データ読み込み部１１０、目的関数計算部１２０、パラメータ更新部１３０を有する。また、推定装置２００は、異常度計算部２１０を有する。各部の動作内容については後述する。
【００１３】
なお、学習装置１００と推定装置２００が１つの装置（便宜上、学習推定装置と呼ぶ）であってもよい。当該学習推定装置は、入力データ読み込み部１１０、目的関数計算部１２０、パラメータ更新部１３０、異常度計算部２１０を有する。
【００１４】
学習装置１００、推定装置２００、及び学習推定装置は、いずれもコンピュータにより実現することができる。すなわち、当該装置は、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００１５】
図２は、上記コンピュータのハードウェア構成例を示す図である。図２のコンピュータは、それぞれバスＢで相互に接続されているドライブ装置１０００、補助記憶装置１００２、メモリ装置１００３、ＣＰＵ１００４、インタフェース装置１００５、表示装置１００６、及び入力装置１００７等を有する。
【００１６】
当該コンピュータでの処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１００１によって提供される。プログラムを記憶した記録媒体１００１がドライブ装置１０００にセットされると、プログラムが記録媒体１００１からドライブ装置１０００を介して補助記憶装置１００２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１００１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１００２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１７】
メモリ装置１００３は、プログラムの起動指示があった場合に、補助記憶装置１００２からプログラムを読み出して格納する。ＣＰＵ１００４は、メモリ装置１００３に格納されたプログラムに従って、学習装置１００、推定装置２００、学習推定装置などに係る機能を実現する。インタフェース装置１００５は、ネットワークに接続するためのインタフェースとして用いられ、ネットワークを介した入力手段及び出力手段として機能する。表示装置１００６はプログラムによるＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等を表示する。表示装置１００６は出力手段の例でもある。入力装置１００７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
【００１８】
以下、各部の処理内容を説明する。まず、学習装置１００について説明する。
【００１９】
（学習装置１００の入力データ読み込み部１１０）
入力データ読み込み部１１０には、入力データとしてＸ＝｛（ｘｎ，ｙｎ）｝Ｎｎ＝１が与えられ、当該入力データは目的関数計算部１２０に渡される。ここで、ｘｎ＝（ｘｎ１，・・・，ｘｎＤ）はｎ番目のデータのＤ次元の特徴ベクトル、ｙｎはその異常ラベルである。データｘｎが異常の場合ｙｎ＝１、異常でない場合（正常の場合）ｙｎ＝０となる。また、Ｎは１以上の整数である。
【００２０】
（学習装置１００の目的関数計算部１２０、パラメータ更新部１３０）
本実施の形態では、データの異常度として、そのデータが発生する確率が高い場合に低くなり、発生する確率が低い場合に高くなるような異常度を用いる。例えば、異常度として、以下の式（１）に示すように負の対数尤度関数を用いることができる。
【００２１】
【数１】
2020091661.tif 000003
ここでθは異常度のパラメータである。θは、尤度関数ｐ（ｘ｜θ）のパラメータでもある。
【００２２】
なお、異常度は、尤度関数以外の関数で表わすようにしても良い。例えば、オートエンコーダの再構成誤差などの教師なし異常検知で用いられる関数で表わされる異常度を用いることとしてもよい。
【００２３】
異常度を表すための関数を"所定の関数"と呼んでもよい。例えば、尤度関数ｐ（ｘ｜θ）は所定の関数の例である。「−ｌｏｇｐ（ｘ｜θ）」も所定の関数の例である。また、"所定の関数"は、尤度関数以外の関数であってもよい。
【００２４】
パラメータθは、異常度に関連するパラメータであり、特定のものに限定されないが、例えば、異常データ（あるいは正常データ）の発生確率や、データの分布を表すための平均及び分散、ニューラルネットのパラメータなどである。また、尤度関数ｐ（ｘ｜θ）の値は、パラメータθのもとで、データｘが観測される尤度（尤もらしさ）を表す。
【００２５】
異常度を尤度関数を用いて算出する場合における当該尤度関数として、正規分布、混合正規分布、変分オートエンコーダ、ニューラル自己回帰密度関数など、任意の密度関数を用いることができる。例えば、尤度関数として、ニューラル自己回帰密度関数を用いる場合、尤度関数ｐ（ｘ｜θ）は下記の式（２）で表わされる。
【００２６】
【数２】
2020091661.tif 000004
上記の式（２）において、ｘ＜ｄ＝［ｘ１，・・・，ｘｄ−１］はｄ番目より前の各特徴ベクトルであり、各特徴のモデルとして例えば、下記の式（３）で表わされる混合正規分布を用いることができる。
【００２７】
【数３】
2020091661.tif 000005
上記の式（３）において、Ｋは混合数であり、Ｎ（・｜μ，σ２）は平均μ、分散σ２の正規分布、πｄｋ（ｘ＜ｄ；θ），μｄｋ（ｘ＜ｄ；θ），σ２ｄｋ（ｘ＜ｄ；θ）はそれぞれ、ｋ番目のコンポーネントのｄ番目の特徴のための混合比、平均、分散を定義するニューラルネットワークである。
【００２８】
なお、上記の分布を用いることは一例であり、例えば、データが二値変数の場合はベルヌーイ分布、データが非負の整数の場合はポワソン分布、データが非負の実数の場合はガンマ分布などの他の分布を用いることもできる。
【００２９】
学習装置１００は、正常データに対しては異常度が低く、かつ、異常データの異常度が正常データの異常度よりも高くなるように、異常度のパラメータθを推定する。そのために、例えば、正常データの異常度を低くするために、以下の式（４）に示す目的関数を最大化するようにθを推定する。目的関数計算部１２０は、θの推定のために、入力データと、ある値のθを用いて目的関数の計算を行う。
【００３０】
【数４】
2020091661.tif 000006
また、上記目的関数最大化問題を解く際に、異常データの異常度を正常データの異常度よりも高くするために、以下の式（５）で示される制約を利用することができる。なお、より具体的には、制約は、パラメータ更新部１３０がパラメータを更新する際の制約となる。
【００３１】
【数５】
2020091661.tif 000007
式４、式５において、Ａは異常データのインデックスの集合を示し、Ａバー＝｛ｎ∈Ｄ｜ｙｎ＝０｝は正常データのインデックスの集合を示す。すなわち、式（４）は、正常データのみの対数尤度の和を正常データの個数で割った値を示す。また、式（５）は、前述したとおり、異常データの異常度（−ｌｏｇｐ（ｘｎ｜θ）、ｎ∈Ａ）が、正常データの異常度（−ｌｏｇｐ（ｘｎ´｜θ）、ｎ´∈Ａバー）よりも高いという制約を示す。この制約のもとで、パラメータを更新しながら式（４）を最大化するパラメータθを計算する。
【００３２】
入力データとして、ラベルありデータとラベルなしデータが与えられる場合がある。ラベルありデータとラベルなしデータが与えられる場合、式（５）の制約に代えて、異常データがラベルなしデータよりも異常度が高くなるように、正常データがラベルなしデータよりも異常度が低くなるような制約を用いればよい。
【００３３】
上記のように制約を用いて目的関数を最大化することは一例である。効率的な制約なし最適化として、以下の式（６）で示す目的関数を最大化することで、パラメータθを推定することとしてもよい。
【００３４】
【数６】
2020091661.tif 000008
上記の式（６）において、λ≧０はハイパーパラメータ、ｆ（・）は下記の式（７）で示されるシグモイド関数である。
【００３５】
【数７】
2020091661.tif 000009
式（６）の第二項は、異常データの異常度が正常データの異常度よりも高い場合に大きな値を取り、異常データの異常度が正常データの異常度よりも低い場合に小さな値を取る関数の例である。ｆ（・）として、異常データの異常度が正常データの異常度よりも高い場合に大きな値を取り、異常データの異常度が正常データの異常度よりも低い場合に小さな値を取る関数であって、式（６）以外の関数を用いてもよい。ハイパーパラメータは、例えば開発データを用いることにより設定できる。
【００３６】
上記の目的関数の最大化の方法は特定の方法に限定されないが、例えば、確率的勾配法を用いて実現できる。例えば、パラメータ更新部１３０は、目的関数の値と、目的関数のパラメータθによる微分値を用いて、確率的勾配法によりパラメータθを推定する。
【００３７】
（推定装置２００の異常度計算部２１０）
学習装置１００により推定されたパラメータの値をθ＾とする。推定装置２００には、パラメータθ＾と、異常度を求める対象の入力データとしてデータｘ＊が入力される。異常度計算部２１０は、パラメータθ＾を用いて、データｘ＊に対する異常度を下記の式（８）により計算し、当該異常度を出力する。
【００３８】
【数８】
2020091661.tif 000010
（処理フロー）
図３は、学習装置１００の処理を示すフローチャートである。
【００３９】
Ｓ１０１において、入力データ読み込み部１１０が入力データを読み込む。読み込まれた入力データは目的関数計算部１２０に渡される。なお、入力データは、あるシステムからリアルタイムに受信する観測データであってもよいし、観測されたデータを学習装置１００における記憶手段（ＨＤＤ，メモリ等）に予め保存しておいたものであってもよい。
【００４０】
Ｓ１０２において、目的関数計算部１２０が、入力データと現在のパラメータθの値（最初は予め設定した初期値）を用いて目的関数を計算することにより目的関数の値を求めるとともに、目的関数のパラメータθに関する微分値を求める。目的関数の値、及び、微分地は、パラメータ更新部１３０に渡される。
【００４１】
Ｓ１０３において、パラメータ更新部１３０は、Ｓ１０２で計算した目的関数の値と微分値を用いて、目的関数の値が高くなるように、パラメータθを更新する。
【００４２】
Ｓ１０２、Ｓ１０３の処理は、終了条件を満たすまで繰り返される。すなわち、Ｓ１０４において、パラメータ更新部１３０（あるいは目的関数計算部１２０）は、終了条件を満たすかどうかを判定し、満たさなければＳ１０２に進み、満たせば処理を終了する。
【００４３】
終了条件としては、例えば、繰り返し回数がある値を越える、目的関数値の変化量がある値より小さくなる、パラメータの変化量がある値より小さくなる、などを用いることができる。
【００４４】
学習装置１００の処理によりパラメータθの値が算出（推定）されると、推定装置２００の異常度計算部２１０が、推定されたパラメータθの値を用いて、対象のデータについての異常度を計算する。
【００４５】
（評価結果）
上記実施の形態を用いて説明した本発明に係る技術を評価するために、１６のデータを用いて評価を実施した。その結果を図４に示す。図４に示す評価では、評価指標としてArea Under the ROC Curve(AUC)を用いた。AUCの値が１に近いほど高性能であることを示す。
【００４６】
図４における表の左端に１６のデータ名が示されている。本発明に係る手法（Proposed)に対する比較対象として、図４の表の上端に示すとおり、the local outlier factor (LOF)、one-class support vector machine (OCSVM)、isolation forest (IF)、valiational autoencoder (VAE)、deep masked autoencoder density estimator (MADE)、k-nearest neighbor (KNN)、support vector machine (SVM)、random forest (RF)、neural network (NN)を用いた。
【００４７】
図４に示すとおり、本発明に係る手法（Proposed)が他の手法よりも多くのデータで高い性能を達成していることがわかる。
【００４８】
（実施の形態のまとめ）
以上、説明したとおり、本明細書には少なくとも下記の事項が開示されている。
（第１項）
データと、データが異常か否かを示すラベルとを入力する入力データ読み込み部と、
異常度に関するパラメータを適用してデータの異常度を算出するための所定の関数と、前記ラベルとに基づく目的関数の値を、前記データと前記パラメータの値とを用いて算出する目的関数計算部と、
前記パラメータの値を更新しながら、前記目的関数計算部による処理を繰り返し実行することにより、前記目的関数の値を最大化する前記パラメータの値を算出するパラメータ更新部と
を備えることを特徴とする学習装置。
（第２項）
前記所定の関数を用いて算出される異常度は、出現する確率が高いデータに対してはその値が低くなり、出現する確率が低いデータに対してはその値が高くなるような異常度である
ことを特徴とする第１項に記載の学習装置。
（第３項）
前記パラメータ更新部は、異常データの異常度を正常データの異常度よりも高くするための制約を用いて前記パラメータの値を更新する
ことを特徴とする第１項又は第２項に記載の学習装置。
（第４項）
前記目的関数は、異常データの異常度が正常データの異常度よりも高い場合に大きな値を取り、異常データの異常度が正常データの異常度よりも低い場合に小さな値を取る関数を含む
ことを特徴とする第１項又は第２項に記載の学習装置。
（第５項）
第１項ないし第４項のうちいずれか１項に記載の学習装置により得られた、前記目的関数の値を最大化する前記パラメータの値を適用した前記所定の関数にデータを入力することにより、当該データの異常度を算出する異常度計算部
を備えることを特徴とする推定装置。
（第６項）
学習装置が実行するパラメータ算出方法であって、
データと、データが異常か否かを示すラベルとを入力する入力ステップと、
異常度に関するパラメータを適用してデータの異常度を算出するための所定の関数と、前記ラベルとに基づく目的関数の値を、前記データと前記パラメータの値とを用いて算出する目的関数計算ステップと、
前記パラメータの値を更新しながら、前記目的関数計算ステップを繰り返し実行することにより、前記目的関数の値を最大化する前記パラメータの値を算出するパラメータ算出ステップと
を備えることを特徴とするパラメータ算出方法。
（第７項）
コンピュータを、第１項ないし第４項のうちいずれか１項に記載の学習装置における各部として機能させるためのプログラム。
（第８項）
コンピュータを、第５項に記載の推定装置における異常度計算部として機能させるためのプログラム。
【００４９】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５０】
１００  学習装置
１１０  入力データ読み込み部
１２０  目的関数計算部
１３０  パラメータ更新部
２００  推定装置
２１０  異常度計算部
１０００  ドライブ装置
１００１  記録媒体
１００２  補助記憶装置
１００３  メモリ装置
１００４  ＣＰＵ
１００５  インタフェース装置
１００６  表示装置
１００７  入力装置
【図１】
2020091661.tif 000011
【図２】
2020091661.tif 000012
【図３】
2020091661.tif 000013
【図４】
2020091661.tif 000014