Est-il possible de former un réseau neuronal de manière incrémentale?


23

Je voudrais former un réseau de neurones où les classes de sortie ne sont pas (toutes) définies dès le départ. De plus en plus de classes seront introduites plus tard en fonction des données entrantes. Cela signifie que, chaque fois que j'introduis une nouvelle classe, je dois recycler le NN.

Comment puis-je entraîner un NN de manière incrémentielle, c'est-à-dire sans oublier les informations précédemment acquises lors des phases de formation précédentes?

Réponses:


10

J'aimerais ajouter à ce qui a déjà été dit que votre question touche à une notion importante de l'apprentissage automatique appelée apprentissage par transfert . En pratique, très peu de personnes forment un réseau convolutionnel entier à partir de zéro (avec une initialisation aléatoire), car il est long et relativement rare d'avoir un ensemble de données de taille suffisante.

Les ConvNets modernes prennent 2-3 semaines pour s'entraîner sur plusieurs GPU sur ImageNet. Il est donc courant de voir des personnes libérer leurs derniers points de contrôle ConvNet au profit d'autres personnes qui peuvent utiliser les réseaux pour un réglage fin. Par exemple, la bibliothèque Caffe a un zoo modèle où les gens partagent leurs poids de réseau.

Lorsque vous avez besoin d'un ConvNet pour la reconnaissance d'images, quel que soit votre domaine d'application, vous devriez envisager de prendre un réseau existant, par exemple VGGNet est un choix courant.

Il y a quelques points à garder à l'esprit lors de l' apprentissage par transfert :

  • Contraintes des modèles pré-formés. Notez que si vous souhaitez utiliser un réseau pré-formé, vous pouvez être légèrement contraint en termes d'architecture que vous pouvez utiliser pour votre nouveau jeu de données. Par exemple, vous ne pouvez pas supprimer arbitrairement des couches Conv du réseau pré-formé. Cependant, certains changements sont simples: en raison du partage de paramètres, vous pouvez facilement exécuter un réseau pré-formé sur des images de différentes tailles spatiales. Cela est clairement évident dans le cas des couches Conv / Pool parce que leur fonction directe est indépendante de la taille spatiale du volume d'entrée (tant que les enjambées «correspondent»).

  • Taux d'apprentissage. Il est courant d'utiliser un taux d'apprentissage plus faible pour les pondérations ConvNet qui sont affinées, en comparaison avec les pondérations (initialisées au hasard) pour le nouveau classificateur linéaire qui calcule les scores de classe de votre nouvel ensemble de données. En effet, nous nous attendons à ce que les poids ConvNet soient relativement bons, nous ne souhaitons donc pas les déformer trop rapidement et trop (en particulier pendant que le nouveau classificateur linéaire au-dessus d'eux est entraîné à l'initialisation aléatoire).

Référence supplémentaire si vous êtes intéressé par ce sujet: Dans quelle mesure les caractéristiques des réseaux de neurones profonds sont-elles transférables?


L'apprentissage par transfert n'est pas le seul moyen d'effectuer un apprentissage incrémentiel.
nbro

7

Voici une façon de procéder.

Après avoir entraîné votre réseau, vous pouvez enregistrer ses poids sur le disque. Cela vous permet de charger ces poids lorsque de nouvelles données deviennent disponibles et de continuer à vous entraîner à peu près là où votre dernière formation s'était arrêtée. Cependant, étant donné que ces nouvelles données peuvent venir avec des classes supplémentaires, vous effectuez maintenant une pré-formation ou un réglage fin sur le réseau avec des poids précédemment enregistrés. La seule chose que vous avez à faire, à ce stade, est de faire en sorte que les dernières couches hébergent les nouvelles classes qui ont maintenant été introduites avec l'arrivée de votre nouveau jeu de données, surtout, incluez les classes supplémentaires (par exemple, si votre dernière couche avait initialement 10 classes, et maintenant vous avez trouvé 2 autres classes, dans le cadre de votre pré-formation / réglage fin, vous le remplacez par 12 classes). En bref, répétez ce cercle:

Répéter


si vous n'accueillez que les nouvelles classes dans la dernière couche (classes de formation + nouvelles classes), le modèle ne peut pas être adapté car nous voulons nous entraîner avec les nouvelles classes (uniquement) et le modèle attend un tableau avec la forme de (formation + la nouvelle Des classes, ).
Joel Carneiro
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.