• Aucun résultat trouvé

CNN – Region-based Convolution Network

exemple en imagerie médicale

R- CNN – Region-based Convolution Network

Il existe de nombreuses variantes de R-CNN avec les Fast R-CNN, Faster R-CNN et Mask CNN99. Chaque partie détectée est alors labellisée avec un réseau convolutionnel avec une résolu-

tion de départ de 224x224 pixels ou voisine.

En pratique, les images sont reconnues en couleur sauf lorsqu’une version monochrome de l’image est suffisante pour obtenir une reconnaissance avec un faible taux d’erreur, ce qui est souvent le cas dans l’imagerie médicale qui est fréquemment réalisée en noir et blanc (radios, IRM, échographies). La détection d’objets multiples

dans une image peut faire appel à Yolo V3 (2016) ou « You only look once », une sorte de Convnet de détection d’objets multiples dans des images, notamment dans les vidéos.

Cela fonctionne en temps réel et jusqu’à 45 images par secondes, mais cela dépend évidemment du matériel utilisé pour les inférences.

Yolo V3 utilise 24 couches de convolution et deux couches « fully connected » en sortie avec des entrées en 224x224 pixels. La technique est voisine de celle des R-CNN100.

Pourquoi donc 224 pixels de côté dans les CNN, R-CNN et autres Yolo ? Parce qu’on peut diviser cette valeur plusieurs fois par 2 et aboutir à 7, qui est la taille des feature maps de la dernière couche de convolution. Malgré la légère diminution de résolution entre une image et sa feature map, celle- ci reste stable. Cela vient du fait que l’on ajoute un pixel à 0 sur les bords de l’image avant de la balayer avec les filtres qui font souvent 3 pixels de côté.

La feature map de la première couche fait ainsi 224 + 2 (pixels de bord) – 3 (taille des filtres) +1 (effet de bord) = 224 pixels. Les couches suivantes font 112, 56, 28, 14 puis 7 pixels. Et voi- là l’explication !

Mais il peut y en avoir des variantes avec des nombres de pixels avoisinants et des feature maps de taille variable selon les couches comme dans AlexNet (avec des filtres de 11, 5 et 3 pixels de côté) comme nous l’avons vu précédemment.

Afin de réduire la charge de calcul et de réduire la consommation d’énergie, les valeurs gérées en entrée et en sortie de neurones sont souvent encodées dans des entiers sur 4 ou 8 bits au lieu de nombres flottants 16 ou 32 bits. C’est pour cela que la performance des processeurs embarqués est souvent décrite en GigaOps et pas en GigaFlops. Les « Ops » sont des opérations sur des entiers (4, 8 ou 16 bits à préciser) et les « Flops » sur des nombres flottants. Un GigaOps n’est donc pas équi- valent à un GigaFlops !

Les algorithmes utilisés sont cependant si puissants qu’ils permettent de générer des taux de recon- naissance d’images meilleurs que ceux de l’Homme ! Qu’est-ce que cela serait si la résolution utili- sée était la même que dans l’œil et le cortex humains, l’œil étant doté de 90 millions de bâtonnets pour détecter la luminance et de 6,5 millions de cones pour la couleur, le tout étant connecté au cor- tex visuel par un nerf optique comprenant un million d’axones !

99 Voir A Brief History of CNNs in Image Segmentation: From R-CNN to Mask R-CNN de Dhruv Parthasarathy, avril 2017. 100 Voir You Only Look Once: Unified, Real-Time Object Detection, (10 pages) et cette vidéo. Le projet est open source.

On peut distinguer les ConvNets selon le nombre de dimensions des données reconnues : 1D (une dimension) pour le texte, la reconnaissance de genre de musique, des prévisions temporelles sur une seule variable, 2D (deux dimensions) pour les images, pour la reconnaissance de la parole qui asso- cie fréquence audio et temps, puis 3D (trois dimensions) pour le traitement de vidéos et d’imagerie médicale 3D.

Il existe un très grand nombre d’algorithmes de ConvNets101. L’un des plus courants est

VGG16 (2014) qui comprend 16 couches de convolution avec des filtres de 3x3 pixels, de 64 à 512 filtres et features maps par couche et la capacité de détection de 1000 classes d’objets différentes. Le modèle est alimenté par 528 Mo de paramètres.

