MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

インクリメンタル学習:適応的かつリアルタイムな機械学習

※この投稿は 2024 年 3 月 4 日に Artificial Intelligence へ 投稿されたものの抄訳です。


インクリメンタル学習(Incremental Learning: 逐次学習、追加学習)は、新しく入ってくるデータに適応的にモデルを適合させるという課題に対処する機械学習のアプローチです。インクリメンタル学習は、ストリーミングデータをモデル化する必要があるエンジニアにとって特に有用です。しばしば、機械学習モデルはデバイスに実装しますが、インクリメンタル学習はデータが変化した場合でもモデルが意図した通りに機能し続けることを保証します。

このブログでは、インクリメンタル学習とは何か、なぜ有用なのか、そして MATLAB や Simulink を使用して実装する方法について説明します。

インクリメンタル学習ってなに?

インクリメンタル学習は、データストリームからの非定常データを処理することによって、機械学習モデル(およびディープラーニングモデル)が継続的に学習できるようにする機械学習のアプローチです。インクリメンタル学習を用いることで、新しい知識を統合しつつ以前の知識を維持する、連続的に更新される人工知能(AI)システムを作成できます。

Diagram of the incremental learning workflow showing how a machine learning model learns with streaming data while maintaining previous knowledge.

Figure: インクリメンタル学習の流れ

インクリメンタル学習 vs 従来の機械学習

従来の機械学習モデルは、データに対してトレーニングされ、新しいデータへの一般化(つまり、過学習や未学習を避けること)は、クロスバリデーション正則化、ハイパーパラメータチューニングといった方法によって確保されます。

一方、インクリメンタル学習はリアルタイムで新しいデータに適応し、そのため従来の機械学習に比べてインクリメンタル学習は柔軟です。インクリメンタル学習モデルは迅速かつ効率的にデータに適合するため、データ分布の変化(またはドリフト)にリアルタイムで適応できます。また、トレーニングデータに関する情報が少ない場合にもより効率的です。例えば、モデルが観測を処理した後でないとクラス名が分からない場合があります。

さらに、インクリメンタル学習には以下のような利点があります:

  • エンドユーザーのデータのプライバシーを保護します。
  • インターネット接続がない状況でもデバイスが学習できるようにします。
  • パーソナライゼーションやスマート機能を備えた先進的なデバイスの設計を可能にします。

 

インクリメンタル学習の課題

インクリメンタル学習にも課題があります。その中でも、データストレージと壊滅的忘却について紹介します。

データストレージ – データはストリームとして到着し、サンプルサイズは未知であり、場合によっては大きくなる可能性があるため、データの保存が困難になります。したがって、インクリメンタル学習アルゴリズムは、データが利用可能な間、かつ廃棄される前にデータを処理する必要があります。

壊滅的忘却 – インクリメンタル学習モデルは、新しいデータの学習中に以前のデータにアクセスできません。モデルは新しいデータに過学習する可能性があり、それによってモデルの性能が低下します。

インクリメンタル異常検出

インクリメンタル異常検出は、機械学習の一分野であり、インクリメンタル学習と同様に、データストリームからの入力データを処理することを含みます。インクリメンタル異常検出では、機械学習モデルを学習させるのではなく、アルゴリズムがリアルタイムで異常スコアを計算します。

 

インクリメンタル学習についてもっと知るには

ドキュメンテーションから関連するページを紹介します。

Showing the cumulative and windowed classification error decreasing for incremental learning.

Figure: インクリメンタル学習による分類エラー

インクリメンタル学習が有用である理由

現実の課題を解決するためには、機械学習モデルはデスクトップから離れ、実運用環境に移行する必要があります。機械学習モデルがクラウドやエッジデバイスなどのターゲットデバイスで動作している場合、非定常のストリーミングデータを受け取る可能性が高く、ここがインクリメンタル学習が特に有用である瞬間です。

インクリメンタル学習の応用

リチウムイオンバッテリーは、ウェアラブル電子機器、携帯電話、ラップトップから電気自動車やスマートグリッドに至るまで、至る所にあります。例えば、AI を使用してバッテリーの充電状態(SOC)を推定する仮想センサーを設計しているとしましょう。SOC 仮想センサーは、バッテリーの安全かつ効率的な運用を保証するバッテリーマネジメントシステム(BMS)の重要な部品です。仮想センサーは、他のセンサーからの電圧、電流、および温度の測定値を受け取ります。これらの測定値は時間とともに変化する可能性があり、デプロイされたモデルはこれらの変化に適応するべきです。

Diagram of a virtual sensor with inputs voltage, current, and temperature measurements, and output the State of Charge of a battery.

Figure: AI を使用してバッテリーの充電状態(SOC)推定のための仮想センサーを設計

 

