機械学習モデルの再トレーニングの究極ガイド

機械学習モデルの再トレーニングの究極ガイド

機械学習モデルのトレーニングは通常、一連の入力機能と出力ターゲット間のマッピングを学習することによって実行されます。一般的に言えば、マッピングを学習するということは、何らかのコスト関数を最適化することによって予測誤差を最小限に抑えることです。最適なモデルがトレーニングされた後、そのモデルは正式にオンラインでリリースされ、将来のデータに基づいて正確な予測が生成されます。これらの新しいデータ例は、モデルが解決する必要のある問題に応じて、ユーザー操作、アプリケーション処理、または他のソフトウェア システムからの要求によって生成される場合があります。理想的には、モデルが実稼働環境で使用されたときに、使用されたデータを使用してトレーニングされたときと同じくらい正確に将来の状況を予測できるようにしたいと考えています。

モデルを本番環境にデプロイする場合、将来使用するデータは過去のモデル評価時に使用したデータと同様であると想定することがよくあります。具体的には、特徴とターゲットの分布はほぼ一定のままであると想定できます。しかし、この仮定は通常は真実ではありません。トレンドは時間とともに変化し、人々の興味は季節とともに移り変わり、株式市場は上がったり下がったりします。したがって、私たちのモデルはこれらの変化に適応する必要があります。

世界は常に変化しているため、モデルの展開は、最初の展開を完了してから次のプロジェクトに進むのではなく、継続的なプロセスとして捉える必要があります。機械学習チームのエンジニアが、データ分布が元のトレーニング セットのデータ分布と大きく異なることを発見した場合、モデルを再トレーニングする必要があります。この現象(モデルドリフトと呼ばれることが多い)は軽減できますが、監視インフラストラクチャ、監督、およびプロセスに関して追加のオーバーヘッドが発生します。

この記事では、モデル ドリフトを定義し、モデル ドリフトを識別して追跡する方法について説明します。次に、ドリフトが予測パフォーマンスに与える影響を軽減するためにモデルを再トレーニングする方法を説明し、モデルを再トレーニングする頻度に関する推奨事項を示します。最後に、モデルの再トレーニングを可能にするいくつかの方法について説明します。

モデルドリフトとは何ですか?

モデルドリフトとは、モデルの仮定に違反する環境の変化により、時間の経過とともにモデルの予測パフォーマンスが低下することを指します。モデルドリフトというのは、モデルが変化するわけではなく、モデルが動作する環境が変化するため、多少誤解を招く表現です。したがって、どちらの用語も同じ現象を表していますが、「コンセプトドリフト」という用語の方が実際にはより適切な用語かもしれません。

モデルドリフトの定義には、実際には変更可能な変数がいくつか含まれていることに注意してください。予測パフォーマンスは時間の経過とともに一定の割合で低下し、この低下はモデリングの仮定に違反する環境の変化に起因します。モデルのドリフトを診断する方法と、モデルの再トレーニングを通じてそれを修正する方法を決定する際には、これらの各変数を考慮する必要があります。

モデルのドリフトを追跡するにはどうすればいいですか?

現在、業界にはモデルのドリフトを識別および追跡するためのさまざまなテクノロジが存在します。テクニックに入る前に、すべての人に当てはまるアプローチは存在しないということを述べておく価値があります。モデリングの問題によって必要なソリューションは異なり、特定の技術的戦略を活用するためのインフラストラクチャやリソースがある場合とない場合があります。

モデルのパフォーマンス低下

モデルドリフトを識別する最も簡単な方法は、予測パフォーマンスが低下したかどうかを判断し、その低下を定量化することです。ライブデータに展開されたモデルの精度を測定することは、非常に難しい問題です。この困難は、生成されたモデルの予測と実際の信号の両方にアクセスする必要があるために部分的に発生します。次の理由により、これが不可能である可能性があります。

  • 予測データは生成された後は保存されません。このような事態が発生しないようにしてください。
  • 予測は保存されますが、グラウンド トゥルース ラベルにアクセスすることはできません。
  • 予測とラベルは両方とも利用可能ですが、組み合わせることはできません。

