(57)【特許請求の範囲】
【請求項１】
時系列データを、学習区間とテスト区間に分割するデータ分割部と、
前記時系列データのうち前記学習区間の部分列を学習データとして生成する部分列生成部と、
前記学習データを用いて、前記テスト区間のデータ点に対応する確率分布を求める予測分布算出部と、
前記確率分布を用いて異常を検知する異常検知部と、
を備え、
前記学習区間は、前記テスト区間より、前記時系列データに対応する時刻が前となる区間であり、
前記予測分布算出部は、前記確率分布として、前記学習区間の次のデータ点に対応する確率分布を求め、
前記部分列生成部は、前記学習区間を、対応する時刻が後の時刻へずれるように更新し、更新後の学習区間に対応する部分列を更新後の学習データとして生成し、
前記予測分布算出部は、前記更新後の学習データを用いて、前記更新後の学習区間の次のデータ点である更新点の確率分布を求め、
前記更新後の学習区間は、前記確率分布に応じて算出される前記テスト区間の予測値を含むことを特徴とする異常検知装置。
【請求項２】
前記確率分布に基づいて、前記テスト区間のデータ点に対応する信用区間を算出する信用区間算出部と、
前記信用区間を用いて、前記学習データと前記テスト区間の前記時系列データとの間の外れ度合いを示す異常度スコアを算出する異常度スコア算出部と、
を備え、
前記異常検知部は、前記異常度スコアに基づいて異常を検知することを特徴とする請求項１に記載の異常検知装置。
【請求項３】
前記信用区間算出部は、前記更新点の確率分布に基づいて、前記更新点の信用区間を算出し、
前記異常度スコア算出部は、前記テスト区間の複数のデータ点に対応する前記信用区間
と、前記テスト区間の前記時系列データとに基づいて前記異常度スコアを算出することを特徴とする請求項２に記載の異常検知装置。
【請求項４】
異常度スコア算出部は、前記テスト区間の前記時系列データのうち、対応する前記信用区間内に存在しないデータの点数に基づいて、前記異常度スコアを算出することを特徴とする請求項３に記載の異常検知装置。
【請求項５】
前記異常度スコア算出部は、前記予測分布算出部で算出された確率分布の分散に基づいて、前記異常度スコアを算出することを特徴とする請求項２から４のいずれか１つに記載の異常検知装置。
【請求項６】
異常検知装置における異常検知方法であって、
時系列データを、学習区間とテスト区間に分割する第１のステップと、
前記時系列データのうち前記学習区間の部分列を学習データとして生成する第２のステップと、
前記学習データを用いて、前記テスト区間のデータ点に対応する確率分布を求める第３のステップと、
前記確率分布を用いて異常を検知する第４のステップと、
を含み、
前記学習区間は、前記テスト区間より、前記時系列データに対応する時刻が前となる区間であり、
前記第３のステップでは、前記確率分布として、前記学習区間の次のデータ点に対応する確率分布を求め、
前記異常検知方法は、
前記学習区間を、対応する時刻が後の時刻へずれるように更新し、更新後の学習区間に対応する部分列を更新後の学習データとして生成する第５のステップと、
前記更新後の学習データを用いて、前記更新後の学習区間の次のデータ点である更新点の確率分布を求める第６のステップと、
を含み、
前記更新後の学習区間は、前記確率分布に応じて算出される前記テスト区間の予測値を含むことを特徴とする異常検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工場、化学プラント、鉄鋼プラント等の設備をはじめとした異常検知の対象物の異常を判定する異常検知装置および異常検知方法に関する。
【背景技術】
【０００２】
工場、ビルといった設備では、該設備内の空調設備、電気照明等といった機器を制御するための制御システムが導入されている。火力、水力および原子力をはじめとした発電プラント、化学プラント、鉄鋼プラント等の設備でも、プロセスを制御するための制御システムが導入されている。また、工場の設備、自動車、鉄道車両等には、これらの設備の状態を記録するためのロギングシステムが搭載されている場合が多い。設備の状態は、設備が備える機器の状態、設備内または設備外の環境を示す状態などを含む。ロギングシステムおよび制御システムでは、一般に、センサによって計測された、時間の経過に応じた設備の状態を示す時系列データが蓄積されている。【０００３】
従来から、上記時系列データの変化を分析して、上記設備などの異常検知の対象物の異常を検知することが行われている。例えば、特許文献１には、時系列データから特徴を抽出し、抽出した特徴と、異常を含まないトレーニングデータから抽出された特徴との距離が、閾値を超える場合に異常と判定する異常検出手法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１１０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一方、設備内の機器によって、または状態を計測するセンサによって、時系列データの傾向が異なる場合がある。このため、上記特許文献１に記載の手法のように閾値を用いた判定を行う場合、機器およびセンサごとに、閾値の評価および検証が必要となるという課題がある。また、この閾値の評価および検証は、熟練オペレータの知見、設備設計者の知見等の外部情報が必要となるため、オペレータおよび設計者の負荷が高くかつ時間を要する。このため、閾値の設定のための作業負荷を抑制することが望まれる。【０００６】
本発明は、上記に鑑みてなされたものであって、閾値の設定のための作業負荷を抑制して、異常検知の対象物の異常を検知することができる異常検知装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明にかかる異常検知装置は、時系列データを、学習区間とテスト区間に分割するデータ分割部と、時系列データのうち学習区間の部分列を学習データとして生成する部分列生成部と、を備える。また、異常検知装置は、学習データを用いて、テスト区間のデータ点に対応する確率分布を求める予測分布算出部と、確率分布を用いて異常を検知する異常検知部と、備える。学習区間は、テスト区間より、時系列データに対応する時刻が前となる区間であり、予測分布算出部は、確率分布として、学習区間の次のデータ点に対応する確率分布を求め、部分列生成部は、学習区間を、対応する時刻が後の時刻へずれるように更新し、更新後の学習区間に対応する部分列を更新後の学習データとして生成し、予測分布算出部は、更新後の学習データを用いて、更新後の学習区間の次のデータ点である更新点の確率分布を求め、更新後の学習区間は、確率分布に応じて算出されるテスト区間の予測値を含む。
【発明の効果】
【０００８】
本発明にかかる異常検知装置は、閾値の設定のための作業負荷を抑制して、異常検知の対象物の異常を検知することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態にかかる異常検知装置の機能構成例を示す図
【図２】異常検知装置を実現するコンピュータシステムの構成例を示す図
【図３】時系列データの一例を示す図
【図４】時系列データの一例を示す図
【図５】時系列データの一例を示す図
【図６】異常検知装置における異常検知処理手順の一例を示すフローチャート
【図７】ガウス分布の一例を示す図
【図８】学習区間の更新の様子を示す図
【図９】テスト区間の各時点の信用区間と異常度スコアの一例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる異常検知装置および異常検知方法を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態．
図１は、本発明の実施の形態にかかる異常検知装置の機能構成例を示す図である。図１に示すように、本実施の形態の異常検知装置１００は、データ取得部１０１、データ分割部１０２、部分列生成部１０３、予測分布算出部１０４、信用区間算出部１０５、異常度スコア算出部１０６および異常検知部１０７を備える。
【００１２】
本実施の形態の異常検知装置１００は、異常検知の対象物の状態を示す時系列データを取得し、取得した時系列データに基づいて、異常検知の対象物の異常を検知する。異常検知の対象物としては、工場、化学プラント、鉄鋼プラント、上下水道プラントをはじめとした設備、自動車、鉄道車両、経済または経営等に関するデータを例示することができる。時系列データは、複数の異なる時間にそれぞれ対応するデータを含むデータ列であり、データの時間変化が把握可能なデータ列である。時系列データは、どのようなものでも良く、例えば、複数の異なる時間にそれぞれ観測されたデータを含むデータ列であってもよいし、複数の異なる時間にそれぞれ観測されたデータがデータ処理された結果を含むデータ列であってもよい。また、時系列データは、制御に用いられたフィードバックデータなどであってもよい。すなわち、時系列データは、異なる時刻に対応する複数のデータ点を含む。なお、以下では、データ点は、時刻を示す時刻情報と該時刻に対応するセンサ値などの値とを、２次元座標系で表したときの１点に対応する。例えば、時系列データは、一定時間間隔でセンサにより計測されたセンサ値が、センサ値の取得時刻とともに、並べられたデータである。センサは、例えば、設備、機器等の温度を計測する温度センサ、工場の機械装置などが備えるモータの回転位置を検出するセンサ、工場の機械装置の加速度などを計測する力覚センサ、電流センサ、電圧センサ等である。経済または経営等に関する時系列データとしては、為替、株価、先物価格の時系列データが例示される。これらのデータの異常としては、例えば価格の急落といった異常が例示される。
【００１３】
時系列データは、例えば、工場のラインの機器である加工機、ロボットポンプ等の製造装置、自動車、鉄道車両などの機器に蓄積されていてもよいし、工場、ビル等の空調設備、電気、照明、給排水等の制御システムに蓄積されているデータであってもよい。また、時系列データは、火力、水力、原子力等の発電プラント、化学プラント、鉄鋼プラント、上下水道プラント等のプロセスを制御するための制御システムに蓄積されているデータであってもよい。さらに、時系列データは、経済または経営等に関する情報システムに蓄積されているデータであっても良い。
【００１４】
図１の説明に戻る。異常検知装置１００のデータ取得部１０１は、異常検知処理に用いる設定等のデータの入力を受け付ける。データ取得部１０１は、時系列データの入力を受け付けてもよい。データ分割部１０２は、時系列データを後述する学習区間とテスト区間に分割する。部分列生成部１０３は、時系列データのうち学習区間の部分列である学習データを生成する。
【００１５】
予測分布算出部１０４は、学習データに基づいて、テスト区間のデータ点に対応する確率分布を求める。信用区間算出部１０５は、確率分布に基づいて、テスト区間のデータ点に対応する信用区間を算出する。異常度スコア算出部１０６は、信用区間と、テスト区間の時系列データとの間の外れ度合いを示す異常度スコアを算出する。異常検知部１０７は、予測分布算出部１０４により算出された確率分布を用いて異常を検知する。異常検知部１０７は、例えば、異常度スコアに基づいて異常を検知する。異常検知装置１００の各部の動作の詳細は後述する。
【００１６】
ここで、異常検知装置１００のハードウェア構成について説明する。異常検知装置１００は、コンピュータシステムにより実現される。図２は、異常検知装置１００を実現するコンピュータシステムの構成例を示す図である。このコンピュータシステムは、コンピュータ２０と、コンピュータ２０に接続される入力装置２０９およびディスプレイ２１０とを備える。
【００１７】
コンピュータ２０は、プロセッサ２０１、補助記憶装置２０２、メモリ２０３、入力インタフェース（以下、Ｉ／Ｆと略す）２０４、ディスプレイＩ／Ｆ２０５、警報出力装置２０６およびネットワークＩ／Ｆ２０７を備える。プロセッサ２０１は、信号線２０８を介して、補助記憶装置２０２、メモリ２０３、入力Ｉ／Ｆ２０４，ディスプレイＩ／Ｆ２０５、警報出力装置２０６およびネットワークＩ／Ｆ２０７と接続される。プロセッサ２０１は、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等である。補助記憶装置２０２およびメモリ２０３は、ＲＡＭ（Random  Access  Memory），ＲＯＭ（Read  Only  Memory），ＨＤＤ（Hard  Disk  Drive）等である。
【００１８】
入力Ｉ／Ｆ２０４は、ケーブル２１１を介して、入力装置２０９に接続される。入力Ｉ／Ｆ２０４は、入力装置２０９との間でデータのやりとりをするための回路である。入力装置２０９は、ユーザからの入力を受け付ける装置であり、キーボード、マウス等を含む。
【００１９】
ディスプレイＩ／Ｆ２０５は、ケーブル２１２を介して、ディスプレイ２１０に接続される。ディスプレイＩ／Ｆ２０５は、ディスプレイ２１０との間でデータのやりとりをするための回路である。なお、入力装置２０９とディスプレイ２１０は一体化されて、タッチパネルにより実現されてもよい。ディスプレイ２１０は、出力装置の一例であるが、ディスプレイ２１０に加えてプリンタなどの出力装置が、当該出力装置のＩ／Ｆを介して接続されていてもよい。
【００２０】
警報出力装置２０６は、ＬＥＤ（Light  Emitting  Diode）パイロットランプをはじめとした表示灯、スピーカー等である。なお、図２では、警報出力装置２０６がコンピュータ２０内に設けられる例を示しているが、これに限らず、警報出力装置２０６は、ディスプレイ２１０と同様にコンピュータ２０の外部に設けられて、ケーブルを介してコンピュータ２０と接続されていてもよい。
【００２１】
ネットワークＩ／Ｆ２０７は、外部と通信を行うための通信回路であり、有線回線または無線回線を介して、図示しないネットワークに接続される。ネットワーク上には、図示しないコンピュータ、データベースを有するデータベースサーバ等の他の装置が接続される。ネットワークＩ／Ｆ２０７は、他の装置との間で電子メールの送受信を行ったり、他の装置のデータベースに格納されているデータを受信したり、他の装置のデータベースへ格納するためにデータを他の装置へ送信したりする。
【００２２】
図１に示した異常検知装置１００の各機能部の機能は、ソフトウエア、ファームウエア、またはソフトウエアとファームウエアとの組み合わせにより実現される。異常検知装置１００の各機能部の機能を実現するためのソフトウエア、ファームウエア、またはソフトウエアとファームウエアは、プログラムとして記述される。このプログラムは、補助記憶装置２０２に記憶されている。このプログラムは、各機能部の手順または方法をコンピュータ２０に実行させるものである。詳細には、プロセッサ２０１がプログラムを実行することにより、図１に示した異常検知装置１００の各機能部が実現される。なお、図１に示した異常検知装置１００の各機能部のうちデータ取得部１０１の機能の実現には入力装置２０９も用いられる。また、異常検知部１０７の機能の実現には、ディスプレイ２１０および警報出力装置２０６の内の少なくとも１つが用いられる。このプログラムは、記録媒体または通信媒体により提供されて、補助記憶装置２０２に記憶されてもよい。
【００２３】
上述した時系列データは、補助記憶装置２０２に記憶されている。例えば、時系列データは、他の装置から送信され、ネットワークＩ／Ｆ２０７を介して補助記憶装置２０２に記憶される。または、時系列データは記録媒体に記録され、記録媒体から読み出されることにより、補助記憶装置２０２に記憶されてもよいし、入力装置２０９を介してユーザから入力されてもよい。
【００２４】
補助記憶装置２０２に記憶されているプログラムは、補助記憶装置２０２からメモリ２０３にロードされ、プロセッサ２０１に読み込まれることにより実行される。プログラムが実行されることにより、図１に示す各機能部の機能が実現される。また、プログラムの実行時には、時系列データ等のプログラムの実行に用いられるデータも補助記憶装置２０２からメモリ２０３にロードされる。プログラムの実行結果は、メモリ２０３に書き込まれ、プログラムの記述内容に応じて、補助記憶装置２０２に記憶されたり、ディスプレイＩ／Ｆ２０５を介してディスプレイ２１０に表示されたり、ネットワークＩ／Ｆ２０７を介してネットワーク上の他の装置に送信されたりする。
【００２５】
入力装置２０９は、後述するデータ分割割合等の異常検知装置１００の処理において用いられる設定情報をユーザから受け付ける。また、入力装置２０９は、時系列データ処理の開始要求、終了要求といった処理に関する指示をユーザから受け付ける。入力装置２０９が受け付けた設定情報は、入力Ｉ／Ｆ２０４を介して補助記憶装置２０２に記憶される。入力装置２０９が受け付けた指示は、入力Ｉ／Ｆ２０４を介してプロセッサ２０１に入力される。
【００２６】
次に、本実施の形態の異常検知方法について説明する。以下では、時系列データとして、工場のライン上で連続稼働する製造装置に備え付けられた、複数種類のセンサにより計測されたデータを例に挙げて説明する。すなわち、異常検知の対象物が製造装置である例を説明する。なお、上述したとおり、時系列データは、センサにより計測されたデータに限定されない。
【００２７】
図３から図５は、時系列データの一例を示す図である。図３から図５に示したセンサ値３０３は、工場のライン上で連続稼働する製造装置に備え付けられた複数種類のセンサにより一定周期で計測されたデータであるセンサ値である。センサ値３０３は、各データが取得された時刻を示す時刻情報３０１と対応付けられている。図３から図５に示した例では、時刻情報３０１とセンサ値３０３の組が時系列データである。図３から図５に示した例では、複数種類のセンサは、加速度センサＡを含む。センサ値は、加速度センサＡによる計測値に限定されず、製造装置の電流、電圧、振動、加速度、圧力等の計測値を例示することができる。
【００２８】
図３から図５では、センサ値３０３の各データが取得された時刻を示す時刻情報３０１と、製造装置の制御の条件を示す制御情報３０２と、がセンサ値３０３とともに示されている。制御情報３０２は、例えば、製造する製品の数である製品製造数、製造条件に関する指令値であるレシピ情報である。指令値は、例えば、異常検知の対象物が、回転する機構の場合にはモータの速度の指令値、溶接する装置の場合には溶接時の温度の指令値、レーザ加工機の場合にはレーザ出力電圧の指令値である。レシピ情報について説明する。製品によって、指令値を何段階かに分けて変更することがある。ここでは、いくつかの指令値変更パターン、処理条件の集合などをレシピと呼ぶ。回転する機構の例として、半導体製造における真空ポンプを挙げる。真空ポンプでは、モータを回転させることにより空気を排出して真空状態を作る。半導体を製造時に、薬品、ガスなどをウエハに塗布する。製品種類によって、薬品、ガスなどの種類が異なる。製品によって薬品、ガスなどの塗布タイミングが異なり、また製品によってモータの回転速度が異なる。例えば、ガス投入前はモータの回転速度はＡとし、ガス投入時はモータの回転速度はＢとる、ガス投入後はモータの回転速度をＣとする。これらの手順をレシピと呼ぶ。レシピ情報は、これらの手順を示す情報である。図３から図５に示した例では、制御情報３０２は指令値１を含む。ここでは、制御情報３０２が、時系列データである時刻情報３０１およびセンサ値３０３とともに、状態情報として記録されているとする。状態情報は例えば製造装置を制御する制御装置が記録しており、異常検知装置１００がこの制御装置からネットワークを介して取得する。
【００２９】
図３から図５に示した例では、時刻情報３０１が時刻により示されているが、時刻情報は、時刻自体を示すものに限定されず、機械的に振られた連続する番号であったり、行列の行番号などの数値であったりしてもよい。また、時系列データが定期的に取得され欠損がないことが明らかなデータである場合には、取得時刻順にデータが並んでいれば、時刻情報がセンサごとに付加されていなくてもよい。この場合、時系列データの開始時刻については、例えば、時系列データが含まれるデータファイルのファイル名に記載される等により別に管理され、各センサ値の取得間隔を示す情報が管理されていれば、開始時刻と、データが時系列データの何番目のデータであるかにより、各データの取得時刻がわかる。時刻情報はこのようにデータ点ごとに付加されているのではなく、間接的に与えられていてもよい。
【００３０】
なお、図３では、状態情報を１つのテーブルとして記載しているが、状態情報の形式は図３に示した例に限定されない。例えば、時刻情報と制御情報が１つのテーブルとして作成され、時系列データである時刻情報３０１とセンサ値３０３の組が別の１つのテーブルとして作成されていてもよい。また、時系列データもセンサの種別ごとに別のテーブルとして作成されていてもよい。このように、各情報間の対応付けが可能であれば、状態情報は複数に分割されていてもよい。
【００３１】
また、時系列データは、センサにより計測された計測値そのものではなく要約された要約値であってもよい。工場、ライン、製造装置等によっては、センサにより計測されたデータを一定のルールに沿って要約した値が記録されている場合がある。ここでいう要約とは、元のデータを用いた処理を行うことにより、元のデータよりデータ量の少ないデータを生成することをいう。要約の具体的な処理内容は特に制約はないが、例えば、統計処理、フーリエ変換処理等であってもよい。例えば、センサが毎秒より計測値を取得しており、製造装置の制御装置がこの計測値に基づいて、１時間あたり１つの代表値を生成する。代表値は、１時間分の計測値の平均値であってもよいし、１時間分の計測値の中央値であってもよいし、１時間分の計測値の最頻値であってもよい。また、異常検知装置１００が、センサにより計測された計測値を取得し、取得した計測値を要約して時系列データを生成してもよい。
【００３２】
図３に示した例では、時系列データは１秒おきのデータである。図３に示した例では、指令値１の値は変更されていない。図４および図５に示した例では、時系列データは１時間おきのデータである。図４に示した例では、指令値１が、2018/12/01  14:00:00に２０から４０へ変更され、2018/12/01  16:00:00に４０から８０へ変更され、2018/12/01  17:00:00に８０から２０へ変更されている。このように、生産状況等に応じて指令値が変更されることもある。後述する異常検知処理において、時系列データの傾向を予測しやすいように、指令値に応じてデータを抽出し、指令値ごとの時系列データを用いて異常検知処理を行うことができる。このような場合、同一の動作条件、すなわち指令値１の値が同一のデータを抽出すると、抽出されたデータには欠損が生じる。例えば、図４に示した例で、指令値１の値が２０のものを抽出すると、2018/12/01  14:00:00から2018/12/01  16:00:00までの３つの時点に対応するデータが欠損することになる。
【００３３】
また、設備の稼働状態、通電状態によっては、一定周期で取得されているはずの計測値が取得されなかったり、設備のメンテナンス等で計測自体が行われなかったりすることにより、データに欠落が生じることがある。図５は、時系列データに欠落が生じた例を示している。図５に示した例では、2018/12/01  14:00:00と2018/12/01  15:00:00の２つの時点に対応するデータが欠落している。
【００３４】
図４に示した例で指令値ごとにデータを抽出した場合、および図５に示したように元のデータに欠落が生じている場合などのように時系列データに欠落が生じている場合、異常検知装置１００は、後述するように、補間処理により、欠落したデータを補間してもよい。
【００３５】
図６は、異常検知装置１００における異常検知処理手順の一例を示すフローチャートである。まず、データ取得部１０１は、処理対象の時系列データの選択を受け付ける（ステップＳ１）。上述した通り、複数種類のセンサの計測値が時系列データとして用いられる場合、時系列データはセンサごとには生成される。ステップＳ１では、ユーザから、これらの時系列データのうちどれを処理対象とするかの選択を受け付ける。このとき、データ取得部１０１は、ディスプレイ２１０に、選択可能な時系列データを識別する情報、例えば、時系列データに対応するセンサを示す名称などを表示し、表示された名称のなかからユーザによる選択を受け付けるようにしてもよい。また、処理対象の時系列データとしてセンサの種類だけでなく、処理対象の期間の選択も受け付けるようにしてもよい。ユーザは、入力装置２０９を操作することにより、表示された名称のなかから処理対象とする時系列データに対応する名称を選択する。また、データ取得部１０１は、ステップＳ１で、処理条件の入力も受け付けるようにしてもよい。処理条件としては、例えば、上述したように指令値ごとにデータを抽出した処理をするかを指定することが挙げられる。指令値ごとにデータを抽出した処理をするかが指定された場合には、どの指令値に対応するデータを処理対象とするかも処理条件となる。
【００３６】
ステップＳ１の後、データ取得部１０１は、処理条件に応じた前処理を実施する（ステップＳ２）。処理条件が定められていない場合には、データ取得部１０１は、前処理として、状態情報からステップＳ１で指定された処理対象の時系列データを抽出する処理を行う。また、処理条件としてステップＳ１で指令値ごとにデータを抽出した処理することが指定された場合には、データ取得部１０１は、前処理として、処理対象の時系列データからステップＳ２で指令された指令値に対応するデータを抽出する。また、データ取得部１０１は、時系列データに欠落がある場合、前処理として、補間処理により欠落したデータを補ってもよい。
【００３７】
また、データ取得部１０１は、学習区間とテスト区間の割合を受け付ける（ステップＳ３）。本実施の形態では、後述するように時系列データを学習区間とテスト区間とに分割し、学習区間の時系列データを用いてテスト区間のデータを予測する。ステップＳ３では、データ取得部１０１は、この分割の際に用いる学習区間とテスト区間の割合の入力を、ユーザから受け付ける。学習区間とテスト区間は、データに対応する時間長の比であってもよいし、データ点数の比であってもよいが、ここでは、上述したように時系列データに欠落が有る場合を考慮してデータ点数の比を用いるとする。
【００３８】
次に、データ分割部１０２は、学習区間とテスト区間の割合に基づいて、時系列データを学習区間とテスト区間とに分割する（ステップＳ４）。詳細には、データ分割部１０２は、学習区間とテスト区間の割合に基づいて、時系列データを学習区間とテスト区間とに分割する分割位置を算出する。例えば、処理対象の時系列データのデータ点数がＮａｌｌであり、学習区間とテスト区間の割合が、学習区間：テスト区間がＲｔ：Ｒｄであったとする。このとき、データ分割部１０２は、Ｎａｌｌ個のデータのうち、はじめのＮａｌｌ×（Ｒｔ／（Ｒｔ＋Ｒｄ））個のデータを学習区間とし、学習区間より後の時系列データをテスト区間とする。Ｎａｌｌ×（Ｒｔ／（Ｒｔ＋Ｒｄ））が整数でない場合には、Ｎａｌｌ×（Ｒｔ／（Ｒｔ＋Ｒｄ））に四捨五入、切り捨て、切り上げなどの処理をすることにより、学習区間のデータ点数を決定する。このようにして求めた学習区間のデータ長すなわちデータ点数をｎとし、テスト区間のデータ長をｍとする。ｎ＋ｍ＝Ｎａｌｌである。時系列データのｎ番目とｎ＋１番目の間が学習区間とテスト区間の分割位置となる。このように、学習区間は、テスト区間より、時系列データに対応する時刻が前となる区間である。学習区間のデータ点数、テスト区間のデータ点数を、以下、それぞれ学習データ長、テストデータ長ともいう。データ分割部１０２は、学習データ長、テストデータ長を部分列生成部１０３へ通知する。
【００３９】
次に、部分列生成部１０３は、ステップＳ４の分割結果、すなわちステップＳ４で算出された分割位置に基づいて、学習区間の部分列である学習データを生成する（ステップＳ５）。すなわち、部分列生成部１０３は、時系列データからはじめのｎ点を抽出することにより学習区間の部分列を生成し、時系列データの残りのｍ点を抽出することによりテスト区間の部分列を生成する。部分列生成部１０３は、生成した学習区間の部分列を予測分布算出部１０４へ出力する。なお、後述するように学習区間は後のステップＳ９の処理で更新される。以下では、ステップＳ５で分割された学習区間を初期学習区間ともいう。
【００４０】
次に、予測分布算出部１０４は、学習区間の部分列である学習データを基に、テスト区間のｊ時点の確率分布と予測値を求める（ステップＳ６）。ｊは、初期テスト区間における部分列内のデータの番号を示す自然数であり、初期値は１である。ｊ時点とは、テスト区間における部分列内のｊ番目のデータ点に対応する時点すなわちｊ番目の時刻のことを示す。具体的には、初回のステップＳ６では、予測分布算出部１０４は、初期学習区間の部分列である学習データを基に、学習データの次のデータ点、つまり先頭からｎ＋１点目に相当するテスト区間のｊ番目の時点のデータの確率分布を算出する。したがって、１回目のステップＳ６では、ｊは１である。予測分布算出部１０４は、例えば、ガウス過程回帰（ＧＰＲ：Gaussian  Process  Regression）によるモデルを用いて、学習データに基づき、学習データの次の点における条件付き分布を算出する。
【００４１】
ガウス過程は、ｎ個のデータの集合（ｘ１，ｘ２，…，ｘｎ）について、これらのデータに対応するＹ＝（ｙ１，ｙ２，…，ｙｎ）における同時分布ｐ（Ｙ）がガウス分布に従うものである。回帰問題にガウス過程を適用すること、つまり上記のデータ集合に、ガウス過程を当てはめることがガウス過程回帰である。したがって、ガウス過程回帰では、上記の通り、ｎ個のデータ点(Ｘ，Ｙ)＝(ｘ１，ｙ１)，(ｘ２，ｙ２)，…，(ｘｎ，ｙｎ)が与えられたとき、ｘｎ＋１の点におけるＹの予測分布として、条件付き分布ｐ（ｘｎ＋１｜Ｙ）を求めることになる。なお、ｉ＝１，２，…，ｎとするとき、（ｘｉ，ｙｉ）は、学習区間のｉ番目のデータ点を示し、ｘｉは時刻情報、ｙｉはｘｉに対応するセンサ値等の値を示す。
【００４２】
上記条件付き分布ｐ（ｘｎ＋１｜Ｙ）の算出には、以下の式（１）で示す同時分布ｐ（Ｙｎ＋１）が必要となる。式（１）におけるＣｎ＋１は、（ｎ＋１）×（ｎ＋１）の共分散行列であり、式（２）に示す形で表せる。
【００４３】
【数１】
0006647473.tif 000002
【００４４】
【数２】
0006647473.tif 000003
【００４５】
ここで、Ｃｎはｎ×ｎの共分散行列であり、カーネル関数ｋ（ｘｉ，ｘｊ）を用いて表現できる。なお、ｊは、ｎ＋１である。カーネル関数とは、ｘｉとｘｊの２つの変数の類似度合いすなわち相関関係を表す関数である。また、Ｋは、ｋ（ｘｎ，ｘｎ＋１）という要素を持つベクトルである。また、ｃは、式（３）に示す通りスカラーである。βは定数である。δｉｊは、ｉ＝ｊのとき０となる変数である。なお、Ｙには測定誤差等の誤差があり、かつ誤差がガウス分布に従うと仮定する。この誤差は、式（３）における定数β−１と変数δｉｊとの乗算結果に対応する。
【００４６】
【数３】
0006647473.tif 000004
【００４７】
ここでは、カーネル関数として、式（４）に示すガウスカーネルを用いるとする。なお、指数カーネルまたは線形カーネルを用いてもよく、カーネル関数はガウスカーネルに限定されない。
【００４８】
【数４】
0006647473.tif 000005
【００４９】
予測分布算出部１０４は、上記の式（１）〜（４）を用いて、学習区間の時系列データを(ｘ１，ｙ１)，(ｘ２，ｙ２)，…，(ｘｎ，ｙｎ)として用いることで、ｙｎ＋１のガウス分布である条件付き分布ｐ（ｘｎ＋１｜Ｙ）の平均値μと、分散σ２を、式（５）、式（６）により求めることができる。条件付き分布ｐ（ｘｎ＋１｜Ｙ）は、式（７）により表すことができる。
【００５０】
【数５】
0006647473.tif 000006
【００５１】
【数６】
0006647473.tif 000007
【００５２】
【数７】
0006647473.tif 000008
【００５３】
ｘｎ＋１に対応する時点、すなわちｊ時点の確率分布は、平均値μ、分散σ２のガウス分布である。図７は、ガウス分布の一例を示す図である。ここで、ｊ時点の時系列データの予測値は、上記ガウス分布の平均値とすることができる。また、そして信用区間は、例えば９５％信用区間とした場合、ガウス分布における左右の２．５％を除く範囲が、ｊ時点における信用区間となる。９５％信用区間は、真の値が信用区間に存在する確率が９５％となる区間である。
【００５４】
図６の説明に戻り、予測分布算出部１０４は、確率分布を算出した後、確率分布に基づいて予測値、すなわちガウス分布の平均値を算出する。また、予測分布算出部１０４は、算出した確率分布を信用区間算出部１０５へ渡す。信用区間算出部１０５は、確率分布に基づいて、ｊ時点の信用区間を算出する（ステップＳ７）。信用区間算出部１０５は、算出した信用区間を補助記憶装置２０２に記憶する。
【００５５】
信用区間算出部１０５は、テスト区間の全点の信用区間を算出したか否かを判断する（ステップＳ８）。テスト区間のうち信用区間を算出していない時点がある場合（ステップＳ８  Ｎｏ）、信用区間算出部１０５は、部分列生成部１０３に学習区間を指示し、部分列生成部１０３は、学習区間を更新する（ステップＳ９）。具体的には、ステップＳ９では、部分列生成部１０３は、学習区間を、後ろへ、すなわちテスト区間側に１データ点分スライドさせることにより学習区間を更新し、更新した学習区間の部分列を生成して予測分布算出部１０４へ出力する。ステップＳ９の後、更新された学習区間に対応する部分列が学習データとして用いられて、ステップ６からの処理が繰り返される。学習区間は、ステップＳ９で更新されているので、２回目以降のステップＳ６では、更新された学習区間の次のデータ点に対応する処理が行われる。このため、ステップＳ６のｊ時点のｊの値は学習区間の更新のたびに、１つずつインクリメントしていく。
【００５６】
図８は、学習区間の更新の様子を示す図である。図８では、時系列データのデータ点数がＮａｌｌを２０とし、学習区間とテスト区間の割合を、Ｒｔ：Ｒｄ＝７：３とした例を示している。つまり、図８では、時系列データを、学習区間を７０％でテスト区間を３０％となる割合で分割する例を示している。この例では、学習区間のデータ点数は１４であり、テスト区間のデータ点数は６である。上述したステップＳ５では図中の最上段に示すように、入力である時系列データのうち左から１４点が学習区間の部分列となり、右から６点がテスト区間の部分列となる。図８では、最右の点が最も直近のデータを示す。なお、図８では、時系列データとしてセンサ値を例に記載している。
【００５７】
図８の２段目の予測１では、初回すなわちループ１回目のステップＳ６で予測値が算出される様子を示している。図８では、濃いハッチングの丸は学習区間内の実測値を示し、薄いハッチングの丸はテスト区間の実測値を示している。実測値は、時系列データとして入力されるデータである。なお、時系列データは、上述したように実測された値ではなく要約値等である場合もあるがここではセンサ値を例示しているので実測値と記載する。時系列データが要約値である場合には、図８の実測値は要約値となる。予測１では、時系列データのうち左から１４点の時点である学習区間すなわち初期学習区間に基づいて、四角の印で示した、初期学習区間の次の時点すなわちテスト区間の最初の時点に対応する予測値が算出される。
【００５８】
図８の３段目の予測２は、ループ１回目のステップＳ９で学習区間が更新された後のループ２回目のステップＳ６で、予測値が算出される様子を示している。ループ１回目のステップＳ９では、学習区間が、左側に１点ずれるようにスライドされるように更新される。すなわち、部分列生成部１０３は、学習区間を、対応する時刻が後の時刻へずれるように更新し、更新後の学習区間に対応する部分列を更新後の学習データとして生成する。また、更新された学習区間では、左側に１点ずれてテスト区間に入り込む時点については実測値ではなく予測値が用いられる。つまり、図８の３段目では、更新された学習区間は、時系列データのうち左から２番目から１４番目までの１３点の実測値と、テスト区間の予測値１点とを含む。このように更新された学習区間は、確率分布に応じて算出されるテスト区間の予測値を含む。予測２では、この更新された学習区間の部分列を用いて、更新された学習区間の次の時点すなわち更新後の学習区間の次のデータ点である更新点の確率分布が算出され、この確率分布に基づく予測値が算出される。時系列データのうち左から２番目から１４番目までの１３点の実測値と、学習区間すなわち初期学習区間に基づいて、四角の印で示した、初期学習区間の次のデータ点すなわちテスト区間の最初のデータ点に対応する予測値が算出される。
【００５９】
予測２の後、ステップＳ９の学習区間の更新とステップＳ６〜Ｓ８とが、テスト区間の全点の信用区間が算出されるまで、つまりテスト区間のデータ点数であるｍ回目の予測ｍが実施されるまで、予測３〜予測ｍの処理が同様に実施される。ステップＳ９の学習区間の更新では、順次、左側に学習区間がずれ、これにともなって学習区間に予測値が１点ずつ追加されていく。
【００６０】
図６の説明に戻る。ステップＳ８でＹｅｓと判定した場合、信用区間算出部１０５は、異常度スコア算出部１０６へ、テスト区間の各点の信用区間のデータを渡す。これにより、異常度スコア算出部１０６は、テスト区間の異常度スコアを算出する（ステップＳ１０）。異常度スコアは、学習データとテスト区間の時系列データとの間の外れ度合いを示す値である。つまり、異常度スコアは、学習区間における時系列データの挙動と、テスト区間における時系列データの挙動との、相対的な乖離度合いを示す値である。異常度スコアは、例えば、０．０から１．０までの数値で表現され、乖離度合いが大きいほど１．０に近づくとする。したがって、学習区間における時系列データの挙動と、テスト区間における時系列データの挙動とが類似していると異常度スコアは低くなる。なお、異常度スコアの定義はこれに限定されず、学習区間における時系列データの挙動と、テスト区間における時系列データの挙動との乖離度合いを表現でくるものであればよい。
【００６１】
ここでは、異常度スコアの具体的な算出方法として、異常度スコア算出部１０６が、テスト区間の実測値が信用区間内であるかどうかを各点で判定し、実測値が信用区間内となるデータ点数を、テスト区間の総データ点数で割った値を異常度スコアとして算出する方法を用いるとする。すなわち、異常度スコア算出部１０６は、テスト区間の複数のデータ点に対応する信用区間と、テスト区間の時系列データとに基づいて異常度スコアを算出する。
【００６２】
図９は、テスト区間の各時点の信用区間と異常度スコアの一例を示す図である。図９では、テスト区間内で、破線で示した信用区間に存在しない実測値が５点あり、テスト区間のデータ点数は６である。このため、異常度スコアは、５／６＝０．８３３…となる。図９では、異常度スコアの小数点第３位を四捨五入して異常度スコアを０．８３と記載している。なお、学習データとして用いた部分列に、欠落がある場合は、分散σ２の値が大きくなり確率分布の裾が広がるため、信用区間が広がり、予測の確度が低下する。このような予測の確度が低い点に関しては、異常度スコアを算出する際に、重みを付けたりすることにより、予測の確度の低いデータの異常判定への影響を抑制することができる。例えば、分散σ２の値が規定値異常の場合には、異常度スコアの算出において該当する点を１点とせずに、０．５点とするといった重み付け方法が考えられる。このように、異常度スコア算出部１０６は、予測分布算出部１０４で算出された確率分布の分散に基づいて、異常度スコアを算出してもよい。
【００６３】
図６の説明に戻り、ステップＳ１０の後、異常検知部１０７は、異常度スコアに応じて、異常の判定結果を出力する（ステップＳ１１）。例えば、異常検知部１０７は、異常度スコアが０．０以上かつ０．５未満である場合に正常と判定し、異常度スコアが０．５以上かつ０．７未満である場合に、要注意の異常と判定し、異常度スコアが０．７以上である場合に警告が必要な異常と判定する。なお、ここでは、要注意についても異常の一部としたが、警告が必要な異常のみを異常と定義してもよい。異常検知部１０７は、異常の判定結果を、電子メールによりネットワークＩ／Ｆ２０７を介して他の装置に送信したり、ディスプレイＩ／Ｆ２０５を介してディスプレイ２１０に表示したりする。また、判定結果が、警告が必要な異常であった場合には、異常検知部１０７は、警報出力装置２０６により警報を発してもよい。また、異常検知部１０７は、異常度スコアの推移を時系列データとして扱い、この時系列データをディスプレイＩ／Ｆ２０５を介してディスプレイ２１０にトレンドグラフを表示させてもよい。
【００６４】
なお、上述した例では、異常検知部１０７は、異常度スコアを用いて異常を判定したが、異常の判定方法は、算出された信用区間または予測値を用いる方法、換言すれば確率分布に用いて異常を判定する方法であればよく、上述した例に限定されない。例えば、異常検知部１０７は、テスト区間で信用区間をはずれる実測値が１つでもあれば異常と判定してもよい。すなわち、異常検知部１０７は、予測分布算出部１０４によって算出された確率分布に基づいて異常を判定するものであればよい。
【００６５】
なお、以上の例では、テスト区間の点数が複数であるため、テスト区間の回数分の予測値を求めたが、テスト区間が１点である場合には、初回のステップＳ８でＹｅｓとなるため、学習区間の更新はされない。つまり、学習区間の更新は必須ではなく、部分列生成部１０３は、時系列データのうち学習区間の部分列を学習データとして生成すればよい。そして、テスト区間が複数点である場合には、部分列生成部１０３は、上述したように学習区間の更新を行う。
【００６６】
また、異常検知部１０７は、図９に示した信用区間と異常度スコアを含む情報をディスプレイＩ／Ｆ２０５を介してディスプレイ２１０に表示させてもよい。また、ネットワークＩ／Ｆ２０７を介して、信用区間と異常度スコア等のデータを外部の表示器へ送信し、外部の表示器に表示させてもよい。ディスプレイ２１０または外部の表示器に、これらの情報を常時表示しておくことで、工場のライン等において、作業者が、異常、および異常兆候の有無をリアルタイムに確認することができる。
【００６７】
上述した通り、時系列データが複数ある場合には、時系列データごとに、図６に示した処理を実施してもよいし、特定の時系列データに関して図６に示した処理を実施してもよい。また、指令値の値など制御条件ごとに時系列データを抽出して図６に示した処理を実施する場合、指令値の値ごとに図６に示した処理を実施してもよいし、特定の指令値に関して図６に示した処理を実施してもよい。
【００６８】
また、リアルタイム性が不要な場合には、上述した情報を記録しておき、定期的にグラフとして表示しても良い。本実施の形態では、時系列データの抜けがあった場合に異常度スコアの算出の際に重み付けなどにより対応できるため、同じ機器で生産計画に応じて複数種類の指示値を切り替える場合であっても、指令値の値ごとに上記の図６に示した処理を行うことができる。
【００６９】
本実施の形態の異常検出方法は、異常検知の対象物である工場などの設備、センサの種類、時系列データの傾向などを問わない。このため、異常検知の対象物ごとに、異常と判定するための閾値の設定のための評価等を要しないので、閾値の設定のための作業負荷を抑制することができる。また、本実施の形態では、時系列データの徐々な変化、傾向が急変する異常といった変化の傾向を基に異常を検知することができるため、時系列データと閾値との単純な比較によって異常を検出する方法に比べて多様な異常の検知に対応することができる。また、例えば、異常の種類、原因といった詳細情報と、異常発生前後における異常度スコアとを紐付けすることで、異常の原因診断にも活用することができる。これにより、異常検知精度の向上および、異常原因の調査負荷が削減できる。
【００７０】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【００７１】
１００  異常検知装置、１０１  データ取得部、１０２  データ分割部、１０３  部分列生成部、１０４  予測分布算出部、１０５  信用区間算出部、１０６  異常度スコア算出部、１０７  異常検知部、２０１  プロセッサ、２０２  補助記憶装置、２０３  メモリ、２０４  入力Ｉ／Ｆ、２０５  ディスプレイＩ／Ｆ、２０６  警報出力装置、２０７  ネットワークＩ／Ｆ、２０９  入力装置、２１０  ディスプレイ。
【要約】
本発明にかかる異常検知装置（１００）は、時系列データを、学習区間とテスト区間に分割するデータ分割部（１０２）と、時系列データのうち学習区間の部分列を学習データとして生成する部分列生成部（１０３）と、学習データを用いて、テスト区間のデータ点に対応する確率分布を求める予測分布算出部（１０４）と、確率分布を用いて異常を検知する異常検知部（１０７）と、を備える。【図１】
0006647473.tif 000009
【図２】
0006647473.tif 000010
【図３】
0006647473.tif 000011
【図４】
0006647473.tif 000012
【図５】
0006647473.tif 000013
【図６】
0006647473.tif 000014
【図７】
0006647473.tif 000015
【図８】
0006647473.tif 000016
【図９】
0006647473.tif 000017