仮想センサーの設計は、インクリメンタル学習の潜在的な応用例のひとつに過ぎません。他には以下が考えられます:

Signal Processing Predictive Maintenance Wireless Communications

私の個人的な経験からの一例として、インプラント型脳-機械インターフェース(BMIs)の設計においてインクリメンタル学習を使用したことがあります。私の博士研究ではインプラント型BMIsのためのアルゴリズムを開発し、チップを設計しました。これらのアルゴリズムは、非常にノイズの多い脳信号をモデル化し、脳活動をクラスタリングして、どのニューロンがいつ発火したかを特定することを目的としていました。すべての前処理と機械学習が超低電力で小型のチップ上で行われる必要があるため、アルゴリズムは計算効率が高く、小さなフットプリントを持ち、リアルタイムでデータを処理する必要がありました。

私はリアルタイムで入ってくるニューラルシグナルをクラスタリングしながら、以前にクラスタリングされた活動(クラスターセンターや統計的依存関係などの情報)の情報を保持するインクリメンタル学習アルゴリズムを開発しました。10 年前に MATLAB にインクリメンタル学習のための組み込み関数があれば良かったのですが・・次のセクションで MATLAB で利用可能な最近の機能について説明します。

インクリメンタル学習と MLOps

MLOps は、機械学習モデルを本番環境に導入するプロセスを自動化し、本番環境にあるモデルを管理する一連の実践として定義されます。MLOps の一環として、本番環境にある機械学習モデルは常に監視されます。インクリメンタル学習アルゴリズムを使用することで、機械学習モデルはリアルタイムで更新することができ、これによりエラーを減少させる可能性があります。

 

MLOps loop showing steps for machine learning and operations.

Figure: MLOps のライフサイクル

実世界のアプリケーションでは、データはしばしば動的で常に変化しているため、ドリフトは機械学習モデルにとって大きな問題となることがあります。データドリフトは、時間の経過とともに入力データの分布が変化する、または入力と望ましい出力との関係が変化するなど、多くの理由で発生する可能性があります。

インクリメンタル学習を使用すると、入力が変化したときにモデルが更新されます。

 

 

 

 

 

Video: What is MLOps?

インクリメンタル学習の実装方法

インクリメンタル学習が何であり、ストリーミングデータのモデリングにどれほど有用であるかに触れました。次に MATLAB と Simulink でインクリメンタル学習を簡単に実装する方法を紹介します。

 

MATLAB でのインクリメンタル学習

Statistics and Machine Learning Toolbox のアルゴリズムを使用して、分類と回帰のための柔軟で効率的で適応性のあるインクリメンタル学習モデルを作成できます。これには、線形サポートベクター(SVM)、ロジスティック回帰、ナイーブベイズ分類器、最小二乗法と線形 SVM 回帰モデルなどが含まれます。また、incrementalLearner 関数を使用して、従来のトレーニング済みモデルをインクリメンタル学習モデルに変換することもできます。これらのインクリメンタル学習モデルについて詳しくは、ドキュメントのトピック「インクリメンタル学習の概要」を参照してください。

Statistics and Machine Learning Toolboxを使用すると、インクリメンタル学習モデルの概念ドリフトを検出できます。つまり、データが変化してモデルが無効になったときを検出できます。また、インクリメンタル学習モデルのための C/C++ コードを自動的に生成することもできます。詳しくは、「インクリメンタル学習用のコード生成」の例を参照してください。

Graph with concept drift detection for incremental learning showing stable, warning, and drift status for different observations.

Figure: MATLABを使用した段階的学習のための概念ドリフト検出

 

Simulink でのインクリメンタル学習

Statistics and Machine Learning Toolbox に含まれる Simulink ブロックを使用することで、仮想センサーの設計など、複雑な AI エンジニアリングシステムの設計、シミュレーション、テストにインクリメンタル学習を統合できます。詳細については、以下の例を参照してください:

Simulink system that includes the IncrementalClassificationLinear Fit and IncrementalClassificationLinear Predict blocks for incremental learning. Simulink system that includes the IncrementalRegressionLinear Fit and IncrementalRegressionLinear Predict blocks for incremental learning.
Incremental Learning in Simulink for Classification Incremental Learning in Simulink for Regression

まとめ

  • インクリメンタル学習は、入ってくるストリーミングデータに適応的に機械学習モデルをフィットさせるという課題に対処します。
  • インクリメンタル学習は、機械学習モデルが本番環境で稼働している際のエラーを減少させることができます。
  • MATLAB と Simulink は、インクリメンタル学習モデルを作成し、それらをシステムレベルの設計に統合し、ハードウェアにデプロイするためのツール、関数、およびブロックを提供します。
|
  • print

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.