aiを活用したセンサーデータ解析 - mathworks...3...

27
1 © 2018 The MathWorks, Inc. AIを活用したセンサーデータ解析 MathWorks Japan アプリケーションエンジニアリンググループ アプリケーションエンジニア 吉田 剛士

Upload: others

Post on 09-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

1© 2018 The MathWorks, Inc.

AIを活用したセンサーデータ解析

MathWorks Japan

アプリケーションエンジニアリンググループ

アプリケーションエンジニア

吉田 剛士

Page 2: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

2

AIを活用したセンサーデータ解析11:20-11:50

▪ MATLAB® による AI 作成

– アプリを使った簡易的な解析

– 学習モデルのパラメータ自動調整

– 学習モデルのスタンドアロン化

Page 3: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

3

100機の同一モデルエンジンからのセンサーデータ

故障データがあるケースを想定

▪ 整備士が部品交換を実施した過去のデータよりメンテナンスが必要な時期を割り出す

課題 : ターボファンエンジンの予知保全

NASA PCoE 提供のデータhttp://ti.arc.nasa.gov/tech/dash/pcoe/prognostic-data-repository/

Time

187

186

185

184

183

182

:

部品交換までのフライト回数

Page 4: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

4

課題 : ターボファンエンジンの予知保全 (続き)

▪ データについて– A列~N列までを入力 (予測子)

– O列を出力 (応答)

▪ 作業フロー– 推定器の作成

▪ ロバストな推定器の作成

▪ 推定器のコード化

– 推定器のCコード化

y),,,( 21 nxxx f?

予測子(A~N列)

応答(O列)

https://www.mathworks.com/help/stats/train-regression-trees-using-regression-learner-app.htmlhttps://www.mathworks.com/help/stats/train-regression-models-in-regression-learner-app.html

Page 5: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

5

データ間の関連付けParametric vs. Non-Parametric

▪ 入出力の関係をどう表現するか

– 関数 f を数式で表現

▪ パラメータ推定 / 最適化

– 関数 f を数式で表現するのは困難

▪ 機械学習

y),,,( 21 nxxx f?

Page 6: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

6

Machine Learning Algorithms

▪ 「応答」のタイプによって分岐

機械学習

教師なし学習(ラベル無し)

教師あり学習(ラベル有り)

クラスタリング

分類

回帰

階層的クラスタリングK-平均クラスタリングニューラルネットワーク(自己組織化マップ)混合ガウス分布

線形判別・2次判別K-最近傍識別単純ベイズ分類アンサンブル学習 (分類木)ニューラルネットワークサポートベクターマシン

(一般化)線型回帰モデル非線型回帰モデルガウス過程回帰 (kriging)アンサンブル学習 (回帰木)ニューラルネットワークサポートベクターマシン

…▪ Statistics and Machine Learning Toolbox™

▪ Neural Network Toolbox™

y),,,( 21 nxxx f?

予測子応答

Page 7: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

7

寄り道検証について

▪ どうして検証が必要なのか?– データを学習用と検証用に分割することにより学習器の過適合を抑制する

▪ 過適合 (overfitting) とは、学習データに対して

過剰にフィッティングしている状態のため、学習に

登場しない未知データに対しては精度が悪く汎化能力が

乏しくなってしまう現象

原因として、学習データにあるノイズに

適合してしまっていたり、学習データに対して

予測子の数が多い、ハイパーパラメータの自由度の高さ

といったことが挙げられる

▪ 過適合を防ぐため、学習データの一部を検証用として

学習に使用せず評価用に残して置く方法がある

• (K-分割)交差検定

• ホールドアウト検定

Page 8: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

8

寄り道K-分割交差検定

▪ K-通りのパターンでデータを切り替えて性能を評価し、平均をとる

Pattern1 Pattern2 Pattern3 K = 3 の場合

: 検証用

: 学習用

Page 9: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

9

寄り道ホールドアウト検定

X Y

学習用

検証用

学習器

学習

予測

性能評価(比較)

ランダムサンプリング

Page 10: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

10

回帰学習の実行①

▪ 回帰学習器アプリ1. 機械学習による回帰分析を

対話的に行うための環境

▪ 起動方法は「アプリ」タブから

「回帰学習器」を選択するか

コマンド・ウィンドウにて

「regressionLearner 」を実行

Page 11: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

11

回帰学習の実行②

2. 「新規セッション」 → 「ワークスペースから」

3. 「新規セッション」ウィンドウにて

1. ワークスペース変数: Dataset

2. 応答 : Time

3. 予測子 : 全てにチェック

4. 検証 : ホールドアウト検定

1. 割合: 10%

5. 「セッションの開始」

Page 12: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

12

回帰学習の実行③

4. 「モデルタイプ」

の右端にある「▼」をクリック

5. プルダウンメニューより「すべて」を選択

6. 並列計算用プロセスの起動

- parpool

7. 「学習」にある「並列の使用」を有効化

Page 13: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

13

回帰学習の実行④

8. 「学習」 をクリック

9. RMSE が最小の学習器を選択

10. 「モデルのエクスポート」のプルダウンメニュー

から「コード生成」を選択

注) 左図と結果が一致するとは限りません