予測とラベルを結合できる場合でも、ラベルが使用できるようになるまでに時間がかかる場合があります。たとえば、財務予測モデルでは次の四半期の収益を予測できます。この場合、実際の収益は四半期が経過するまで観測できないため、それまではモデルのパフォーマンスを定量化することはできません。このような予測の問題では、予測のバックフィル(つまり、モデルをトレーニングし、過去の履歴データに基づいて予測を生成すること)を行うと、モデルのパフォーマンスがどの程度急速に低下するかを理解するのに役立ちます。

Josh Wills 氏が指摘しているように、モデルを展開する前に実行できる最も重要なことの 1 つは、オフライン設定でモデルのドリフトを理解することです。データ サイエンティストは、次の質問に答える必要があります。「6 か月前のデータを使用してこの機能セットをトレーニングし、それを今日生成されたデータに適用した場合、このモデルは、1 か月前にトレーニングなしで作成し、今日適用したモデルよりもどの程度悪くなるでしょうか?」この分析をオフラインで実行すると、モデルのパフォーマンスがどのくらいの速さで低下するか、どのくらいの頻度で再トレーニングが必要になるかを推定できます。もちろん、このアプローチの前提は、過去の任意の時点でリアルタイムのデータにアクセスできる「タイムマシン」を持つことです。

トレーニングデータとライブデータの特徴分布を確認する

入力特徴の分布がトレーニング データの分布から逸脱するとモデルのパフォーマンスが低下するため、これらの分布を比較することはモデル ドリフトを推測する良い方法です。ここでは、予測パフォーマンスの実際の低下は観察されず、むしろ低下が「予測」されるため、モデルドリフトを検出するのではなく、推測することについて話していることに注意してください。これは、データ生成プロセスの性質上、実際の真実を観察できない状況で非常に役立ちます。

各機能では、次のようなさまざまなことを監視する必要があります。

  • 可能な値の範囲
  • 値ヒストグラム
  • 関数がNULLを受け入れるかどうか、受け入れる場合、予想されるNULLの数

制御インターフェースを通じてこれらの分布を迅速に監視できることは、正しい方向への一歩です。これをさらに一歩進めると、特徴が大きく異なる場合にトレーニングとサービングの偏差を自動的に追跡し、大幅に異なる場合に警告を出すことができます。

特徴間の関連性を確認する

多くのモデルでは、機能間の関係は固定されたままでなければならないと想定しています。したがって、個々の入力機能間のペアワイズ相関も監視する必要があります。 ML テストのスコアはどのくらいですか? ML 生産システムの仕様など。これは次の方法で実現できます。

  • 特徴間の相関係数を監視する
  • 1つまたは2つの特徴を持つモデルをトレーニングする
  • 特徴を1つずつ削除したモデルのセットをトレーニングする

ターゲット分布を確認する

ターゲット変数の分布が大幅に変化すると、モデルの予測パフォーマンスはほぼ確実に低下します。 『機械学習: 技術的負債の高利クレジットカード』の著者は、ターゲット分布を追跡することがシンプルで有用な診断であると指摘しています。トレーニング データからの逸脱は、展開されたモデルの品質を再評価する必要があることを意味する場合があります。ただし、「これは決して包括的なテストではなく、入力機能を考慮せずにラベル出現の平均を単純に予測するヌル モデルによって満たされる可能性がある」ことに注意してください。

モデルの再トレーニングとは具体的に何を意味するのでしょうか?

モデルの再トレーニングは、過負荷の操作のように思えるかもしれませんが、既存のモデル アーキテクチャの新しいパラメータを見つけるだけでしょうか? ハイパーパラメータの検索空間を変更する場合はどうでしょうか? 異なるモデル タイプ (RandomForest、SVM など) を検索する場合はどうでしょうか? 新しい機能を含めたり、以前に使用した機能を除外したりできますか? これらはすべて良い質問なので、できるだけ明確にすることが重要です。これらの質問に答えるには、解決しようとしている問題、つまり、展開するモデルに対するモデルドリフトの影響を軽減することについて直接考えることが重要です。

モデルを本番データに展開する前に、科学者は次のような厳格なモデル検証プロセスを経ます。

  • データセットをコンパイルする - さまざまなデータベースなどのさまざまなソースからデータセットを収集します。
  • 特徴エンジニアリング – 生データから列を抽出して予測パフォーマンスを向上させます。
  • モデル選択 – さまざまな学習アルゴリズムの比較。
  • 誤差推定 - 検索空間を最適化し、最適なモデルを見つけて、その一般化誤差を推定します。

