予知保全のための機械学習

予知保全のための機械学習

[[197940]]

要点:

  • 将来のシステム障害を監視し、事前にメンテナンスをスケジュールするための予測メンテナンス システム (PMS) について学習します。
  • システムの予測メンテナンスのための機械学習モデルの構築方法を探る
  • モデルの選択やオートエンコーダ技術を使用したセンサーノイズの除去など、機械学習の処理手順を理解する
  • 機械学習モデルをトレーニングし、WSO2 Complex Event Processor 製品で実行する方法を学びます。
  • アプリケーション例: NASA のエンジン故障データセットで回帰モデルを使用して残存耐用年数 (RUL) を予測する

私たちは日常生活で多くのシステムや機械に依存しています。私たちは車を運転したり、エレベーターに乗ったり、飛行機に乗ったりします。タービンは電気を生み出し、病院の機械は私たちの命を支えています。これらのシステムは失敗します。失敗の中には、単に人々の生活に不便をもたらすだけのものもありますが、生命を脅かすものもあります。

リスクが高い場合は、システムの定期メンテナンスを実行します。たとえば、車は数か月ごとに整備されますが、飛行機は毎日整備されます。ただし、この記事の後半で説明するように、これらのアプローチはリソースの無駄につながります。

予測メンテナンスでは、障害を予測し、システムを修復または交換したり、障害が発生したときに計画を立てたりするための措置を講じることができます。コストを大幅に節約し、高い予測可能性をもたらし、システムの可用性を向上させることができます。

予測メンテナンスは 2 つの方法でコストを節約します。

  • ダウンタイムを回避または最小限に抑えます。ダウンタイムによる顧客の不満を回避し、コストを節約し、時には命を救うこともできます。
  • 定期メンテナンス業務を最適化します。

これを理解するために、タクシー会社を見てみましょう。タクシーが故障した場合、会社は不満を持った顧客を慰め、代わりの車両を派遣する必要があり、その間、タクシ​​ーと運転手は両方とも修理中は何もせずに待機することになる。失敗のコストは見た目よりもはるかに高くなります。

この問題に対処する 1 つの方法は、受動的な支持者となり、信頼性の低いコンポーネントが故障する前に交換することです。たとえば、オイルやタイヤの交換などの定期的なメンテナンス作業を実行します。定期的なメンテナンスは故障よりも優れていますが、当社では実際に必要になる前にシステムのメンテナンスを実施しています。したがって、これは完璧な解決策ではありません。たとえば、3,000 マイルごとにオイルを交換するのは、オイルの効率的な使用とは言えません。故障をより正確に予測できれば、タクシーはオイル交換なしで何百マイルも走行できるようになります。

予測メンテナンスは両極端を回避し、リソースの使用率を最大化します。異常や障害モードを検出し、早期に警告を発します。これらのアラートにより、これらのコンポーネントのメンテナンスがより効率的になります。

この記事では、予測メンテナンスのための機械学習モデルの構築方法について説明します。次のセクションでは機械学習の手法について説明し、その後、例として使用される NASA データセットについて説明します。第 4 章と第 5 章では、機械学習モデルのトレーニング方法について説明します。 「WSO2 CEP を使用したモデルの実行」セクションでは、モデルを実際のデータ フローに適用する方法について説明します。

予知保全のための機械学習

予測保守を実行するために、まずシステムにセンサーを追加し、システムの動作を監視および収集しました。予知保全に必要なデータは時系列データです。データには、タイムスタンプ、そのタイムスタンプで収集されたセンサーの読み取り値、およびデバイス番号が含まれます。予測保守の目的は、その時点までのデータを使用して、ある時点「t」でデバイスが近い将来に故障するかどうかを予測することです。

予測メンテナンスは、次の 2 つの方法のいずれかで実現できます。

  • 分類方法 - 次の n ステップで障害が発生する可能性があるかどうかを予測します。
  • 回帰法 - 次の障害が発生するまでの残り時間を予測します。これを残存耐用年数 (RUL) と呼びます。

前者の方法では、ブール値で表される答えしか提供できませんが、非常に少ないデータから高い精度を達成できます。後者のアプローチでは、障害が発生した時期に関する詳細な情報を提供できますが、より多くのデータも必要になります。 NASA のエンジン故障データセットで両方のアプローチを試してみます。

