Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

インクリメンタル学習の概要

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

"インクリメンタル学習" ("オンライン学習") は、予測子変数の分布や標本サイズ、予測関数や目的関数の要素 (調整パラメーターの適切な値を含む)、観測値のラベル付けなどがほとんど未知、またはまったく未知の可能性のある、連続的かつリアルタイムなデータ ストリームからの入力データの処理に着目した、機械学習の一分野です。

インクリメンタル学習アルゴリズムは、柔軟かつ効率的で適応的です。インクリメンタル学習には、従来の機械学習とは異なる次のような特徴があります。

  • インクリメンタル モデルのデータへのあてはめは迅速かつ効率的に行われるため、データ分布の変化 ("ドリフト") にリアルタイムで適合させることができます。

  • 対応する予測子データが利用可能になっても観測ラベルが欠損している可能性があるため、アルゴリズムはモデルの最新バージョンから迅速に予測を生成し、モデルの学習を延長できなければなりません。

  • インクリメンタル学習の開始前は母集団に関する既知の情報が少ない可能性があります。そのため、アルゴリズムは "コールド スタート" で実行できます。たとえば、分類問題では、モデルが観測値を処理するまでクラス名がわからない場合があります。学習の開始前に十分な情報がわかっている場合 (たとえば、線形モデル係数の適切な推定値がある場合) は、そのような情報を指定してモデルを "ウォーム スタート" できます。

  • 観測値がストリーム内に到達する可能性があること、標本のサイズが未知である確率が高く、場合によっては大きいことから、データの保存は非効率的または不可能です。したがって、アルゴリズムは、観測値が利用できるようになったなら、システムがそれらを破棄する前に処理しなければなりません。インクリメンタル学習にはこのような特徴があるため、ハイパーパラメーターの調整は困難または不可能です。

従来の機械学習では、汎化誤差の推定およびハイパーパラメーターの調整のための交差検証の実行、予測子変数の分布の推測、およびモデルのあてはめを行うために、ラベル付けされたデータのバッチを使用できます。しかし、基になる分布がドリフトしたり、モデルが劣化したりした場合は、結果のモデルを最初から再学習させなければなりません。インクリメンタル学習環境ではハイパーパラメーターを調整するための交差検証を実行することは困難ですが、モデルがより多くのデータを学習するにつれて予測精度が従来の学習モデルに近づき、リアルタイムで分布ドリフトに適応できるため、インクリメンタル学習手法は柔軟です。

予測を生成し、その予測性能を測定するために、インクリメンタル モデルが準備されているとします。観測値の入力チャンクに対し、インクリメンタル学習スキームは、次のいずれかの方法 (通常は指定された順序) でリアルタイムにデータを処理します。

  1. モデルの評価: モデルの予測性能を、真のラベルが利用可能になったときに追跡するか、または入力データのみで追跡します。あるいは、観測値のスライディング ウィンドウ全体、またはインクリメンタル学習に使用されるモデルの履歴全体で追跡します。

  2. ドリフトの検出: 構造の破綻や分布のドリフトについてチェックします。たとえば、ある予測子変数の分布が十分に変位しているかどうかを判定します。

  3. モデルの学習: 真のラベルが利用可能になったとき、または現在のモデルが十分に劣化したときに、入力観測値でモデルに学習させてモデルを更新します。

  4. 予測の生成: 最新のモデルからラベルを予測します。

この手順は、すべての入力チャンクを検定 (ホールドアウト) セットとして扱うインクリメンタル学習特有のケースです。この手順は "インターリーブ検定後学習" または "逐次予測評価" と呼ばれます[1]

インクリメンタル モデルに対し、予測を生成するための情報が十分でない場合、または学習が十分でないためにモデルの予測性能を追跡したくない場合は、ハイパーパラメーターの適切な値 ("推定期間"、モデルでサポートされている場合) やモデル評価前の初期学習期間 ("メトリクスのウォームアップ期間") を求めるための初期ステップを含めることもできます。