このプロセスにより、クラス最高のモデルがいくつか作成され、運用環境に導入されます。モデル ドリフトは、特徴/ターゲット データの分布の変化により、選択されたモデルの予測パフォーマンスが低下することを指すため、モデルの再トレーニングによって異なるモデル生成プロセスが発生することはありません。正確に言うと、再トレーニングとは、以前に選択したモデルを生成するプロセスを新しいトレーニング データセットで再実行することを指します。機能、モデル アルゴリズム、ハイパーパラメータ検索空間はすべて同じままである必要があります。このように考えてみると、再トレーニングではコードの変更は行われず、トレーニング データセットの変更だけが必要になります。

これは、モデルの将来の反復に新しい機能を含めたり、他のアルゴリズムの種類やアーキテクチャを考慮したりすべきではないと言っているわけではありません。ただ、これらの種類の変更によって、まったく異なるモデルが作成されることになります。そのため、本番環境に展開する前に、異なる方法でテストする必要があります。機械学習チームの成熟度に応じて、このような変更は、ユーザーエンゲージメントやリテンションなどの事前に決定された関心指標に対する新しいモデルの影響を測定するための A/B テストと組み合わせて導入するのが理想的です。

モデルをどのくらいの頻度で再トレーニングする必要がありますか?

これまで、モデルドリフトとは何か、そしてそれを識別するさまざまな方法について説明しました。では、どうすればこれを改善できるのかという疑問が生じます。環境の変化によりモデルの予測性能が低下した場合、解決策は、現在の現実を反映した新しいトレーニング セットでモデルを再トレーニングすることです。では、どのくらいの頻度でモデルを再トレーニングする必要がありますか? 新しいトレーニング セットをどのように決定しますか? 最も難しい質問に対する答えは、状況によって異なります。しかし、それは状況によってどのように左右されるのでしょうか?

場合によっては、機械学習の問題自体が、モデルをいつ再トレーニングすべきかについての提案を与えることもあります。たとえば、大学の入学事務局で働いていて、学生が次の学期に戻ってくるかどうかを予測できる学生離脱モデルを構築する任務を負っているとします。このモデルは、中間試験直後の現在の学生人口を予測するために使用されます。退学リスクがあると判断された生徒は、自動的に補習プログラムまたはその他の介入プログラムに登録されます。

このモデルの時間範囲を考えてみましょう。予測は期間ごとに 1 回バッチで生成されるため、新しいトレーニング データにアクセスできないため、モデルをより頻繁に再トレーニングする必要はありません。したがって、前学期からどの学生が退学したかを観察した後、各学期の初めにモデルを再トレーニングすることを選択する場合があります。これは定期的な再訓練プログラムの例です。このシンプルな戦略から始めるのがよい場合が多いですが、どのくらいの頻度で再トレーニングを行うかを決める必要があります。トレーニング セットが急速に変化する場合は、毎日または毎週トレーニングする必要がある場合があります。リリースが遅い場合は、毎月または毎年の再トレーニングが必要になる場合があります。

前のセクションで説明したメトリックを監視するためのインフラストラクチャがチームにすでに導入されている場合は、モデルドリフトの管理を自動化することが合理的です。このソリューションでは、診断を追跡し、ライブ データの診断がトレーニング データの診断と異なる場合にモデルの再トレーニングをトリガーする必要があります。しかし、このアプローチには独自の課題が伴います。まず、モデルの再トレーニングをトリガーする相違のしきい値を決定する必要があります。しきい値が低すぎると、再トレーニングが頻繁に行われ、計算コストが高くなる可能性があります。しきい値が高すぎると、再トレーニングの頻度が低くなり、実稼働環境で品質の低いモデルが生成される可能性があります。これは見た目よりも複雑です。なぜなら、世界の新しい状態を表すために、どれだけの新しいトレーニング データを収集するかを決定する必要があるからです。また、世界が変化したときに、既存のモデルをトレーニング セットが小さすぎるモデルに置き換えることは意味がありません。

モデルがすでに敵対的環境で実行されている場合は、特別な考慮事項が適用されます。不正行為検出などの設定では、攻撃者はデータの配布を自分に有利になるように変更します。これらの問題は、新しいデータが利用可能になるとモデルが継続的に更新されるオンライン学習によって解決できます。

