Classification d'images semi-supervisée avec des données non étiquetées
Publié: 2022-03-11L'apprentissage supervisé a été à la pointe de la recherche en vision par ordinateur et en apprentissage profond au cours de la dernière décennie.
Dans un contexte d'apprentissage supervisé, les humains doivent annoter manuellement une grande quantité d'ensembles de données. Ensuite, les modèles utilisent ces données pour apprendre des relations sous-jacentes complexes entre les données et l'étiquette et développer la capacité de prédire l'étiquette, compte tenu des données. Les modèles d'apprentissage en profondeur sont généralement gourmands en données et nécessitent d'énormes quantités d'ensembles de données pour obtenir de bonnes performances. L'amélioration constante du matériel et la disponibilité de grands ensembles de données étiquetés par l'homme sont à l'origine des récents succès de l'apprentissage en profondeur.
L'un des principaux inconvénients de l'apprentissage en profondeur supervisé est qu'il repose sur la présence d'une grande quantité d'ensembles de données étiquetés par l'homme pour la formation. Ce luxe n'est pas disponible dans tous les domaines car il peut être logistiquement difficile et très coûteux d'obtenir d'énormes ensembles de données annotés par des professionnels. Bien que l'acquisition de données étiquetées puisse être une entreprise difficile et coûteuse, nous avons généralement accès à de grandes quantités d'ensembles de données non étiquetés, en particulier des données d'image et de texte. Par conséquent, nous devons trouver un moyen d'exploiter ces ensembles de données sous-utilisés et de les utiliser pour l'apprentissage.
Transférer l'apprentissage à partir de modèles pré-entraînés
En l'absence de grandes quantités de données étiquetées, nous avons généralement recours à l' apprentissage par transfert . Alors, qu'est-ce que l'apprentissage par transfert ?
L'apprentissage par transfert consiste à utiliser les connaissances d'une tâche similaire pour résoudre un problème en cours. En pratique, cela signifie généralement utiliser comme initialisations les poids du réseau de neurones profonds appris à partir d'une tâche similaire, plutôt que de partir d'une initialisation aléatoire des poids, puis former davantage le modèle sur les données étiquetées disponibles pour résoudre la tâche à accomplir.
L'apprentissage par transfert nous permet de former des modèles sur des ensembles de données aussi petits que quelques milliers d'exemples, et il peut offrir de très bonnes performances. L'apprentissage par transfert à partir de modèles pré-entraînés peut être effectué de trois manières :
1. Extraction de fonctionnalités
Habituellement, les dernières couches du réseau de neurones effectuent les calculs les plus abstraits et spécifiques aux tâches, qui ne sont généralement pas facilement transférables à d'autres tâches. En revanche, les couches initiales du réseau apprennent certaines fonctionnalités de base telles que les contours et les formes communes, qui sont facilement transférables entre les tâches.
Les ensembles d'images ci-dessous illustrent ce que les noyaux de convolution à différents niveaux d'un réseau de neurones à convolution (CNN) apprennent essentiellement. Nous voyons une représentation hiérarchique, avec les couches initiales apprenant des formes de base, et progressivement, des couches supérieures apprenant des concepts sémantiques plus complexes.
Une pratique courante consiste à prendre un modèle préformé sur de grands ensembles de données d'images étiquetées (comme ImageNet) et à couper les couches entièrement connectées à la fin. De nouvelles couches entièrement connectées sont ensuite attachées et configurées en fonction du nombre de classes requis. Les calques transférés sont gelés et les nouveaux calques sont formés sur les données étiquetées disponibles pour votre tâche.
Dans cette configuration, le modèle pré-entraîné est utilisé comme extracteur de caractéristiques, et les couches entièrement connectées sur le dessus peuvent être considérées comme un classificateur superficiel. Cette configuration est plus robuste que le surajustement car le nombre de paramètres pouvant être entraînés est relativement petit, donc cette configuration fonctionne bien lorsque les données étiquetées disponibles sont très rares. La taille de l'ensemble de données pouvant être qualifié de très petit ensemble de données est généralement un problème délicat avec de nombreux aspects à prendre en compte, notamment le problème à résoudre et la taille de l'épine dorsale du modèle. En gros, j'utiliserais cette stratégie pour un ensemble de données composé de quelques milliers d'images.
2. Mise au point
Alternativement, nous pouvons transférer les couches d'un réseau pré-formé et former l'ensemble du réseau sur les données étiquetées disponibles. Cette configuration nécessite un peu plus de données étiquetées car vous entraînez l'ensemble du réseau et donc un grand nombre de paramètres. Cette configuration est plus sujette au surajustement en cas de pénurie de données.
3. Apprentissage par transfert en deux étapes
Cette approche est ma préférée et donne généralement les meilleurs résultats, du moins d'après mon expérience. Ici, nous formons les couches nouvellement attachées tout en gelant les couches transférées pendant quelques époques avant d'affiner l'ensemble du réseau.
Le réglage fin de l'ensemble du réseau sans donner quelques époques aux couches finales peut entraîner la propagation de gradients nuisibles des couches initialisées de manière aléatoire vers le réseau de base. De plus, le réglage fin nécessite un taux d'apprentissage comparativement plus faible, et une approche en deux étapes est une solution pratique.
Le besoin de méthodes semi-supervisées et non supervisées
Cela fonctionne généralement très bien pour la plupart des tâches de classification d'images, car nous disposons d'énormes ensembles de données d'images comme ImageNet qui couvrent une bonne partie de l'espace d'image possible, et généralement, les poids qui en sont tirés sont transférables à des tâches de classification d'images personnalisées. De plus, les réseaux préformés sont facilement disponibles sur étagère, facilitant ainsi le processus.
Cependant, cette approche ne fonctionnera pas bien si la distribution des images dans votre tâche est radicalement différente des images sur lesquelles le réseau de base a été formé. Par exemple, si vous avez affaire à des images en niveaux de gris générées par un appareil d'imagerie médicale, l'apprentissage par transfert à partir des poids ImageNet ne sera pas aussi efficace et vous aurez besoin de plus de quelques milliers d'images étiquetées pour former votre réseau à des performances satisfaisantes.
En revanche, vous pouvez avoir accès à de grandes quantités d'ensembles de données non étiquetés pour votre problème. C'est pourquoi la capacité d'apprendre à partir d'ensembles de données non étiquetés est cruciale. De plus, l'ensemble de données non étiqueté est généralement beaucoup plus varié et volumineux que les plus grands ensembles de données étiquetés.
Les approches semi-supervisées ont montré des performances supérieures aux approches supervisées sur de grands benchmarks comme ImageNet. La célèbre analogie du gâteau de Yann LeCun souligne l'importance de l'apprentissage non supervisé :
Apprentissage semi-supervisé
Cette approche exploite à la fois les données étiquetées et non étiquetées pour l'apprentissage, c'est pourquoi on l'appelle l'apprentissage semi-supervisé. Il s'agit généralement de l'approche préférée lorsque vous disposez d'une petite quantité de données étiquetées et d'une grande quantité de données non étiquetées. Il existe des techniques où vous apprenez simultanément à partir de données étiquetées et non étiquetées, mais nous aborderons le problème dans le cadre d'une approche en deux étapes : apprentissage non supervisé sur des données non étiquetées et apprentissage par transfert en utilisant l'une des stratégies décrites ci-dessus pour résoudre votre tâche de classification. .
Dans ces cas, l'apprentissage non supervisé est un terme plutôt déroutant. Ces approches ne sont pas vraiment non supervisées dans le sens où il existe un signal de supervision qui guide l'apprentissage des poids, mais donc le signal de supervision est dérivé des données elles-mêmes. Par conséquent, il est parfois appelé apprentissage auto-supervisé, mais ces termes ont été utilisés de manière interchangeable dans la littérature pour désigner la même approche.

