新しい観察結果が利用可能な場合、モデルを再トレーニングする必要がありますか?


28

ですから、このテーマに関する文献を見つけることはできませんでしたが、考えてみる価値のあるもののようです。

  • 新しい観察結果が利用可能な場合のモデルのトレーニングと最適化のベストプラクティスは何ですか?

  • 予測が低下し始める前にモデルを再トレーニングする期間/頻度を決定する方法はありますか?

  • 集約されたデータに対してパラメーターが再最適化されると、過剰適合になりますか?

学習は必ずしもオンラインであるとは限らないことに注意してください。最近の予測で大幅な変動を観察した後、既存のモデルをアップグレードすることもできます。


答えは、ビジネスドメインと特定のモデルアプリケーションに大きく依存します。
ピート

回答:


16
  1. モデルをトレーニングし、トレーニングに使用できる新しいデータを取得したら、以前のモデルをロードしてトレーニングすることができます。たとえば、モデルを.pickleファイルとして保存し、ロードして、新しいデータが利用可能になったときにさらにトレーニングすることができます。モデルが正しく予測するために、ことに注意してくださいthe new training data should have a similar distribution as the past data
  2. 予測は、使用しているデータセットに基づいて低下する傾向があります。たとえば、Twitterデータを使用してトレーニングしようとしており、その日に広くツイートされている製品に関するデータを収集した場合。しかし、その製品が議論されていない数日後に使用ツイートを使用すると、偏ってしまう可能性があります。The frequency will be dependent on datasetそして、そのように述べる特定の時間はありません。If you observe that your new incoming data is deviating vastly, then it is a good practise to retrain the model
  3. 集約されたデータのパラメーターの最適化は、過剰適合ではありません。大きなデータが過剰適合を意味するわけではありません。交差検証を使用して、過剰適合をチェックします。

したがって、データセットの性質が一貫して一貫している場合、モデルが学習できることは何もありませんか?
user140323

データが変わらず、現在のモデルの精度に満足している場合、再トレーニングしても意味がありません。
Hima Varsha

@Aayush、受信データを検証セットとして使用し、現在のモデルを確認できます。
Hima Varsha

受け入れるにはまだ早すぎますが、受け入れます。ありがとう!
user140323

こんにちは、@ tktktk0711、現在表示するコードはありません。しかし、コードを使用した別のリンクを指摘するだけです。github.com/tflearn/tflearn/issues/39
Hima Varsha

20

新しい観測が利用可能になった場合、モデルを再トレーニングするには3つの方法があります。

  1. オンライン:新しい観測が利用可能になるたびに、この単一のデータポイントを使用してモデルをさらにトレーニングします(たとえば、現在のモデルを読み込み、その単一の観測で逆伝播を実行してさらにトレーニングします)。この方法を使用すると、モデルはシーケンシャルに学習し、古い観測よりも最近の観測の影響を受けやすいという点で、データにローカルに適応します。これは、モデルがデータの新しいパターンに動的に適応する必要がある場合に便利です。また、一度にすべてをトレーニングすることが不可能な非常に大きなデータセットを扱う場合にも役立ちます。
  2. オフライン:既存のデータセットに新しい観測を追加し、この新しい大きなデータセットでモデルを完全に再トレーニングします。これは一般に、ターゲット関数のより良いグローバル近似につながり、固定データセットがある場合、または頻繁に新しい観測値がない場合に非常に一般的です。ただし、大規模なデータセットには実用的ではありません。
  3. バッチ/ミニバッチ:これは一種の中間的なアプローチです。バッチでは、新しい観測値のバッチができるまで待機してから、このバッチ全体で既存のモデルをトレーニングします。このバッチを既存のデータセットに追加してからモデルを再トレーニングしないため、オフラインではありません。また、単一の観測ではなく観測でモデルを一度に訓練しているため、オフラインではありません。両方のビットがあります:) ミニバッチはまったく同じですが、バッチサイズが小さいため、オンライン学習に向いています。実際には、オンライン学習はバッチサイズ1のバッチであり、オフラインはバッチサイズがデータセット全体のサイズのバッチです。nn

今日のほとんどのモデルはバッチ/ミニバッチを使用し、バッチのサイズの選択はアプリケーションとモデルによって異なります。適切なサイズのバッチを選択することは、モデルを再トレーニングする適切な頻度を選択することと同じです。新しい観測値が既存のデータとの差異が小さい場合は、より大きなバッチ(256〜512)をお勧めします。逆に、新しい観測値が既存のデータと大きく異なる傾向がある場合は、小さなバッチ(8〜256)を使用します。結局のところ、バッチサイズは、調整する必要があり、データに固有の別のハイパーパラメーターのようなものです。


こんにちは、オンラインでお願いします:新しいデータをオンラインで。この方法は一部のMLモデルを制限しますか。機械学習全体ではありません。
tktktk0711

バッチを使用するテンソルフローの例を知っていますか?
マキシズム

1

あなたの問題はオンライン学習方法の傘下にあります。データのストリームが来ると仮定すると、確率的勾配降下法を使用して、その単一の例を使用してモデルパラメーターを更新できます。

コスト関数が次の場合:

θJバツyθ

ここではパラメーターベクトルであり、形式()のストリーミングデータを想定して、SGDを使用して次の更新式でパラメーターベクトルを更新できます。θバツy

θt=θt1θJバツy

これは基本的に、バッチサイズ1のSGDです。

もう1つのトリックがあります。ウィンドウ/バッファーベースの方法を採用できます。この方法では、ストリームからいくつかの例をバッファーし、バッチとして扱い、バッチSGDを使用します。その場合、更新式は次のようになります。

θt=θt1θJバツy

これは基本的にミニバッチSGDです。


0

質問:再トレーニングする必要がありますか?

答えは、モデルが何をしようとしているか、どの環境で適用されるかによって異なります。

いくつか例を挙げて説明します。

モデルが顧客の行動を予測しようとするとします。たとえば、顧客に合わせたオファーが与えられた場合、顧客が製品を購入する可能性はどれくらいでしょうか。明らかに、市場は時間とともに変化し、顧客の好みが変化し、競合他社が調整します。同様に調整する必要があるため、定期的に再トレーニングする必要があります。そのような場合は、新しいデータを追加することをお勧めしますが、もう関係のない古いデータも省略します。市場が急速に変化している場合は、新しいデータのみに基づいて定期的に再トレーニングすることも検討する必要があります。

一方、モデルが何らかの画像(X線またはMRI)を医学的状態に分類し、モデルが良好に機能する場合、技術または医学的ノウハウに変化がない場合、再トレーニングする必要はありません。 。データを追加してもあまり改善されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.