Création d’un réseau d’apprentissage unique avec PyTorch

Table des matières

Création d’un réseau d’apprentissage unique avec PyTorch

Comment construire un réseau profond avec si peu d’échantillons pour chaque classe?

Ta-Ying Cheng

Le jeu de données de caractères manuscrits Omniglot est un jeu de données pour l’apprentissage ponctuel, proposé par Lake et al. Il contient 1623 caractères manuscrits différents de 50 séries d’alphabets différentes, où chaque caractère a été écrit à la main par 20 personnes différentes. Chaque image mesure 105 x 105 pixels. Les 50 alphabets sont divisés en un ratio de 30:20 pour la formation et les tests, ce qui signifie que le jeu de test se trouve sur un tout nouveau jeu de caractères qui n’est jamais vu auparavant.

La formation et l’expérience ont été effectuées uniquement via Google Colab, avec une gamme de GPU, y compris Tesla K80 et P100. Nous avons utilisé des bibliothèques comme Numpy, Matplotlib et PyTorch.

Les réseaux profonds traditionnels ne fonctionnent généralement pas bien avec un ou plusieurs plans d’apprentissage, car très peu d’échantillons par classe sont très susceptibles de provoquer un surapprentissage. Pour éviter le problème de surajustement et l’étendre aux personnages invisibles, nous avons proposé d’utiliser le Siamese Network.

Figure 1. Architecture du réseau siamois convolutif

Pour former le réseau siamois, nous devons d’abord générer l’entrée appropriée (par paires) et définir l’étiquette de vérité terrain pour le modèle.

L’évaluation d’un réseau sur ses performances en apprentissage one-shot peut se faire via une métrique d’évaluation one-way one-shot learning, où l’on retrouve n images représentant n catégories et une image principale qui appartient à l’une des n catégories. Pour notre réseau siamois, nous avons calculé la similitude des images principales avec les n images, et la paire avec la similitude la plus élevée signifie que l’image principale appartient à la classe.

Figure 2. Architecture du réseau siamois par Koch et al.
Figure 3. Perte de formation et de validation du réseau d’origine
Figure 4. Architecture du modèle avec BatchNorm
Figure 4. Résultats de la formation après 10 époques
Figure 5. Résultats de la formation après 50 époques

Après avoir bien fonctionné le réseau d’origine, nous pouvons également tester différents CNN bien établis pour notre réseau siamois et voir si nous pouvons obtenir de meilleurs résultats. Avec la petite taille d’image de 105×105, nous voulions utiliser un réseau relativement plus petit avec peu de couches, mais produisant toujours des résultats décents, et nous avons donc emprunté l’architecture réseau de VGG16.

Figure 6. Résultat du réseau siamois VGG16

Le code d’évaluation d’un réseau est implémenté comme suit:

Alors voilà! Voici comment créer un réseau siamois convolutif pour l’apprentissage en une seule fois de l’ensemble de données Omniglot. Le code complet est également publié sur Github dans le répertoire suivant: