(57)【要約】【課題】異常の原因を効果的に特定することができる異常診断方法を提供する。【解決手段】異常診断方法は、監視対象の状態を観測することにより得られた、状態を示す複数の変数の値で構成される観測値を用いて、当該観測値が異常であるか否かを診断する異常診断装置１００が実行する異常診断方法であって、異常診断装置は、プロセッサおよびメモリを備え、メモリは複数の観測値を用いた学習により生成された異常検知モデルを記憶しており、プロセッサは互いに関連のある少なくとも２つの変数の組み合わせでそれぞれが構成される１以上のグループを示すグループ情報を取得し、観測値を取得し、メモリから読み出した異常検知モデルを用いて観測値が異常であるか否かを判定し、観測値が異常であると判定した場合、当該観測値とグループ情報で示される１以上のグループとに基づいて、当該観測値の１以上のグループのうち、異常の原因であるグループを特定する。【選択図】図９
2019061565.tif 000002
【特許請求の範囲】
【請求項１】
監視対象の状態を観測することにより得られた、前記状態を示す複数の変数の値で構成される観測値を用いて、当該観測値が異常であるか否かを診断する異常診断装置が実行する異常診断方法であって、
前記異常診断装置は、プロセッサおよびメモリを備え、
前記メモリは、複数の前記観測値を用いた学習により生成された異常検知モデルを記憶しており、
前記プロセッサは、
前記複数の変数のうち互いに関連のある少なくとも２つの変数の組み合わせでそれぞれが構成される１以上のグループを示すグループ情報を取得し、
前記観測値を取得し、
前記メモリから前記異常検知モデルを読み出して、読み出した前記異常検知モデルを用いて前記観測値が異常であるか否かを判定し、
前記観測値が異常であると判定した場合、当該観測値と取得した前記グループ情報で示される前記１以上のグループとに基づいて、当該観測値の前記１以上のグループのうち、異常の原因であるグループを特定する
異常診断方法。
【請求項２】
前記異常検知モデルは、前記複数の観測値を用いて、前記学習としてのオートエンコーダ、変分オートエンコーダ、および、１クラスサポートベクトルマシンのうちの少なくとも１つによって生成されたモデルである
請求項１に記載の異常診断方法。
【請求項３】
前記観測値が異常であるか否かの判定では、
前記異常検知モデルに前記観測値を入力することでスコアを算出し、
算出した前記スコアが予め定められた第１の閾値以上の場合、取得した前記観測値が異常であると判定し、
算出した前記スコアが前記第１の閾値未満の場合、取得した前記複数の観測値が異常でないと判定する
請求項２に記載の異常診断方法。
【請求項４】
前記異常検知モデルは、学習用の正常な複数の前記観測値と、診断用の複数の前記観測値との確率密度比に基づいて生成されたモデルであり、
前記観測値の取得では、複数の前記観測値を取得し、
前記観測値が異常であるか否かの判定では、
前記メモリから読み出した前記異常検知モデルと、取得した前記複数の観測値とを用いてスコアを算出し、
算出した前記スコアが予め定められた第１の閾値以上の場合、取得した前記複数の観測値が異常であると判定し、
算出した前記スコアが前記第１の閾値未満の場合、取得した前記複数の観測値が異常でないと判定する
請求項１に記載の異常診断方法。
【請求項５】
前記グループの特定では、
算出した前記スコアと、前記グループ情報で示される前記１以上のグループ毎に正則化することにより得られるグループ正則化項との和で構成される損失関数が極小値となる変位ベクトルを算出し、
算出した前記変位ベクトルのうち、１未満の第２の閾値以上の変数を含むグループを、異常の原因であるグループとして特定する、
請求項３または４のいずれか１項に記載の異常診断方法。
【請求項６】
前記グループ正則化項は、グループ間では０＜ｐ≦１であり、かつ、グループ内ではｐ＞１であるＬｐ正則化を満たす
請求項５に記載の異常診断方法。
【請求項７】
監視対象の状態を観測することにより得られた、前記状態を示す複数の変数の値で構成される観測値を用いて、当該観測値が異常であるか否かを診断する異常診断装置であって、
プロセッサおよびメモリを備え、
前記メモリは、複数の前記観測値を用いた学習により生成された異常検知モデルを記憶しており、
前記プロセッサは、
前記複数の変数のうち互いに関連のある少なくとも２つの変数の組み合わせによりそれぞれが構成される１以上のグループを示すグループ情報を取得し、
前記観測値を取得し、
前記メモリから前記異常検知モデルを読み出して、読み出した前記異常検知モデルを用いて前記観測値が異常であるか否かを判定し、
前記観測値が異常であると判定した場合、取得した前記観測値と取得した前記グループ情報で示される前記１以上のグループとに基づいて、前記観測値の前記１以上のグループのうち、異常の原因であるグループを特定する
異常診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多次元情報における異常に寄与する変数を特定する異常診断方法および異常診断装置に関する。
【背景技術】
【０００２】
従来、特許文献１〜４および非特許文献１において開示されているように、複数の変数の観測値に異常があるか否かを診断することで、異常を検知することが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第６０７６７５１号公報
【特許文献２】特許第５８５８８３９号公報
【特許文献３】特許第５８１１６８３号公報
【特許文献４】特許第５１０８１１６号公報
【非特許文献】
【０００４】
【非特許文献１】Ｓｏｍｍｅｒ，  Ｒｏｂｉｎ，  ａｎｄ  Ｖｅｒｎ  Ｐａｘｓｏｎ．  “Ｏｕｔｓｉｄｅ  ｔｈｅ  ｃｌｏｓｅｄ  ｗｏｒｌｄ：  Ｏｎ  ｕｓｉｎｇ  ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ  ｆｏｒ  ｎｅｔｗｏｒｋ  ｉｎｔｒｕｓｉｏｎ  ｄｅｔｅｃｔｉｏｎ．”  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｐｒｉｖａｃｙ  （ＳＰ），  ２０１０  ＩＥＥＥ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ．  ＩＥＥＥ，  ２０１０．
【非特許文献２】Ｍ．  Ｔａｖａｌｌａｅｅ，  Ｅ．  Ｂａｇｈｅｒｉ，  Ｗ．  Ｌｕ，  ａｎｄ  Ａ．  Ｇｈｏｒｂａｎｉ，  “Ａ  Ｄｅｔａｉｌｅｄ  Ａｎａｌｙｓｉｓ  ｏｆ  ｔｈｅ  ＫＤＤ  ＣＵＰ  ９９  Ｄａｔａ  Ｓｅｔ，”  Ｓｕｂｍｉｔｔｅｄ  ｔｏ  Ｓｅｃｏｎｄ  ＩＥＥＥ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ  ｆｏｒ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｄｅｆｅｎｓｅ  Ａｐｐｌｉｃａｔｉｏｎｓ  （ＣＩＳＤＡ），  ２００９．
【非特許文献３】Ｍｉｋｏｌｏｖ，  Ｔｏｍａｓ，  ｅｔ  ａｌ．  “Ｄｉｓｔｒｉｂｕｔｅｄ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎｓ  ｏｆ  ｗｏｒｄｓ  ａｎｄ  ｐｈｒａｓｅｓ  ａｎｄ  ｔｈｅｉｒ  ｃｏｍｐｏｓｉｔｉｏｎａｌｉｔｙ．”  Ａｄｖａｎｃｅｓ  ｉｎ  ｎｅｕｒａｌ  ｉｎｆｏｒｍａｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍｓ．  ２０１３．
【非特許文献４】Ｙａｎｇ，  Ｓｅｎ，  ｅｔ  ａｌ．  “Ｆｅａｔｕｒｅ  ｇｒｏｕｐｉｎｇ  ａｎｄ  ｓｅｌｅｃｔｉｏｎ  ｏｖｅｒ  ａｎ  ｕｎｄｉｒｅｃｔｅｄ  ｇｒａｐｈ．”  Ｇｒａｐｈ  Ｅｍｂｅｄｄｉｎｇ  ｆｏｒ  Ｐａｔｔｅｒｎ  Ａｎａｌｙｓｉｓ．  Ｓｐｒｉｎｇｅｒ  Ｎｅｗ  Ｙｏｒｋ，  ２０１３．  ２７−４３．
【非特許文献５】Ｓｏｎｇ，  Ｊｉｎｇｐｉｎｇ，  Ｚｈｉｌｉａｎｇ  Ｚｈｕ，  ａｎｄ  Ｃｈｒｉｓ  Ｐｒｉｃｅ．  “Ｆｅａｔｕｒｅ  ｇｒｏｕｐｉｎｇ  ｆｏｒ  ｉｎｔｒｕｓｉｏｎ  ｄｅｔｅｃｔｉｏｎ  ｓｙｓｔｅｍ  ｂａｓｅｄ  ｏｎ  ｈｉｅｒａｒｃｈｉｃａｌ  ｃｌｕｓｔｅｒｉｎｇ．”  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｖａｉｌａｂｉｌｉｔｙ，  Ｒｅｌｉａｂｉｌｉｔｙ，  ａｎｄ  Ｓｅｃｕｒｉｔｙ．  Ｓｐｒｉｎｇｅｒ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｐｕｂｌｉｓｈｉｎｇ，  ２０１４．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本開示は、異常の原因を効果的に特定することができる異常診断方法及び異常診断装置を提供する。
【課題を解決するための手段】
【０００６】
本開示の一態様に係る異常診断方法は、監視対象の状態を観測することにより得られた、前記状態を示す複数の変数の値で構成される観測値を用いて、当該観測値が異常であるか否かを診断する異常診断装置が実行する異常診断方法であって、前記異常診断装置は、プロセッサおよびメモリを備え、前記メモリは、複数の前記観測値を用いた学習により生成された異常検知モデルを記憶しており、前記プロセッサは、前記複数の変数のうち互いに関連のある少なくとも２つの変数の組み合わせでそれぞれが構成される１以上のグループを示すグループ情報を取得し、前記観測値を取得し、前記メモリから前記異常検知モデルを読み出して、読み出した前記異常検知モデルを用いて前記観測値が異常であるか否かを判定し、前記観測値が異常であると判定した場合、当該観測値と取得した前記グループ情報で示される前記１以上のグループとに基づいて、当該観測値の前記１以上のグループのうち、異常の原因であるグループを特定する。
【０００７】
本開示の一態様に係る異常診断装置は、監視対象の状態を観測することにより得られた、前記状態を示す複数の変数の値で構成される観測値を用いて、当該観測値が異常であるか否かを診断する異常診断装置であって、プロセッサおよびメモリを備え、前記メモリは、複数の前記観測値を用いた学習により生成された異常検知モデルを記憶しており、前記プロセッサは、前記複数の変数のうち互いに関連のある少なくとも２つの変数の組み合わせによりそれぞれが構成される１以上のグループを示すグループ情報を取得し、前記観測値を取得し、前記メモリから前記異常検知モデルを読み出して、読み出した前記異常検知モデルを用いて前記観測値が異常であるか否かを判定し、前記観測値が異常であると判定した場合、取得した前記観測値と取得した前記グループ情報で示される前記１以上のグループとに基づいて、前記観測値の前記１以上のグループのうち、異常の原因であるグループを特定する。
【０００８】
なお、これらの全般的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【０００９】
本開示における異常診断方法および異常診断装置は、異常の原因を効果的に特定することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態に係る異常診断システムの概略図である。
【図２】図２は、実施の形態に係る異常診断装置のハードウェア構成の一例を示すブロック図である。
【図３】図３は、本実施の形態に係る異常診断システムにおける監視対象の一例を示す図である。
【図４】図４は、本実施の形態における異常診断装置の機能構成の一例を示すブロック図である。
【図５】図５は、監視対象から取得された観測データの一例を示す図である。
【図６Ａ】図６Ａは、本実施の形態における異常診断装置のグループを設定するためにディスプレイに表示されるＵＩの一例を示す図である。
【図６Ｂ】図６Ｂは、本実施の形態における異常診断装置のグループを設定するためにディスプレイに表示されるＵＩの一例を示す図である。
【図７】図７は、実施の形態におけるオートエンコーダを示す図である。
【図８】図８は、実施の形態に係る異常検知モデルの生成処理の一例を示すフローチャートである。
【図９】図９は、実施の形態に係る異常検知モデルを用いた判定処理の一例を示すフローチャートである。
【図１０】図１０は異常の原因であるグループを特定する特定処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
（本発明の基礎となった知見）
近年、工場などの設備では、ＩＴ化や自動化が高度に進んでいる。設備を効率よく、かつ、安全に自動化するためには、正確なセンシングと適切なフィードバックとが必要不可欠である。このため、故障、サイバー攻撃などによる異常を検知する異常検知は、設備の不良による大きな損害を事前に回避するために極めて重要な技術である。
【００１２】
その一方で、適切に異常を捉えることができたとしても、何が原因で異常が起きているのか、その原因を追究することは、また別の困難さをはらんでいる。機械学習における一般的な異常検知の手法では、正常状態では発生する可能性が低いイベントを検知するのみであり、その異常の原因についての情報は得られない。そのため、異常検知は、正常状態でないことが様々な可能性を含むネットワークなどの分野においては特に、あまり有効に活用されていないのが現状である（非特許文献１）。
【００１３】
異常が起きた原因を特定するために、観測された値のどの変数が特に異常に大きく寄与しているかを特定することは有効である。例えばセンサが故障した場合には、故障したセンサの観測値だけが異常な値を示すはずである。このため、観測値が異常であると特定できた場合には、速やかに観測値が得られたセンサの故障という原因にたどり着くことができる（特許文献１、２）。
【００１４】
しかし、現実に生じる異常診断では、上記のような、故障したセンサの特定などが目的であることばかりではない。実際には、ある１つの根本的な現象または原因が複数のセンサなどの観測値に影響を及ぼす場面は多い。例えば数学のテストの点数と物理のテストの点数とは、いずれも数理的思考力という根本的な要因に影響を受ける。このため、両者の点数は高い相関関係にあると言える。このように、根本要因に影響を与える異常な現象が、同時に複数の変数に影響を及ぼすことになる。
【００１５】
また、特許文献３の手法では、ある変数に異常の可能性があると判断されると、その変数と強い相関を持つ複数の変数が抽出される。強い相関を持つ変数同士は、共通の要素に影響を受けている可能性が高い。このため、この方法は異常診断にも役立つ。特許文献４の手法も同様に強い相関を持つ変数を共線性データ項目としてまとめている。
【００１６】
しかし、前述の方法は、化学プラントなどにおける設備またはセンサの故障診断など、物理的なシステムを対象としていた。このため、ネットワークを流れるパケットの不正なパラメータを検出する目的など、異常診断のモデルがより複雑な場合、または、悪意を持ってパラメータを操作される場合には、異常となる変数を効果的に特定できない場合がある。
【００１７】
具体的には、サイバー攻撃、マルウェアなどが進化を続けてくる中で、侵入検知システム（ＩＤＳ：Intrusion Detection System）、または、侵入防止システム（ＩＰＳ：Intrusion prevention system）を導入することで、攻撃などを未然に防ぐことが不可欠となってきた。侵入検知システムまたは侵入防止システムは、コンピュータまたはネットワークに対する不正行為を検知または防御するシステムである。
【００１８】
しかし、昨今の攻撃の多様化に伴い、従来用いられてきたシグネチャ型の検知システムでは不正通信を捉えきれなくなってきた。このため、アノマリ型と呼ばれる異常検知のシステムが必要になってきた。シグネチャ型が既知のパターンにしか適用できないのに対して、アノマリ型は未知の攻撃パターンも検知できる可能性がある。しかし、異常を検知できたところで、具体的に何が異常なのかわからない上に、膨大な異常検知アラートを発するため、ユーザが対応に追われてしまうという問題があった。
【００１９】
このような課題を解決するため、本開示の一実施様態の異常診断方法は、監視対象の状態を観測することにより得られた、前記状態を示す複数の変数の値で構成される観測値を用いて、当該観測値が異常であるか否かを診断する異常診断装置が実行する異常診断方法であって、前記異常診断装置は、プロセッサおよびメモリを備え、前記メモリは、複数の前記観測値を用いた学習により生成された異常検知モデルを記憶しており、前記プロセッサは、前記複数の変数のうち互いに関連のある少なくとも２つの変数の組み合わせでそれぞれが構成される１以上のグループを示すグループ情報を取得し、前記観測値を取得し、前記メモリから前記異常検知モデルを読み出して、読み出した前記異常検知モデルを用いて前記観測値が異常であるか否かを判定し、前記観測値が異常であると判定した場合、当該観測値と取得した前記グループ情報で示される前記１以上のグループとに基づいて、当該観測値の前記１以上のグループのうち、異常の原因であるグループを特定する。
【００２０】
これにより、広範な問題に対して高精度に異常の原因となるグループを特定することができる。
【００２１】
また、前記異常検知モデルは、前記複数の観測値を用いて、前記学習としてのオートエンコーダ、変分オートエンコーダ、および、１クラスサポートベクトルマシンのうちの少なくとも１つによって生成されたモデルであってもよい。
【００２２】
これにより、既によい性能を発揮することが知られている異常検知を用いて観測値が異常であるかを判定することができる。また、異常検知が出力するスコアを用いて、自然な損失関数を用いた異常診断を行うことが容易にできる。
【００２３】
また、前記観測値が異常であるか否かの判定では、前記異常検知モデルに前記観測値を入力することでスコアを算出し、算出した前記スコアが予め定められた第１の閾値以上の場合、取得した前記観測値が異常であると判定し、算出した前記スコアが前記第１の閾値未満の場合、取得した前記複数の観測値が異常でないと判定してもよい。
【００２４】
このため、効果的に観測値の異常を検知することができる。
【００２５】
また、前記異常検知モデルは、学習用の正常な複数の前記観測値と、診断用の複数の前記観測値との確率密度比に基づいて生成されたモデルであり、前記観測値の取得では、複数の前記観測値を取得し、前記観測値が異常であるか否かの判定では、前記メモリから読み出した前記異常検知モデルと、取得した前記複数の観測値とを用いてスコアを算出し、算出した前記スコアが予め定められた第１の閾値以上の場合、取得した前記複数の観測値が異常であると判定し、算出した前記スコアが前記第１の閾値未満の場合、取得した前記複数の観測値が異常でないと判定してもよい。
【００２６】
これにより、学習期間のデータが少ないなどの理由でモデリングが困難な場合や、診断対象データが集合として異常かどうかを判断できるようになり、異常であるならばどの変数グループに異常があるかを特定することができる。
【００２７】
また、前記グループの特定では、算出した前記スコアと、前記グループ情報で示される前記１以上のグループ毎に正則化することにより得られるグループ正則化項との和で構成される損失関数が極小値となる変位ベクトルを算出し、算出した前記変位ベクトルのうち、１未満の第２の閾値以上の変数を含むグループを、異常の原因であるグループとして特定してもよい。
【００２８】
これにより、異常の原因であるグループを効果的に特定することができる。
【００２９】
また、前記グループ正則化項は、グループ間では０＜ｐ≦１であり、かつ、グループ内ではｐ＞１であるＬｐ正則化を満たすとしてもよい。
【００３０】
これにより、異常の原因であるグループを効果的に特定することができる。
【００３１】
なお、これらの全般的または具体的な態様は、システム、装置、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、装置、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【００３２】
以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることも出来る。
【００３３】
（実施の形態）
［１．異常診断システムの構成］
まず、本実施の形態における異常診断システムの概略構成について説明する。
【００３４】
図１は、実施の形態に係る異常診断システムの概略図である。
【００３５】
具体的には、図１において、異常診断システム１は、異常診断装置１００、サーバ２００および監視対象３００を備える。異常診断システム１では、監視対象３００の状態を観測することにより得られたデータである観測データが監視対象３００からサーバ２００に送信される。サーバ２００に受信された観測データは、サーバ２００に蓄積される。異常診断装置１００は、サーバ２００に蓄積された観測データを取得する。異常診断装置１００は、例えば、定期的にサーバ２００に蓄積された観測データを取得してもよいし、リアルタイムにサーバ２００に蓄積された観測データを取得してもよい。
【００３６】
異常診断装置１００は、取得した観測データを用いて、観測データに異常である観測値が含まれているか否かを判定する。これにより、異常診断装置１００は、監視対象の異常診断を行う。
【００３７】
監視対象３００は、異常診断の対象となるシステムである。監視対象３００は、例えば、化学プラント、制御システム、車載ネットワークシステムなどである。監視対象３００からは、観測により観測データを得ることができる。観測データは、監視対象３００の状態を示す複数の変数の値で構成される観測値を示すデータである。観測データは、監視対象３００から取得された観測値を示す複数種類のデータ列である。観測値のデータ列は、例えば時系列のベクトルにより表され、それぞれの次元が監視対象３００が含むセンサなどから得られた値である。つまり、観測値は、複数の異なるタイミングのそれぞれにおいて得られた値である。観測値は、例えば、所定の１単位の処理中に観測されることにより得られる値であって、当該処理が終了するタイミングで得られる値である。
【００３８】
異常診断システム１では、異常診断装置１００、サーバ２００および監視対象３００は、互いに通信可能に接続されている。例えば、異常診断システム１では、異常診断装置１００とサーバ２００とは、インターネットなどの汎用のネットワークで接続されていてもよいし、専用のネットワークで接続されていてもよい。また、異常診断システム１では、サーバ２００と監視対象３００とは、インターネットなどの汎用のネットワークで接続されていてもよいし、専用のネットワークで接続されていてもよい。
【００３９】
なお、異常診断システム１は、サーバ２００を備えていなくてもよい。つまり、異常診断システムは、異常診断装置１００および監視対象３００を備える構成であってもよい。この場合の異常診断システム１では、監視対象３００の状態を観測することにより得られたデータである観測データが監視対象３００から異常診断装置１００に直接送信される。また、サーバ２００を備えていない異常診断システムでは、異常診断装置１００と監視対象３００とは、互いに通信可能に接続されており、例えば、インターネットなどの汎用のネットワークで接続されていてもよいし、専用のネットワークで接続されていてもよい。
【００４０】
［２．ハードウェア構成］
［２−１．異常診断装置の構成］
次に、異常診断装置１００のハードウェア構成について図２を用いて説明する。
【００４１】
図２は、実施の形態に係る異常診断装置のハードウェア構成の一例を示すブロック図である。
【００４２】
図２に示すように、異常診断装置１００は、ハードウェア構成として、ＣＰＵ１０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、メインメモリ１０２と、ストレージ１０３と、通信ＩＦ（Ｉｎｔｅｒｆａｃｅ）１０４と、入力ＩＦ（Ｉｎｔｅｒｆａｃｅ）１０５と、ディスプレイ１０６とを備える。
【００４３】
ＣＰＵ１０１は、ストレージ１０３等に記憶された制御プログラムを実行するプロセッサの一例である。
【００４４】
メインメモリ１０２は、ＣＰＵ１０１が制御プログラムを実行するときに使用するワークエリアとして用いられる揮発性の記憶領域、つまりメモリの一例である。
【００４５】
ストレージ１０３は、制御プログラム、コンテンツなどを保持する不揮発性の記憶領域、つまり、メモリの一例である。
【００４６】
通信ＩＦ１０４は、通信ネットワークを介してサーバ２００と通信する通信インタフェースである。通信ＩＦ１０４は、例えば、有線ＬＡＮインタフェースである。なお、通信ＩＦ１０４は、無線ＬＡＮインタフェースであってもよい。また、通信ＩＦ１０４は、ＬＡＮインタフェースに限らずに、通信ネットワークとの通信接続を確立できる通信インタフェースであれば、どのような通信インタフェースであってもよい。
【００４７】
入力ＩＦ１０５は、例えば、テンキー、キーボード、マウスなどの入力装置である。
【００４８】
ディスプレイ１０６は、ＣＰＵ１０１での処理結果を表示する表示装置である。ディスプレイ１０６は、例えば、液晶ディスプレイ、有機ＥＬディスプレイである。
【００４９】
［２−２．監視対象の構成］
次に、異常診断システム１における監視対象３００の一例として制御システム３１０から観測データを得る場合について説明する。
【００５０】
図３は、本実施の形態に係る異常診断システムにおける監視対象の一例を示す図である。図３において、異常診断システム１では、監視対象３００は、例えば、制御システム３１０である。制御システム３１０において観測されることにより得られた観測データは、サーバ２００に送信される。サーバ２００に送信されることで蓄積された観測データは、異常診断装置１００に送信され、異常診断装置１００における観測値の異常診断に用いられる。
【００５１】
制御システム３１０は、ルータ３１１と、スイッチングハブ３１２と、管理端末３１３と、サーバ３１４と、ＰＬＣ（Programmable Logic Controller）３１５と、センサ３１６とを備える。
【００５２】
ルータ３１１は、制御システム３１０と他のネットワークとの間において、データの送受信を中継する通信機器である。ルータ３１１は、受信したデータを解析し、解析した結果に基づいてデータの転送経路を選択するなどのデータの転送制御を行う。
【００５３】
スイッチングハブ３１２は、ルータ３１１、管理端末３１３、サーバ３１４、ＰＬＣ３１５、およびセンサ３１６と通信接続され、受信したデータを接続された機器のうち、受信したデータに含まれる宛先情報に基づく機器に転送する。スイッチングハブ３１２は、例えば、受信したデータをコピーしたデータを出力するミラーポートを有する。スイッチングハブ３１２は、ミラーポートにおいて、サーバ２００と接続されている。観測データは、スイッチングハブ３１２のミラーポート経由で抽出され、サーバ２００に送信される。
【００５４】
管理端末３１３は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレット端末、スマートフォンなどである。
【００５５】
サーバ３１４は、コンピュータであり、例えば、管理端末３１３に所定の機能、データなどを提供する。
【００５６】
ＰＬＣ３１５は、各種機械を制御するための制御装置である。
【００５７】
センサ３１６は、各種センサを含み、例えば、各種物理量を電気信号に変換する機器である。
【００５８】
［３．異常診断システムの機能構成］
次に、異常診断システム１の機能構成について図４を用いて説明する。
【００５９】
図４は、本実施の形態における異常診断装置の機能構成の一例を示すブロック図である。
【００６０】
サーバ２００に蓄積されている観測データ２１０は、学習用データ２１１と診断用データ２１２とを含む。
【００６１】
学習用データ２１１は、取得された観測データ２１０のうちで、機械学習による異常検知モデルを生成するためのデータである。診断用データ２１２は、取得された観測データ２１０のうちで、生成された異常検知モデルを用いて監視対象３００から得られた観測データ２１０が異常か否かを判断する異常診断の対象となるデータである。なお、学習用データ２１１には、正常なデータだけでなく、異常なデータも含む取得された観測データ２１０を用いることができる。例えば、学習用データ２１１は、観測データ２１０の始めの所定期間で取得されたデータであり、診断用データ２１２は、学習用データ２１１を取得した所定期間より後の期間において取得されたデータとしてもよい。
【００６２】
異常診断装置１００は、第１取得部１１０と、グループ情報ＤＢ（Ｄａｔａｂａｓｅ）１２０と、第２取得部１３０と、生成部１４０と、異常検知モデルＤＢ（Ｄａｔａｂａｓｅ）１５０と、判定部１６０と、特定部１７０とを備える。
【００６３】
第１取得部１１０は、監視対象３００の状態を示す複数の変数のうち、互いに関連のある少なくとも２つの変数の組み合わせでそれぞれが構成される１以上のグループを示すグループ情報を取得する。第１取得部１１０は、例えば、ユーザからのグループを示す入力を受け付けることで、グループ情報を取得する。第１取得部１１０は、例えば、入力ＩＦ１０５、ディスプレイ１０６などにより実現される。
【００６４】
グループ情報ＤＢ１２０は、第１取得部１１０により取得されたグループ情報を記憶する。グループ情報ＤＢ１２０は、例えば、ストレージ１０３などにより実現される。
【００６５】
第２取得部１３０は、サーバ２００から観測データ２１０を取得することで、観測データ２１０に含まれる観測値を取得する。第２取得部１３０は、例えば、通信ＩＦ１０４などにより実現される。
【００６６】
生成部１４０は、第２取得部１３０により取得された観測データ２１０のうちの学習用データ２１１を用いた機械学習により異常検知モデルを生成する。機械学習による異常検知モデルの生成は、通常教師なし学習の問題として定式化される。生成部１４０は、例えば、学習用データ２１１を用いてデータの確率密度分布などを推定することで異常検知用のモデルである異常検知モデルを生成する。学習用データ２１１は、例えば、所定の期間、監視対象３００を観測することにより得られた多くのラベル無しデータを含む。生成部１４０による異常検知モデルの生成処理の具体例は、後述する。生成部１４０は、例えば、ＣＰＵ１０１、メインメモリ１０２、ストレージ１０３などにより実現される。
【００６７】
異常検知モデルＤＢ１５０は、生成部１４０により生成された異常検知モデルを記憶する。異常検知モデルＤＢ１５０は、例えば、ストレージなどにより実現される。
【００６８】
判定部１６０は、異常検知モデルＤＢ１５０に記憶されている異常検知モデルを読み出す。判定部１６０は、読み出した異常検知モデルを用いて、第２取得部１３０により取得された観測データ２１０のうち診断用データ２１２が異常であるか否かを判定する。判定部１６０は、例えば、診断用データ２１２に含まれる複数の観測値のそれぞれについて上記の判定を行ってもよいし、複数の観測値について上記の判定を行ってもよい。判定部１６０は、異常検知モデルに対する診断用データ２１２の確率密度が所定の閾値を超えているか否かに応じて、診断用データ２１２が異常であるか否かの判定を行う。判定部１６０は、例えば、得られた上記確率密度が負の対数となる場合、当該確率密度が得られた診断用データ２１２に異常が含まれると判定する。判定部１６０の異常判定の方法はこの限りではない。判定部１６０による判定処理の具体例は、後述する。判定部１６０は、例えば、ＣＰＵ１０１、メインメモリ１０２、ストレージ１０３などにより実現される。
【００６９】
特定部１７０は、診断用データ２１２が異常であると判定部１６０により判定された場合、異常であると判定された診断用データ２１２とグループ情報ＤＢ１２０に記憶されているグループ情報で示される１以上のグループとに基づいて、当該診断用データ２１２の１以上のグループのうち、異常の原因であるグループを特定する。特定部１７０は、異常と判定された診断用データ２１２と、グループ情報とを用いて異常診断を行う。ここで言う異常診断とは、判定部１６０により異常であると判定された診断用データ２１２に関して、当該診断用データ２１２のどの変数グループが異常であるかを診断することである。特定部１７０による異常診断の具体例は、後述する。
【００７０】
なお、特定部１７０は、異常検知モデルＤＢ１５０の異常検知モデルとグループ情報ＤＢ１２０のグループ情報とを用いてどの変数グループが異常であるかを抽出することで異常診断のための異常診断モデルを予め生成していてもよい。この場合、特定部１７０は、判定部１６０で異常と判定された診断用データ２１２に対して、予め生成した異常診断モデルを用いることで、異常診断を行う。
【００７１】
特定部１７０は、ＣＰＵ１０１、メインメモリ１０２、ストレージ１０３などにより実現される。
【００７２】
なお、異常診断装置１００は、異常検知モデルを生成する生成部１４０を備える構成であるとしたが、生成部１４０を備えていなくてもよい。つまり、学習用データを用いて異常検知モデルを生成する装置は、異常診断装置１００とは別の装置により実現されていてもよく、異常診断装置１００は当該別の装置から異常検知モデルを取得してもよい。
【００７３】
なお、異常診断システム１は、異常診断装置１００が観測データ２１０を取得できれば、監視対象３００を備えていなくてもよい。
【００７４】
［４．観測データの一例］
次に、観測データ２１０の詳細について図５を用いて説明する。
【００７５】
図５は、監視対象から取得された観測データの一例を示す図である。
【００７６】
図５において、観測データ２１０は、セッション継続時間と、プロトコル種別と、サービス名と、フラグと、サーバ送信データ量と、サーバ受信データ量と、サーバ直近通信回数と、サーバ直近エラー率と、ログインステータスと、ルートシェルフラグと、ルートで実行された命令数とのそれぞれで示される監視対象３００の各状態の項目において、複数のセッションごとに観測された観測値１〜７で構成されている。つまり、図５で示される複数の項目は、監視対象の状態を示す複数の変数を示し、観測値１〜７は、複数の異なるタイミングにおいて得られる観測値を示す。例えば、観測値１〜７のそれぞれは、１つのセッションにおいて、監視対象３００の上記複数の各項目で示される状態が観測されることにより得られた値である。よって、観測値ｎ（ｎは自然数）で観測された値は、セッションｎ（ｎは自然数）に対する処理中に観測された値である。
【００７７】
図５における観測データ２１０の観測値の項目は、ネットワークを観測して得られる特徴量の一例である。これらの特徴量は、非特許文献２におけるＮＳＬ−ＫＤＤデータセットで提供されている特徴量の一部である。これらの特徴量は、ネットワークを流れるパケットの情報などを監視対象として、様々な種別の変数を観測することにより得られる。
【００７８】
図５の観測データ２１０は、観測値として、セッション継続時間、サーバ送信データ量、サーバ受信データ量、サーバ直近通信回数、サーバ直近エラー率、およびルートで実行された命令数で観測された値である実数と、プロトコル種別、サービス名、およびフラグで観測されたカテゴリ情報、ログインステータスおよびルートシェルフラグで観測されたフラグ情報などを含んだ生の値を含む。異常診断装置１００は、これらの観測値のうち、例えば、カテゴリ情報を生の値のままで、異常検知、異常診断などの各処理において利用することが難しい。そのため、カテゴリ情報等の観測値を１−ｏｆ−Ｎエンコードを用いてベクトル値に変換する。ベクトル値への変換は、サーバ２００において行われてもよいし、異常診断装置１００において行われてもよい。
【００７９】
ここで１−ｏｆ−Ｎエンコードとは、Ｎ種類の観測値に対し、１次元ずつ割り当てを行い、その観測値が該当する次元のみを１とし、他の次元を０とする数値を決定することでカテゴリ情報などの観測値をベクトル値に変換するためのエンコードである。
【００８０】
例えば、晴／雨／曇の３種類である観測値に１−ｏｆ−Ｎエンコードを用いる場合、Ｎ＝３であるため、例えば、晴を（１，０，０）、雨を（０，１，０）、曇を（０，０，１）のように３次元に観測値を割り当てる変換を行うことで、晴／雨／曇という観測値からベクトル値が得られる。
【００８１】
また、ＯＮ／ＯＦＦのような２値のフラグの観測値に対しては、ＯＮを１、ＯＦＦを０という特徴量で表す変換を行うことで数値化してもよい。
【００８２】
［５．グループの設定の一例］
次に、グループの設定方法について図６Ａおよび図６Ｂを用いて詳細に説明する。
【００８３】
図６Ａおよび図６Ｂは、実施の形態における異常診断装置のグループを設定するためにディスプレイに表示されるＵＩの一例を示す図である。
【００８４】
図６Ａにおいて、ディスプレイ１０６には、少なくとも２つの変数の組み合わせで構成されるグループを設定するためのＵＩ１１１が表示されている。ＵＩ１１１は、項目１１２と、グループ追加ボタン１１３と、グループ削除ボタン１１４とで構成されている。項目１１２には、監視対象３００から取得される観測データ２１０に含まれる複数の項目が表示されている。項目１１２は、具体的には、セッション継続時間と、プロトコル種別と、サービス名と、フラグと、サーバ送信データ量と、サーバ受信データ量と、サーバ直近通信回数と、サーバ直近エラー率と、ログインステータスと、ルートシェルフラグと、ルートで実行された命令数とを含む。ユーザは、入力ＩＦ１０５を用いてＵＩ１１１に対する入力を行うことで、これらの項目１１２に対して、グループを設定する。
【００８５】
図６Ａは、ＵＩ１１１初期状態を示しており、項目１１２に対してグループに属さないことを示すグループなし１１５を設定するためのチェックボックスが表示されている。
【００８６】
グルーピングを行う場合、ユーザは、グループ追加ボタン１１３を押下することでグループを追加することができ、追加されたグループに属する項目を設定できる。
【００８７】
図６Ｂは、グループ追加ボタン１１３を押下することで、グループとして「グループ１」、「グループ２」を追加した場合に表示されるＵＩ１１１ａを示す。
【００８８】
ＵＩ１１１ａでは、「グループ１」として、「セッション継続時間」、「サーバ送信データ量」、および「サーバ受信データ量」が設定されている。「セッションの継続時間」は、送受信データが大きい場合に大きくなるので、「セッション継続時間」、「サーバ送信データ量」、および「サーバ受信データ量」は互いに関連がある。このため、「セッション継続時間」、「サーバ送信データ量」、および「サーバ受信データ量」は、グルーピングされている。
【００８９】
また、ＵＩ１１１ａでは、「グループ２」として、「ルートシェルフラグ」および「ルートで実行された命令数」が設定されている。「ルートシェルフラグ」がＯＮの場合に、「ルートで実行された命令数」が１以上になるため、「ルートシェルフラグ」および「ルートで実行された命令数」は互いに関連がある。このため、「ルートシェルフラグ」および「ルートで実行された命令数」は、グループピングされている。
【００９０】
ＵＩ１１１、１１１ａを用いた項目１１２のグループの設定では、複数の項目それぞれは「グループなし」を含む１つのグループに含まれるように設定され、２つ以上のグループに属する項目はないものとする。
【００９１】
また、項目１１２では「プロトコル種別」を観測値としているが、代わりに、「ｔｃｐ」、「ｕｄｐ」、および「ｉｃｍｐ」の３通りの観測値とする場合、つまり、項目として「プロトコル種別」の代わりに「ｔｃｐ」、「ｕｄｐ」、および「ｉｃｍｐ」の３項目とする場合は、これらの３項目を同一のグループとして設定してもよい。
【００９２】
設定したグループを削除する場合は、削除するグループを選択した上でグループ削除ボタン１１４を押下することで選択したグループを削除できる。なお、ＵＩ１１１、１１１ａでは、グループを選択したことは、例えば、「グループ１」、「グループ２」および「グループなし」のいずれかを選択する入力を受け付けたときに、当該入力により示されるグループが強調表示されることで示されてもよい。
【００９３】
［６．生成処理］
次に、生成部１４０による異常検知モデルの生成処理について詳細に説明する。
【００９４】
異常検知モデルの生成の一例として、オートエンコーダを用いる場合について図７を用いて説明する。
【００９５】
図７は、実施の形態におけるオートエンコーダを示す図である。
【００９６】
図７に示すように、オートエンコーダは、ニューラルネットワークの一種であり、入力を表す特徴の情報量を次元圧縮により抽出する。オートエンコーダは、入力層および出力層よりも小さい次元の中間層を有する３層以上のニューラルネットワークにおいて、入力特徴ベクトルと出力ベクトルとが同じ値になるように重み付けを決定する機械学習である。
【００９７】
図８は、実施の形態に係る異常検知モデルの生成処理の一例を示すフローチャートである。
【００９８】
生成部１４０は、オートエンコーダのハイパーパラメータを取得する（Ｓ１１）。ハイパーパラメータとは、オートエンコーダの中間層のノード数、学習率、ドロップアウト関数のパラメータなどである。ドロップアウトは、オートエンコーダを学習する際に中間ノードの値をランダムに０にするテクニックである。生成部１４０は、ユーザの入力ＩＦ１０５への入力を受け付けることによりハイパーパラメータを取得してもよいし、予めストレージ１０３に記憶されているハイパーパラメータをストレージ１０３から取得してもよいし、外部の機器から通信ＩＦ１０４を用いてハイパーパラメータを取得してもよい。
【００９９】
生成部１４０は、オートエンコーダで学習する学習用データ２１１を第２取得部１３０から取得する（Ｓ１２）。
【０１００】
生成部１４０は、オートエンコーダを用いて学習を行わせ、オートエンコーダにおける重みパラメータを調整することで、学習用データ２１１を適切に圧縮および復元できる重みパラメータを取得する（Ｓ１３）。生成部１４０は、取得した重みパラメータをステップＳ１１で取得されたハイパーパラメータが設定されたオートエンコーダに適用することで、異常検知モデルを生成する。
【０１０１】
［７．判定処理］
次に、生成した異常検知モデルを用いた判定部１６０による判定処理について詳細に説明する。
【０１０２】
図９は、実施の形態に係る異常検知モデルを用いた判定処理の一例を示すフローチャートである。オートエンコーダを用いて異常の判定を行う。
【０１０３】
判定部１６０は、異常検知モデルＤＢ１５０から異常検知モデルを読み出す（Ｓ２１）。判定部１６０は、例えば、異常検知モデルＤＢ１５０から学習済のオートエンコーダを読み込む。
【０１０４】
判定部１６０は、スコアが異常であると判定するための第１の閾値を取得する（Ｓ２２）。判定部１６０は、例えば、交差検証法を用いて第１の閾値を算出することで、第１の閾値を取得してもよい。交差検証法では、例えば、複数の学習用データ２１１を４：１に分割し、分割した一部（４：１の４）を学習に用い、残り（４：１の１）を検証に用いる。分割した学習用データ２１１のうち学習に用いるデータを用いてオートエンコーダを学習させ、かつ、分割した学習用データ２１１のうち検証に用いるデータを用いて、当該学習により得られたオートエンコーダで異常判定を行い、異常と判定される確率が０．０１％程度になるように、判定部１６０は、第１の閾値を算出してもよい。判定部１６０は、また、ユーザの入力ＩＦ１０５への入力を受け付けることにより第１の閾値を取得してもよいし、予めストレージ１０３に記憶されている第１の閾値をストレージ１０３から取得してもよいし、外部の機器から通信ＩＦ１０４を用いて第１の閾値を取得してもよい。
【０１０５】
判定部１６０は、第２取得部１３０により取得された診断用データ２１２を取得する（Ｓ２３）。
【０１０６】
判定部１６０は、第２取得部１３０により取得された診断用データ２１２を学習済のオートエンコーダに入力することでスコアを算出する（Ｓ２４）。判定部１６０は、例えば、式１を用いてスコアを算出する。
【０１０７】
【数１】
2019061565.tif 000003
【０１０８】
式１において、ｘは、オートエンコーダへの入力ベクトルを示し、ｉは、ｘのｉ次元目であることを示し、ｉは、オートエンコーダの出力ベクトルのｉ次元目であることを示す。また、式１において、ｍは、入力ベクトルおよび出力ベクトルの次元数であることを示す。また、式１において、スコアＪ（ｘ）は、診断用データをオートエンコーダに入力した場合の出力ベクトルとの２乗平均誤差を示す。
【０１０９】
判定部１６０は、算出したスコアが第１の閾値以上か否かを判定する（Ｓ２５）。
【０１１０】
判定部１６０は、スコアが第１の閾値以上の場合（Ｓ２５でＹｅｓ）、入力された診断用データが異常であると判定し（Ｓ２６）、判定結果を特定部１７０へ通知する。
【０１１１】
判定部１６０は、スコアが第１の閾値未満の場合（Ｓ２５でＮｏ）、入力された診断用データが正常であると判定する（Ｓ２７）。
【０１１２】
特定部１７０は、算出されたスコアとグループ情報とを用いて異常の原因であるグループを特定する特定処理を行う（Ｓ２８）。特定処理の詳細は後述する。
【０１１３】
［８．特定処理］
次に、異常の原因であるグループを特定する特定処理について、詳細に説明する。
【０１１４】
図１０は、実施の形態に係る異常の原因であるグループを特定する特定処理の一例を示すフローチャートである。
【０１１５】
特定部１７０は、判定部１６０においてで異常と判定された診断用データ２１２のスコアを用いて、異常の原因であるグループを特定する特定処理を行う。式２は、異常の原因であるグループを特定するために使用する損失関数である。
【０１１６】
【数２】
2019061565.tif 000004
【０１１７】
式２において、δは入力ベクトルと同じ次元数を持つ変位ベクトルを示し、λは正則化パラメータを示し、ｎｇは変数グループの個数を示し、ｄｉは変数グループｇｉに属する変数の数を示す。Ｊ（ｘ）はスコアを示す。
【０１１８】
損失関数は、式２に示すように、スコアと、グループ正則化による元の入力値からの変位δのＬ２ノルムをグループごとに足し合わせたスコアとの和として定義される。
【０１１９】
式２におけるグループ正則化項は、グループ間ではｐ＝１であり、グループ内ではｐ＝２であるＬｐ正則化を満たす式である。なお、グループ正則化項は、式２に限らずに、グループ間では０＜ｐ≦１であり、かつ、グループ内ではｐ＞１であるＬｐ正則化を満たせばよい。
【０１２０】
また、式２ではグループ正則化は、パラメータλを掛けることで重み付けされている。
【０１２１】
特定部１７０は、パラメータλを取得する（Ｓ３１）。特定部１７０は、パラメータλとして、任意の値を取得してもよいし、交差検証法を用いて算出することで取得してもよい。また、特定部１７０は、ユーザの入力ＩＦ１０５への入力を受け付けることによりパラメータλを取得してもよいし、予めストレージ１０３に記憶されているパラメータλをストレージ１０３から取得してもよいし、外部の機器から通信ＩＦ１０４を用いてパラメータλを取得してもよい。
【０１２２】
特定部１７０は、式２の損失関数の値が極小となる変位ベクトルδを、初期値０として勾配法で探索して算出する（Ｓ３２）。つまり、特定部１７０は、判定部１６０により第１の閾値以上であると判定されたスコアと、グループ情報で示される１以上のグループ毎に正則化することにより得られるグループ正則化項との和で構成される損失関数が極小値となる変位ベクトルδを算出する。
【０１２３】
特定部１７０は、観測値の複数の変数のうちゼロでない変数、もしくは非常に小さな正の数ε（第２の閾値）に対し、絶対値が第２の閾値ε以上の変数を含むグループを異常の原因であるグループであると特定する（Ｓ３３）。第２の閾値は、０より大きく１未満の値である。
【０１２４】
［９．効果など］
本実施の形態に係る異常診断方法によれば、複数の変数を観測した値で構成される観測値において、変数のグループを予め定めておくため、広範な問題に対して高精度に異常の原因となるグループを特定することができる。
【０１２５】
また、異常診断方法によれば、オートエンコーダなど、既によい性能を発揮することが知られている異常検知を用いて観測値が異常であるか否かを判定することができる。また、異常検知が出力するスコアを用いて、自然な損失関数を用いた異常診断を行うことが容易にできる。
【０１２６】
また、異常診断方法によれば、損失関数が極小値となる変位ベクトルのうち、第２の閾値以上の変数を含むグループを、異常の原因であるグループとして特定するため、効果的に異常の原因であるグループを特定することができる。
【０１２７】
また、異常診断方法によれば、グループ正則化項は、グループ間では０＜ｐ≦１であり、かつ、グループ内ではｐ＞１であるＬｐ正則化を満たすため、効果的に異常の原因であるグループを特定することができる。
【０１２８】
［１０．その他の変形例］
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０１２９】
（１）
上記の実施の形態では、監視対象として制御システムの構成を説明した。そして、スイッチングハブから得られる観測データを用いて異常判定を実施するものとして説明したが、それだけに限られない。例えば化学プラントにおける種々のセンサから得られる観測値を観測データとして取得し、当該観測データを用いて異常判定を実施しても良い。
【０１３０】
（２）
上記の実施の形態に係る異常診断装置１００では、ベクトル値への変換の手段として１−ｏｆ−Ｎエンコードを利用して数値化するとしたが、エンコードの方法はそれだけに限らない。例えば、非特許文献３にあるようなｅｍｂｅｄｄｉｎｇを用いる方法や、乱数を用いてエンコードする方法など、特定の次元数の実数値ベクトルに変換する方法が考えられる。これにより、より高精度に異常検知モデルの生成や異常判定を行うことができる。さらに、新たなカテゴリが生じる場合であっても、変数の次元を増やすことなくベクトル化することができる。
【０１３１】
（３）
上記の実施の形態に係る異常診断装置１００では、変数のグルーピングをユーザからの入力ＩＦ１０５への入力に基づいて設定するとしたが、これに限らない。ＵＩ１１１、１１１ａには、さらに、変数間の相互情報量を示す表示が追加されてもよい。また、ユーザから入力ＩＦ１０５にグルーピングしたいグループ数を示す入力が受け付けられた場合、当該入力で示されるグループ数に応じて、非特許文献４または非特許文献５に記載の方法で自動的にグルーピングしてもよい。
【０１３２】
また、変数のグルーピングとして、任意の変数を引数とする関数、例えば、恒等関数が別の変数である場合や、任意の角度θの三角関数であるｓｉｎθおよびｃｏｓθが別の変数である場合、変数間の関連の大きさに応じてこれらの変数のグルーピングをすればよい。
【０１３３】
（４）
上記の実施の形態において、オートエンコーダを用いた異常判定を行ったが、他の方法を用いて異常判定を行ってもよい。例えば、カーネル密度推定によって確率密度関数を推定し、所定の閾値を下回る場合に異常と判定する方法を用いてもよいし、オートエンコーダの代わりに１クラスサポートベクトルマシンまたは変分オートエンコーダを用いて異常判定を行ってもよい。
【０１３４】
１クラスサポートベクトルマシンを用いる場合、カーネル法を使って入力ベクトルを特徴空間に写像し、その特徴空間上で正常と異常を識別する境界面を決定することで、異常判定を行う。
【０１３５】
変分オートエンコーダを用いる場合、入力データが生成される尤度を算出するため、異常の原因となる変数グループを特定する際に用いる損失関数は、２乗平均誤差ではなく、負の対数尤度などを用いることができる。
【０１３６】
他にも、正常だと仮定できるサンプル群と、異常判定対象のサンプル群との間の確率密度の比を推定する密度比推定を使って異常を判定してもよい。この場合、異常診断装置１００では、生成部１４０は、学習用の正常な複数の観測データと、診断用の複数の観測データに基づいて、学習用データと診断用データの確率密度比に基づく異常検知モデルを生成する。つまり、上記実施の形態では、生成部１４０は、異常なデータを含む観測データ２１０を学習用データ２１１として用いているが、確率密度比に基づく異常検知モデルを生成する場合、異常なデータを除いた正常なデータのみの学習用データ２１１を用いる点と、さらに診断用データ２１２を用いる点とが異なる。また、判定部１６０は、診断用の複数の観測データに関し、生成部１４０により生成された確率密度比に基づく異常検知モデルを用いてスコアを算出する。そして、判定部１６０は、算出したスコアが予め定められた第１の閾値以上の場合、取得した複数の観測値が異常であると判定し、算出したスコアが第１の閾値未満の場合、取得した複数の観測値が異常でないと判定する。
【０１３７】
（５）
上記の実施の形態では、異常の原因となる変数グループを特定する方法として、グループ正則化を用いたが、その他にも様々な方法が考えられる。例えば、オートエンコーダの出力値の２乗平均誤差が所定の値を超えている変数グループを異常の原因となる変数グループと特定してもよいし、特定の変数グループ以外の変数を固定し、特定の変数グループのみを変数とみなしてスコアを極小となる値を勾配法で求め、最もスコアが小さくなる場合の変数グループを異常の原因となる変数グループであるとしてもよい。
【０１３８】
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、ＣＰＵまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の異常診断方法などを実現するソフトウェアは、次のようなプログラムである。
【０１３９】
すなわち、このプログラムは、コンピュータに、監視対象の状態を観測することにより得られた、前記状態を示す複数の変数の値で構成される観測値を用いて、当該観測値が異常であるか否かを診断する異常診断装置が実行する異常診断方法であって、前記異常診断装置は、プロセッサおよびメモリを備え、前記メモリは、複数の前記観測値を用いた学習により生成された異常検知モデルを記憶しており、前記プロセッサは、前記複数の変数のうち互いに関連のある少なくとも２つの変数の組み合わせでそれぞれが構成される１以上のグループを示すグループ情報を取得し、前記観測値を取得し、前記メモリから前記異常検知モデルを読み出して、読み出した前記異常検知モデルを用いて前記観測値が異常であるか否かを判定し、前記観測値が異常であると判定した場合、当該観測値と取得した前記グループ情報で示される前記１以上のグループとに基づいて、当該観測値の前記１以上のグループのうち、異常の原因であるグループを特定する異常診断方法を実行させる。
【０１４０】
以上、本発明の一つまたは複数の態様に係る異常診断方法および異常診断装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の一つまたは複数の態様の範囲内に含まれてもよい。
【産業上の利用可能性】
【０１４１】
本開示は、多次元情報における異常に寄与する変数を特定する場合に有用である。
【符号の説明】
【０１４２】
１    異常診断システム
１００    異常診断装置
１０１    ＣＰＵ
１０２    メインメモリ
１０３    ストレージ
１０４    通信ＩＦ
１０５    入力ＩＦ
１０６    ディスプレイ
１１０    第１取得部
１１１、１１１ａ    ＵＩ
１１２    項目
１１３    グループ追加ボタン
１１４    グループ削除ボタン
１１５    グループなし
１２０    グループ情報ＤＢ
１３０    第２取得部
１４０    生成部
１５０    異常検知モデルＤＢ
１６０    判定部
１７０    特定部
２００    サーバ
２１０    観測データ
２１１    学習用データ
２１２    診断用データ
３００    監視対象
３１０    制御システム
３１１    ルータ
３１２    スイッチングハブ
３１３    管理端末
３１４    サーバ
３１５    ＰＬＣ
３１６    センサ
【図１】
2019061565.tif 000005
【図２】
2019061565.tif 000006
【図３】
2019061565.tif 000007
【図４】
2019061565.tif 000008
【図５】
2019061565.tif 000009
【図６Ａ】
2019061565.tif 000010
【図６Ｂ】
2019061565.tif 000011
【図７】
2019061565.tif 000012
【図８】
2019061565.tif 000013
【図９】
2019061565.tif 000014
【図１０】
2019061565.tif 000015