Page 14: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

14

回帰学習の実行⑤

11. デフォルトの「trainRegressionModel.m」という名前で保存

Page 15: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

15

Advanced topic

ハイパーパラメータの調整

▪ ベイズ最適化

% Set up optimization parameters

opt = struct;

opt.MaxObjectiveEvaluations = 30;

opt.CVPartition = cvpartition(height(Dataset), 'Holdout', 0.1);

opt.ShowPlots = true;

opt.Verbose = 1;

% Run Bayesian optimization for Rational Quadratic gaussian processing model

gprMdl = fitrgp(predictors, response, ...

'KernelFunction', 'RationalQuadratic', 'Standardize', true, ...

'OptimizeHyperparameters', {'Sigma','BasisFunction','KernelScale'}, ...

'HyperparameterOptimizationOptions', opt);

Gauss 過程回帰モデルのパラメータを最適化している様子

Page 16: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

16

Advanced topic

ハイパーパラメータの調整 (続き)

▪ ベイズ最適化– 最適化された学習器の検証

% 検証用データの抽出testPredictors = Dataset(opt.CVPartition.test, 1:end-1);

testResponse = Dataset(opt.CVPartition.test, end);

% 最適化されたパラメータによる推定誤差testMSE = loss(gprMdl, testPredictors, testResponse, 'LossFun', 'mse');

testRMSE = sqrt(testMSE)

testRMSE =

0.054491

% 最適化されたパラメータによる推定timePred = predict(gprMdl, testPredictors);

sum(round(timePred) - testResponse.Time)

ans =

0

Page 17: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

17

多様化するデータソースと増え続けるデータ量

▪ あちこちにセンサーが取り付けられている上にセンサーの高機能化に伴い爆発的に増加

Page 18: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

18

Edge ComputingMATLAB Coder™ または MATLAB Compiler™ によるエッジ処理

▪ デバイスへの実装

MATLAB Coder

MATLABRuntime

▪ 制御/監視端末への実装

MATLAB

Compiler SDK™

MATLAB

Compiler

Page 19: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

19

Cコード生成対応

機械学習

教師なし学習(ラベル無し)

教師あり学習(ラベル有り)

クラスタリング

分類

回帰

K-平均クラスタリング階層クラスタリング*ニューラルネットワーク混合ガウス分布*自己組織化マップ

線形判別・2次判別K-最近傍識別単純ベイズ分類*アンサンブル学習 (分類木)ニューラルネットワークサポートベクターマシン

(一般化)線型回帰モデル非線形回帰モデル*ガウス過程回帰 (kriging)アンサンブル学習 (回帰木)ニューラルネットワークサポートベクターマシン

▪ MATLAB Coder

*) R2018a 現在未対応学習器

Page 20: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

20

C コード生成のための準備

▪ 作成したワークスペース上にある推定器をコンパクトモデルとしてファイル保存

▪ C コード生成用 MATLAB 関数を用意

function out = predictRFT(x) %#codegen

Mdl = loadCompactModel('<filename>');

out = predict(Mdl,x);

end

saveCompactModel(<model_variable>, '<filename>');

コード生成用プラグマを挿入

Page 21: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

21

MATLAB Coder アプリの起動

▪ 「アプリ」タブにあるアイコン一覧の中からを 選択します

前ページで用意した関数を指定します。本例では「predictRFT.m」を指定

Page 22: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

22

プロジェクトの作成

▪ 関数名と同じプロジェクトファイルがカレントフォルダに作成されます

Page 23: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

23

変数の型定義

実行すると型が定義されます

入出力変数の型を定義するために用意したコード生成対象の関数を実行します

Page 24: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

24

診断の実行

▪ MEX ファイルの作成は不要なのでスキップ

Page 25: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

25

設定の確認とコード生成

「ビルド タイプ」が「C ソースコード」であることを確認し、その他の項目や詳細設定が適切であれば、「生成」をクリックします

Page 26: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

26

コード生成の完了

▪ コード生成が終わると

に生成物が保存されます

「codegen¥lib¥<プロジェクト名>」

Page 27: AIを活用したセンサーデータ解析 - MathWorks...3 100機の同一モデルエンジンからのセンサーデータ 故障データがあるケースを想定 整備士が部品交換を実施した

27

AIを活用したセンサーデータ解析11:20-11:50

▪ MATLAB による AI 作成

– アプリを使った簡易的な解析

– 学習モデルのパラメータ自動調整

– 学習モデルのスタンドアロン化

Classification Learner / Regression Learner

Bayesian Optimization

MATLAB Coder / MATLAB Compiler

MATLABRuntime