(57)【要約】【課題】データの異常検知を高精度で行うことができる異常検知装置、学習装置、異常検知方法、学習方法、異常検知プログラム、および学習プログラムを提供することである。【解決手段】実施形態の異常検知装置は、エンコーダと、第１識別部と、デコーダと、第２識別部とを持つ。前記エンコーダは、正常データに適合する圧縮パラメータを用いて、入力データを圧縮する。前記第１識別部は、前記エンコーダによって圧縮された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比とに基づいて、前記入力データの第１異常を検知する。前記デコーダは、前記正常データに適合する復号パラメータを用いて、前記エンコーダによって圧縮された圧縮データを復号する。前記第２識別部は、前記デコーダにより復号された再構成データと、前記入力データとの差異を算出し、前記差異に基づいて、前記入力データの第２異常を検知する。【選択図】図３
2018049355.tif 000002
【特許請求の範囲】
【請求項１】
正常データに適合する圧縮パラメータを用いて、入力データを圧縮するエンコーダと、
前記エンコーダによって圧縮された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比とに基づいて、前記入力データの第１異常を検知する第１識別部と、
前記正常データに適合する復号パラメータを用いて、前記エンコーダによって圧縮された圧縮データを復号するデコーダと、
前記デコーダにより復号された再構成データと、前記入力データとの差異を算出し、前記差異に基づいて、前記入力データの第２異常を検知する第２識別部と
を備える異常検知装置。
【請求項２】
前記第１識別部は、前記エンコーダによって圧縮された圧縮データの中間層データと、前記事前分布の中間層データとを比較して前記第１異常を検知し、
前記第２識別部は、前記デコーダによって復号された再構成データの中間層データと、前記入力データの中間層データとを比較して前記第２異常を検知する、
請求項１に記載の異常検知装置。
【請求項３】
前記第１識別部は、前記エンコーダによって圧縮された圧縮データの前記事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比との和が第１閾値以下である場合、前記入力データが前記第１異常であることを検知し、
前記第２識別部は、前記デコーダによって復号された再構成データと、前記入力データとの差異が第２閾値以上である場合、前記入力データが前記第２異常であることを検知する、
請求項１または２に記載の異常検知装置。
【請求項４】
学習データを圧縮するエンコーダと、
入力されたデータの分布が、前記エンコーダによって圧縮された圧縮データの分布と、事前分布とのいずれの分布であるかを識別して第１識別結果を出力する第１識別部と、
前記エンコーダによって圧縮された圧縮データを復号するデコーダと、
入力されたデータが、前記デコーダにより復号された再構成データと、前記学習データとのいずれのデータであるかを識別して第２識別結果を出力する第２識別部と
を備え、
前記エンコーダは、前記第１識別結果および前記第２識別結果に基づいて、前記学習データの圧縮に用いる圧縮パラメータを調整し、
前記デコーダは、前記第２識別結果に基づいて、前記圧縮データの復号に用いる復号パラメータを調整する、学習装置。
【請求項５】
前記エンコーダは、前記圧縮データの分布と前記事前分布との差異が低減するように、前記圧縮パラメータを調整し、
前記デコーダは、前記再構成データと前記学習データとの差異が低減するように、前記復号パラメータを調整する、
請求項４に記載の学習装置。
【請求項６】
前記第１識別部は、前記エンコーダによって圧縮された圧縮データの中間層データと、前記事前分布の中間層データとを比較して前記識別を行い、
前記第２識別部は、前記デコーダによって復号された再構成データの中間層データと、前記学習データの中間層データとを比較して前記識別を行う、
請求項４または５に記載の学習装置。
【請求項７】
正常データに適合する圧縮パラメータを用いて入力データを圧縮し、
前記入力データを圧縮することにより生成された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比とに基づいて、前記入力データの第１異常を検知し、
前記正常データに適合する復号パラメータを用いて、前記入力データを圧縮することにより生成された圧縮データを復号し、
前記圧縮データを復号することにより生成された再構成データと、前記入力データとの差異を算出し、前記差異に基づいて、前記入力データの第２異常を検知する
異常検知方法。
【請求項８】
学習データを圧縮し、
入力されたデータの分布が、前記学習データを圧縮することによって生成された圧縮データの分布と、事前分布とのいずれの分布であるかを識別して第１識別結果を出力し、
前記学習データを圧縮することによって生成された圧縮データを復号し、
入力されたデータが、前記圧縮データを復号することにより生成された再構成データと、前記学習データとのいずれのデータであるかを識別して第２識別結果を出力し、
前記第１識別結果および前記第２識別結果に基づいて、前記学習データの圧縮に用いる圧縮パラメータを調整し、
前記第２識別結果に基づいて、前記圧縮データの復号に用いる復号パラメータを調整する、
学習方法。
【請求項９】
コンピュータに、
正常データに適合する圧縮パラメータを用いて入力データを圧縮させ、
前記入力データを圧縮することにより生成された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比とに基づいて、前記入力データの第１異常を検知させ、
前記正常データに適合する復号パラメータを用いて、前記入力データを圧縮することにより生成された圧縮データを復号させ、
前記圧縮データを復号することにより生成された再構成データと、前記入力データとの差異を算出し、前記差異に基づいて、前記入力データの第２異常を検知させる
異常検知プログラム。
【請求項１０】
コンピュータに、
学習データを圧縮させ、
入力されたデータの分布が、前記学習データを圧縮することによって生成された圧縮データの分布と、事前分布とのいずれの分布であるかを識別させて第１識別結果を出力させ、
前記学習データを圧縮することによって生成された圧縮データを復号させ、
入力されたデータが、前記圧縮データを復号することにより生成された再構成データと、前記学習データとのいずれのデータであるかを識別させて第２識別結果を出力させ、
前記第１識別結果および前記第２識別結果に基づいて、前記学習データの圧縮に用いる圧縮パラメータを調整させ、
前記第２識別結果に基づいて、前記圧縮データの復号に用いる復号パラメータを調整させる、
学習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、異常検知装置、学習装置、異常検知方法、学習方法、異常検知プログラム、および学習プログラムに関する。
【背景技術】
【０００２】
異常検知とは、データに存在する大多数の傾向をモデル化し、本来あるべきではないデータを発見する技術である。機器の故障検知や予測、ネットワークの不正検知など、様々な分野に応用されており、ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）の発展により、さらなる拡大が見込まれている。データの異常を検知するための方法として、オートエンコーダを用いた異常検知方法が知られている。この異常検知方法では、正常データ間における関係性やパターンを利用してデータをできるだけ損失無く圧縮および再構成するモデルを用いて異常の検知を行う。このモデルを用いて正常データを処理した場合、データ損失（再構成誤差）が少ない圧縮および再構成処理が行われるが、異常データを処理した場合、データ損失が大きくなる。この異常検知方法では、このデータ損失の大きさに基づいてデータの異常が検知される。
【０００３】
上記のオートエンコーダは、高次元のデータ中の高密度の低次元多様体をモデル化している。すなわち、圧縮処理においてデータは多様体へ射影され、再構成処理において多様体が高次元空間へ射影される。例えば、図７に示すように、二次元で表されている複数のデータ（プロット）が、圧縮処理により一次元多様体Ａ上に射影される。また、一次元多様体Ａ上に射影されたデータは、再構成処理により二次元空間に射影される。このため、オートエンコーダが検知する異常（再構成誤差）は、データから多様体へのユークリッド距離（例えば、図７に示す距離Ｄ１）に基づいて判定される。例えば、図６に示すデータ番号１の自動車の画像データ（正常データ）をオートエンコーダで処理した場合、元の画像データと、再構成データとの間の再構成誤差が小さいため、正常と判定される。一方、データ番号２の自動車の一部が欠損した画像データ（異常データ）をオートエンコーダで処理した場合、欠損部分が補完された再構成データが生成されるため、元の画像データと、再構成データとの間の再構成誤差が大きくなり異常と判定される。
【０００４】
しかしながら、上記のオートエンコーダによる処理では、多様体上のデータ密度を考慮していないため、データの異常を検知できない場合がある。例えば、図６に示すデータ番号３の高さ方向に圧縮された自動車の画像データ（異常データ）は、データ密度が低い範囲に位置するデータ（例えば、図７に示すデータＢ１）である。この画像データをオートエンコーダで処理した場合、元の画像データと、再構成データとの間の再構成誤差は大きくないため正常と判定されてしまう。また、同様に、図６に示すデータ番号４のドアノブが欠損した自動車の画像データ（異常データ）も正常と判定されてしまう。
【０００５】
また、上記のオートエンコーダによる処理では、再構成誤差を得るために二乗誤差最小化を用いる場合、各データの多様体からの離れ方は一様に正規分布を仮定しているため、正確な再構成誤差を得ることができない場合がある。
【０００６】
その他、学習データを用いた画像処理技術として、自由度の高い事前分布を定義可能な敵対的ネットワーク（Ｇｅｎｅｒａｔｉｖｅ  Ａｄｖｅｒｓａｒｉａｌ  Ｎｅｔｗｏｒｋ：ＧＡＮ）の研究が進められている。このＧＡＮにおいては、事前分布からデータを生成するデコーダと、データが真のデータであるか、生成されたデータであるかを識別する識別器とが用いられる。このＧＡＮはデータ生成モデルであり、事前分布からデータを生成する機能を持つが、データを事前分布に逆変換する機能を持たないため、異常検知には利用できない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第８３５２２１６号明細書
【特許文献２】米国特許出願公開第２０１１／０３１３７２６号明細書
【特許文献３】米国特許出願公開第２００７／０１９２８６３号明細書
【特許文献４】米国特許第７９１７３３５号明細書
【非特許文献】
【０００８】
【非特許文献１】Jinwon Anら，“Variational Autoencoder based Anomaly Detection using Reconstruction Probability”，２０１５年１２月２７日,[online]，[２０１６年９月１日検索]，インターネット＜URL：http://dm.snu.ac.kr/static/docs/TR/SNUDM-TR-2015-03.pdf＞
【非特許文献２】日経Ｒｏｂｏｔｉｃｓ，２０１６年６月号，ｐ４−５
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明が解決しようとする課題は、データの異常検知を高精度で行うことができる異常検知装置、学習装置、異常検知方法、学習方法、異常検知プログラム、および学習プログラムを提供することである。
【課題を解決するための手段】
【００１０】
実施形態の異常検知装置は、エンコーダと、第１識別部と、デコーダと、第２識別部とを持つ。前記エンコーダは、正常データに適合する圧縮パラメータを用いて、入力データを圧縮する。前記第１識別部は、前記エンコーダによって圧縮された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比との和に基づいて、前記入力データの第１異常を検知する。前記デコーダは、前記正常データに適合する復号パラメータを用いて、前記エンコーダによって圧縮された圧縮データを復号する。前記第２識別部は、前記デコーダにより復号された再構成データと、前記入力データとの差異を算出し、前記差異に基づいて、前記入力データの第２異常を検知する。
【図面の簡単な説明】
【００１１】
【図１】実施形態の学習装置および異常検知装置の処理の概要を示すフロー図。
【図２】実施形態の学習装置の一例を示す機能ブロック図。
【図３】実施形態の異常検知装置の一例を示す機能ブロック図。
【図４】実施形態の学習装置の処理の流れの一例を示すフローチャート。
【図５】実施形態の異常検知装置の処理の流れの一例を示すフローチャート。
【図６】オートエンコーダおよび実施形態の異常検知装置による検知結果の一例を示す図。
【図７】オートエンコーダによるデータの圧縮および再構成処理を説明する図。
【発明を実施するための形態】
【００１２】
以下、実施形態の異常検知装置、学習装置、異常検知方法、学習方法、異常検知プログラム、および学習プログラムを、図面を参照して説明する。
【００１３】
図１は、実施形態の学習装置および異常検知装置の処理の概要を示すフロー図である。学習装置１は、データの異常検知を行うための前準備として、正常データの圧縮処理および復号処理（再構成処理）を行うことで、正常データにおけるデータ間の関係性やパターンを把握し、再構成誤差の小さい圧縮および復号処理を行うための手順を学習する。例えば、学習装置１は、学習データＤ１の圧縮および復号処理を行い、学習パラメータＤ１に適合する学習パラメータＰ１を算出する。
【００１４】
学習データＤ１は、例えば、各種センサによって測定されたセンサデータ、各種機器の動作ログデータ、各種数値データ、各種カテゴリカルデータなど、任意のデータを含む。学習データＤ１は、これらの種類のデータの正常データを含んでいる。学習データＤ１は、少量の異常データを含んでいてもよい。以下、学習装置１による上記の学習処理が行われる段階を「学習段階」と称する。
【００１５】
異常検知装置１Ａは、学習装置１によって算出された学習パラメータＰ１を利用して、検知データ（入力データ）Ｄ２の異常検知を行い、検知結果Ｒ１を出力する。この異常検知装置１Ａは、正常データに対しては再構成誤差の小さい圧縮および復号処理を行うことができるが、正常データと異なる傾向のデータ（異常データ）に対して圧縮および復号処理を行った場合にはその再構成誤差が大きくなる。この再構成誤差とは、正常データと、正常データを圧縮した後で復号することで生成される再構成データとの差異を示す。この再構成誤差を把握することで、異常データを検知することができる。以下、この異常検知装置１Ａによる上記の異常検知処理を行う段階を「異常検知段階」と称する。尚、学習装置１および異常検知装置１Ａは、その処理段階に応じて名称を使い分けしたものである。このため、学習装置１および異常検知装置１Ａは同一の装置であってよい。
【００１６】
図２は、実施形態の学習装置１の一例を示す機能ブロック図である。学習装置１は、例えば、エンコーダ１０と、デコーダ１２と、第１識別部１４と、第２識別部１６とを備える。
【００１７】
エンコーダ１０は、学習データＤ１を圧縮し、圧縮データを第１識別部１４およびデコーダ１２に出力する。また、エンコーダ１０は、第１識別部１４から入力された識別結果に基づいて、学習データＤ１に適合するように圧縮処理に利用するパラメータ（圧縮パラメータ）の調整を行う。例えば、エンコーダ１０は、エンコーダ１０により生成された圧縮データの分布と、事前分布との差異が低減するように、圧縮パラメータを調整する。事前分布とは、学習段階前に定義される確率分布であり、正規分布、多項分布、一様分布など、任意の分布が定義される。すなわち、エンコーダ１０は、第１識別部１４が、エンコーダ１０から入力された圧縮データの分布を事前分布であると判定するように、圧縮パラメータを調整する。
【００１８】
デコーダ１２は、エンコーダ１０から入力された圧縮データを復号して再構成データを生成し、再構成データを第２識別部１６に出力する。また、デコーダ１２は、第２識別部１６から入力された識別結果に基づいて、学習データＤ１に適合するように復号処理に利用するパラメータ（復号パラメータ）の調整を行う。例えば、デコーダ１２は、デコーダ１２により生成された再構成データと学習データＤ１との差異が低減するように、復号パラメータを調整する。すなわち、デコーダ１２は、第２識別部１６が、デコーダ１２から入力された再構成データが学習データＤ１であると判定するように、復号パラメータを調整する。
【００１９】
第１識別部１４は、入力されたデータの分布が、エンコーダ１０から入力された圧縮データの分布と、予め準備された事前分布とのいずれの分布であるのかを識別し、識別結果（第１識別結果）をエンコーダ１０に出力する。例えば、第１識別部１４は、ニューラルネットを使用してエンコーダ１０から入力された圧縮データを処理して、最終層データおよび中間層データを生成する。最終層データとは、ニューラルネットの出力値に相当し、中間層データとは、最終層データおよび入力層データ以外の全ての層のデータに相当する。例えば、最終層の一つ手前の層のデータを、中間層データと称する。また、第１識別部１４は、ニューラルネットを使用して事前分布からサンプリングされたデータを処理して、最終層データおよび中間層データを生成する。第１識別部１４は、圧縮データから得られた中間層データと、事前分布からサンプリングされたデータから得られた中間層データとを比較して上記の識別処理を行う。
【００２０】
第２識別部１６は、入力されたデータが、デコーダ１２から入力された再構成データと、上記の圧縮および復号処理が施されていない学習データＤ１とのいずれのデータであるかを識別し、識別結果（第２識別結果）をエンコーダ１０およびデコーダ１２に出力する。例えば、第２識別部１６は、ニューラルネットを使用してデコーダ１２から入力された再構成データを処理して、最終層データおよび中間層データを生成する。また、第２識別部１６は、ニューラルネットを使用して学習データＤ１を処理して、最終層データおよび中間層データを生成する。第２識別部１６は、再構成データから得らえた中間層データと、学習データから得られた中間層データとを比較して上記の識別処理を行う。
【００２１】
エンコーダ１０およびデコーダ１２の各々は、上記の第２識別結果に基づいて、再構成データと学習データＤ１との差異が低減するように、圧縮パラメータおよび復号パラメータを調整する。すなわち、エンコーダ１０およびデコーダ１２の各々は、第２識別部１６がデコーダ１２から入力された再構成データを学習データＤ１と判定するように、圧縮パラメータおよび復号パラメータを調整する。
【００２２】
上記の第１識別部１４による識別処理およびエンコーダ１０によるパラメータの調整処理を複数の学習データに対して繰り返すことで、エンコーダ１０は、正常なデータにおけるデータ間の関係性やパターンを把握し、事前分布に近い分布を持つ圧縮データを生成する圧縮処理を行うための手順を学習する。また、上記の第２識別部１６による識別処理、並びにエンコーダ１０およびデコーダ１２によるパラメータの調整処理を複数の学習データに対して繰り返すことで、エンコーダ１０およびデコーダ１２は、正常なデータにおけるデータ間の関係性やパターンを把握し、再構成誤差の少ない圧縮および復号処理を行うための手順を学習する。
【００２３】
図３は、実施形態の異常検知装置１Ａの一例を示す機能ブロック図である。異常検知装置１Ａは、例えば、上記の学習装置１と同様に、エンコーダ１０と、デコーダ１２と、第１識別部１４と、第２識別部１６とを備える。
【００２４】
エンコーダ１０は、検知データＤ２を圧縮し、圧縮データを第１識別部１４およびデコーダ１２に出力する。例えば、エンコーダ１０は、検知データＤ２を事前分布にエンコードする。これにより、検知データＤ２の事前分布上での対数確率を計算することができる。検知データＤ２は、例えば、各種センサによって測定されたセンサデータ、各種機器の動作ログデータ、各種数値データ、各種カテゴリカルデータなど、任意のデータを含む。
【００２５】
デコーダ１２は、エンコーダ１０から入力された圧縮データを復号して再構成データを生成し、再構成データを第２識別部１６に出力する。
【００２６】
第１識別部１４は、エンコーダ１０から入力された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比との和が所定の閾値（第１閾値）以下である場合には異常（第１異常）と判定し、第１閾値よりも大きい場合には正常と判定する。圧縮データ分布および事前分布の対数密度比は、第１識別部１４の最終層として出力される圧縮データ確率に対する事前分布確率の商の対数として得られる。すなわち、第１識別部１４は、異常データの定義を正常データ分布から見たレアデータとする。データｘの出現確率ｐ（ｘ）をモデル化し、レアデータの検知を行う。第１識別部１４は、異常検知結果を表示部（図示しない）に表示してもよい。また、第１識別部１４は、異常検知結果を外部の管理端末（図示しない）に出力してもよい。
【００２７】
第２識別部１６は、デコーダ１２から入力された再構成データと、検知データＤ２との差異の程度を示す異常度を算出し、この異常度に基づいて、検知データＤ２の異常検知を行う。第２識別部１６は、例えば、この異常度が所定の閾値（第２閾値）以上の場合には異常（第２異常）と判定し、第２閾値未満の場合には正常と判定する。第２識別部１６は、異常検知結果を、図示しない表示部に表示してもよい。また、第２識別部１６は、異常検知結果を外部の管理端末に出力してもよい。
【００２８】
上記の学習装置１および異常検知装置１Ａの各機能部のうち一部または全部は、プロセッサがプログラム（ソフトウェア）を実行することにより実現されてよい。また、学習装置１および異常検知装置１Ａの各機能部のうち一部または全部は、ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）等のハードウェアによって実現されてもよいし、ソフトウェアとハードウェアの組み合わせによって実現されてもよい。
【００２９】
次に、実施形態の学習装置１の動作について説明する。図４は、実施形態の学習装置１の処理の流れの一例を示すフローチャートである。
【００３０】
まず、エンコーダ１０は、例えば、学習データベース（図示しない）に記憶されている複数の学習データＤ１（以下、「学習データ群」と称する）の中から少なくとも１つの学習データＤ１を抽出し、この学習データＤ１の圧縮を行い、圧縮データを第１識別部１４およびデコーダ１２に出力する（ステップＳ１０１）。尚、エンコーダ１０は、学習データベースから上記の学習データＤ１をランダムに抽出してよい。
【００３１】
次に、デコーダ１２は、エンコーダ１０から入力された圧縮データを復号して再構成データを生成し、再構成データを第２識別部１６に出力する（ステップＳ１０３）。
【００３２】
次に、第１識別部１４は、入力されたデータが、エンコーダ１０から入力される圧縮データのベクトルと、予め準備された事前分布からサンプリングされたベクトルとのいずれのベクトルであるのかを識別する（ステップＳ１０５）。例えば、第１識別部１４は、圧縮データをニューラルネットで処理して、最終層データおよび中間層データのベクトルを取得する。また、第１識別部１４は、事前分布からサンプリングされたベクトルをニューラルネットで処理して、最終層データおよび中間層データのベクトルを取得する。次に、第１識別部１４は、圧縮データの中間層データのベクトルの平均と、事前分布からサンプリングされたベクトルの中間層データのベクトルの平均との差分（例えば、差分の二乗）を算出する。この差分は以下の式（１）によって表される。
【００３３】
【数１】
2018049355.tif 000003
上記式（１）において、ｍｅａｎ（ｆｓ）は圧縮データの中間層データのベクトルの平均を示し、ｍｅａｎ（ｆ’ｓ）は事前分布からサンプリングされたベクトルの中間層データのベクトルの平均を示し、ｓｍｓｅがこれらの差分を二乗した値を示す。
【００３４】
次に、第２識別部１６は、入力されたデータが、デコーダ１２から入力された再構成データと、圧縮および復号処理が施されていない学習データＤ１とのいずれのデータであるのかを識別する（ステップＳ１０７）。例えば、第２識別部１６は、学習データＤ１をニューラルネットで処理して、最終層データおよび中間層データのベクトルを取得する。また、第２識別部１６は、再構成データをニューラルネットで処理して、最終層データおよび中間層データのベクトルを取得する。次に、第２識別部１６は、学習データＤ１の中間層データのベクトルと、再構成データの中間層データのベクトルとの差分（例えば、差分の二乗）を算出する。この差分は以下の式（２）によって表される。
【００３５】
【数２】
2018049355.tif 000004
上記式（２）において、ｆは学習データＤ１の中間層データのベクトルを示し、ｆ’は再構成データの中間層データのベクトルを示し、ｍｓｅがこれらの差分を二乗した値を示す。
【００３６】
さらに、第２識別部１６は、事前分布からサンプリングされたベクトルを圧縮することにより得られた圧縮データをニューラルネットで処理して、最終層データおよび中間層データのベクトルを取得する。次に、第２識別部１６は、学習データＤ１をニューラルネットで処理することにより得られた中間層データのベクトルの平均と、事前分布からサンプリングされたベクトルを圧縮することにより得られた圧縮データの中間層データのベクトルの平均との差分（例えば、差分の二乗）を算出する。この差分は以下の式（３）によって表される。
【００３７】
【数３】
2018049355.tif 000005
上記式（３）において、ｍｅａｎ（ｆ）は学習データＤ１の中間層データのベクトルの平均を示し、ｍｅａｎ（ｆ’’）は事前分布からサンプリングされたベクトルの圧縮データの中間層データのベクトルの平均を示し、ｆｍｍｓｅがこれらの差分を二乗した値を示す。
【００３８】
次に、エンコーダ１０およびデコーダ１２の各々は、上記の式（１）から（３）に基づて定義された損失関数を用いて、圧縮パラメータおよび復号パラメータを調整する（ステップＳ１０９）。損失関数ｌｏｓｓＡＥは、以下の式（４）によって表される。βおよびγは損失関数の相対的重要度を定義する重みである。
【００３９】
【数４】
2018049355.tif 000006
【００４０】
エンコーダ１０は、第１識別部１４から入力された第１識別結果に基づいて、圧縮データの分布が、事前分布に近付くように、圧縮パラメータを調整する。すなわち、エンコーダ１０は、第１識別部１４がエンコーダ１０から入力される圧縮データを事前分布からサンプリングされたベクトルであると判定するように、圧縮パラメータを調整する。また、エンコーダ１０およびデコーダ１２の各々は、第２識別部１６から入力された第２識別結果に基づいて、デコーダ１２によって生成される再構成データと、圧縮および復号処理が施されていない学習データＤ１との差異が低減するように、圧縮パラメータおよび復号パラメータを調整する。すなわち、エンコーダ１０およびデコーダ１２の各々は、第２識別部１６がデコーダ１２から入力された再構成データを学習データＤ１と判定するように、圧縮パラメータおよび復号パラメータを調整する。
【００４１】
パラメータの調整処理においては、上記の損失関数ｌｏｓｓＡＥを低減させるように、例えば、以下の式（５）から（８）を用いて圧縮パラメータおよび復号パラメータが調整される。
【００４２】
【数５】
2018049355.tif 000007
上記式（５）において、Ｗｅｎｃは、エンコーダ１０のニューラルネットの持つ重みパラメータ(コネクションの強さ)であり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、損失関数ｌｏｓｓＡＥを低減させるＷｅｎｃの勾配を求めている。この勾配方向にα値をかけて、Ｗｅｎｃを更新する。このＷｅｎｃの勾配計算および更新処理においては、確率的勾配降下法(Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：ＳＧＤ)と呼ばれる学習処理を使用してもよいし、その他の学習アルゴリズムを使用してもよい。
【００４３】
【数６】
2018049355.tif 000008
上記式（６）において、Ｗｄｅｃはデコーダ１２のニューラルネットの持つ重みパラメータ(コネクションの強さ)であり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、損失関数ｌｏｓｓＡＥを低減させるＷｄｅｃの勾配を求めている。この勾配方向にα値をかけて、Ｗｄｅｃを更新する。
【００４４】
【数７】
2018049355.tif 000009
上記式（７）において、ｂｅｎｃはバイアスであり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、損失関数ｌｏｓｓＡＥを低減させるｂｅｎｃの勾配を求めている。この勾配方向にα値をかけて、ｂｅｎｃを更新する。
【００４５】
【数８】
2018049355.tif 000010
上記式（８）において、ｂｄｅｃはバイアスであり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、損失関数ｌｏｓｓＡＥを低減させるｂｄｅｃの勾配を求めている。この勾配方向にα値をかけて、ｂｄｅｃを更新する。
【００４６】
さらに、上記のパラメータの調整処理の後、第１識別部１４および第２識別部１６の学習損失を低減させるように、第１識別部１４および第２識別部１６のパラメータが調整される。第１識別部１４の学習損失ｌｏｓｓｓｍａｌｌｄｉｓおよび第２識別部１６の学習損失ｌｏｓｓｄｉｓは、例えば、以下の式（９）および（１０）によって表される。
【００４７】
【数９】
2018049355.tif 000011
上記式（９）において、−ｌｏｇｙｓ［０］は、第１識別部１４が、入力された圧縮データを圧縮データとして識別できるほど小さくなる項であり、−ｌｏｇｙｓ’［１］は、事前分布からサンプリングされたベクトルをこのベクトルとして識別できるほど小さくなる項である。第１識別部１４は、この学習損失ｌｏｓｓｓｍａｌｌｄｉｓを最小化するようにパラメータの調整を行う。ｙｓ［０］およびｙｓ’［１］はプログラムで扱う際のベクトルのインデックスあり、第１識別部１４が出力する二次元ベクトルｙｓの１次元目および２次元目に対応する。
【００４８】
【数１０】
2018049355.tif 000012
上記式（１０）において、−ｌｏｇｙ［０］は、第２識別部１６が、入力された学習データＤ１を学習データＤ１として識別できるほど小さくなり項であり、−ｌｏｇｙ’［１］は、再構成データを再構成データとして識別できるほど小さくなる項である。第２識別部１６は、この学習損失ｌｏｓｓｄｉｓを最小化するようにパラメータの調整を行う。ｙ［０］およびｙ’［１］はプログラムで扱う際のベクトルのインデックスあり、第２識別部１６が出力する二次元ベクトルｙの１次元目および２次元目に対応する。
【００４９】
上記の第１識別部１４および第２識別部１６における調整処理においては、上記の学習損失ｌｏｓｓｓｍａｌｌｄｉｓおよび学習損失ｌｏｓｓｄｉｓを低減させるように、例えば、以下の式（５）から（８）を用いてパラメータが調整される。
【００５０】
【数１１】
2018049355.tif 000013
上記式（１１）において、Ｗｓｍａｌｌｄｉｓは、第１識別部１４のニューラルネットの持つ重みパラメータ(コネクションの強さ)であり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、学習損失ｌｏｓｓｓｍａｌｌｄｉｓを低減させるＷｓｍａｌｌｄｉｓの勾配を求めている。この勾配方向にα値をかけて、Ｗｓｍａｌｌｄｉｓを更新する。
【００５１】
【数１２】
2018049355.tif 000014
上記式（１２）において、Ｗｄｉｓは、第２識別部１６のニューラルネットの持つ重みパラメータ(コネクションの強さ)であり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、学習損失ｌｏｓｓｄｉｓを低減させるＷｄｉｓの勾配を求めている。この勾配方向にα値をかけて、Ｗｄｉｓを更新する。
【００５２】
【数１３】
2018049355.tif 000015
上記式（１３）において、ｂｓｍａｌｌｄｉｓはバイアスであり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、学習損失ｌｏｓｓｓｍａｌｌｄｉｓを低減させるｂｓｍａｌｌｄｉｓの勾配を求めている。この勾配方向にα値をかけて、ｂＳｍａｌｌｄｉｓを更新する。
【００５３】
【数１４】
2018049355.tif 000016
上記式（１４）において、ｂｄｉｓはバイアスであり、αは係数（例えば、０以上１以下の係数）である。右辺の微分計算は、学習損失ｌｏｓｓｄｉｓを低減させるｂｄｉｓの勾配を求めている。この勾配方向にα値をかけて、ｂｄｉｓを更新する。
【００５４】
次に、エンコーダ１０は、学習データベースに記憶されている学習データＤ１の抽出が完了したか否かを判定する（ステップＳ１１１）。エンコーダ１０は、学習データＤ１の抽出が完了していないと判定した場合、残りの学習データＤ１のうちの少なくとも１つを抽出し、上述の圧縮および復号処理、並びにパラメータ調整処理を行う。一方、エンコーダ１０は、学習データＤ１の抽出が完了したと判定した場合、上記の学習データ群に対する１回の学習処理サイクルが完了したと判断し、学習処理の回数を計数する。例えば、エンコーダ１０は、内部に設けられたメモリ（図示しない）上に設定された処理回数計測用のパラメータをインクリメントすることで、上記の学習処理の回数を計数する。
【００５５】
次に、エンコーダ１０は、上記の学習処理の回数が、所定の処理回数に到達したか否かを判定する（ステップＳ１１３）。エンコーダ１０は、上記の学習処理の回数が、所定の処理回数未満であると判定した場合、上記の学習データ群に対する学習処理を再度行う。このように、同一の学習データ群に対して学習処理を繰り返すことで、パラメータ調整の精度を向上させることができる。一方、エンコーダ１０は、上記の学習処理の回数が、所定の処理回数以上であると判定した場合、本フローチャートの処理を終了する。
【００５６】
尚、上記の学習装置１における学習処理においては、多層構造のニューラルネットワーク（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＤＮＮ）、畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＣＮＮ）、再帰型ニューラルネットワーク（Ｒｅｃｕｒｒｅｎｔ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＲＮＮ）を採用してもよい。
【００５７】
次に、実施形態の異常検知装置１Ａの動作について説明する。図５は、実施形態の異常検知装置１Ａの処理の流れの一例を示すフローチャートである。図６は、実施形態の異常検知装置１Ａによる検知結果の一例を示す図である。
【００５８】
まず、エンコーダ１０は、検知データＤ２を圧縮し、圧縮データを第１識別部１４およびデコーダ１２に出力する（ステップＳ２０１）。
【００５９】
次に、第１識別部１４は、エンコーダ１０から入力された圧縮データの異常検知を行う（ステップＳ２０３）。例えば、第１識別部１４は、エンコーダ１０から入力された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比との和が所定の閾値（第１閾値）以下である場合には異常（第１異常）と判定し、第１閾値よりも大きい場合には正常と判定する。圧縮データ分布および事前分布の対数密度比は、第１識別部１４の最終層として出力される圧縮データ確率に対する事前分布確率の商の対数として得られる。
【００６０】
この第１識別部１４による異常検知処理においては、多様体上の密度を考慮し、多様体上の密度が低い範囲に位置するデータを異常と判定し、多様体上の密度が高い範囲に位置するデータを正常と判定する。例えば、エンコーダ１０が、図６に示すデータ番号１の自動車の画像を示すデータ（正常データ）の圧縮データを第１識別部１４に出力した場合、この圧縮データは多様体上の密度が高い範囲に位置するデータであるため、第１識別部１４は、この圧縮データを正常と判定する。一方、図６に示すデータ番号３の自動車の高さ方向に圧縮された画像を示すデータ（異常データ）は、多様体上の密度が低い範囲に位置するデータである。エンコーダ１０が、この画像データの圧縮データを第１識別部１４に出力した場合、この圧縮データは多様体上の密度が第１閾値よりも低いため、第１識別部１４はこの圧縮データを異常と判定する。
【００６１】
次に、デコーダ１２は、エンコーダ１０から入力された圧縮データを復号して再構成データを生成し、再構成データを第２識別部１６に出力する（ステップＳ２０５）。
【００６２】
次に、第２識別部１６は、デコーダ１２から入力された再構成データと、検知データＤ２との差異の程度を示す異常度を算出し、この異常度に基づいて、データの異常検知を行う（ステップＳ２０７）。第２識別部１６は、例えば、この異常度が所定の閾値（第２閾値）以上の場合には異常（第２異常）と判定し、第２閾値未満の場合には正常と判定する。
【００６３】
例えば、エンコーダ１０が、検知データＤ２として図６に示すデータ番号１の自動車の画像を示すデータ（正常データ）を圧縮し、デコーダ１２が圧縮データを復号して第２識別部１６に出力した場合、この再構成データは検知データＤ１と同様なデータであるため、第２識別部１６は、この検知データＤ２を正常と判定する。一方、エンコーダ１０が、検知データＤ２として図６に示すデータ番号２の自動車の一部が欠損した画像を示すデータ（異常データ）や、データ番号４の自動車のドアノブが無い画像を示すデータ（異常データ）のデータを圧縮し、デコーダ１２が圧縮データを復号して第２識別部１６に出力した場合、この再構成データと検知データＤ１との差異が大きい（異常度が第２閾値よりも高い）データであるため、第２識別部１６は、この検知データＤ２を異常と判定する。以上により、本フローチャートの処理を終了する。
【００６４】
以上説明した少なくとも一つの実施形態によれば、正常データに適合する圧縮パラメータを用いて、入力データを圧縮するエンコーダと、前記エンコーダによって圧縮された圧縮データの事前分布上の対数確率密度と、圧縮データ分布および事前分布の対数密度比とに基づいて、前記入力データの第１異常を検知する第１識別部と、前記正常データに適合する復号パラメータを用いて、前記エンコーダによって圧縮された圧縮データを復号するデコーダと、前記デコーダにより復号された再構成データと、前記入力データとの差異を算出し、前記差異に基づいて、前記入力データの第２異常を検知する第２識別部とを備えることにより、データの異常検知を高精度で行うことができる。
【００６５】
また、上述した実施形態における学習装置１および異常検知装置１Ａの一部の機能をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な情報記録媒体に記録する。そして、上述したプログラムを記録した情報記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、オペレーティングシステムや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な情報記録媒体」とは、可搬媒体や記憶装置等のことをいう。可搬媒体は、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等である。また、記憶装置は、コンピュータシステムに内蔵されるハードディスク等である。
【００６６】
さらに「コンピュータ読み取り可能な情報記録媒体」とは、通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するものである。通信回線は、インターネット等のネットワークや電話回線等である。また、「コンピュータ読み取り可能な情報記録媒体」は、サーバやクライアントとなるコンピュータシステム内部の揮発性メモリであってもよい。揮発性メモリは、一定時間プログラムを保持しているものである。また上記プログラムは、前述した機能の一部を実現するためのものであってもよい。また上記プログラムは、さらに前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるものであってもよい。
【００６７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００６８】
１…学習装置、１Ａ…異常検知装置、１０…エンコーダ、１２…デコーダ、１４…第１識別部、１６…第２識別部
【図１】
2018049355.tif 000017
【図２】
2018049355.tif 000018
【図３】
2018049355.tif 000019
【図４】
2018049355.tif 000020
【図５】
2018049355.tif 000021
【図６】
2018049355.tif 000022
【図７】
2018049355.tif 000023