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