インクリメンタル学習の問題の例として、周囲温度、相対湿度、時刻、およびその他の測定値をもとに温度を自動的に設定したり、部屋の温度設定を学習したりできるスマート サーモスタットを考えます。製造会社が、測定値をもとに平均的な人の好みを記述した既知のモデルを事前にデバイスに組み込んだとします。インストール後、デバイスは毎分データを収集し、プリセットされた温度に調整します。サーモスタットは、ユーザーのデバイス操作 (無操作も含む) に基づいて、組み込みモデルを調整または再学習します。このサイクルは無限に続く可能性があります。サーモスタットの履歴データを保存するためのディスク容量が限られている場合、リアルタイムで再学習する必要があります。製造会社によって既知のモデルが事前にデバイスに組み込まれていない場合、デバイスはより頻繁に再学習します。

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

Statistics and Machine Learning Toolbox™ の機能を使用すれば、分類用または回帰用のインクリメンタル学習を実装できます。Statistics and Machine Learning Toolbox の他の機械学習機能と同様に、インクリメンタル学習のエントリ ポイントはインクリメンタル学習オブジェクトであり、これをデータと共に関数に渡すことでインクリメンタル学習を実装します。他の機械学習の関数とは異なり、インクリメンタル学習オブジェクトはデータなしでも作成できます。ただし、インクリメンタル学習オブジェクトは、モデルのパラメーター形式や問題固有のオプションに加え、モデルのあてはめ、パフォーマンス メトリクスの測定、その両方のアクションを実行するタイミングなど、入力データの処理方法も指定します。

インクリメンタル学習モデルのオブジェクト

次の表に、インクリメンタル学習に使用できるエントリポイントのモデル オブジェクトについて、それぞれでサポートされる機械学習の目的、モデル タイプ、および作成に必要な情報を示します。

モデル オブジェクト目的モデル タイプ必要な情報
incrementalClassificationLinearバイナリ分類線形 SVM 回帰およびロジスティック回帰なし
incrementalClassificationNaiveBayesマルチクラス分類正規予測子条件付き分布による単純ベイズインクリメンタル学習中にデータで予測される最大クラス数、または予測されるすべてのクラスの名前
incrementalRegressionLinear回帰線形なし

インクリメンタル学習モデル オブジェクトのプロパティでは、次を指定します。

  • 予測子変数の数 (NumPredictors)、およびその 1 次モーメントと 2 次モーメントなどのデータ特性

  • 線形モデルの学習器のタイプ (Learner)、線形係数 (Beta)、および切片 (Bias) などのモデル特性

  • 線形モデルの目的ソルバー (Solver) などの学習オプション、および標準確率的勾配降下と平均化確率的勾配降下 (SGD と ASGD) のリッジ ペナルティ (Lambda) などのソルバー固有のハイパーパラメーター

  • モデルがウォームであるかどうか (IsWarm)、追跡するパフォーマンス メトリクス (Metrics)、パフォーマンス メトリクスの最新の値などの、モデルの性能評価特性およびオプション

他の機械学習モデルのオブジェクトとは異なり、オブジェクトを直接呼び出し、名前と値の引数を使用してオプションのプロパティ値を指定することにより、いずれのモデルも作成できます。モデルを作成するためにデータにあてはめる必要はありません。この機能は、学習する前にデータまたはモデルに関する情報がほとんどない場合に便利です。指定に応じて、ソフトウェアは推定期間およびメトリクスのウォームアップ期間を適用できます。その間、インクリメンタル近似関数はデータ特性を推定し、性能評価用にモデルに学習させます。線形モデルの場合、既定の設定では、ソフトウェアは適応型スケール不変ソルバーを使用して目的関数を解決します。これは調整を必要とせず、予測子変数のスケールの影響を受けません[2]