ターボファンエンジン劣化データセット

ターボファン エンジンは、NASA の宇宙探査機関が使用する最新のガソリン タービン エンジンです。 NASA は、一定期間の運転後にターボファン エンジンが故障することを予測するために、次のデータセットを生成しました。このデータセットは、PCoE データセットから取得できます。

データセットには、各エンジンの時系列が含まれています。すべてのエンジンは同じタイプですが、製造プロセス中に、各エンジンの初期の摩耗が異なり、ユーザーはそれに気づきません。各エンジンのパフォーマンスを変えるために、3 つのオプション構成が用意されています。各エンジンには、エンジンの稼働中にエンジンの状態に関連する測定値を収集する 21 個のセンサーが搭載されています。収集されたデータにはセンサーノイズが多少含まれています。

時間が経つにつれて、各エンジンにはセンサーの読み取り値から検出できる欠陥が生じます。時系列は障害が発生する前のある時点で終了します。データには、エンジン ユニット番号、タイムスタンプ、3 つの構成、および 21 個のセンサー読み取りデータが含まれます。

下の図 1 と 2 はデータのサブセットを示しています。

図1: データサブセット

図2: データのサブセットの最初の数列

この実験の目的は、次の障害がいつ発生するかを予測することです。

回帰分析を使用して残存耐用年数を予測する (RUL)

RUL を予測する目的は、実際の RUL 値と予測された RUL 値の間の誤差を減らすことです。大きな誤差に対して厳しいペナルティを課し、アルゴリズムが実際の RUL に近い結果を予測するように強制するため、私たちは基準として二乗平均平方根誤差を使用します。

***ステージ: 以下のパイプラインは予測プロセスについて説明します。最初のステップとして、パイプラインでいくつかの重要なステップを実行して、何が可能であるかを大まかに把握します。特徴エンジニアリングを実行する代わりに、生データに対してアルゴリズムを実行しました。

ステージ1: モデルの選択

下の図 3 は、予知保全のためのモデル選択パイプラインを示しています。ここでは、暗い色のパイプライン ステップのみが使用されます。

図3: モデル選択のための予測メンテナンスパイプライン

scikit learn と H2O の多くの回帰アルゴリズムを使用しました。ディープラーニングに関しては、分類と回帰の両方のアプリケーションに使用できる H2O のディープラーニング アルゴリズムを使用しました。このアルゴリズムは、多層フィードフォワード ニューラル ネットワークに基づいており、バックプロパゲーションの確率的勾配降下法を使用してニューラル ネットワークをトレーニングします。

下の図4に結果を示します。このモデルは 25 ~ 35 の二乗平均平方根誤差を生成する可能性があります。つまり、RUL には約 25 ~ 35 タイム ステップの誤差が生じます。

図4: モデル選択の二乗平均平方根誤差

次のいくつかのステップでは、ディープラーニング モデルに焦点を当てます。

ステージ2: オートエンコーダーによるセンサーノイズの除去

下の図 5 は、ノイズ除去機能を備えた予測メンテナンス パイプラインを示しています。ここでは、暗い色のパイプライン ステップのみが使用されます。

図5: モデル選択のための予測メンテナンスパイプライン

