容易に導入が可能になった異常検知
例えば、「材料の加工装置の故障を検知したい。」というニーズがあった場合、一般的な異常検知の取り組みでは、
装置からの情報(センサーデータ)をインプットとして取り込む
装置の通常運転時のデータを元に機械学習のモデルを作成
異常の状態(いつもとは違う状態)を検知できるか確認し、アラートを設定
リアルタイムで検知できるように、装置の常時モニタリングを開始する
というようなステップを踏みます。
このようなステップだけで、実際に異常の検知が可能になります。ソリューションによっては機械学習のモデル作成に要する時間も短く抑えられるものもあり、このステップ全体を数日で完了することも可能です。
なぜ運用に乗らないのか?
導入も容易で、異常の検知も正しく行えているのに、それでも「実際の運用で使えない」「どこかしっくりこない」という声が聞こえる理由はどこにあるのでしょうか?
そのような状況になってしまう代表的な原因を3つピックアップしてみました。
原因その1
データの「いつもと違う状態」が検知したい異常を示しているとは限らない
シンプルな異常検知のシステムでは、通常稼働のデータを機械学習し、ベースラインを自動計算します。そして、センサーデータが「いつもと違う状態」であった場合にアラートをあげます。これが運用に乗らない1つ目の原因です。
通常稼働時の状態が非常に安定していて、まったくブレのないデータを出すような装置を監視するのには、このようなシステムでも異常を検知することができます。
(いままで全くモニタリングをしておらず、)装置のモニタリングを自動化したいという場合には一定の効果を得ることが出来ます。ただし、このような装置の場合、少しでも数値がブレたら故障となるため、わざわざ分析システムを導入するまでもない。ということになります。
また、このような異常検知の仕組みでは、センサーデータからの情報が時間帯や気温・室温、加工する材料などで異なるような場合、繁忙期や季節・気温、材料が変わっただけでアラートが鳴り続けることになるので、PoCで異常の検出ができたとしても、実際の運用に耐えうるレベルには至らないのです。
原因その2
単一のメトリクスではなく、複数のメトリクスを認識する必要がある
多くの場合、本当に知りたい異常は「それに関係するメトリクス」を複数認識することで初めて検知することができます。
例えば、「室温A」で「材料B」を加工したときに「センサーデータの値がCを超えた」場合は異常である。というように、メトリクスを複数つなぎ合わせることで「いつもと違う状態」を見つけることができるということです。
これができてようやく、利用者が本当に知りたい「いつもと違う状態」を検知できたということになるのです。つまり、一つのデータだけを見ていても、「利用者にとっての異常」を検知することは出来ないということになります。
よくあるケースは、このような複合した情報が必要にも関わらず、「学習データが足りない」から異常を検知することが出来ない。と勘違いすることです。
残念ながら1つのデータに対する分析精度をいくら高めても、いくら学習コストをかけてもこの壁を超えることはできません。
原因その3
複数のメトリクスや状態を合わせた分析システムは複雑すぎる
上記で述べた理由と重なる部分もありますが、複数のメトリクス・状態を合わせて異常を検知することは、データの保存の仕方やメトリクスの関連の付け方などノウハウがないと難しいです。
複数の状態を組み合わせることで異常が検知できることがわかっていても、いざやろうとすると「どうやってやるかわからない」「システムが複雑すぎる」など結局あきらめてしまうことになります。
一般的な異常検知ソリューションでは、異常が発生した場合、他のメトリクスを比較することはできますが、メトリクスを連結して「いつもと違う」を知らせることはしてくれません。異常が発生してから他のメトリクスと比較をするのでは、ノイズが多すぎて運用に耐えれるはずがありません。
原因その4
監視対象は変動する。異常検知のシステムには継続的なアップデートの仕組みが不可欠
異常検知システムのPoCを行う場合、分析に直接関連のある項目にばかり関心が向いてしまいますが、それ以外にも大事なことがあります。
言葉にすると当たり前のことですが、監視対象は変動するため、分析モデル・監視システムはすぐに陳腐化するということです。
以下は、運用を開始して暫く経つと対応の必要がでてくる項目です。
- データの種類、監視対象のシステムが増えたら追加できるか?
- 機械学習のモデルを継続的に更新していけるか?
- 規模が大きくなった場合のスケールアップ(計算能力、データ処理)
- 分析モデルの更新時の検証は容易にできるか?
多くの場合、利用者が納得できる異常検知を行うには、監視システムを継続的に改善し、どのような分析が適切か?という部分を運用をしながら調整していく必要があります。
異常検知には「継続的なアップデートができるか?」という部分の重要度は高く、考慮しておかないとあっという間に監視システムは腐ってしまいます。
異常検知≠予知保全
機械学習やビッグデータを利用し、そこから本当の意味で価値を得るには「いつもと違う」だけを知らせる異常検知では十分とは言えません。
故障による不慮の停止や過度なメンテナンスを減らし、可能な限りサービスを持続する。将来のリスクを可能な限り取り除きたい。
そのような利用者、運用チームのニーズを実現するには、上記のうまく行かない原因を踏まえ、本当の意味での「いつもと違う状態」を認識できる必要があります。それが出来て初めて、障害が発生する前に対処する異常検知の次のステップである「予知保全」に向けた取り組みができるようになります。