Les principales techniques d'apprentissage auto-supervisé peuvent être divisées en fonction de la manière dont elles génèrent ce signal de supervision à partir des données, comme indiqué ci-dessous.
Méthodes génératives
Les méthodes génératives visent à la reconstruction précise des données après leur passage dans un goulot d'étranglement. Un exemple de tels réseaux est celui des auto-encodeurs. Ils réduisent l'entrée dans un espace de représentation de faible dimension à l'aide d'un réseau de codeurs et reconstruisent l'image à l'aide du réseau de décodeurs.
Dans cette configuration, l'entrée elle-même devient le signal de supervision (étiquette) pour la formation du réseau. Le réseau d'encodeurs peut ensuite être extrait et utilisé comme point de départ pour construire votre classificateur, en utilisant l'une des techniques d'apprentissage par transfert décrites dans la section ci-dessus.
De même, une autre forme de réseaux génératifs - les réseaux antagonistes génératifs (GAN) - peut être utilisée pour la préformation sur des données non étiquetées. Ensuite, un discriminateur peut être adopté et affiné pour la tâche de classification.
Méthodes discriminatoires
Les approches discriminantes forment un réseau de neurones pour apprendre une tâche de classification auxiliaire. Une tâche auxiliaire est choisie de sorte que le signal de supervision puisse être dérivé des données elles-mêmes, sans annotation humaine.
Des exemples de ce type de tâches sont l'apprentissage des positions relatives des patchs d'image, la colorisation des images en niveaux de gris ou l'apprentissage des transformations géométriques appliquées sur les images. Nous en aborderons deux plus en détail.
Apprentissage des positions relatives des patchs d'image
Dans cette technique, des patchs d'image sont extraits de l'image source pour former une grille en forme de puzzle. Les positions des chemins sont mélangées et une entrée mélangée est introduite dans le réseau, qui est formé pour prédire correctement l'emplacement de chaque patch dans la grille. Ainsi, le signal de supervision est la position réelle de chaque voie dans la grille.
En apprenant à faire cela, le réseau apprend la structure et l'orientation relatives des objets ainsi que la continuité des caractéristiques visuelles de bas niveau comme la couleur. Les résultats montrent que les fonctionnalités apprises en résolvant ce puzzle sont hautement transférables à des tâches telles que la classification d'images et la détection d'objets.
Apprentissage des transformations géométriques appliquées aux images
Ces approches appliquent un petit ensemble de transformations géométriques aux images d'entrée et forment un classifieur pour prédire la transformation appliquée en regardant uniquement l'image transformée. Un exemple de ces approches consiste à appliquer une rotation 2D aux images non étiquetées pour obtenir un ensemble d'images pivotées, puis à entraîner le réseau à prédire la rotation de chaque image.
Ce simple signal de supervision force le réseau à apprendre à localiser les objets dans une image et à comprendre leur orientation. Les caractéristiques apprises par ces approches se sont avérées hautement transférables et donnent des performances de pointe pour les tâches de classification dans des environnements semi-supervisés.
Approches basées sur la similarité
Ces approches projettent les images dans un espace de représentation de taille fixe où les images similaires sont rapprochées et les images différentes sont plus éloignées. Une façon d'y parvenir est d'utiliser des réseaux siamois basés sur la perte de triplet, ce qui minimise la distance entre les images sémantiquement similaires. La perte de triplet a besoin d'une ancre, d'un exemple positif et d'un exemple négatif et essaie de rapprocher le positif de l'ancre que le négatif en termes de distance euclidienne dans l'espace latent. L'ancre et le positif appartiennent à la même classe, et l'exemple négatif est choisi au hasard parmi les classes restantes.
Dans les données non étiquetées, nous devons trouver une stratégie pour produire ce triplet d'exemples positifs et négatifs d'ancrage sans connaître les classes d'images. Une façon de le faire est d'utiliser une transformation affine aléatoire de l'image d'ancrage comme exemple positif et de sélectionner au hasard une autre image comme exemple négatif.
Expérience
Dans cette section, je relaterai une expérience qui établit empiriquement le potentiel d'un pré-entraînement non supervisé pour la classification d'images. C'était mon projet de semestre pour un cours de Deep Learning que j'ai suivi avec Yann LeCun à NYU au printemps dernier.
- Jeu de données . Il est composé de 128K exemples étiquetés, dont la moitié est destinée à l'apprentissage et l'autre moitié à la validation. De plus, 512K d'images non étiquetées nous sont fournies. Les données contiennent 1 000 classes au total.
- Pré-formation non supervisée . AlexNet a été formé pour la classification par rotation en utilisant une augmentation étendue des données pour 63 époques. Nous avons utilisé les hyperparamètres documentés par Rotnet dans leur article.
- Formation classificateur . Les caractéristiques ont été extraites de la quatrième couche de convolution et trois couches entièrement connectées y ont été ajoutées. Ces couches ont été initialisées et formées de manière aléatoire avec un taux d'apprentissage décroissant programmé, et un arrêt précoce a été mis en œuvre pour arrêter la formation.
- Réglage fin de l'ensemble du réseau . Finalement, nous avons affiné le réseau formé sur l'ensemble des données étiquetées. L'extracteur de caractéristiques et le classificateur, qui ont été formés séparément auparavant, ont été affinés avec un petit taux d'apprentissage pour 15 époques.
Nous avons formé sept modèles, chacun utilisant un nombre différent d'exemples de formation étiquetés par classe. Cela a été fait pour comprendre comment la taille des données d'entraînement influence les performances de notre configuration semi-supervisée.
Nous avons pu obtenir un taux de précision de 82 % pour la pré-formation sur la classification des rotations. Pour la formation des classificateurs, la précision des 5 % supérieurs s'est saturée autour de la valeur de 46,24 %, et le réglage fin de l'ensemble du réseau a donné le chiffre final de 50,17 %. En tirant parti de la pré-formation, nous avons obtenu de meilleures performances que celles de la formation supervisée, qui donne 40% de précision dans le top 5.
Comme prévu, la précision de la validation diminue avec la diminution des données d'apprentissage étiquetées. Cependant, la diminution des performances n'est pas aussi importante que ce à quoi on pourrait s'attendre dans un environnement supervisé. Une diminution de 50 % des données d'entraînement de 64 exemples par classe à 32 exemples par classe n'entraîne qu'une diminution de 15 % de la précision de la validation.
En utilisant seulement 32 exemples par classe, notre modèle semi-supervisé atteint des performances supérieures au modèle supervisé entraîné à l'aide de 64 exemples par classe. Cela fournit des preuves empiriques du potentiel des approches semi-supervisées pour la classification des images sur des ensembles de données étiquetés à faibles ressources.
Emballer
Nous pouvons conclure que l'apprentissage non supervisé est un paradigme puissant qui a la capacité d'améliorer les performances des ensembles de données à faibles ressources. L'apprentissage non supervisé en est actuellement à ses balbutiements, mais il étendra progressivement sa part dans l'espace de la vision par ordinateur en permettant l'apprentissage à partir de données non étiquetées bon marché et facilement accessibles.
Lectures complémentaires sur le blog Toptal Engineering :
- Graphique Data Science avec Python/NetworkX