インクリメンタル学習の概要
インクリメンタル学習とは
"インクリメンタル学習" ("オンライン学習") は、予測子変数の分布や標本サイズ、予測関数や目的関数の要素 (調整パラメーターの適切な値を含む)、観測値のラベル付けなどがほとんど未知、またはまったく未知の可能性のある、連続的かつリアルタイムなデータ ストリームからの入力データの処理に着目した、機械学習の一分野です。
インクリメンタル学習アルゴリズムは、柔軟かつ効率的で適応的です。インクリメンタル学習には、従来の機械学習とは異なる次のような特徴があります。
インクリメンタル モデルのデータへの当てはめは迅速かつ効率的に行われるため、データ分布の変化 ("ドリフト") にリアルタイムで適合させることができます。
対応する予測子データが利用可能になっても観測ラベルが欠損している可能性があるため、アルゴリズムはモデルの最新バージョンから迅速に予測を生成し、モデルの学習を延長できなければなりません。
インクリメンタル学習の開始前は母集団に関する既知の情報が少ない可能性があります。そのため、アルゴリズムは "コールド スタート" で実行できます。たとえば、分類問題では、モデルが観測値を処理するまでクラス名がわからない場合があります。学習の開始前に十分な情報がわかっている場合 (たとえば、線形モデル係数の適切な推定値がある場合) は、そのような情報を指定してモデルを "ウォーム スタート" できます。
観測値がストリーム内に到達する可能性があること、標本のサイズが未知である確率が高く、場合によっては大きいことから、データの保存は非効率的または不可能です。したがって、アルゴリズムは、観測値が利用できるようになったなら、システムがそれらを破棄する前に処理しなければなりません。インクリメンタル学習にはこのような特徴があるため、ハイパーパラメーターの調整は困難または不可能です。
従来の機械学習では、汎化誤差の推定およびハイパーパラメーターの調整のための交差検証の実行、予測子変数の分布の推測、およびモデルの当てはめを行うために、ラベル付けされたデータのバッチを使用できます。しかし、基になる分布がドリフトしたり、モデルが劣化したりした場合は、結果のモデルを最初から再学習させなければなりません。インクリメンタル学習環境ではハイパーパラメーターを調整するための交差検証を実行することは困難ですが、モデルがより多くのデータを学習するにつれて予測精度が従来の学習モデルに近づき、リアルタイムで分布ドリフトに適応できるため、インクリメンタル学習手法は柔軟です。
予測を生成し、その予測性能を測定するために、インクリメンタル モデルが準備されているとします。観測値の入力チャンクに対し、インクリメンタル学習スキームは、次のいずれかの方法 (通常は指定された順序) でリアルタイムにデータを処理します。
モデルの評価: モデルの予測性能を、真のラベルが利用可能になったときに追跡するか、または入力データのみで追跡します。あるいは、観測値のスライディング ウィンドウ全体、またはインクリメンタル学習に使用されるモデルの履歴全体で追跡します。
ドリフトの検出: 構造の破綻や分布のドリフトについてチェックします。たとえば、ある予測子変数の分布が十分に変位しているかどうかを判定します。
モデルの学習: 真のラベルが利用可能になったとき、または現在のモデルが十分に劣化したときに、入力観測値でモデルに学習させてモデルを更新します。
予測の生成: 最新のモデルからラベルを予測します。
この手順は、すべての入力チャンクを検定 (ホールドアウト) セットとして扱うインクリメンタル学習特有のケースです。この手順は "インターリーブ検定後学習" または "逐次予測評価" と呼ばれます[1]。
インクリメンタル モデルに対し、予測を生成するための情報が十分でない場合、または学習が十分でないためにモデルの予測性能を追跡したくない場合は、ハイパーパラメーターの適切な値 ("推定期間"、モデルでサポートされている場合) やモデル評価前の初期学習期間 ("メトリクスのウォームアップ期間") を求めるための初期ステップを含めることもできます。
インクリメンタル学習の問題の例として、周囲温度、相対湿度、時刻、およびその他の測定値をもとに温度を自動的に設定したり、部屋の温度設定を学習したりできるスマート サーモスタットを考えます。製造会社が、測定値をもとに平均的な人の好みを記述した既知のモデルを事前にデバイスに組み込んだとします。インストール後、デバイスは毎分データを収集し、プリセットされた温度に調整します。サーモスタットは、ユーザーのデバイス操作 (無操作も含む) に基づいて、組み込みモデルを調整または再学習します。このサイクルは無限に続く可能性があります。サーモスタットの履歴データを保存するためのディスク容量が限られている場合、リアルタイムで再学習する必要があります。製造会社によって既知のモデルが事前にデバイスに組み込まれていない場合、デバイスはより頻繁に再学習します。
MATLAB でのインクリメンタル学習
Statistics and Machine Learning Toolbox™ の機能を使用すれば、分類用または回帰用のインクリメンタル学習を実装できます。Statistics and Machine Learning Toolbox の他の機械学習機能と同様に、インクリメンタル学習のエントリ ポイントはインクリメンタル学習オブジェクトであり、これをデータと共に関数に渡すことでインクリメンタル学習を実装します。他の機械学習の関数とは異なり、インクリメンタル学習オブジェクトはデータなしでも作成できます。ただし、インクリメンタル学習オブジェクトは、モデルのパラメーター形式や問題固有のオプションに加え、モデルの当てはめ、パフォーマンス メトリクスの測定、その両方のアクションを実行するタイミングなど、入力データの処理方法も指定します。
インクリメンタル学習モデルのオブジェクト
次の表に、インクリメンタル学習に使用できるエントリポイントのモデル オブジェクトについて、それぞれでサポートされる機械学習の目的、モデル タイプ、およびモデル オブジェクトの作成に必要な情報を示します。
モデル オブジェクト | 目的 | モデル タイプ | 必要な情報 |
---|---|---|---|
incrementalClassificationECOC | マルチクラス分類 | バイナリ学習器を含む誤り訂正出力符号 (ECOC) モデル | インクリメンタル学習中にデータで予測される最大クラス数、または予測されるすべてのクラスの名前 |
incrementalClassificationKernel | バイナリ分類 | ガウス カーネルによる線形サポート ベクター マシン (SVM) 回帰およびロジスティック回帰 | なし |
incrementalClassificationLinear | バイナリ分類 | 線形 SVM 回帰およびロジスティック回帰 | なし |
incrementalClassificationNaiveBayes | マルチクラス分類 | 正規、多項、または多変量多項予測子条件付き分布による単純ベイズ | インクリメンタル学習中にデータで予測される最大クラス数、または予測されるすべてのクラスの名前 |
incrementalRegressionKernel | 回帰 | ガウス カーネルによる最小二乗回帰および線形 SVM 回帰 | なし |
incrementalRegressionLinear | 回帰 | 最小二乗回帰および線形 SVM 回帰 | なし |
インクリメンタル学習モデル オブジェクトのプロパティでは、次を指定します。
予測子変数の数 (
NumPredictors
)、およびその 1 次モーメントと 2 次モーメントなどのデータ特性線形モデルの学習器のタイプ (
Learner
)、線形係数 (Beta
)、および切片 (Bias
) などのモデル特性線形モデルの目的ソルバー (
Solver
) などの学習オプション、および標準確率的勾配降下と平均化確率的勾配降下 (SGD と ASGD) のリッジ ペナルティ (Lambda
) などのソルバー固有のハイパーパラメーターモデルがウォームであるかどうか (
IsWarm
)、追跡するパフォーマンス メトリクス (Metrics
)、パフォーマンス メトリクスの最新の値などの、モデルの性能評価特性およびオプション
他の機械学習モデルのオブジェクトとは異なり、オブジェクトを直接呼び出し、名前と値の引数を使用してオプションのプロパティ値を指定することにより、インクリメンタル学習モデルを作成できます。モデルを作成するためにデータに当てはめる必要はありません。この機能は、学習する前にデータまたはモデルに関する情報がほとんどない場合に便利です。指定に応じて、ソフトウェアは推定期間およびメトリクスのウォームアップ期間を適用できます。その間、インクリメンタル近似関数はデータ特性を推定し、性能評価用にモデルに学習させます。線形モデルの場合、既定の設定では、ソフトウェアは適応型スケール不変ソルバーを使用して目的関数を解決します。これは調整を必要とせず、予測子変数のスケールの影響を受けません[2]。
または、関数 incrementalLearner
を使用して、従来式の学習済みモデルをインクリメンタル学習用モデルに変換できます。たとえば、incrementalLearner
は、ClassificationLinear
タイプの学習済み線形分類モデルを incrementalClassificationLinear
オブジェクトに変換します。次の表は、変換可能なモデルとその変換関数の一覧です。
既定の設定では、ソフトウェアは、インクリメンタル学習のすべての要素について変換モデルが準備されていると見なします (変換モデルはウォーム)。incrementalLearner
は、インクリメンタル学習に使用可能なデータ特性 (クラス名など)、近似パラメーター、およびオプションを変換元の従来式の学習済みモデルから引き継ぎます。以下に例を示します。
単純ベイズについて、
incrementalLearner
は、インクリメンタル学習中にデータで予測されるすべてのクラス名、および条件付き予測子分布の近似モーメント (DistributionParameters
) を引き継ぎます。線形モデルについて、従来式の学習済みモデルの目的ソルバーが SGD である場合、
incrementalLearner
はインクリメンタル学習ソルバーを SGD に設定します。
詳細については、各関数 incrementalLearner
のページの出力引数に関する説明を参照してください。
インクリメンタル学習の関数
インクリメンタル学習モデル オブジェクトでは、学習およびモデル評価の準備から実際の学習およびモデル評価に至る、インクリメンタル学習アルゴリズムのすべての要素を指定します。インクリメンタル学習を実装するには、構成済みのインクリメンタル学習モデルをインクリメンタル近似関数またはモデル評価関数に渡します。サポートされているインクリメンタル学習関数のリストは、各インクリメンタル学習モデル オブジェクトのページの「オブジェクト関数」の節で確認できます。
Statistics and Machine Learning Toolbox のインクリメンタル学習関数には、逐次予測学習に適した 2 つのワークフローが用意されています。単純にするために、以下のワークフローの説明は、モデルがモデルの性能評価用に準備されていることを前提としています (つまり、モデルがウォームであるとします)。
柔軟なワークフロー — データ チャンクが利用可能になったときに以下を行います。
データと現在のモデルを関数
updateMetrics
に渡して、モデルの累積パフォーマンス メトリクスおよびウィンドウ パフォーマンス メトリクスを計算します。モデルはまだ学習されていないため、データは検定 (ホールドアウト) データとして扱われます。updateMetrics
は、モデルに保存されているモデルの性能を新しい値で上書きします。オプションで、分布のドリフト、またはモデルの劣化を検出します。
入力データ チャンクと現在のモデルを関数
fit
に渡して、モデルに学習させます。関数fit
は指定されたソルバーを使用してモデルを入力データ チャンクに当てはめ、現在の係数とバイアスを新しい推定値で上書きします。
柔軟なワークフローでは、モデルの学習を行うかどうかを決定する前に、カスタム モデルを使用してデータ品質の評価を実行できます。すべての手順は任意ですが、両方の関数を呼び出す場合は、
fit
の前にupdateMetrics
を呼び出します。簡潔なワークフロー — データ チャンクが利用可能になったときに、入力チャンクと構成済みのインクリメンタル モデルを関数
updateMetricsAndFit
に渡します。updateMetricsAndFit
は、updateMetrics
を呼び出した直後にfit
を呼び出します。簡潔なワークフローを使用すると、逐次予測評価を行うインクリメンタル学習を簡単に実装して、モデルの性能を追跡し、すべての入力データ チャンクでモデルの学習を行えます。
インクリメンタル モデル オブジェクトを作成し、使用するワークフローを選択したら、インクリメンタル学習を実装するループを記述します。
チャンクが利用可能になったときに、データ ストリームから観測値のチャンクを読み取ります。
柔軟なワークフローまたは簡潔なワークフローを実装します。インクリメンタル学習を適切に実行するには、入力モデルを出力モデルで上書きします。以下に例を示します。
柔軟なワークフロー
Mdl = updateMetrics(Mdl,X,Y); % % Insert optional code % Mdl = fit(Mdl,X,Y);
簡潔なワークフロー
Mdl = updateMetricsAndFit(Mdl,X,Y);
モデルは、学習の開始以降に測定されたメトリクスを使用し (累積)、連続する観測の指定の時間枠全体にわたって (ウィンドウ)、入力データでの性能を漸増的に追跡します。オプションとして、入力チャンクのモデル損失を計算し、入力チャンクと現在のモデルを関数
loss
に渡すことも可能です。loss
はモデルを調整せずに、スカラー損失を返します。モデルの構成により、インクリメンタル学習関数が各反復中に学習またはモデルの性能評価のいずれを行うかが決まります。関数がデータを処理するにつれて、構成は変わる可能性があります。詳細は、インクリメンタル学習の期間を参照してください。
次のようなオプションがあります。
チャンクと最新のモデルを
predict
に渡して予測を生成。モデルがデータに当てはめられた場合、チャンクと最新のモデルを
loss
に渡して再代入損失を計算。単純ベイズ分類モデルについて、関数
logp
を使用して外れ値をリアルタイムで検出。この関数は、チャンクの各観測値における予測子変数の対数条件なし確率密度を返します。
インクリメンタル学習の期間
与えられたデータの入力チャンクに対してインクリメンタル学習関数が実行するアクションは、モデルの現在の構成または状態に依存します。この図は、インクリメンタル学習関数が特定のアクションを実行する期間 (観測値の連続グループ) を示しています。
以下の表は、インクリメンタル学習関数が各期間中に実行するアクションを示しています。
期間 | 関連モデル プロパティ | サイズ (観測値の数) | アクション |
---|---|---|---|
推定 | EstimationPeriod (線形分類モデル、カーネル分類モデル、線形回帰モデル、およびカーネル回帰モデルにのみ適用) | n1 | 必要に応じて、近似関数は推定期間の観測値に基づいてハイパーパラメーターの値を選択します。アクションには次が含まれます。
詳細については、各オブジェクトおよび関数 |
メトリクスのウォームアップ | MetricsWarmupPeriod | n2 – n1 | プロパティ
|
性能評価 j | Metrics および MetricsWindowSize | m |
|