Plus on va augmenter le nombre de couches et le nombre de filtres par couches, plus on va augmenter la taille mémoire nécessaire pour la gestion de ces paramètres, de type HBM2 dans les Nvidia V100. Cela explique pour- quoi les Convnets analysent des images à assez basse résolution pour le moment.

Apprentissage par transfert (1997)

L’apprentissage par transfert permet de réaliser de l’apprentissage incrémental dans les réseaux de neurones, aussi bien convolutifs et à mémoire. Il permet de transférer ce qui a été appris par un ré- seau dans un autre réseau, et même dans un domaine un peu différent102. par exemple un réseau

ayant appris à reconnaître des chats sert à initialiser un réseau pour reconnaître des chiens. Cette possibilité provient de ce que les primitives de bas niveau, les filtres des premières couches, sont les mêmes pour des familles d’images du même genre.

101 Voir ce cours de Stanford sur les CNN : CNN Architectures de Fei-Fei Li, Justin Johnson et Serena Yeung, mai 2018 (106 slides). 102 Voir Transfer Learning de Lisa Torrey et Jude Shavlik (22 pages, non daté), Transfer Learning : réaliser de meilleures prédictions

avec peu de données d’Arthur Letang, janvier 2017, A Gentle Introduction to Transfer Learning for Deep Learning de Jason Brow- nless, décembre 2017, Understanding, generalisation, and transfer learning in deep neural networks, février 2017, et les présentations

C’est une discipline à part entière du deep learning qui a de nombreuses variantes et applications, notamment pour réduire la quantité de données nécessaires à l’apprentissage d’un réseau de neu- rones.

La méthode permet aussi d’entraîner un réseau de neurones de manière incrémentale, lorsque l’on ajoute par exemple des images à reconnaître dans un convnet déjà entraîné avec un jeu d’images initial. L’exemple ci-dessous est tiré d’une présentation d’Andrej Karpathy.

L’apprentissage par transfert (transfer learning) permet aussi de préentraîner un réseau de recon- naissance d’images avec des images générées synthétiquement dans diverses positions103. On

l’utilise aussi pour améliorer la labellisation d’illustrations104.

Descente stochastique de gradient (2003)

La SGD (Stochastic Gradient Descent) est une technique d’apprentissage par rétro-propagation des erreurs qui s’appuie sur l’optimisation du gradient. Pour faire simple, il s’agit d’identifier dans quelle direction faire évoluer les poids synaptiques des neurones pour atteindre leur niveau optimal dans la reconnaissance des objets en minimisant les opérations de calcul nécessaires. Le tout étant utilisé dans l’entraînement du réseau de neurones par rétropropagation d’erreurs.

Il est important de trouver le niveau optimum global, à savoir le taux d’erreur le plus bas, et pas seulement le niveau optimum local, qui est le taux d’erreur le plus bas dans les environs du poids de départ que le réseau de neurones cherche à optimiser (voir le schéma ci-dessous qui l’explique de manière imagée).

La technique s’applique aussi bien aux réseaux de neurones à une seule couche cachée qui font par- tie du domaine du marchine learning qu’aux réseaux de neurones complexes du deep learning. Dans l’entraînement par rétropropagation d’erreurs, les poids synaptiques des neurones sont initiali- sés aléatoirement. On fait passer des objets d’une base de test au travers du réseau et on compare le résultat de classification en sortie avec le bon résultat dont on dispose dans la base d’entraînement (en amont, des photos et en aval, des descripteurs des objets dans les photos).

La descente de gradient évalue dans quelle direction faire évoluer les poids des synapses pour s’approcher du bon résultat. Le calcul est réalisé pour toutes les synapses et pour tous les objets du jeu d’entraînement, ce qui génère beaucoup de calculs.

103 Voir par exemple Improving SAR Automatic Target Recognition Models with Transfer Learning from Simulated Data de David Malmgren-Hansen, Anders Kusk, Jørgen Dall, Allan Aasbjerg Nielsen, Rasmus Engholm et Henning Skriver, 2017 (6 pages). 104 Voir Transfer Learning for Illustration Classification, 2018 (9 pages).

la descente de gradients consiste à faire varier les poids des neurones pour trouver la valeur optimale globale, celle qui minimise le niveau d'erreur du

réseau de neurones.

opération effectuée pour chaque neurone et pour chaque objet de la base de référence. “stockastic gradient descent” est une des optimisations qui ajuste les paramètres du réseau de

