(57)【要約】【課題】異常検知システムにおいて、設備の稼動状態を監視するにあたり、複稼働状態を分割するためのデータが得られない、あるいは、正しく分割できない場合であっても、故障や障害といった異常あるいはその予兆の誤検知を少なくし、システムの状態を正確に評価することをできるようにする。【解決手段】設備から稼動データを収集する機器と、稼動データから構築される異常検知モデルに基づいて、設備の異常またはその予兆を検知する情報処理装置とを有し、情報処理装置は、稼動データを収集する手段と、稼働データから異常検知モデルを学習する手段と、稼働データと異常検知モデルから、個々の稼動データに対して異常スコアを算出する手段とを有し、稼働データから異常検知モデルを学習する手段は、異常検知モデルの内で、その異常検知モデルの要素のばらつきが小さい異常検知モデルを学習するようにする。【選択図】  図８
2020008997.tif 000002
【特許請求の範囲】
【請求項１】
監視対象となる設備の稼動データに基づいて、設備の異常またはその予兆を検知する異常検知システムであって、
前記設備から稼動データを収集する機器と、
前記稼動データから構築される異常検知モデルに基づいて、設備の異常またはその予兆を検知する情報処理装置とを有し、
前記情報処理装置は、
前記稼動データを収集する手段と、
前記稼働データから異常検知モデルを学習する手段と、
前記稼働データと異常検知モデルから、個々の稼動データに対して異常スコアを算出する手段とを有し、
前記稼働データから異常検知モデルを学習する手段は、前記異常検知モデルの内で、その異常検知モデルの要素のばらつきが小さい異常検知モデルを学習することを特徴とする異常検知システム。
【請求項２】
前記異常検知モデルの要素のばらつきは、前記異常検知モデルの要素の異常スコアの分散または四分位範囲であることを特徴とする請求項１記載の異常検知システム。
【請求項３】
前記稼働データから異常検知モデルを学習する手段は、初期の異常検知モデルを設定し、逐次的に異常検知モデルから異常スコアのばらつきが小さい異常検知モデルを再構成することを特徴とする請求項１記載の異常検知システム。
【請求項４】
逐次的に異常検知モデル新たな異常検知モデルを追加する際、所定探索範囲内で異常検知モデルの異常スコアの最もばらつきが小さい組み合わせ方を探索し、それを異常検知モデルの異常スコアの合成に用いることを特徴とする請求項１記載の異常検知システム。
【請求項５】
前記稼働データから異常検知モデルを学習する手段は、複数の異常検知モデルから生成する異常検知モデルの異常スコアを、重み付き線形和によって合成することを特徴とする請求項１記載の異常検知システム。
【請求項６】
前記異常検知モデルは、ｋ近傍距離に基づく異常検知モデルであることを特徴とする請求項１記載の異常検知システム。
【請求項７】
前記稼働データから異常検知モデルを学習する手段は、複数の異常検知モデルから新たな異常検知モデルを生成するにあたり、複数の異常検知モデルから稼働データをサンプリングして新たな異常検知モデルを生成することを特徴とする請求項１記載の異常検知システム。
【請求項８】
前記稼働データから異常検知モデルを学習する手段は、前記異常スコアの大きい異常検知モデルに対して、大きな確率でサンプリングすることを特徴とする請求項７記載の異常検知システム。
【請求項９】
前記稼働データから異常検知モデルを学習する手段は、ランダム分布に基づいてサンプリングするか、補間値あるいは推定値を用いてサンプリングするか、稼働データから生成モデルを学習し、そこからサンプリングするかのいずれかでサンプリングすることを特徴とする請求項７記載の異常検知システム。
【請求項１０】
さらに、初期の異常検知モデルの異常スコアと、再構成された異常検知モデルの異常スコアの比率を表示する手段とを有することを特徴とする請求項１記載の異常検知システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検知システムに係り、特に、計算機やコントローラ、機器・設備等からなるシステムの安定運用のために、故障や障害等の異常あるいはその予兆の誤検知を少なくし、システムの状態を正確に評価するのに好適な異常検知システムに関する。
【背景技術】
【０００２】
工場などの産業システム、化学プラント、鉄道や電力などの社会インフラシステムなど、多くのシステムは、複数の計算機、コントローラ、機器・設備から構成されている。このようなシステムでは、システムの機能が停止すると経済的にも社会的にも甚大な被害を及ぼす可能性がある。そのため、システムの機能が停止しないように、故障や障害を迅速に発見・対応したり、未然に予知し保全することが重要である。昨今では、計算機やコントローラ、機器・設備等から多くの稼動データが得られるようになってきたため、機器・設備、あるいは、システムの正常時の挙動を統計的手法に基づいて、異常やその予兆を検知する方法がとられるようになってきた。
【０００３】
このようなプラントなどの設備における異常予兆検知については、例えば、特許文献１がある。特許文献１に記載の設備状態監視システムでは、多様な正常状態を持つ場合においても、正常を異常と判定する誤報の発生を防止し、異常判定の根拠の説明や、異常予兆と事象の関連付けを可能とするため、設備から出力されるイベント信号をもとに運転状態別にモード分割し、モード毎に正常モデルを作成し、モード毎に学習データの十分性をチェックする。そして、その結果に応じて設定したしきい値を用いて異常識別を行うようにしている。
【０００４】
一方、システムを計測している場合には、起動、終了、キャリブレーションなどわずかしかデータを収集できない稼働状態と、定常運転など多くのデータを収集できる稼働状態とがある。このような複数の稼働状態が混合された稼働データでは、低密度またはマイノリティな正常時の稼働データは、高密度またはマジョリティな正常時の稼働データと比較して、相対的に異常スコアが高くなる傾向があり、誤検知の原因となっている。ここで、低密度、高密度は、単位時間あたりに、どの程度その稼動データの値をとりうるかを示す量であり、マイノリティは、その稼動データの値を取りうる度数が少ないこと、マジョリティは、その稼動データの値を取りうる度数が多いことをいう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１７２９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載された技術は、イベント信号をもとに（システムの稼動状態を）モード分割するということを基本思想にしている。
【０００７】
しかしながら、特許文献１に記載の設備状態監視方法では、そもそもイベント信号が得られない場合の異常検知の手法については、考慮されておらず、イベント信号が得られない場合には、この異常検知の手法は適用できすることができない。また、イベント信号を使って、正しくモードを分割できない場合、誤検知が解消されない可能性がある。
【０００８】
本発明の目的は、設備の稼動状態を監視するにあたり、複数の稼動状態で出力された正常時データに対して、稼働状態を分割するためのデータが得られない、あるいは、正しく分割できない場合であっても、故障や障害といった異常あるいはその予兆の誤検知を少なくし、システムの状態を正確に評価することのできる異常検知システムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明は異常検知システムの構成は、好ましくは、監視対象となる設備の稼動データに基づいて、設備の異常またはその予兆を検知する異常検知システムであって、設備から稼動データを収集する機器と、稼動データから構築される異常検知モデルに基づいて、設備の異常またはその予兆を検知する情報処理装置とを有し、情報処理装置は、稼動データを収集する手段と、稼働データから異常検知モデルを学習する手段と、稼働データと異常検知モデルから、個々の稼動データに対して異常スコアを算出する手段とを有し、稼働データから異常検知モデルを学習する手段は、異常検知モデルの内で、その異常検知モデルの要素のばらつきが小さい異常検知モデルを学習するようにしたものである。
【発明の効果】
【００１０】
本発明によれば、設備の稼動状態を監視するにあたり、複数の稼動状態で出力された正常時データに対して、稼働状態を分割するためのデータが得られない、あるいは、正しく分割できない場合であっても、故障や障害といった異常あるいはその予兆の誤検知を少なくし、システムの状態を正確に評価することのできる異常検知システムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】異常検知システムのシステム構成図である。
【図２】データ管理サーバ、クライアント端末、コントローラなどを実現する情報処理装置のハードウェア構成図である。
【図３】稼動データの一例を示す図である。
【図４】監視単位定義データの一例を示す図である。
【図５】モデルデータの一例を示す図である。
【図６】異常検知結果データの一例を示す図である。
【図７】異常検知システムの処理全体の概要を示すフローチャートである。
【図８】異常検知システムの学習フェーズを示すフローチャートである。
【図９】異常検知システムの監視フェーズを示すフローチャートである。
【図１０】監視画面の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明に係る一実施形態を、図１ないし図１０を用いて説明する。
【００１３】
先ず、発明を理解するために、本発明の一実施形態に係る異常検知システムの概略について説明する。
本発明の一実施形態に係る異常検知システムは、工場などの産業システム、化学プラント、鉄道や電力などの社会インフラシステムなどのシステムの機能が停止しないように、故障や障害を迅速に発見・対応、あるいは、未然に予知し保全するためのシステムである。
【００１４】
異常検知システムの処理は、正常または正常であることが期待される稼動データ（以下、単に「正常時の稼働データ」という）から、異常検知モデルを構築する学習フェーズと、監視時に稼働データと異常検知モデルを用いて異常スコアを算出し、ユーザに通知および関連情報を表示する監視フェーズとに分けられる。
【００１５】
学習フェーズでは、先ず、各機器・設備から収集した稼動データから、異常検知モデルを学習する。異常検知モデルには、様々な機械学習のモデルを採用できるが、本実施形態では、ｋ近傍法をベースとしたモデルを用いた例を説明する。なお、他の機械学習や統計のモデルを用いることもできる。学習処理では、第一に、正常時の稼働データを訓練データとして、最初のｋ近傍法に基づく異常検知モデルを学習する。ｋ近傍法は、怠惰学習（lazy learning）と呼ばれ、その性質上、取り込んだデータを加工せずに、単にメモリに訓練データを記憶するだけである。
【００１６】
次に、訓練データに対してブートストラップサンプリングを行い新たな訓練データを１個または複数作成する。ここで、ブートストラップサンプリングとは、対象とするｎ個のデータから、重複を許してｎ個のデータを抽出する統計のサンプリング手法である。次に、作成した訓練データを使って新たな異常検知モデルを１個または複数作成する。元の異常検知モデルと新たに作成した異常検知モデルを組み合わせて作成した異常検知モデル（「アンサンブルモデル」という）が、元の異常検知モデルに比べ、異常スコアの分散が小さい場合、アンサンブルモデルをもとの異常検知モデルに置き換える。本実施形態では、組み合わせる具体的な方法として重み付き線形和による方法を用いる。その際、組み合わせのバランス（重み）はラインサーチ等によって最良なものを探索して決める。このような処理を所定回数繰り返し、分散が小さい異常検知モデルを構成する。なお、異常スコアの分散は、ばらつきを与える一指標であって、他の指標、例えば、四分位範囲(ＩＱＲ：InterQuartle Range)等を用いてもよい。
【００１７】
監視フェーズでは、監視時の稼働データと異常検知モデルを用いて異常スコアを算出する。そして、所定の閾値を超えた場合、異常あるいは異常の予兆が発生したと判断してユーザに異常状況を通知する。その際、最初の異常検知モデルと、最終的な異常検知モデルとの異常スコアの解離具合を合わせて提示する。これによって、システムは、ユーザに対して、低密度またはマイノリティな正常時の稼働データに基づく検知結果であったのか、高密度またはマジョリティな正常時の稼働データに基づく検知結果であったのかの示唆を与えることができる。
【００１８】
なお、本実施形態では異常検知モデルを組み合わせる方法の一例として、重み付き線形和による方法としたが、他の方法で組み合わせてもよい。また、アンサンブルモデルは検知処理をする際に組み合わせた異常検知モデルの数だけ計算する必要がある。そこで、アンサンブルモデルを使って別のモデルを学習してもよい。例えば、アンサンブルモデルの訓練データセットに対する異常スコアを回帰モデル（ある二つの変数について、統計的手法による推計式で表すモデル）で学習するいわゆる自己教示学習（self-taught learning）を行ってもよい。また、個々のアンサンブルモデルを構成するデータセットをそのモデルの重みに応じてサンプリングすることにより訓練データを作成し、それを使って異常検知モデル構築してもよい。このようにすることで、同様な性質を持ち、かつ、比較的、計算量が軽量となる異常検知モデルを再構成することができる。
【００１９】
次に、図１および図２を用いて一実施形態に係る異常検知システムの構成について説明する。
本実施形態に係る異常検知システム１は、図１に示されるように、設備１０と、コントローラ１１と、データ管理サーバ１２と、クライアント端末１３を備えている。
【００２０】
設備１０は、工場などの生産ラインなどであり、センサやアクチュエータを備えている。センサは、例えば、加速度センサ、温度センサ、圧力センサなどである。コントローラ１１は、設備１０のセンサやアクチュエータを制御し、また異常検知処理を行う。データ管理サーバ１２は、設備１０からアップロードされる稼動データのデータ管理や、異常検知モデルの学習を行うサーバ装置である。クライアント端末１３は、異常または異常の予兆に関する情報をユーザに表示して提示する装置である。
【００２１】
異常検知システム１の構成要素は、相互に、ＬＡＮ（Local Area Network）等のネットワークで接続されている。なお、本実施形態では構成要素がＬＡＮで接続されるとしたが、インターネットなどのグローバルネットワーク経由で接続されていてもよい。また、図１に示した構成は一例であって、要素数は増減してもよく、一つの構成要素が複数の機能を担うようにしてもよい。例えば、データ管理サーバ１２の役割をコントローラが担ってもよい。また、ネットワーク構成も、本実施形態のように一つのネットワークで接続されている場合に限らず、さらに階層分けされてネットワーク構成となっていてもよい。なお、本実施形態では設備１０が監視対象となる場合について説明するが、コントローラ１１や、他の計算機が監視対象となってもよい。
【００２２】
異常検知システム１のコントローラ１１は、収集部１１１、検知部１１２、ローカルデータ管理部１１３の各機能部を備える。
収集部１１１は、設備１０から稼動データを収集する機能部である。検知部１１２は、稼動データから異常スコアを算出する機能部である（詳細は、後述）。ローカルデータ管理部１１３は、収集した稼動データを管理して、アクセスする方法を提供する機能部である。
【００２３】
異常検知システム１のデータ管理サーバ１２は、集配部１２１、学習部１２２、統合データ管理部１２３を備える。
集配部１２１は、各コントローラ１１のローカルデータ管理部１１３からデータを収集する機能部である。データ学習部１２２は、稼働データを用いて異常検知モデルを構築（学習）する機能部である。統合データ管理部１２３は、各コントローラ１１のローカルデータ管理部１１３に格納された稼動データを集約して、サーバ側で管理し、アクセスする方法を提供する機能部である。
【００２４】
異常検知システム１のクライアント端末１３は、表示部１３１を備える。表示部１３１は、異常または異常の予兆に関する情報をユーザに表示する機能部である。
【００２５】
次に、図１および図２を用いて異常検知システムの各構成要素の機能部とハードウェアの対応について説明する。
【００２６】
異常検知システムの各構成要素は、図２に示されるような一般的な情報処理装置で実現できる。
一般的な情報処理装置は、ＣＰＵ（Central Processing Unit）５０１が、ＲＯＭ（Read Only Memory）５０２、ＲＡＭ（Read Access Memory）５０３、外部記憶装置５０４、通信Ｉ／Ｆ（Interface）５０５、外部入力装置５０６、外部出力装置５０７からなる。
【００２７】
ＣＰＵ５０１は、ＲＡＭ５０３上のプログラムを実行し、装置の各部を制御するプロセッサである。ＲＯＭ５０２は、書き換え不可能な半導体記憶装置である。ＲＡＭ５０３は、一時的にプログラムとデータを保持する半導体記憶装置である。外部記憶装置５０４は、データ、プログラムを保持する大容量の磁気記憶装置または半導体記憶装置である。通信Ｉ／Ｆ５０５は、外部のネットワークの通信を制御する装置である。外部入力装置５０６は、マウスやキーボード等のユーザがデータを入力するための装置である。外部出力装置５０７は、液晶表示装置（ＬＣＤ：liquid Cristal Display）などの表示装置やデータ印刷するプリンタなどの装置である。
【００２８】
コントローラ１１の収集部１１１、検知部１１２、ローカルデータ管理部１１３は、各機能を実現するプログラムとして、ＲＯＭ５０２に保持されるか、外部記憶装置５０４にインストールされ、ＲＡＭ５０３上にロードされて、ＣＰＵ５０１により実行される。
【００２９】
また、同様に、異常検知システム１のデータ管理サーバ１２の集配部１２１、学習部１２２、統合データ管理部１２３は、各機能を実現するプログラムとして、ＲＯＭ５０２に保持されるか、外部記憶装置５０４にインストールされ、ＲＡＭ５０３上にロードされて、ＣＰＵ５０１により実行される。
【００３０】
さらに、クライアント端末１３の表示部１３１は、表示プログラムが、ＲＯＭ５０２に保持されるか、外部記憶装置５０４にインストールされ、ＲＡＭ５０３上にロードされて、ＣＰＵ５０１により実行され、液晶表示装置などの表示装置に表示される。
【００３１】
次に、図３ないし図６を用いて異常検知システムで使用されるデータ構造について説明する。
稼動データ１００は、コントローラ１１が設備１０から収集するデータであり、ローカルデータ管理部１１３で管理されるデータであり、具体的には、例えば、設備１０に取り付けられたセンサ値や設備１０に送られる制御信号に関するデータである。稼動データ１００は、図１に示されるように、日時１０１と、項目名１０２と、値１０３の各項目を有する。日時１０１は、稼動データが発生した日時、または、収集された日時である。項目名１０２は、稼動データを識別するための名称であり、例えば、センサ番号や制御信号番号である。値１０３は、その日時、その項目に関する稼動データの値である。
【００３２】
なお、データ管理サーバ１２の統合データ管理部１２３が管理する稼動データも内容は同様で、個々のコントローラ１１のローカルデータ管理部１１３の稼動データ１００を統合したものある。
【００３３】
監視単位定義データ２００は、各異常検知モデルを構成するために使うデータを定義するデータであり、コントローラ１１のローカルデータ管理部１１３、および、データ管理サーバ１２の統合データ管理部１２３で管理されるデータである。監視単位定義データ２００は、図４に示されるように、モデルＩＤ２０１と、項目名２０２の各項目を有する。モデルＩＤ２０１は、異常検知モデルを一意に識別するためのＩＤである。項目名２０２は、指定した項目名が異常検知モデルを構成するデータとなる。例えば、図４に示した上から１行目〜３行目（カラム名の行は除く）は、モデルＩＤが１００１の異常検知モデルについて記載しており、コントローラ１．温度と、コントローラ１．圧力、コントローラ２．電流値によって、異常検知モデルが構成されることを表している。なお、異常検知モデルを構成する際には、ある時刻における一つまたは複数のデータによって構成してもよいし、複数時刻のデータ、すなわち、時系列データを用いてもよい。
【００３４】
モデルデータ３００は、異常検知モデルを表すデータであり、コントローラ１１のローカルデータ管理部１１３、および、データ管理サーバ１２の統合データ管理部１２３で管理されるデータである。モデルデータ３００は、モデルＩＤ３０１と、サブモデルＩＤ３０２と、モデルパラメータ３０３と、重み３０４の各項目を有する。モデルＩＤ３０１は、異常検知モデルを一意に識別するためのＩＤである。サブモデルＩＤ３０２は、各異常検知モデル（各アンサンブルモデル）を構成する異常検知モデルのサブモデルを一意に識別するためのＩＤである。なお、ＩＤ＝０のときが、初期の異常検知モデルで、サブモデルＩＤが１、２、３と段階的に組み合わされる異常検知モデルである。一方、サブモデルＩＤが−１は、アンサンブルモデルを再構成した異常検知モデルを表すことにする（詳細は、後述）。モデルパラメータ３０３は、各異常検知モデルを表現するパラメータである。ｋ近傍法による異常検知は、前述のとおり訓練データを記憶しておくだけであるため、モデルパラメータ３０３は、また、各異常検知モデルの訓練データとなる。重み３０４は、合成（アンサンブル）する際の各異常検知モデルの重要度を表す。
【００３５】
異常検知結果データ４００は、異常検知の結果を表すデータであり、コントローラ１１のローカルデータ管理部１１３、および、データ管理サーバ１２の統合データ管理部１２３で管理されるデータである。異常検知結果データ４００は、日時４０１と、モデルＩＤ４０２と、初期異常スコア４０３と、異常スコア４０４の各項目を有する。日時４０１は、異常またはその予兆があるか田舎の検知処理を行った日時を表す。モデルＩＤ４０２は、異常検知モデルを一意に識別するためのＩＤである。初期異常スコア１Ｄ４０３は、サブモデルＩＤ３０２が０のときの異常検知モデルを使って算出した異常スコアである。異常スコア４０３は、サブモデルＩＤ３０２に−１が存在しない場合には、アンサンブルモデルを使って算出した異常スコア、存在する場合には、サブモデルＩＤ３０２が−１の異常検知モデル、すなわち再構成された異常検知モデルを使って算出された異常スコアである。
【００３６】
次に、図７ないし図９を用いて異常検知システムの処理について説明する。
【００３７】
先ず、図７を用いて異常検知システムの処理全体の概要について説明する。
先ず、コントローラ１１の収集部１１１が、設備１０、コントローラ１１の双方またはその一方から、正常時の稼働データ１００を収集し、ローカルデータ管理部１１３に格納する（Ｓ１０１）。なお、本実施形態では収集部１１１が集めるデータの周期は一定であるものとする。周期が一定でない場合は、補間等によって周期を調整した稼動データに変換し格納する。
【００３８】
次に、データ管理サーバ１２の集配部１２１が、各コントローラ１１のローカルデータ管理部１１３に格納された稼動データ１００を集約し、データ管理サーバ１２の統合データ管理部１２３に格納する（Ｓ１０２）。
【００３９】
次に、データ管理サーバ１２の学習部１２２が、監視単位定義データ２００で項目名がモデルＩＤと対応づいている稼働データ１００を用いて異常検知モデルを構築（学習）する（Ｓ１０３）。なお、本処理に先立って、適切な監視単位定義データ２００が登録されており、モデルＩＤと稼働データ１００の対応づけがなされているものとする。なお、異常検知モデルを構築（学習）する処理については、後に詳細に説明する。
そして、学習処理の結果であるモデルデータ３００を、データ管理サーバ１２の統合データ管理部１２３に登録する。
【００４０】
最後に、データ管理サーバ１２の集配部１２１が、統合データ管理部１２３のモデルデータ３００を各コントローラ１１に配信し、本処理を終了する（Ｓ１０４）。なお、本実施形態では、稼動データをそのまま用いたが、稼動データ１００にローパスフィルターをかけたり、正規化したりといった前処理を実施してもよい。
【００４１】
次に、図８を用いて異常検知モデルの構築（学習）処理について詳細に説明する。
まず、データ管理サーバ１２の学習部１２２が、ＬＯＦ（Local Outlier Factor）等に代表される外れ値検知(Outlier Detection)手法を用いて外れ値を除去する（Ｓ２０１）。例えば、稼働データの１％は外れ値であるとみなして、ＬＯＦのスコアの上位１％を得るような稼働データを削除する。このようにして、本異常検知手法が外れ値も含めて異常スコアのばらつきを小さくするように異常検知モデルを構築する結果、検知性能が劣化することを避けることができる。特に、ランダムなノイズが含まれる場合には有用である。ただし、外れ値を除去する必要がないようなデータでは、本ステップを省略してもよい。
【００４２】
次に、データ管理サーバ１２の学習部１２２が、正常時の稼働データを訓練データとして、ｋ近傍法に基づく初期の異常検知モデルを作成する（Ｓ２０２）。訓練データをＸ０＝｛Ｘ０＿ｉ｜ｉ＝１，２，３，…，Ｎ｝とし、Ｎｅａｒｅｓｔ（Ｘ０，ｘ，ｋ）を訓練データＸ０における要素ｘと要素ｘのｋ番目の近傍点との距離（ｘのｋ近傍距離）とするとき、初期の異常検知モデルの異常スコアＳ０は、以下の（式１）で与えられる。このとき、訓練データＸ０が、図５に示したサブモデルＩＤ３０２が０のときのモデルパラメータ１Ｄ３０３に対応することになる。なお、本実施形態では、ｋ番目までのｋ近傍距離の相加平均を異常スコアに用いたが、ｋ番目のｋ近傍距離だけを用いてもよい。また、他の統計や機械学習に基づく異常検知のモデルを用いてもよい。なお、距離計算がボトルネックとなる場合は、バイナリハッシングや直積量子化法（ＰＱ：Product Quantization）などの距離計算を近似する手法を使ってもよい。これによって、距離計算の負荷を大幅に軽減できる。
【００４３】
【数１】
2020008997.tif 000003
【００４４】
次に、データ管理サーバ１２の学習部１２２が、時刻を表す変数ｔに１を設定する（Ｓ２０３）。
次に、データ管理サーバ１２の学習部１２２が、訓練データに対してブートストラップサンプリングによって、新たな訓練データＸｔを作成する（Ｓ２０４）。その際、時刻ｔ−１における異常スコアをＳｔ−１として、以下の（式２（で与えられる確率Ｐ（ｘ）に従ってサンプリングする。ここで、ｘ，ｘｊ∈Ｘｔ−１、Ｘｔ−１は、Ｘｔの前の訓練データであり、（式２）の分母の総和のインデックスｊは、全てのＸｔ−１の要素を動くものとする。すなわち、異常スコアが高いものほど高い確率でサンプリングする。この処理により、後述の処理で効率よくばらつきを小さくする新しい異常検知モデルの作成を可能とする。なお、本実施形態では、単純に異常スコアの比率を用いてサンプリングを行ったが、ランダム分布などほかの分布に基づいてサンプリングしてもよい。また、サンプリングを行う場合、既存の稼働データから抽出するだけでなく、補間値あるいは推定値を用いてもよい。例えば、ＳＭＯＴＥ（Synthetic Minority Over-sampling Technique、近傍点を使った補間を含む）などのオーバーサンプリング手法や、稼働データからＧＡＮ（Generative Adversarial Networks）等の生成モデルを学習し、そこからサンプリングする手法を用いたりしてもよい。これによって、稼働データに含まれない情報を含む異常検知モデルを構築でき、その結果、検知性能を向上できる場合がある。
【００４５】
【数２】
2020008997.tif 000004
【００４６】
次に、データ管理サーバ１２の学習部１２２が、訓練データＸｔを用いて新たな異常検知モデルを作成する（Ｓ２０５）。この手順はＳ２０５と同様である。この異常検知モデルの異常スコアＳｎｅｗは、以下の（式３）で与えられる。ここで、なお、距離計算がボトルネックとなる場合は、バイナリハッシングや直積量子化法(ＰＱ)などの距離計算を近似する手法を使ってもよい。これによって距離計算の負荷を大幅に軽減できる。
【００４７】
【数３】
2020008997.tif 000005
【００４８】
次に、データ管理サーバ１２の学習部１２２が、時刻ｔ−１の異常検知モデルと、新たに作成した異常検知モデルを組み合わせて、ばらつき（分散）の小さい時刻ｔの異常検知モデルを作成する（Ｓ２０６）。この異常検知モデルの異常スコアＳｔは時刻ｔ−１の異常検知モデルと、新たに作成した異常検知モデルの重み付き線形和で与えられる。Ｓｔは以下の式で与えられる。ここで、αは、０から１までの範囲を適当な刻み幅（例えば、０．０１）でラインサーチし、もっともＳｔ（Ｘｔ＿ｉ）（ｉ＝１，２，…，Ｎ）のばらつき（分散）が小さいαを選択する。なお、本実施形態では範囲を０から１、刻み幅を０．０１としたが、よりほかの範囲や刻み幅でもよい。また、前述のとおり、ばらつきを評価する尺度として本実施形態では分散を用いるが四分位範囲（ＩＱＲ）等を用いてもよい。
【００４９】
【数４】
2020008997.tif 000006
【００５０】
次に、データ管理サーバ１２の学習部１２２が、時刻を表す変数ｔをインクリメントして、ｔ＋１を設定する（Ｓ２０７）。
次に、データ管理サーバ１２の学習部１２２が、終了条件を満たしているかを判定する（Ｓ２０８）。本実施形態ではｔが所定値Ｔを上回ったとき、終了条件を満たすものする。判定の結果、終了条件を満たしていなければ（Ｓ２０８：ＮＯ）、Ｓ２０４に戻り、終了条件を満たしていれば（Ｓ２０８：ＹＥＳ）、Ｓ２０９に進む。なお、本実施形態ではｔが所定値Ｔを上回ったとき、終了条件を満たすものとしたが、他の終了条件を設定してもよい。例えば、分散が所定の値以下となる、分散が初期の異常検知モデルの１０％未満となる等であってよい。
【００５１】
Ｓ２０８において、終了条件が満たされている場合、データ管理サーバ１２の学習部１２２が、時刻tの異常検知モデルを構成する訓練データ群の重み付きサンプリングによって、新たな訓練データを作成する（Ｓ２０９）。より具体的には、時刻tの異常検知モデルを構成する訓練データを重み（ｔ＝０は１（固定）、ｔ＞０は各時点のα、これをαｔとするに）基づいて、どの訓練データを選択し、さらにその訓練データからランダムに１点データ（要素）を抽出するという手順を繰り返す。ここで、Ｘ０，Ｘ１，…，ＸＴから、ｘ∈Ｘｈ（ｈ＝０，１，…，Ｔ）をとる確率Ｑ（ｘ）は、以下の（式５）で表される。
【００５２】
【数５】
2020008997.tif 000007
【００５３】
なお、この重みαｔが、図５に示したモデルデータ３００の重み１Ｄ３０４に対応する。この手順を繰り返すことにより、低密度またはマイノリティな正常時の稼働データと、高密度またはマジョリティな正常時の稼働データとの異常スコアのばらつきが小さくなっていく。
最後に、データ管理サーバ１２の学習部１２２が、Ｓ２０８で作成した訓練データを用いて異常検知モデルを作成して本処理を終了する（Ｓ２１０）。
【００５４】
なお、この異常検知モデルは、前述のように、サブモデルＩＤ３０２が−１（アンサンブルモデルを再構成した異常検知モデル）となる。
【００５５】
以上の手順により、異常スコアのばらつきが小さい異常検知モデルを構成できる。また、Ｓ２０９、Ｓ２１０のステップの処理によって、最後の時刻の異常検知モデルに近く、しかも、計算量的に軽量な異常検知モデルを構成できる。なお、これらのステップは不要であれば、実施しなくてもよい。その場合は、最後の時刻の異常検知モデルを用いて、以降のＳ２１０における異常検知モデルを作成すればよい。
【００５６】
なお、上記処理フローは機械学習分野でのアンサンブル学習におけるブースティングに類似した手順をとっている。すなわち、一つずつモデルを追加していく手順をとっている。これに対し、アンサンブル学習におけるバギングのように、適切なサンプリングのための分布を設定した上で、複数の訓練データをサンプリングし、その数だけの異常検知モデルを作成し、線形和をとることで異常スコアを算出することもできる。
【００５７】
次に、図９を用いて異常検知システムの監視フェーズの処理について説明する。なお、この監視フェーズの処理に先立って、予め設備１０における稼動データが収集されているものとする。
【００５８】
まず、コントローラ１１の検知部１１２が、サブモデル１Ｄ３０２が０、すなわち、最初の異常検知モデルを使って初期の異常スコア（「初期異常スコア」という）を算出する（Ｓ３０１）。
【００５９】
次に、コントローラ１１の検知部１１２が、サブモデル１Ｄ３０２が−１、すなわち、最後の異常検知モデルを使って異常スコアを算出する（Ｓ３０２）。なお、サブモデル１Ｄ３０２が−１となる異常検知モデルがない場合、前述の（式４）の異常スコアを算出したときと同様の手順で異常スコアを算出する。
【００６０】
次に、コントローラ１１の検知部１１２が、初期異常スコア、異常スコアを異常検知結果データ４００に登録する。また、コントローラ１１の検知部１１２が、データ管理サーバ１２の集配部１２１を介して、データ管理サーバ１２の統合データ管理部１２３にも同様のデータを登録する（Ｓ３０３）。
【００６１】
次に、コントローラ１１の検知部１１２が、異常スコアがあらかじめ定めた閾値より大きいか否かを判定する（Ｓ３０４）。閾値より異常スコアが大きい場合には（Ｓ３０４：ＹＥＳ）、Ｓ３０５に進む。そうでない場合には（Ｓ３０４：ＮＯ）、本処理を終了する。
【００６２】
Ｓ３０４で閾値より異常スコアが大きい場合には、コントローラ１１の検知部１１２が、クライアント端末１３の表示部１３１に異常があったことを通知する。これを受けて、クライアント端末１３の表示部１３１が、稼働データ１００や異常検知結果データ４００といった異常の状況を知るための情報をユーザに提示する（Ｓ３０５）。
【００６３】
なお、本実施形態では閾値は、予め定めているものとしたが、学習フェーズにおいて、データ管理サーバ１２の学習部１２２が正常時の稼働データや、手に入る場合は異常時の稼働データを使って統計手法に基づき自動設定してもよい。例えば、正常時の稼働データを二つに分けて、片方でデータを学習し、もう片方で異常スコアを算出し、その最大値を閾値とするなどをしてもよい。
【００６４】
次に、図１０を用いて異常検知システムの提供するユーザインターフェースについて説明する。
監視画面６００は、クライアント端末１３の表示部１３１が異常検知システムのユーザに提示し。稼動データや異常スコアなどに関する情報を表示し、設備１０の監視をおこなうために提供する画面である。監視画面６００は、図１０に示されるように、モデル選択コンボボックス６０１、稼動データ表示ペイン６０２、異常スコア表示ペイン６０３、初期異常スコア表示ペイン６０４、スコア比率表示ペイン６０５を備える。
【００６５】
モデル選択コンボボックス６０１には、異常検知結果データ４００のモデルＩＤ４０２に対応するモデルＩＤが候補に表示される。ユーザがここで選んだモデルＩＤに対応した情報が、稼動データ表示ペイン６０２、異常スコア表示ペイン６０３、初期異常スコア表示ペイン６０４、スコア比率表示ペイン６０５に表示される。なお、ユーザが操作しなくても、Ｓ３０４で異常が検知された場合には、ユーザに注意を促すために、自動的にモデルが選択されデータが表示されるものとする。
【００６６】
稼働データ表示ペイン６０２には、選択されたモデル１Ｄに関する時系列データが表示される。表示されているグラフの横軸は時間、縦軸は値を示している。複数の変数がある場合、タブ６０２ａ、タブ６０２ｂ、タブ６０２ｃによって、切り替えて表示することができる。図１０に示した例では、停止状態から起動状態（枠６０２ｘ２あたり）を経て、定常運転状態になり、途中異常な箇所があり（枠６０２ｘ１あたり）を経て、終了状態（枠６０２ｘ３あたり）、停止状態に戻るような稼働データの例となっている。
【００６７】
異常スコア表示ペイン６０３には、選択されたモデルＩＤの異常検知モデルによって算出された異常スコアと閾値が表示される。表示されているグラフの横軸は時間、縦軸は異常スコアを示している。閾値を超え、かつ、例外パターンに合致していない箇所は強調表示される。ユーザはこのペインの情報を見ることにより、異常やその予兆が発生しているかどうかを把握することができる。
【００６８】
初期異常スコア表示ペイン６０４には、選択されたモデルＩＤの異常検知モデルによって算出された初期異常スコアと閾値が表示される。表示されているグラフの横軸は時間、縦軸は異常スコアを示している。閾値を超え、かつ、例外パターンに合致していない箇所は強調表示される。
【００６９】
スコア比率表示ペイン６０５には、選択されたモデルＩＤの異常検知モデルによって算出された初期異常スコアと異常スコアについて、初期異常スコアに対する異常スコアの比率（スコア比率＝異常スコア/初期異常スコア）が表示される。表示されているグラフの横軸は時間、縦軸はスコア比率を示している。前記の初期異常スコア表示ペイン６０４の初期異常スコアと、スコア比率を見ることにより、ユーザは低密度もしくはマイノリティな箇所を把握できる。例えば、図１０の破線枠６０２ｘ２、６０２ｘ３の箇所に対応するスコア比率が小さくなっている。これは、この部分にあたるシステムの起動状態や終了状態などが、停止状態や定常運転状態に比べマイノリティであることを示している。すなわち、本実施形態では、マイノリティの部分の初期異常スコアに対して、異常スコアは、あまり異常としては捉えていないことを示している。したがって、ユーザは、システムの異常を分析するにあたり、スコア比率が小さくなっている箇所を注視することにより、訓練データが足りていない箇所の示唆を得ることができる。
【００７０】
以上に説明したように、本実施形態によれば、異常スコアが異常検知モデルを学習したときに用いた、正常または正常であることが期待される稼動データ（正常時の稼働データ）に対して、低密度またはマイノリティな正常時の稼働データと、高密度もしくはマジョリティな正常時の稼働データとの異常スコアのばらつきが小さくなっていった結果、低密度もしくはマイノリティな正常時の稼働データを誤検知することが少なくなり、全体として誤検知や失報を少なく抑えることができる。
【００７１】
また、初期異常スコアと異常スコアを比較することでどういった稼働データが低密度もしくはマイノリティであるかを把握できるようになり、訓練データの充足をユーザが判断することができる。
【符号の説明】
【００７２】
１０……設備
１１……コントローラ
１１１…収集部
１１２…検知部
１１３…ローカルデータ管理部
１２……データ管理サーバ
１２１…集配部
１２２…学習部
１２３…統合データ管理部
１３……クライアント端末
１３１…表示部
【図１】
2020008997.tif 000008
【図２】
2020008997.tif 000009
【図３】
2020008997.tif 000010
【図４】
2020008997.tif 000011
【図５】
2020008997.tif 000012
【図６】
2020008997.tif 000013
【図７】
2020008997.tif 000014
【図８】
2020008997.tif 000015
【図９】
2020008997.tif 000016
【図１０】
2020008997.tif 000017