または、関数 incrementalLearner を使用して、従来式の学習済みモデルをいずれかのモデルに変換できます。変換可能なモデルには、バイナリ分類および回帰用のサポート ベクター マシン (SVM)、単純ベイズ分類、および線形回帰モデルが含まれます。たとえば、incrementalLearner は、ClassificationLinear タイプの学習済み線形分類モデルを incrementalClassificationLinear オブジェクトに変換します。既定の設定では、ソフトウェアは、インクリメンタル学習のすべての要素について変換モデルが準備されていると見なします (変換モデルはウォーム)。incrementalLearner は、インクリメンタル学習に使用可能なデータ特性 (クラス名など)、近似パラメーター、およびオプションを変換元の従来式の学習済みモデルから引き継ぎます。以下に例を示します。

  • 単純ベイズについて、incrementalLearner は、インクリメンタル学習中にデータで予測されるすべてのクラス名、および条件付き予測子分布の近似モーメント (DistributionParameters) を引き継ぎます。

  • 線形モデルについて、従来式の学習済みモデルの目的ソルバーが SGD である場合、incrementalLearner はインクリメンタル学習ソルバーを SGD に設定します。

インクリメンタル学習の関数

インクリメンタル学習モデル オブジェクトでは、学習およびモデル評価の準備から実際の学習およびモデル評価に至る、インクリメンタル学習アルゴリズムのすべての要素を指定します。インクリメンタル学習を実装するには、構成済みのインクリメンタル学習モデルをインクリメンタル近似関数またはモデル評価関数に渡します。Statistics and Machine Learning Toolbox のインクリメンタル学習関数には、逐次予測学習に適した 2 つのワークフローが用意されています。単純にするために、以下のワークフローの説明は、モデルがモデルの性能評価用に準備されていることを前提としています (つまり、モデルがウォームであるとします)。

  • 柔軟なワークフロー — データ チャンクが利用可能になったときに以下を行います。

    1. データと現在のモデルを関数 updateMetrics に渡して、モデルの累積パフォーマンス メトリクスおよびウィンドウ パフォーマンス メトリクスを計算します。モデルはまだ学習されていないため、データは検定 (ホールドアウト) データとして扱われます。updateMetrics は、モデルに保存されているモデルの性能を新しい値で上書きします。線形モデルについては updateMetrics、単純ベイズ分類モデルについては updateMetrics を参照してください。

    2. オプションで、分布のドリフト、またはモデルの劣化を検出します。

    3. 入力データ チャンクと現在のモデルを関数 fit に渡して、モデルに学習させます。関数 fit は指定されたソルバーを使用してモデルを入力データ チャンクにあてはめ、現在の係数とバイアスを新しい推定値で上書きします。線形モデルについては fit、単純ベイズ分類モデルについては fit を参照してください。

    柔軟なワークフローでは、モデルの学習を行うかどうかを決定する前に、カスタム モデルを使用してデータ品質の評価を実行できます。すべての手順は任意ですが、両方の関数を呼び出す場合は、fit の前に updateMetrics を呼び出します。

  • 簡潔なワークフロー — データ チャンクが利用可能になったときに、入力チャンクと構成済みのインクリメンタル モデルを関数 updateMetricsAndFit に渡します。updateMetricsAndFit は、updateMetrics を呼び出した直後に fit を呼び出します。簡潔なワークフローを使用すると、逐次予測評価を行うインクリメンタル学習を簡単に実装して、モデルの性能を追跡し、すべての入力データ チャンクでモデルの学習を行えます。線形モデルについては updateMetricsAndFit、単純ベイズ分類モデルについては updateMetricsAndFit を参照してください。