neurones objet par objet ou par groupe d'objet au lieu de les calculer d'un coup pour tous les objets

d'entraînement à la fois

la difficulté consiste à trouver le minimum global et pas simplement un minimum local

La descente stochastique de gradient est une variante de la descente de gradient qui consiste à éva- luer le poids des synapses objet par objet (méthode stochastique) ou groupe d’objets (méthode mini- batch) du groupe d’objets d’entraînement au lieu de scanner entièrement la base d’entraînement (méthode dite « batch »). Cela permet de réduire la quantité de calculs à effectuer et permet de con- verger plus rapidement vers un réseau bien entraîné.

Cette technique d’entraînement est très efficace pour générer un réseau de neurones capable de gé- nérer des résultats avec un faible taux d’erreurs. Elle est cependant très consommatrice de res- sources machines et de temps. D’où l’intérêt de l’optimiser et de s’appuyer sur des ressources maté- rielles de plus en plus puissantes, comme les ordinateurs à base de GPU ou de processeurs neuro- morphiques que nous étudions plus loin dans ce document.

Deep beliefs networks (2006)

Les DBN sont issus des travaux des canadiens Geoffrey Hinton et Simon Osindero et du Singapou- rien Yee-Whye Teh publiés dans A Fast Learning Algorithm For Deep Belief Nets. Ils optimisent le fonctionnement des réseaux neuronaux multicouches en gérant leur apprentissage couche par couche, indépendamment les unes des autres.

Ce sont en quelque sorte des machines de Boltzmann restreintes empilées les unes sur les autres, étape par étape pour ce qui est de l’entraînement.

Le concept général du deep learning a été ensuite formalisé par ce même Geoffrey Hinton en 2007 dans Learning multiple layers of representation.

Notons que Geoff Hinton s’appuyait en partie sur les travaux du français Yann LeCun (en 1989) qui dirige maintenant le laboratoire de recherche en IA de Facebook et de l’allemand Jürgen

Schmidhuber (1992, créateur des LSTM) dont deux des anciens étudiants ont créé la start-up

DeepMind, maintenant filiale de Google. Sachant que Yann LeCun était lui-même un ancien post- doctorant dans le laboratoire de Geoff Hinton. Un bien petit monde !

Geoffrey Hinton105 travaille pour Google depuis 2013, pas loin du légendaire Jeff Dean106, arrivé

en 1999 et qui planche maintenant aussi sur le deep learning. On peut aussi citer le français Sté- phane Mallat qui a aussi contribué au développement des réseaux convolutionnels et à l’explication de leurs sous-jacents mathématiques107.

105 Voir Is AI Riding a One-Trick Pony? de James Somers, septembre 2017, MIT Technology Review, qui montre à quel point Geoff Hinton est central dans l’histoire récente de l’IA.

106 Co-créateur entre autres de choses de deux outils clés des traitements distribués MapReduce et BigTable, ainsi que du crawler de Google Search et d’AdSense.

107 Sa conférence délivrée dans la Chaire du Collège de France de Yann LeCun fournit des éclaircissements sur le fonctionnement des réseaux convolutionnels. Mais il faut s’accrocher pour suivre ! Voir les Mystères mathématiques des réseaux de neurones convo- lutionnels, 19 février 2016.

Autoencodeurs empilés (2007)

Les stacked autoencoders sont couramment associés aux deep belief networks et aux réseaux con- volutionnels. Il s’agit d’utiliser des couches cachées de neurones qui encodent les données dans un espace dimentionnel réduit et des couches de neurones qui permettent ensuite de reconstituer les variables en entrées, en sortie de cette couche.

Cette technique est utilisée dans l’apprentissage non supervisé des réseaux de neurones pour identi- fier des variables ou fonctions cachées. Elle peut notamment servir à débruiter des images.

Cette technique est donc une technique de réduction de dimensions. La méthode mathématique em- ployée peut être la PCA (Principal Components Analysis) que nous avons rapidement vue dans la partie sur le machine learning ou la Singular Value Decomposition (SVD), autre méthode voisine de la PCA. En fait l’autoencodeur réalise une sorte de PCA non linéaire108.

Il existe bien entendu diverses variantes d’autoencodeurs comme les DAE (denoising autoenco- ders), les SAE (sparse autoencoders) et les VE (variational autoencoders).

Modèles génératifs (2014)

Les réseaux de neurones génératifs sont des réseaux de neurones convolutionnels ou récurrents gé- nérant du contenu à partir de contenus existants.

Ils font des prévisions, d’images vidéo suivantes d’une vidéo donnée, ils colorient des images en noir et blanc109 et ils remplissent des images dont il manque des morceaux. Ils peuvent aussi servir à

améliorer les dialogues de chatbots.

Les principales techniques utilisées sont les GAN (Generative Adversarial Networks), apparus en 2014 et perfectionnés en particulier en 2016. Ces sont des réseaux de neurones non supervisés ca- pables de générer des contenus en s’appuyant sur des générateurs à base de réseaux de convolution inversés, sortes de stacked autoencoders multiples et de discriminateurs qui permettent d’identifier les contenus générés les plus plausibles, qui sont reconnus par un réseau de neurones de labellisa- tion d’objets.

108 Voir Auto-association by multilayer perceptrons and singular value decomposition, de Hervé Bourlard et Y. Kamp, 1988. 109 Les exemples du slide ci-dessous viennent de : Generative Models de Fei-Fei Li & Justin Johnson & Serena Yeung, 2017.

Les variantes de réseaux génératifs sont de plus en plus nombreuses avec notamment les VAE (Va- riational Autoencoders, 2014), les Adversarial Eutoencoders (2015), les InfoGAN (2016), les CycleGAN (2017), Wasserstein GAN (2017), PixelRNN / PixelCNN (2016) et GMMN (Genera- tive moment matching networks, 2015).

Je traite des GANs dans la rubrique sur les modèles génératifs dans la partie liée à la vision car c’est le principal domaine d’application des GANs110.

Differential Neural Computers (2016)

Les DNC sont des réseaux de neurones récurrents utilisant une mémoire autoassociative, créés par Alex Graves et son équipe de DeepMind111. Ils gèrent les relations entre composantes d’une mé-

moire long terme.

A ce jour, ils ne servent pas à grand-chose mais pourraient servir à intégrer du raison- nement symbolique dans les réseaux de neu- rones. Les DNC peuvent répondre à des ques- tions sur des données structurées complexes et structurées en arbres et même résoudre certains types de puzzles. On associe ces DNC à la programmation différentielle dont l’usage est actuellement en plein essor112. Ils

imitent aussi le fonctionnement de

l’hypocampe du cerveau humain.

110 Voir aussi An applied introduction to generative adversarial networks, décembre 2017.

111 Voir Hybrid computing using a neural network with dynamic external memory, 2016 (23 pages), Differentiable Neural Computers d’Alex Graves, 2016 (16 slides) et Differentiable neural computers, 2016, du même auteur, et What are differentiable neural comput- ers de Heidelberg.ai, 2017 (62 slides). Sinon, Hardware Accelerator for Differentiable Neural Computer and Its FPGA Implementa- tion, 2017 (7 pages) décrit la manière de transposer les DNC dans du hardware.

Autres méthodes de deep learning (2015-2017)

S’en suivirent plus récemment de nombreuses variantes de réseaux de neurones, surtout à base de réseaux convolutionnels (ci-dessous à

droite), destinées à optimiser les perfor-

mances, en particulier, celles de

l’entraînement des réseaux. En effet, c’est la partie qui est la plus consommatrice de res- sources machines dans les réseaux de neu- rones. Une fois un réseau entraîné, il exécute ses prévisions bien plus rapidement.

On voit aussi émerger des réseaux de deep learning évolutifs dont l’architecture peut évoluer de manière itérative113.

Le schéma ci-dessous illustre cette longue chaine de progrès, qui ne s’est d’ailleurs pas arrêtée en 2012 et poursuit encore son chemin aujourd’hui. Elle s’est même accélérée avec l’arrivée dans le domaine de très nombreux chercheurs chinois. 2012 est une date intéressante, celle de la création du réseau de neurones convolutionnel AlexNet par l’équipe de Geoff Hinton de l’Université de Toron- to. Il était entraîné sur 1,3 millions d’images de la base de référence ImageNet avec 1000 classes d’images différentes et générait des taux d’erreurs bas pour l’époque (18,9% pour le top 5).

Le réseau de neurones exploitait 60 millions de paramètres et 500 000 neurones répartis dans cinq couches de convolution. Le tout exploitait des cartes GPU Nvidia pour accélérer les traitements, surtout pendant la phase d’entraînement qui durait des semaines114.

Le deep learning et les réseaux de neurones convolutionnels ont continué de progresser pas à pas, avec la création d’innombrables variantes conceptuelles pour améliorer leurs capacités d‘apprentissage, de mémorisation et leur performance d’entraînement. L’IA progresse d’ailleurs régulièrement et de manière plutôt décentralisée, avec des dizaines de chercheurs contribuant à faire avancer l’état de l’art. Le tout, pendant que les GPU et processeurs neuromorphiques progressent tout autant de leur côté.

113 Voir Neuroevolution: A different kind of deep learning, juillet 2017.

114 Voir ImageNet Classification with Deep Convolutional Neural Networks, 2012.

Geoff Hinton Yann LeCun

Nous avons ainsi par exemple vu apparaître quelques avancées conceptuelles clés depuis 2015 :  ResNet115 (2015), un réseau de neurones profonds, c’est-à-dire avec de nombreuses couches,

152 !, mais qui en optimise l’entraînement. Il sert à réduire la perte de gradients dans le proces- sus d’entraînement. Il permettait d’atteindre un taux d’erreur de 5,7% sur la base de tests Ima- geNet.

Stockastic Residual Net116 (2016), qui optimise les réseaux de neurones en court-circuitant

certaines couches pendant l’entraînement pour le rendre plus rapide.

FractalNet117 (2016), qui utilise le concept des fractales pour densifier un réseau de neurones

convolutionnel en répliquant certaines couches et en utilisant plusieurs circuits différents pour l’optimisation de chaque convolution.

DenseNet118 (2016), une variante des ConvNets où chaque feature map est injectée en entrée de

toutes les couches convolutionnelles suivantes et pas seulement de la suivante, évitant le syn- drome de la perte de gradient qui affecte les ConvNets lors de leur entraînement.

PathNet119 (2016), un réseau de neurones, chaque neurone étant un réseau convolutionnel, dont

l’usage est optimisé automatiquement. C’est une création de DeepMind.

115 Voir Deep Residual Learning for Image Recognition, de Kaiming He, Xiangyu Zhang, Shaoqing Ren et Jian Sun, 2015. ResNet a été développé par une équipe de Microsoft Research en Chine. ResNet serait utilisé dans AlphaGo Zero, développé par DeepMind en 2017.

116 Voir Deep Networks with Stochastic Depth de Gao Huang, Yu Sun, Zhuang Liuy, Daniel Sedra, et Kilian Q. Weinberger, 2016. 117 Voir FractalNet : Ultra-deep neural networks without residuals, de Gustav Larsson, Michael Maire et Gregory Shakhnarovitch, 2016.

118 Voir Densely Connected Convolutional Networks de Gao Huang, Zhuang Liu et Laurens van der Maaten, 2016, révisé en 2017. 119 Voir PathNet: Evolution Channels Gradient Descent in Super Neural Networks, de Chrisantha Fernando, Dylan Banarse, Charles Blundell, Yori Zwols, David Ha, Andrei A. Rusu, Alexander Pritzel et Daan Wierstra, janvier 2017.

SNN (2017) sont les Self-Normalizing Neu- ral Networks120, des variantes de ConvNets

qui utilisent une function d’activation parti- culière, le SELU (Scaled Exponential Linear Units) qui intègre une function de normalisa- tion qui n’est pas très éloignée d’une RELU et d’une ELU en étant légèrement négative pour les valeurs négatives au lieu d’être à zé- ro. Qui plus est, les valeurs des poids sont initialisées à 0 a lieu de 0,5. Pourquoi donc ? Pour permettre une convergence plus rapide du réseau de neurones lors de l’entraînement par rétropropagation.

Une fonction d’activation SELU permet d’améliorer d’un facteur 10 le temps d’entraînement de certains types de

réseaux de neurones convolutionnels.

Capsule Networks (2017), déjà cités avec plus de détails au-dessus. Cependant, je n’en ai pas découvert d’usages pratiques depuis leur apparition en décembre 2017.

Mixture of Expert Layer121 (2017), un nouveau modèle de réseau de neurones multicouches

créé par une équipe de Google Brain pilotée par Geoff Hinton. C’est un réseau neuronal géant dont chaque neurone est en fait un sous-réseau neuronal. Le modèle, différent de Pathnet, sert surtout à améliorer les outils de traitement du langage comme la traduction.