aiを活用したセンサーデータ解析 - mathworks...3...
TRANSCRIPT
1© 2018 The MathWorks, Inc.
AIを活用したセンサーデータ解析
MathWorks Japan
アプリケーションエンジニアリンググループ
アプリケーションエンジニア
吉田 剛士
2
AIを活用したセンサーデータ解析11:20-11:50
▪ MATLAB® による AI 作成
– アプリを使った簡易的な解析
– 学習モデルのパラメータ自動調整
– 学習モデルのスタンドアロン化
3
100機の同一モデルエンジンからのセンサーデータ
故障データがあるケースを想定
▪ 整備士が部品交換を実施した過去のデータよりメンテナンスが必要な時期を割り出す
課題 : ターボファンエンジンの予知保全
NASA PCoE 提供のデータhttp://ti.arc.nasa.gov/tech/dash/pcoe/prognostic-data-repository/
Time
187
186
185
184
183
182
:
部品交換までのフライト回数
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
5
データ間の関連付けParametric vs. Non-Parametric
▪ 入出力の関係をどう表現するか
– 関数 f を数式で表現
▪ パラメータ推定 / 最適化
– 関数 f を数式で表現するのは困難
▪ 機械学習
y),,,( 21 nxxx f?
6
Machine Learning Algorithms
▪ 「応答」のタイプによって分岐
機械学習
教師なし学習(ラベル無し)
教師あり学習(ラベル有り)
クラスタリング
分類
回帰
階層的クラスタリングK-平均クラスタリングニューラルネットワーク(自己組織化マップ)混合ガウス分布
線形判別・2次判別K-最近傍識別単純ベイズ分類アンサンブル学習 (分類木)ニューラルネットワークサポートベクターマシン
(一般化)線型回帰モデル非線型回帰モデルガウス過程回帰 (kriging)アンサンブル学習 (回帰木)ニューラルネットワークサポートベクターマシン
…
…
…▪ Statistics and Machine Learning Toolbox™
▪ Neural Network Toolbox™
y),,,( 21 nxxx f?
予測子応答
7
寄り道検証について
▪ どうして検証が必要なのか?– データを学習用と検証用に分割することにより学習器の過適合を抑制する
▪ 過適合 (overfitting) とは、学習データに対して
過剰にフィッティングしている状態のため、学習に
登場しない未知データに対しては精度が悪く汎化能力が
乏しくなってしまう現象
原因として、学習データにあるノイズに
適合してしまっていたり、学習データに対して
予測子の数が多い、ハイパーパラメータの自由度の高さ
といったことが挙げられる
▪ 過適合を防ぐため、学習データの一部を検証用として
学習に使用せず評価用に残して置く方法がある
• (K-分割)交差検定
• ホールドアウト検定
8
寄り道K-分割交差検定
▪ K-通りのパターンでデータを切り替えて性能を評価し、平均をとる
Pattern1 Pattern2 Pattern3 K = 3 の場合
: 検証用
: 学習用
9
寄り道ホールドアウト検定
X Y
学習用
検証用
学習器
学習
予測
性能評価(比較)
ランダムサンプリング
10
回帰学習の実行①
▪ 回帰学習器アプリ1. 機械学習による回帰分析を
対話的に行うための環境
▪ 起動方法は「アプリ」タブから
「回帰学習器」を選択するか
コマンド・ウィンドウにて
「regressionLearner 」を実行
11
回帰学習の実行②
2. 「新規セッション」 → 「ワークスペースから」
3. 「新規セッション」ウィンドウにて
1. ワークスペース変数: Dataset
2. 応答 : Time
3. 予測子 : 全てにチェック
4. 検証 : ホールドアウト検定
1. 割合: 10%
5. 「セッションの開始」
12
回帰学習の実行③
4. 「モデルタイプ」
の右端にある「▼」をクリック
5. プルダウンメニューより「すべて」を選択
6. 並列計算用プロセスの起動
- parpool
7. 「学習」にある「並列の使用」を有効化
13
回帰学習の実行④
8. 「学習」 をクリック
9. RMSE が最小の学習器を選択
10. 「モデルのエクスポート」のプルダウンメニュー
から「コード生成」を選択
注) 左図と結果が一致するとは限りません
14
回帰学習の実行⑤
11. デフォルトの「trainRegressionModel.m」という名前で保存
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 過程回帰モデルのパラメータを最適化している様子
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
17
多様化するデータソースと増え続けるデータ量
▪ あちこちにセンサーが取り付けられている上にセンサーの高機能化に伴い爆発的に増加
18
Edge ComputingMATLAB Coder™ または MATLAB Compiler™ によるエッジ処理
▪ デバイスへの実装
MATLAB Coder
MATLABRuntime
▪ 制御/監視端末への実装
MATLAB
Compiler SDK™
MATLAB
Compiler
19
Cコード生成対応
機械学習
教師なし学習(ラベル無し)
教師あり学習(ラベル有り)
クラスタリング
分類
回帰
K-平均クラスタリング階層クラスタリング*ニューラルネットワーク混合ガウス分布*自己組織化マップ
線形判別・2次判別K-最近傍識別単純ベイズ分類*アンサンブル学習 (分類木)ニューラルネットワークサポートベクターマシン
(一般化)線型回帰モデル非線形回帰モデル*ガウス過程回帰 (kriging)アンサンブル学習 (回帰木)ニューラルネットワークサポートベクターマシン
…
…
…
▪ MATLAB Coder
*) R2018a 現在未対応学習器
20
C コード生成のための準備
▪ 作成したワークスペース上にある推定器をコンパクトモデルとしてファイル保存
▪ C コード生成用 MATLAB 関数を用意
function out = predictRFT(x) %#codegen
Mdl = loadCompactModel('<filename>');
out = predict(Mdl,x);
end
saveCompactModel(<model_variable>, '<filename>');
コード生成用プラグマを挿入
21
MATLAB Coder アプリの起動
▪ 「アプリ」タブにあるアイコン一覧の中からを 選択します
前ページで用意した関数を指定します。本例では「predictRFT.m」を指定
22
プロジェクトの作成
▪ 関数名と同じプロジェクトファイルがカレントフォルダに作成されます
23
変数の型定義
実行すると型が定義されます
入出力変数の型を定義するために用意したコード生成対象の関数を実行します
24
診断の実行
▪ MEX ファイルの作成は不要なのでスキップ
25
設定の確認とコード生成
「ビルド タイプ」が「C ソースコード」であることを確認し、その他の項目や詳細設定が適切であれば、「生成」をクリックします
26
コード生成の完了
▪ コード生成が終わると
に生成物が保存されます
「codegen¥lib¥<プロジェクト名>」
27
AIを活用したセンサーデータ解析11:20-11:50
▪ MATLAB による AI 作成
– アプリを使った簡易的な解析
– 学習モデルのパラメータ自動調整
– 学習モデルのスタンドアロン化
Classification Learner / Regression Learner
Bayesian Optimization
MATLAB Coder / MATLAB Compiler
MATLABRuntime