モデルを再トレーニングするにはどうすればいいですか?

最後に、モデルを再トレーニングする方法について議論する必要があります。モデルの再トレーニングに使用する方法は、再トレーニングを行う頻度に直接関係します。

モデルを定期的に再トレーニングする予定の場合は、バッチで再トレーニングするだけで十分です。このアプローチでは、Jenkins や Kubernetes CronJobs などのジョブ スケジューラを使用して、モデルのトレーニング プロセスを定期的にスケジュールします。

自動モデルドリフト検出機能がある場合は、ドリフトが識別されたときにモデルの再トレーニングをトリガーするのが理にかなっています。たとえば、ライブ データセットの特徴分布とトレーニング データの特徴分布を比較する定期的なジョブがあるとします。重大な逸脱が特定された場合、システムはモデルの再トレーニングを自動的にスケジュールし、新しいモデルを自動的に展開できます。これも、Jenkins などのジョブ スケジューラまたは Kubernetes ジョブを使用して実行できます。

最後に、オンライン学習技術を使用して、現在運用中のモデルを更新することも意味があるかもしれません。このアプローチでは、現在デプロイされているモデルを使用して新しいモデルを「シード」します。新しいデータが生成されると、モデル パラメーターは新しいトレーニング データで更新されます。

結論は

通常、機械学習モデルの予測パフォーマンスは、モデルが本番環境にデプロイされると低下します。したがって、エンジニアは、モデルの再トレーニングを可能にするために、ML 固有の監視ソリューションとワークフローを設定することで、パフォーマンスの低下に備える必要があります。再トレーニングの頻度は具体的な問題によって異なりますが、ML エンジニアは、新しいデータが到着するたびにモデルを定期的に再トレーニングするシンプルな戦略から始めて、モデルのドリフトを定量化して反応するより高度なプロセスに進むことができます。

<<:  Google、Apple、Intel の「医療データのプライバシー保護をめぐる戦い」: 3 つの AI テクノロジーのうちどれが好みですか?

>>:  スタートアップがAIを活用している3つの分野

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

このAIアルゴリズムの面接体験は非常に役立つ:Amazonは履歴書から面接まで実践的な経験を共有

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

アリババが自然言語理解の世界記録を更新、AIの常識的推論は人間のそれに近づいている

最近、アリババAIは常識QA分野の権威あるデータセットであるCommonsenseQAで新たな世界記...

...

...

1780億のパラメータを持つこの言語モデルは、王者GPT-3に挑戦するためだけに作られたのでしょうか?

誰かがGPT-3の独占に挑戦しなければなりません! GPT-3 は発売以来、最大の AI 言語モデル...

マシンビジョン: 2D ビジョンと 3D ビジョンのどちらを選択するか?

マシンビジョンは、人工知能の重要な分野として、今日最も注目されているテクノロジーの 1 つとなってい...

...

インテリジェントな音声対話サービスはますます良くなり、従順であることも芸術である

スマートスピーカー、スマートフォン、スマートブレスレット、スマートエアコンなどのデバイスを購入するこ...

新素材の画期的な進歩、AIの医療への参入…2021年はどんな新しい技術トレンドを迎えるのでしょうか?

2020年も終わりに近づいていますが、疫病は科学技術の進歩を止めることはなく、量子コンピューティン...

AIとデータセンターの相互依存

2か月前にFacebookのザッカーバーグとテスラのマスクがAIをめぐって口論したことから、ちょうど...

LLaMA 2 エンドツーエンド推論が利用可能になりました。中国チームより

Buddy CompilerのエンドツーエンドLLaMA2-7B推論例がbuddy-mlirリポジト...

サイバー防御にAIを活用する

サイバー防御能力は、より高度なサイバー攻撃能力の発展に追いつくのに苦労している。人工知能、特に最先端...

人工知能の簡単な歴史 | (1) ディープラーニング、人工知能の新たな盛り上がり

人工知能はまだ少し遠く、Google の巨大なデータセンターの部屋や神秘的な MIT ロボット工学研...

Pytorch モデルのトレーニングを最適化するためのヒント

この記事では、ディープラーニング モデルのトレーニングを改善するために私が個人的に見つけた 4 つの...