Technologie

Comment utiliser l'apprentissage en profondeur même avec de petites données

Comment utiliser l'apprentissage en profondeur même avec de petites données


Et pourquoi c'est si important

Une compétence en science des données souvent négligée - Comment utiliser l'apprentissage en profondeur même avec de petites données

Vous avez entendu la nouvelle: l’apprentissage en profondeur est la chose la plus chaude depuis le pain en tranches. Il promet de résoudre vos problèmes les plus complexes pour le petit prix d’une énorme quantité de données. Le seul problème est que vous ne travaillez ni sur Google ni sur Facebook et que les données sont rares. Alors qu'est-ce que tu vas faire? Pouvez-vous toujours tirer parti du pouvoir de l'apprentissage en profondeur ou avez-vous de la chance? Voyons un peu comment vous pouvez exploiter l'apprentissage en profondeur même avec des données limitées et pourquoi je pense que cela pourrait être l’un des domaines les plus passionnants de la recherche future.

Avant de discuter des méthodes permettant de tirer parti de l'apprentissage en profondeur pour vos données limitées, veuillez vous retirer des réseaux de neurones et créer une base simple. Il ne faut généralement pas longtemps pour expérimenter quelques modèles traditionnels, tels que les forêts aléatoires. Cela vous aidera à évaluer les possibilités offertes par l’apprentissage en profondeur et vous fournira une foule de connaissances sur les compromis, pour votre problème, de l’apprentissage en profondeur par rapport à d’autres méthodes.

Cela peut sembler ridicule, mais avez-vous réellement réfléchi à la possibilité de collecter plus de données? Je suis surpris par la fréquence à laquelle je suggère cela aux entreprises, et elles me regardent comme si j'étais folle. Oui, il est normal d'investir du temps et de l'argent dans la collecte de plus de données. En fait, cela peut souvent être votre meilleure option. Par exemple, vous essayez peut-être de classer les espèces d'oiseaux rares et disposez de données très limitées. Vous aurez certainement plus de facilité à résoudre ce problème en étiquetant davantage de données. Vous ne savez pas combien de données vous devez collecter? Essayez de tracer des courbes d'apprentissage à mesure que vous ajoutez des données supplémentaires et observez l'évolution des performances du modèle.

Photo par Drew Patrick Miller sur Unsplash

D'accord. Supposons que vous disposiez désormais d’un modèle de base simple et qu’il soit impossible ou trop coûteux de collecter plus de données. La méthode la plus éprouvée à ce stade consiste à utiliser des modèles pré-formés, puis à les ajuster en fonction de votre problème.

L'idée de base du réglage précis est de prendre un très grand ensemble de données qui, espérons-le, est un peu similaire à votre domaine, de former un réseau de neurones, puis d'affiner ce réseau pré-formé avec votre plus petit jeu de données. Vous pouvez en apprendre plus dans cet article.

Pour les problèmes de classification des images, le jeu de données à utiliser est ImageNet. Cet ensemble de données contient des millions d'images sur de nombreuses classes d'objets et peut donc être utile pour de nombreux types de problèmes d'image. Il inclut même des animaux et pourrait donc être utile pour la classification des oiseaux rares.

Pour vous familiariser avec le code à ajuster, consultez le formidable tutoriel de Pytorch.

Si vous ne pouvez pas obtenir plus de données et si vous ne parvenez pas à optimiser les grands ensembles de données, l’augmentation des données est généralement votre meilleur choix. Il peut également être utilisé conjointement avec le réglage précis.

L'idée derrière l'augmentation des données est simple: modifiez les entrées de manière à fournir de nouvelles données sans modifier la valeur de l'étiquette.

Par exemple, si vous avez une image d'un chat et faites pivoter l'image, il s'agit toujours d'une image d'un chat. Ainsi, ce serait une bonne augmentation des données. D'autre part, si vous avez une image d'une route et souhaitez prédire l'angle de braquage approprié (voitures à conduite autonome), la rotation de l'image modifie l'angle de braquage approprié. Cela ne serait pas correct si vous ne modifiez pas également l'angle de braquage de manière appropriée.