インクリメンタル モデル オブジェクトを作成し、使用するワークフローを選択したら、インクリメンタル学習を実装するループを記述します。

  1. チャンクが利用可能になったときに、データ ストリームから観測値のチャンクを読み取ります。

  2. 柔軟なワークフローまたは簡潔なワークフローを実装します。インクリメンタル学習を適切に実行するには、入力モデルを出力モデルで上書きします。以下に例を示します。

    % Flexible workflow
    Mdl = updateMetrics(Mdl,X,Y);
    % Insert optional code
    Mdl = fit(Mdl,X,Y);
    
    % Succinct workflow
    Mdl = updateMetricsAndFit(Mdl,X,Y);
    モデルは、学習の開始以降に測定されたメトリクスを使用し (累積)、連続する観測の指定の時間枠全体にわたって (ウィンドウ)、入力データでの性能を漸増的に追跡します。オプションとして、入力チャンクのモデル損失を計算し、入力チャンクと現在のモデルを関数 loss に渡すことも可能です。loss はモデルを調整せずに、スカラー損失を返します。線形モデルについては loss、単純ベイズ分類モデルについては loss を参照してください。

    モデルの構成により、インクリメンタル学習関数が各反復中に学習またはモデルの性能評価のいずれを行うかが決まります。関数がデータを処理するにつれて、構成は変わる可能性があります。詳細は、インクリメンタル学習の期間を参照してください。

  3. 次のようなオプションがあります。

    • チャンクと最新のモデルを predict に渡して予測を生成。線形モデルについては predict、単純ベイズ分類モデルについては predict を参照してください。

    • モデルがデータにあてはめられた場合、チャンクと最新のモデルを loss に渡して再代入損失を計算。

    • 単純ベイズ分類モデルについて、関数 logp を使用して外れ値をリアルタイムで検出。この関数は、チャンクの各観測値における予測子変数の対数条件なし確率密度を返します。

インクリメンタル学習の期間

与えられたデータの入力チャンクに対してインクリメンタル学習関数が実行するアクションは、モデルの現在の構成または状態に依存します。この図は、インクリメンタル学習関数が特定のアクションを実行する期間 (観測値の連続グループ) を示しています。

Number line showing the periods during which incremental learning functions perform certain actions

以下の表は、インクリメンタル学習関数が各期間中に実行するアクションを示しています。

期間関連モデル プロパティサイズ (観測値の数)アクション
推定EstimationPeriod (線形分類モデルと線形回帰モデルにのみ適用)

n1

必要に応じて、近似関数は推定期間の観測値に基づいてハイパーパラメーターの値を選択します。アクションには次が含まれます。

  • データ標準化用の予測子のモーメント Mu および Sigma を推定。

  • SGD ソルバー用の学習率 LearnRate を学習率スケジュール LearnRateSchedule に従って調整。

  • SVM 回帰パラメーター ε (Epsilon) を推定。

  • 推定に必要な情報バッファーを保存。

  • 期間満了時に対応するプロパティを更新。

メトリクスのウォームアップMetricsWarmupPeriod

n2 – n1

プロパティ IsWarmfalse のとき、近似関数は次のアクションを実行します。

  • データの入力チャンクへのモデルのあてはめ。

  • モデルをあてはめた後、BetaDistributionParameters などの対応するモデル プロパティを更新。

  • 期間満了時のモデルはウォーム (IsWarm プロパティが true となる)。

性能評価 jMetrics および MetricsWindowSizem
  • 性能評価期間 1 の開始時に、関数は累積メトリクス Cumulative とウィンドウ メトリクス Window の追跡を開始。Window はこの期間全体で NaN のベクトルです。

  • 関数が、各反復で更新された累積メトリクスで Cumulative メトリクスを上書き。各性能評価期間の満了時に、関数が最新の m 個の観測値に基づいて Window メトリクスを計算して上書き。

  • モデルの性能計算に必要な情報バッファーを保存する関数。

参照

[1] Bifet, Albert, Ricard Gavaldá, Geoffrey Holmes, and Bernhard Pfahringer. Machine Learning for Data Streams with Practical Example in MOA. Cambridge, MA: The MIT Press, 2007.

[2] Kempka, Michał, Wojciech Kotłowski, and Manfred K. Warmuth. "Adaptive Scale-Invariant Online Algorithms for Learning Linear Models." CoRR (February 2019). https://arxiv.org/abs/1902.07528.

参考

オブジェクト

関連するトピック