Un modèle devrait-il être recyclé si de nouvelles observations sont disponibles?

28

Donc, je n'ai pas pu trouver de littérature sur ce sujet mais il semble que quelque chose mérite réflexion:

  • Quelles sont les meilleures pratiques en matière de formation et d'optimisation de modèles si de nouvelles observations sont disponibles?

  • Existe-t-il un moyen de déterminer la période / fréquence de recyclage d'un modèle avant que les prédictions ne commencent à se dégrader?

  • Est-il trop adapté si les paramètres sont ré-optimisés pour les données agrégées?

Notez que l'apprentissage n'est pas nécessairement en ligne. On peut souhaiter mettre à niveau un modèle existant après avoir observé une variance significative dans les prévisions plus récentes.

user140323
la source
La réponse dépend fortement du domaine d'activité et de l'application de modèle particulière.
Pete

Réponses:

16
  1. Une fois qu'un modèle est formé et que vous obtenez de nouvelles données qui peuvent être utilisées pour la formation, vous pouvez charger le modèle précédent et vous y entraîner. Par exemple, vous pouvez enregistrer votre modèle en tant que .picklefichier, le charger et vous y entraîner lorsque de nouvelles données sont disponibles. Prenez note que pour le modèle à prédire correctement, the new training data should have a similar distribution as the past data.
  2. Les prédictions ont tendance à se dégrader en fonction de l'ensemble de données que vous utilisez. Par exemple, si vous essayez de vous entraîner à l'aide de données Twitter et que vous avez collecté des données concernant un produit qui est largement tweeté ce jour-là. Mais si vous utilisez des tweets après quelques jours où ce produit n'est même pas discuté, il pourrait être biaisé. The frequency will be dependent on datasetet il n'y a pas de temps spécifique pour se déclarer comme tel. If you observe that your new incoming data is deviating vastly, then it is a good practise to retrain the model.
  3. L'optimisation des paramètres sur les données agrégées n'est pas exagérée. Les données volumineuses n'impliquent pas un sur-ajustement. Utilisez la validation croisée pour vérifier le sur-ajustement.
Hima Varsha
la source
Donc, si la nature de l'entrée de l'ensemble de données reste cohérente, il n'y a rien de nouveau que le modèle puisse apprendre?
user140323
Si les données ne changent pas et si vous êtes satisfait de l'exactitude du modèle actuel, je ne vois aucun intérêt à le recycler.
Hima Varsha
@Aayush, vous pouvez peut-être utiliser les données entrantes comme ensemble de validation et vérifier votre modèle actuel.
Hima Varsha
Il est encore trop tôt pour accepter, mais je le ferai. Merci!
user140323
Bonjour @ tktktk0711, je n'ai pas de code actuellement à vous montrer. Mais passez simplement par ce qui indique un autre lien avec le code. github.com/tflearn/tflearn/issues/39
Hima Varsha
20

Lorsque de nouvelles observations sont disponibles, il existe trois façons de recycler votre modèle:

  1. En ligne: chaque fois qu'une nouvelle observation est disponible, vous utilisez ce point de données unique pour poursuivre la formation de votre modèle (par exemple, charger votre modèle actuel et le former davantage en effectuant une rétropropagation avec cette seule observation). Avec cette méthode, votre modèle apprend de manière séquentielle et s'adapte en quelque sorte localement à vos données en ce sens qu'il sera plus influencé par les observations récentes que par les observations plus anciennes. Cela peut être utile dans les situations où votre modèle doit s'adapter dynamiquement aux nouveaux modèles de données. Il est également utile lorsque vous traitez des ensembles de données extrêmement volumineux pour lesquels une formation sur l'ensemble de ces données à la fois est impossible.
  2. Hors ligne: vous ajoutez les nouvelles observations à votre ensemble de données déjà existant et vous reconvertissez entièrement votre modèle sur ce nouvel ensemble de données plus volumineux. Cela conduit généralement à une meilleure approximation globale de la fonction cible et est très populaire si vous avez un ensemble de données fixe ou si vous n'avez pas de nouvelles observations trop souvent. Cependant, il n'est pas pratique pour les grands ensembles de données.
  3. nn

Aujourd'hui, la plupart des modèles utilisent un lot / mini-lot et le choix de la taille du lot dépend de votre application et de votre modèle. Choisir la bonne taille de lot équivaut à choisir la bonne fréquence avec laquelle recycler votre modèle. Si votre nouvelle observation présente une faible variance avec vos données existantes, je suggère des lots plus importants (256-512 peut-être) et si au contraire de nouvelles observations tendent à varier considérablement avec vos données existantes, utilisez de petits lots (8-256). À la fin de la journée, la taille du lot est un peu comme un autre hyper-paramètre que vous devez régler et qui est spécifique à vos données

tombarti
la source
Salut, je veux vous demander en ligne: comme en ligne pour de nouvelles données. Est-ce que cette méthode limite certains modèles ML, je veux dire pas tout l'apprentissage automatique.
tktktk0711
Connaissez-vous des exemples de tensorflow utilisant le batch ?
maxisme
1

Votre problème fait partie des méthodes d'apprentissage en ligne. En supposant qu'un flux de données arrive, vous pouvez utiliser la méthode de descente de gradient stochastique pour mettre à jour les paramètres de votre modèle à l'aide de cet exemple unique.

Si votre fonction de coût est:

minθJ(X,y,θ)

θXje,yje

θt=θt-1-θJ(Xje,yje)

Il s'agit essentiellement de SGD avec la taille de lot 1.

Il y a une autre astuce, vous pouvez adopter une méthode basée sur une fenêtre / tampon, où vous tamponnez quelques exemples de flux et le traitez comme lot et utilisez SGD par lot. Dans ce cas, l'équation de mise à jour deviendra:

θt=θt-1-jeθJ(Xje,yje)

Il s'agit essentiellement de mini-lots SGD.

SHASHANK GUPTA
la source
0

La question: DEVRIEZ-VOUS vous recycler?

La réponse dépend de ce que votre modèle tente de faire et dans quel environnement il est appliqué.

Permettez-moi d'expliquer par quelques exemples:

Supposons que votre modèle tente de prédire le comportement des clients, par exemple la probabilité qu'un client achète votre produit en fonction d'une offre adaptée à ses besoins. De toute évidence, le marché change avec le temps, les préférences des clients changent et vos concurrents s'adaptent. Vous devez également vous ajuster, vous devez donc vous recycler régulièrement. Dans un tel cas, je recommanderais d'ajouter de nouvelles données, mais également d'omettre les anciennes données qui ne sont plus pertinentes. Si le marché évolue rapidement, vous devriez même envisager de vous recycler périodiquement sur la base de nouvelles données uniquement.

D'un autre côté, si votre modèle classe certaines images (p. Ex. Rayons X ou IRM) dans des conditions médicales et que le modèle fonctionne bien, vous n'avez pas besoin de vous recycler s'il n'y a aucun changement dans la technologie ou dans le savoir-faire médical. . L'ajout de données supplémentaires ne s'améliorera pas beaucoup.

Yossi Levy
la source