一般的に、センサーの読み取り値にはノイズが含まれます。ソフトウェアに付属する ReadMe ファイルでこれが確認されています。したがって、ノイズを除去するためにオートエンコーダを使用します。オートエンコーダは、ネットワークの入力と出力として同じデータセットを使用してモデルをトレーニングする単純なニューラル ネットワークです。ネットワークのパラメータの数は、データセットの次元よりも少なくなります。これは、データが主要な次元で表現される主成分分析 (PCA) (http://setosa.io/ev/principal-component-analysis/) と非常によく似ています。ノイズの次元は通常のデータよりもはるかに高いため、このプロセスによってノイズを削減できます。

ノイズを除去するために、3 つの隠し層と次の基準を備えた H2O オートエンコーダーを使用しました。

ノイズを除去すると、RMS エラーは 2 減少します。

表1: ノイズ除去前後の二乗平均平方根誤差

フェーズ3: 機能エンジニアリング

下の図 6 は、予測メンテナンスのための特徴エンジニアリング パイプラインを示しています。ここでは暗い色のステップのみが使用されます。

図6: モデル選択のための予測メンテナンスパイプライン

このステップでは、多くの機能を試し、最も予測力の高いサブセットを保持しました。私たちが使用しているデータセットは時系列データセットなので、センサーの読み取り値は自己相関しています。したがって、時刻「t」での予測は、「t」より前のいくつかの時間ウィンドウの影響を受ける可能性があります。私たちが使用する機能のほとんどは、これらの時間枠に基づいています。

セクション 3 では、21 個のセンサーからの読み取り値を含むデータセットについて説明しました。より詳細な情報は、データセットに付属する ReadMe ファイルに記載されています。いくつかの実験の後、センサー 2、3、4、6、7、8、9、11、12、13、14、15、17、20、21 のみを使用しました。選択されたセンサーごとに、スライディング標準偏差(ウィンドウ サイズは 5)、スライディング k 近傍平均(ウィンドウ サイズは 5)、およびウィンドウ内の確率分布(ウィンドウ サイズは 10)という方法を適用して特徴を生成します。

私たちが試したものの、最終的に使用しなかったその他の機能には、スライディング平均、自己相関、ヒストグラム、スライディング エントロピー、スライディング加重平均などがあります。

これらの機能により、RMS エラーが 1 減少します。  

表2: 特徴選択前後の二乗平均平方根誤差

ステージ 4: グリッド検索を使用したハイパーパラメータの最適化

図 7 は、ハイパーパラメータ最適化による予測メンテナンス パイプラインを示しています。ここでは、暗い色のパイプライン ステップのみが使用されます。

図7: モデル選択のための予測メンテナンスパイプライン

ハイパーパラメータはアルゴリズムの動作を制御します。最初のステップでは、反復回数、分布、活性化関数、および隠し層の数というハイパーパラメータを最適化しました。各パラメータの詳細な説明については、H2O のドキュメントを参照してください。グリッド検索を使用して最適なパラメータを見つけ、その結果を次の表に示します。

表3: 異なるハイパーパラメータにおける二乗平均平方根誤差

結果が示すように、ハイパーパラメータの最適化により RMS エラーが 3 減少しました。残差誤差ヒストグラム(図8)では、誤差が「0」に収束していることがわかります。予測が早すぎる場合も遅すぎる場合も、その頻度は最小限に抑えられます。

図8: モデル選択のための予測メンテナンスパイプライン

次のNステップで失敗を予測するモデルを構築する

このアプローチでは、マシンの残りの寿命を予測するのではなく、次の 30 サイクルでマシンが故障するかどうかを予測します。障害のある状態を正 (P)、障害のない状態を正常 (N) とみなします。同じ特徴エンジニアリングとノイズ除去プロセスを使用して、ディープラーニング分類モデルを実行しました。図9に結果を示します。

混同マトリックス

図9: モデル選択のための予測メンテナンスパイプライン

精度は、テスト データのどの程度の割合が正しく予測されるかを表します。正確に予測されたテストケースの数とテストケースの合計数の比率を示します。

クラスの分布がバランスが取れていない場合、精度のみを考慮すると誤解を招く可能性があります。不均衡なクラス分布は、データセット内で同じクラスが過剰に表現されている場合に発生します。この場合、一部のモデルは精度は高いものの、予測性能は低い可能性があります。

この問題を回避するために、精度と再現率を指標として使用します。再現率は、正しく予測された正のクラスの数と実際に正のクラスであるデータの数の比率です。

精度は、モデルが陽性クラスをどれだけ正確に予測できるかとして定義されます。これは、正しく予測された正のクラスの数と、正のクラスとして予測されたすべてのデータの数の比率です。

F1 スコアはテストの精度を測定するために使用されます。このスコアの計算には、精度と再現率の両方が使用されます。

精度、再現率、適合率、F1 スコアに関しては、値が 1 に近いほど最適であり、トレーニングされたモデルのパフォーマンスは良好です。

WSO2 CEPでモデルを実行する

ディスクに保存されたデータを処理する場合、モデルをバッチで構築します。ただし、モデルを実行するには、実行時に利用可能なデータをモデルに入力する必要があります。データの処理は「ストリーム処理」と呼ばれます。モデルを適用するために、ストリーム処理エンジン WSO2 CEP を使用します。

モデルの構築には H2O を使用します。 H2O は、POJO (Plain Old Java Object) または MOJO (Optimized Model Object) の 2 つの形式のいずれかでモデルをエクスポートできます。前者はコンパイルする必要がありますが、後者は直接使用できます。 CEP では MOJO モデルを使用しました。

モデルを評価するために、WSO2 CEP の拡張機能を使用しました。 WSO2 は、SQL のようなクエリ言語を使用してデータ フロー内のデータを処理します。

図 10 に示すように、複合イベント処理システムはイベント ストリーム データを受信し、SQL のようなクエリを使用してそれらを評価します。たとえば、特定のクエリでは、stockQuotes ストリームの 1 分間のスライディング ウィンドウを計算し、それを Tweets ストリームの 1 分間のウィンドウと結合し、PredictedStockQuotes ストリームにイベントを発行できます。

図10: モデル選択のための予知保全パイプライン

CEP を使用してモデルを評価するクエリの例を以下に示します。

  1. data_input#h2opojo:predict( 'ccpp/DRF_model_python_1479702792496_1' )から
  2.  
  3. T、V、AP、RH、予測を選択
  4.  
  5. 入れる データ出力に

下の図 11 は、トレーニング ステップと評価ステップを含むパイプライン全体を示しています。

図11: モデル選択のための予知保全パイプライン

このクエリは、Data In ストリームに送信されたイベントを取得し、機械学習モデルを適用します。機械学習モデルを適用するには、次の手順に従います。

  1. 「フェーズ3: 特徴エンジニアリング」セクションで説明した前処理手順を使用してイベントデータを前処理し、特徴セットを生成します。
  2. 生成された特徴セットは、機械学習モデルの評価に使用されます。
  3. 結果を返す

結論は

予知保全の主な目的は、機器が故障する可能性が高い時期を予測することです。次に、これらの障害を防ぐために適切な措置を講じます。予測保守システム (PMS) は、将来の障害を監視し、事前に保守をスケジュールします。

これらによりコストをいくらか削減できます。

  • メンテナンスの頻度を減らします。
  • 機器のメンテナンスに費やす時間を最小限に抑え、時間を有効に活用します。
  • メンテナンスコストを最小限に抑えます。

この記事では、さまざまな回帰アルゴリズムと分類アルゴリズムを使用して、予測メンテナンスに対するさまざまなアプローチについて説明します。さらに、この記事では、これらのモデルを調整するための手順を詳しく説明します。私たちの最終的なソリューションは、残存耐用年数の予測において RMSE が 18.77 で、次の N(30) ステップ内で起こりうる故障の予測において 94% の精度を達成しました。

<<:  ML 向け勾配降下法アルゴリズム 機械学習初心者向け勾配降下法アルゴリズム

>>:  アルゴリズム王国では中国が他国を追い抜くかもしれない

ブログ    
ブログ    
ブログ    

推薦する

...

...

StarCraft II の共同競技ベンチマークが SOTA を上回り、新しい Transformer アーキテクチャがマルチエージェント強化学習の問題を解決

マルチエージェント強化学習 (MARL) は、各エージェントのポリシー改善の方向性を特定するだけでな...

エコノミスト誌の新たな見解:ロボットの数が増えても人間の雇用機会は減らないが、雇用数は増える

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

現在、CIOは企業におけるGenAIの応用価値を慎重に検討している。

ほとんどの CIO は、自社のビジネスがテクノロジーのトレンドに追いつくために GenAI の検討を...

機械学習に必須の Python ライブラリ トップ 10

[51CTO.com クイック翻訳] 現在、Python は人気があり広く使用されているプログラミ...

...

...

人工知能を使ったチャットボットの構築方法

今日、世界は、パーソナライズされたエクスペリエンスを提供しながら、人間が重要な決定を下したり、重要な...

...

チップ設計の極めて高いハードルがAIによって「打ち破られる」

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

現在のディープニューラルネットワークモデルの圧縮と加速方法の概要

[[208162]]大規模なニューラル ネットワークには多数のレイヤーとノードがあるため、特にオンラ...

Java プログラミング スキル - データ構造とアルゴリズム「スレッド バイナリ ツリー」

[[388829]]まず質問を見てみましょうシーケンス{1,3,6,8,10,14}を二分木に構築...