ILSVRC

Une des réussites majeures du deep-learning se situe dans le domaine du traitement d'image. En 2012, la compétition de reconnaissance visuelle ILSVRC (ImageNet Large Scale Visual Recognition Challenge) a été remportée par le réseau neuronal avec apprentissage profond de l'équipe SuperVision. Le réseau alexnet a obtenu un score de 16% d'erreur, dépassant largement les autres concurrents qui ont obtenu au mieux un taux de 26% d'erreur. Au cours des années suivantes les résultats des réseaux se sont encore améliorés atteignant un taux d'erreur lors de l'épreuve de 2015 de 3% qui est inférieur au taux d'erreur d'un opérateur humain.

La recherche a progressé en explorant de nombreux champs dont les principaux sont :

  • réduction du taux d'erreur;
  • amélioration de l'efficacité du réseau (plus rapide, plus portable);
  • accélération de la période d'apprentissage

Quelques techniques

réseau convolutionnel

Pour le traitement des données spatialement structurées telles que les images, les couches de neurones convolutionnels ont montré de très bons résultats dès 1998 dans le réseau LeNet5 utilisé pour la reconnaissance de chiffres sur des chèques.

Une couche convolutionnelle est constituée d'un noyau de convolution qui est appliquée sur l'ensemble de l'image d'entrée par balayage. Ce balayage produit une carte de features par la détection de ces features à chaque application de la convolution.

Un réseau convolutionnel est construit en empilant des couches convolutionnelles qui agissent comme des détecteurs de caractéristiques (features). Plus la couche est profonde dans l'empilement, plus les caractéristiques extraites sont complexes. Les premières couches vont détecter des caractéristiques de base qui servent à construire les caractéristiques de deuxième niveau qui servent elles-même à construire les caractéristiques de niveau supérieur.

Pour les tâches de catégorisation, le bloc des couches de convolutions sont généralement suivi de couches "décisionnels" de type fully connected (ou dense) avec Softmax.

Pour les tâches de localisation ou catégorisation par pixel, le bloc des couches de convolutions sont généralement suivi de couches de déconvolution qui peuvent aussi être utilisée pour de la génération d'images.

Dropout

Une des difficultés rencontrées lors de la conception de réseaux convolutionnels profonds a été d'arriver à garder un gradient qui ne soit ni infini ni zéro lors de la remontée de gradient pour l'apprentissage. Ces cas conduisant à des impossibilités d'apprentissage deviennent plus probable avec l'empilement de couches dans le réseau. L'idée de l'inception est d'ajouter une boucle transportant le signal en parallèle de la couche de traitement afin de toujours conserver un signal.

Les couches de dropout permettent en limitant les capacités d'un réseau pendant la phase d'apprentissage de pallier au problème de l'explosion des gradients.

Batch normalization

La technique de batch normalization complète et peut remplacer l'utilisation de dropout. Elle permet d'utiliser des valeurs de taux d'apprentissage plus élevées, réduisant le temps d'apprentissage et améliorant la précision.

Cette technique adresse le problème de "internal covariate shift" lors de la période d'apprentissage. Le "internal covariate shift" est dû à l'accumulation des variations des paramètres d'un réseau lors de l'apprentissage. En appliquant une contrainte de normalisation à l'entrée des couches internes, l'explosion des valeurs et donc des gradients, est contenue.

Inception

Les réseaux convolutionnels ont montré leurs capacité à obtenir les meilleurs scores pour la reconnaissance et la localisation d'éléments dans une image et l'empilement de couches dans ces réseaux permet d'obtenir des résultats encore meilleur au détriment du nombre de paramètres à entraîner et donc de leur portabilité dans des environnements à capacité réduite.

Les modules d'inception permettent de réduire la taille des noyaux de convolution et ainsi d'abaisser la quantité de données nécessaire à l'apprentissage et d'augmenter la portabilité de ces réseaux sur des plateformes à capacité réduite.

Nous en sommes (2016) à la version v4 du module d'inception.

Residual learning (ResNet)

La profondeur du réseau améliore la précision dans les tâches d'identification. Cette profondeur apporte des problématiques de disparition et d'explosion de gradients ainsi que l'augmentation du nombre de paramètres à entraîner. Les réseaux résiduels permettent de travailler avec des réseaux beaucoup plus profonds (par exemple 1.000 couches) en limitant ces problèmes. Ils sont à la base des réseaux gagnants la compétition ILSVRC de 2015.

La technique des réseaux résiduels consiste à transmettre l'information d'entrée d'un bloc de couches au bloc suivant via une connexion identité et une opération d'addition avec la connexion sortante du premier bloc.