L'augmentation des données est la plus commune pour les problèmes de classification des images et vous pouvez trouver des techniques ici.

Vous pouvez souvent penser à des moyens créatifs d’augmenter les données dans d’autres domaines, tels que la PNL (voir quelques exemples ici), et les utilisateurs expérimentent également les GAN pour générer de nouvelles données. Si l’approche GAN présente un intérêt, je jetterai un coup d’œil à DADA: Augmentation des données d’adversaires profonds.

Un article récent, Apprendre en profondeur sur de petits ensembles de données sans formation préalable utilisant une perte de cosinus, a constaté une augmentation de 30% de la précision des petits ensembles de données lors du passage de la fonction de perte d’une perte catégorique à entropie croisée à une perte de cosinus pour des problèmes de classification. La perte de cosinus est simplement 1 - similitude cosinus.

Vous pouvez voir dans le graphique ci-dessus comment les performances changent en fonction du nombre d'échantillons par classe et en quoi un réglage précis peut s'avérer très utile pour certains petits jeux de données (CUB) et moins utile pour d'autres (CIFAR-100).

Dans un article de NIPs, Modern Neural Networks Generalize on Small Data Sets, les réseaux de neurones modernes considèrent les réseaux de neurones profonds comme des ensembles. Plus précisément, «plutôt que chaque couche présentant une hiérarchie toujours croissante d'éléments, il est plausible que les couches finales offrent un mécanisme d'ensemble».

Ce que je retiens, c’est pour les petites données. Assurez-vous de construire vos réseaux en profondeur pour tirer parti de cet effet d’ensemble.

L'utilisation des auto-encodeurs empilés pour pré-former un réseau avec des poids de départ optimaux a connu un certain succès. Cela peut vous permettre d’éviter les optimaux locaux et d’autres pièges d’une mauvaise initialisation. Cependant, Andrej Karpathy recommande de ne pas trop s’exciter pour un pré-entraînement non supervisé.

Si vous avez besoin de parfaire le codage automatique, vous pouvez consulter ce didacticiel d’apprentissage approfondi de Stanford. L'idée de base est de construire un réseau de neurones qui prédit les entrées.

Photo de Glen Noble sur Unsplash

Dernier point, mais non le moindre, essayez de trouver des moyens d’incorporer des connaissances spécifiques à un domaine afin de guider le processus d’apprentissage. Par exemple, dans l’apprentissage de concepts au niveau humain via l’induction probabiliste de programmes, les auteurs construisent un modèle qui construit les concepts à partir de pièces en tirant parti des connaissances antérieures tout au long du processus. Cela a conduit à une performance au niveau humain et a surpassé les approches d'apprentissage en profondeur à cette époque.

Vous pouvez également utiliser la connaissance du domaine pour limiter les entrées au réseau afin de réduire la dimensionnalité ou de réduire l'architecture du réseau.

Je soulève cette question comme dernière option, car l’intégration des connaissances préalables peut être difficile et est généralement la plus longue des options.

Espérons que cet article vous a donné quelques idées sur la manière de tirer parti des techniques d'apprentissage en profondeur, même avec des données limitées. Je trouve personnellement que c’est un problème dont on ne discute pas actuellement autant qu’il devrait être, mais qui a des implications très intéressantes.

Il existe un grand nombre de problèmes pour lesquels les données sont très limitées et pour lesquels acquérir plus de données est très coûteux, voire impossible. Par exemple, détecter des maladies rares ou des résultats scolaires. Il est extrêmement passionnant de trouver des moyens d’appliquer certaines de nos meilleures techniques, telles que l’apprentissage en profondeur, à ces problèmes! Même Andrew Ng est d'accord:

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer