Deep Learning 2021/2022 PDF
Document Details
Uploaded by NeatLead1460
2021
Tags
Related
Summary
This document provides an overview of deep learning, including applications in image processing and other areas. It details the general principles, history of connectionism, perceptrons, and other topics related to deep learning.
Full Transcript
DEEP LEARNING 2021/2022 Plan du cours 1 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Principe général Histoire du connexionnisme 2 Perceptrons multi-couches Exemples en 2 dimensio...
DEEP LEARNING 2021/2022 Plan du cours 1 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Principe général Histoire du connexionnisme 2 Perceptrons multi-couches Exemples en 2 dimensions 3 Apprentissage par descente du gradient 4 Réseaux à convolutions 3 5 Réseaux récurrents 2 / 73 Introduction au Deep Learning Plan 1 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Principe général Histoire du connexionnisme 2 Perceptrons multi-couches Exemples en 2 dimensions 3 Apprentissage par descente du gradient 3 / 73 Pourquoi le deep learning ? Les algorithme de ML décrits auparavant fonctionnent bien pour une grande variété de problèmes. Cependant ils ont échoues à résoudre quelques problèmes majeurs de l’IA telle que la reconnaissance vocale et la reconnaissance d’objets. Le développement du deep learning fut motivé en partie par l’échec des algorithmes traditionnels dans de telle tache de l’IA. Mais ce n’est qu’après que de plus grandes quantités de données ne soit disponibles grâce notamment au Big Data et aux objets connectés et que les machines de calcul soient devenues plus puissantes qu’on a pu comprendre le potentiel réel du Deep Learning Pourquoi le deep learning ? Autre différence entre les algorithmes de ML traditionnelles et les algorithmes de Deep Learning c’est l’étape de l’extraction de caractéristiques. Dans les algorithmes de ML traditionnelles l’extraction de caractéristiques est faite manuellement, c’est une étape difficile et coûteuse en temps et requiert un spécialiste en la matière alors qu’en Deep Learning cette étape est exécutée automatiquement par l’algorithme. Introduction au Deep Learning Introduction au Deep Learning Les méthodes d’apprentissage de réseaux de neurones artificiels, deep learning connaissent depuis quelques années un succès fulgurant, à tel point qu’elles sont souvent confondues avec l’Intelligence Artificielle. Ces méthodes sont particulièrement bien adaptées au traitement des signaux et images, lorsqu’on dispose de beaucoup de données. 6 / 73 Les succès du Deep learning Traduction automatique (Google) Reconnaissance du texte écrit Reconnaissance de la parole Lecture sur les lèvres Traitement d’images photographiques Synthèse d’images à partir de description textuelle Véhicule autonome Découverte de nouvelles molécules en oncologie Apprentissage de l’accomplissement d’une tâche par un robot Joueur artificiel de jeux vidéos Lecture de lames d’anatomo-pathologie Etc., etc., etc. https://www.mygreatlearning.com/blog/deep-learning-applications/ Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Coloriage image en niveaux de gris image couleur TP: traitement d’image avec python https://www.f-legrand.fr/scidoc/docmml/image/niveaux/images/images.html 8 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Super-résolution image basse résolution (ici 8x8 pixels) image haute résolution (ici 32x32) Source: https://cv-tricks.com/deep-learning-2/image-super-resolution-to-enhance-photos/ 9 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Estimation de la pose image de scène squelette numérique https://www.youtube.com/watch?v=pW6nZXeWlGM Source: Z. Cao et al., Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (2016) https://arxiv.org/abs/1611.08050 10 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Everybody Dance Now Vidéo de synthèse : faire danser une autre personne https://www.youtube.com/watch?v=PCBTZh41Ris Source: C. Chan (2018) https://arxiv.org/pdf/1808.07371.pdf 2018-2019 11 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Décrire des photos Décrire le contenu d’une image avec des mots ou des phrases https://cs.stanford.edu/people/karpathy/deepimagesent/ generationdemo/ Source: Karpathy et al. (2015) http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/ Karpathy_Deep_Visual-Semantic_Alignments_2015_CVPR_paper.pdf 12 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Analyse de comportement, surveillance Analyser des comportements en temps réel https://www.youtube.com/watch?v=xhp47v5OBXQ Source: http://www.deepglint.com, CVPR 2016 13 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Traduire (sur des images) Détecter, traduire et remplacer du texte dans des images Sur la traduction automatique de texte, voir https://ai.googleblog. com/2016/09/a-neural-network-for-machine.html Source: https://ai.googleblog.com/2015/07/how-google-translate-squeezes-deep.html 14 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Lire sur les lèvres LipNet arrive à lire 93% des phrases, que des humains entrainés ne lisent qu’à 52% https://www.youtube.com/watch?v=fa5QGremQf8 Source: Assael et al. (2016) https://arxiv.org/pdf/1611.01599.pdf 12 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Peinture artistiques A partir d’une photo, générer des peintures selon un « style » https://deepart.io/ http://genekogan.com/works/style-transfer/ Source: Gatys et al. (2016) http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Gatys_ Image_Style_Transfer_CVPR_2016_paper.pdf 16 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Véhicules autonomes 17 / 73 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Des progrès rapides et des performances impressionnantes problèmes difficiles, dont on a longtemps pensé la solution lointaine (vision, jeux de Go, etc.) les images : problèmes en grande dimension ; conditions très variables : pose, éclairage,déformations, occultations. dans de nombreux cas, les systèmes artificiels ont déjà de meilleures performances que les humains. Autres démonstrations : https://ml-showcase.com 18 / 73 Introduction au Deep Learning Principe général Composer des fonctions : réseau multicouche profond Output CAR PERSON ANIMAL (object identity) 3rd hidden layer (object parts) 2nd hidden layer (corners and contours) 1st hidden layer (edges) Visible layer (input pixels) Source: Goodfellow 2016 19 / 73 Introduction au Deep Learning Principe général Approches de l’apprentissage Output Mapping from Output Output features Additional Mapping from Mapping from layers of more Output features features abstract features Hand- Hand- Simple designed designed Features features program features Input Input Input Input Deep Classic learning Rule-based machine systems Source: Goodfellow 2016 learning Representation learning 20 / 73 Introduction au Deep Learning Histoire du connexionnisme 1957 : le perceptron Rosenblatt propose le perceptron pour la classification un poids wi par entrée xi si Σ ni=0 wi xi > 0 y= {1 −1 sinon séparateur linéaire dans l’espace d’entrée 21 / 73 Introduction au Deep Learning Histoire du connexionnisme Années 80 : perceptrons multi-couches 1 perceptron : 1 décision si plusieurs classes (ex : reconnaissance de chiffres) : 1 cellule de sortie par classe enchaînement de plusieurs couches : perceptron multi-couche (MLP) on introduit des non linéarités entre les couches 22 / 73 Introduction au Deep Learning Histoire du connexionnisme Années 90 : Avancées en théorie et applications de l’apprentissage statistique (SVM, approches bayesiennes,...); Premières applications industrielles des réseaux de neurones (LeNet, codes postaux). 23 / 73 Récapitulatif 1. Donnez qq algorithme ML 2. Qu’il sont les domaines d’echec du ML 3. Pourquoi le DL n’a pas donné de satisfaction au départ 4. Donnez qq domaines de succès de DL 5. Donnez le schéma du perceptron de Rosenblatt 6. Donnez le schéma du perceptron multicouche 7. Citez qq démonstrations de la réussite du DL Introduction au Deep Learning Histoire du connexionnisme Années 2000-2019 : croissance de la taille des jeux de données 10 9 Canadian Hansard 10 8 W M T S p ort s1 10 7 I m a g eNe t 1 M D a t a s e t size ( n u m b e r - 10 6 P ub l i c S V H N 0 k 10 5 Crim inal I m a g eN I L S V R C 2014 s et 10 4 MNIS CIFAR-10 10 3 T exam ples ) 10 2 T vs. G vs. F R o t a t e d T vs. C Iris 10 1 10 0 1900 1950 1985 2000 2015 Source: Goodfellow 2016 25 / 73 Introduction au Deep Learning Histoire du connexionnisme Années 2000-2019 : croissance de la puissance de calcul Loi de Moore depuis 50 ans, apparition des GPUs, des ASICs 2018-2019 26 / 73 Quelques dates et quelques noms 1943 : (Mc Culloch (neuro-physiologiste) et Pitts (logicien)) proposent les premières notions de neurone formel. 1959 : (Rosenblatt) définit un réseau de neurones avec une couche d’entrée et une sortie. 1960 : (Widrow et Hoff) ADALINE 1969 : (Minsky, Papert) Problème XOR 1986 : (Rumelhart et. al) MLP et backpropagation 1992 : (Vapnik et. al) SVM 1998 : (LeCun et. al) LeNet 2010 : (Hinton et. al) Deep Neural Networks 2012 : (Krizhevsky, Hinton et. al) AlexNet, ILSVRC’2012, GPU - 8 couches 2014 GoogleNet - 22 couches 2015 : Inception (Google) - Deep Dream 2016 : ResidualNet (Microsoft/Facebook) - 152 couches Introduction au Deep Learning Histoire du connexionnisme 2010 : Deep learning Hinton, Le Cun, Bengio,... ImageNet 28 / 73 Introduction au Deep Learning Histoire du connexionnisme Années 2010-2019 : nombreuses applications forts enjeux économiques et sociétaux 2018-2019 29 / 73 Perceptrons multi-couches Plan 1 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Principe général Histoire du connexionnisme 2 Perceptrons multi-couches Exemples en 2 dimensions 3 Apprentissage par descente du gradient 30 / 73 Perceptrons multi-couches Inspiration biologique Si on veut construire une machine « intelligente », on peut s’inspirer du cerveau animal Le cerveau humain : apprend continument s’adapte à de nombreuses tâches est très rapide est massivement parallèle Source: http ://www.robotspacebrain.com/wp-content/uploads/2013/11/Santiago-Ramon-y-Cajal-Drawings.jpg 31 / 73 Perceptrons multi-couches Qu’est-ce qu’un neurone ? Modèle simplifié : X0 X1 w0 w1 X2 w2... y = sign(∑ wj xj + b)......... wp Xp 32 / 73 Perceptrons multi-couches Anatomie d’un réseau multicouche (MLP) Source: Deep Learning in Neuroradiology http://www.ajnr.org/content/early/2018/02/01/ajnr.A5543 33 / 73 Perceptrons multi-couches Perceptron multi-couches (MLP) Les MLP sont des modèles puissants : on peut montrer qu’un MLP est un approximateur universel (Cybenko 1989) : toute fonction (d’un compact vers un compact) peut être approchée aussi bien que l’on veut par un MLP à trois couches, avec suffisamment de neurones sur la couche cachée et une sortie linéaire. On peut donc résoudre tout problème de ML avec un MLP, si on arrive à apprendre les poids... 34 / 73 Perceptrons multi-couches Anatomie d’un réseau multicouche (MLP) 35 / 73 Perceptrons multi-couches Anatomie d’un réseau multicouche (MLP) Source: Deep Learning in Neuroradiology http://www.ajnr.org/content/early/2018/02/01/ajnr.A5543 36 / 73 Types de réseaux de neurones profonds Perceptrons multi-couches Neurone et fonction de transfert ReLu Chaque neurone calcule son état : y = f (W.X ) = f ( Σ wi xi ) i où f est une fonction linéaire rectifiée (ReLu) : s si s > 0 f (s) = 0 sinon 38 / 73 Perceptrons multi-couches Exemples en 2 dimensions Exemples en 2 dimensions Voir la demo de TensorFlow en JavaScript : TP http://playground.tensorflow.org 2021-2022 39 / 73 Perceptrons multi-couches Exemples en 2 dimensions Exemple 2d : séparation linéaire dans le plan Pas de couche cachée 40 / 73 Perceptrons multi-couches Exemples en 2 dimensions Exemple 2d : MLP à une couche cachée 41 / 73 Perceptrons multi-couches Exemples en 2 dimensions Exemple 2d : MLP à deux couches cachées 42 / 73 Apprentissage par descente du gradient Plan 1 Introduction au Deep Learning Quelques applications au traitement d’images ou de vidéos Principe général Histoire du connexionnisme 2 Perceptrons multi-couches Exemples en 2 dimensions 3 Apprentissage par descente du gradient 43 / 73 Apprentissage par descente du gradient Position du problème Apprentissage par descente du gradient Apprentissage et optimisation L’apprentissage consiste à trouver les bons paramètres wi de toutes les connexions. On cherche à minimer le coût (loss) L sur les exemples. Exemples de coûts : Quadratique (MSE (mean squared error)) : 1 L = MSE = m Σ(yˆi − yi )2 i Maximum de vraisemblance 45 / 73 Apprentissage par descente du gradient Optimisation 1d 6 global m a x i m u m 4 local m a x i m u m 2 0 −2 local m inim um −4 global m inim um −6 0 0.2 0.4 0.6 0.8 1 1.2 Source: figure Wikipedia 46 / 73 Apprentissage par descente du gradient Exemple : optimisation MSE modèle linéaire 47 / 73 Apprentissage par descente du gradient Exemple : optimisation MSE modèle linéaire # dessin evolution poids # dessin evolution coût voir 01-exemple-1d.ipynb 48 / 73 http://playground.tensorflow.org Récapitulatif 1. Donnez les dates et les noms relatives aux événement ci-dessous : - Définition du perceptron – Algorithme LeNet – Algorithme AlexNet – Algorithme Inception 2. Pourquoi le modèle multicouche a été mis en place au lieu du simple Perceptron 3. Donnez quatre exemples de réseaux de neurones profonds 4. Donnez la formule de calcul de la fonction d’activation RELU 5. Donnez l’adresse du simulateur Tensorflow pour le Deep Learning 6. Donnez la formule de calcul du MSE 7. Donnez la formule de calcul du poids w par Descente de gradient Apprentissage par descente du gradient Apprentissage et optimisation 50 / 73 Apprentissage par descente du gradient Apprentissage d’un réseau multicouche Gradient du coût par rapport à W : ∂L ∂w =? 51 / 73 Apprentissage par descente du gradient Apprentissage d’un réseau multicouche 52 / 73 Apprentissage par descente du gradient Rétropropagation du gradient En statistiques, la rétropropagation du gradient est une méthode pour entraîner un réseau de neurones en mettant à jour les poids de chaque neurone de la dernière couche vers la première. La technique consiste à corriger les erreurs selon l'importance de la contribution de chaque élément aux erreurs. Dans le cas des réseaux de neurones, les poids synaptiques qui contribuent plus à une erreur seront modifiés de manière plus importante que les poids qui provoquent une erreur marginale. Chain rule … LOSS Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 53 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Chain rule Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 54 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Chain rule Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 55 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Chain rule Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 56 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Chain rule Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 57 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Exemple : fonction produit * * Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 58 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Forward pass x= 2, y = 3 * 59 / 73 Apprentissage par descente du gradient Rétropropagation du gradient =2 * =6 =3 Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 60 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Backward propagation = 5 is given. =2 * =6 =5 =3 Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 61 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Backward propagation = 5 is given. =2 =y * =6 =x =5 =3 Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 62 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Backward propagation = 5 is given. =2 =y * =6 =x =5 =3 Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 63 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Computational graph Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 64 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Computational graph Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 65 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Computational graph Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 66 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Forward pass x=1, y = 2 where w=1 Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 67 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Backward propagation =1 =1 =-1 =1 =1 =2 Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 68 / 73 Apprentissage par descente du gradient Rétropropagation du gradient Backward propagation =1 =1 =-1 =1 =1 =2 Source: Sung Kim, HKUST, http ://bit.ly/PyTorchZeroAll 69 / 73 Apprentissage par descente du gradient Représentation graphique du calcul Element Element Set Set + + Logistic Logistic Regression Regression w1 x1 w2 x2 Source: Goodfellow 2016 70 / 73 Apprentissage par descente du gradient Exercice Soit le modèle ŷ = x 2.w2 + x.w1 + b loss = (ŷ − y)2 1 Calculer (sachant que b = 0) : ∂loss =? w1 ∂loss =? w2 2 Coder ce calcul en Python. 3 Faire le même calcul avec PyTorch. TP Pytorch : https://ledatascientist.com/debuter-avec-pytorch/ 71 / 73 (conda install pytorch torchvision -c pytorch) Présentation PyTorch PyTorch est un framework de deep learning relativement récent basé sur Torch. Développé par le groupe de recherche AI de Facebook et mis en open-source sur GitHub en 2017, il est utilisé pour des applications de traitement du langage naturel (NLP). PyTorch est réputé pour sa simplicité, sa facilité d’utilisation, sa flexibilité, son utilisation efficace de la mémoire et ses graphes de calcul dynamiques. Il se sent également natif, ce qui rend le codage plus gérable et augmente la vitesse de traitement.manipuler des tenseurs (tableaux multidimensionnels), de les échanger facilement avec Numpy et d'effectuer des calculs efficaces sur CPU ou GPU (par exemple, des produits de matrices ou des convolutions); calculer des gradients pour appliquer facilement des algorithmes d'optimisation par descente de gradient. PyTorch utilise la bibliothèque Autograd(La bibliothèque Autograd permet le calcul automatique de gradients d’une fonction par rapport à ses paramètres). Présentation PyTorch Les tenseurs Un tenseur est une structure de données importante dans PyTorch et également dans d’autres frameworks d’apprentissage profond tels que Tensorflow. C’est une généralisation d’un vecteur ou d’une matrice à un nombre arbitraire de dimensions. L’avantage d’un tenseur par rapport à un tableau NumPy (NumPy array) est qu’il sert à effectuer des opérations très rapides sur des GPU, à distribuer le calcul sur plusieurs machines et à garder trace des opérations qui l’ont créé. Vous pouvez commencer par vous-même à manipuler des tenseurs. Voici des références qui vous seront utiles : Tutoriel sur les tenseurs : http://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html. Apprentissage par descente du gradient Installation de PyTorch http://pytorch.org conda install pytorch torchvision -c pytorch Exemple : notebooks 02-pytorch-exemple-1d 74 / 73 Apprentissage par descente du gradient Résumé Nous avons vu : l’importance du Deep Learning dans de nombreuses applications en vision ; un bref historique de l’apprentissage des réseaux connexionnistes ; les principes de l’apprentissage par descente du gradient; le principe de l’algorithme de rétropropagation du gradient. Utilisation de pytorch en Descente du gradient 75 / 73 Plan du cours Architecture d’un réseau multicouche (MLP) Apprentissage d’un réseau Outils logiciels Outils de calcul Implémentation en PyTorch Architecture d’un réseau multicouche (MLP) Couches complètement connectées Chaque cellule est connectée à toutes les cellules de la couche précédente. La couche réalise un produit de matrice. Réseau de neurones convolutif Les réseaux convolutifs ont connu un succès considérable dans les applications pratiques. Le nom « réseau de neurones convolutif » indique que le réseau emploie une opération mathématique appelée convolution. La convolution est une opération linéaire spéciale. Les réseaux convolutifs sont simplement des réseaux de neurones qui utilisent la convolution à la place de la multiplication matricielle dans au moins une de leurs couches. Ils ont de larges applications dans la reconnaissance de l’image et de la vidéo, les systèmes de recommandations et le traitement du langage naturel. Réseau de neurones convolutif Si on suppose que x et w sont des entiers, on peut définir la convolution discrète : Enfin, nous utilisons souvent des convolutions sur plus d’un axe à la fois. Figure. Par exemple, si nous utilisons une image bidimensionnelle x comme entrée : Dans la terminologie du réseau convolutif, le premier argument (dans cet exemple, la fonction x) de la convolution est souvent appelé l’entrée (input)et le second argument (dans cet exemple, la fonction w) comme noyau (kernel). La sortie est parfois appelée feature map. Architecture d’un réseau multicouche (MLP) Couche à convolution Exemple en une dimension : Architecture d’un réseau multicouche (MLP) Couche à convolution (2d) Architecture d’un réseau multicouche (MLP) Filtres appris Architecture d’un réseau multicouche (MLP) Exemple : convolution 2D sur 3 canaux Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Exemple Architecture d’un réseau multicouche (MLP) Couches de pooling Average pooling : chaque case correspond à la moyenne du carré d’entrée de la même couleur, ex de la case jaune : (1+ 3+ 1+ 3)/4 = 2. (à droite) Max pooling : chaque case correspond à la valeur maximum du carré d’entrée de la même couleur, ex de la case bleu : max(5, 7, 5, 7) = 7 Architecture d’un réseau multicouche (MLP) Couche ReLU (rappel) pour tout réel Fonctions d’activations (Rappel) f(x)=max(0,x)} pour tout réel x Couche de pooling Une architecture atypique d’un réseau convolutif se compose de trois types de couches différentes. une couche convolutive pour générer un ensemble d’ activations linéaires une couche d’activation non linéaire telle que Rectified Linear Unit (ReLu) enfin on utilise la fonction pooling. Architecture d’un réseau multicouche (MLP) Architecture multicouche alternance de convolutions et de pooling Pixels de l’image Couche 1: filtrage Couche 2: sous-echantillonnage Couche 3: filtrage Couche 4: sous-echantillonnage Biais Couche 5: classification Sortie: classes Couche entièrement connectée(FC): Après plusieurs couches de convolution et de max-pooling, le raisonnement de haut niveau dans le réseau neuronal se fait via des couches entièrement connectées. Les neurones dans une couche entièrement connectée ont des connexions vers toutes les sorties de la couche précédente (comme on le voit régulièrement dans les réseaux réguliers de neurones). Leurs fonctions d'activations peuvent donc être calculées avec une multiplication matricielle suivie d'un décalage de polarisation. Couche de perte (LOSS) : La couche de perte spécifie comment l'entrainement du réseau pénalise l'écart entre le signal prévu et réel. Elle est normalement la dernière couche dans le réseau. Diverses fonctions de perte adaptées à différentes tâches peuvent y être utilisées. La perte « Softmax »est utilisée pour prédire une seule classe parmi K classes mutuellement exclusives. La perte par entropie croisée sigmoïde est utilisée pour prédire K valeurs de probabilité indépendante dans [0,1]. La perte euclidienne est utilisée pour régresser vers des valeurs réelles. Un reseau de neurones convolutif qui reçois une image 2D comme entrée et qui est composé d’une couche convolutive, une fonction d’activation non lineaire, une couche MAX pooling et enfin un perceptron multi couche – Exemple image 1000x1000. Le non parameter sharing nous oblige à concevoir une couche cachée de 106 neurones, chaque neurone est connecté à 106 pixels, en tout ça fait 1012 paramètres. (à droite) Avec un noyau 10x10 et une couche cachée de 106 neurones, le nombre de paramètres est de108 Réseau de neuronnes convolutif Quelques réseaux convolutifs célèbres : LeNet : Les premières applications réussies des réseaux convolutifs ont été développées par Yann LeCun dans les années 1990. Parmi ceux-ci, le plus connu est l’architecture LeNet utilisée pour lire les codes postaux, les chiffres, etc. AlexNet : Le premier travail qui a popularisé les réseaux convolutifs dans la vision par ordinanateur était AlexNet, développé par Alex Krizhevsky, Ilya Sutskever et Geoff Hinton. AlexNet a été soumis au défi ImageNet ILSVRC en 2012 et a nettement surpassé ses concurrents. Le réseau avait une architecture très similaire à LeNet, mais était plus profond, plus grand et comportait des couches convolutives empilées les unes sur les autres (auparavant, il était commun de ne disposer que d’une seule couche convolutifs toujours immédiatement suivie d’une couche de pooling). Réseau de neuronnes convolutif GoogLeNet : Le vainqueur de ILSVRC challenge 2014 était un réseau convolutif de Szegedy et al. De Google. Sa principale contribution a été le développement d’un module inception qui a considérablement réduit le nombre de paramètres dans le réseau (4Million, par rapport à AlexNet avec 60Million). En outre, ce module utilise le global AVG pooling au lieu du PMC à la fin du réseaux, ce qui élimine une grande quantité de paramètres. Il existe également plusieurs versions de GoogLeNet, parmi elles, Inception-v4. ResNet : Residual network développé par Kaiming He et al. A été le vainqueur de ILSVRC 2015. Il présente des sauts de connexion et une forte utilisation de la batch normalisation. Il utilise aussi le global AVG pooling au lieu du PMC à la fin. – Le taux d’erreur dans ImageNet Visual recognition Challenge. Le Deep Learning dépasse la performance humaine. Récapitulatif 1. Que signifie en statistiques la méthode de rétropropagation du gradient 2. Donnez la méthode en DL de la rétroppagation du gradient 3. Donnez une description brève du Framework PyTorch 4. Donnez une description brève de la notion de Tenseur en PyTorch 5. Que signifie la convolution dans les réseaux de neurones 6. Donnez la formule de calcul de de la fonction de convolution des deux variables x et w : f(i,j) = x*w(i,j) 7. Donnez le rôle du pooling en CNN et citez deux variantes 8. Donnez quatre algorithmes de réseau CNN célèbres Architecture d’un réseau multicouche (MLP) LeNet (1998) Architecture d’un réseau multicouche (MLP) AlexNet (2012) Reconnaissance d’images, ImageNet classification with deep convolutional neural networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton, 2012 Source: figure : Han et al. 2017 Architecture d’un réseau multicouche (MLP) Exemple : GoogleLeNet Reconnaissance d’images, Going Deeper with Convolutions, C. Szegedy at al., 2014 22 couches. Architecture d’un réseau multicouche (MLP) Neural Network Zoo Source: van Veen, 2016 Réseau de neurones récurents C’est quoi un RNN ? L’idée derrière les RNN est d’utiliser des informations séquentielles. Dans un réseau neuronal traditionnel, nous supposons que toutes les entrées (et les sorties) sont indépendantes les unes des autres. Mais pour de nombreuses tâches, c’est une très mauvaise idée. Si on veut prédire le prochain mot dans une phrase, il faut connaître les mots qui sont venus avant. Les RNN sont appelés récurrents car ils exécutent la même tâche pour chaque élément d’une séquence, la sortie étant dépendante des calculs précédents. Une autre façon de penser les RNN est qu’ils ont une « mémoire » qui capture l’information sur ce qui a été calculé jusqu’ici. En théorie, les RNN peuvent utiliser des informations dans des séquences arbitrairement longues, mais dans la pratique, on les limite à regarder seulement quelques étapes en arrière. Réseau de neuronnes récurents Voici à quoi ressemble un RNN typique : (à gauche) Un RNN. (à droite) Sa version déroulé En déroulant, nous signifions simplement qu’on montre le réseau pour la séquence complète. Par exemple, si la séquence qui nous intéresse est une phrase de 5 mots, le réseau serait déroulé en un réseau de neurones de 5 couches, une couche pour chaque mot. Réseau de neuronnes récurents Les formules qui régissent les calculs dans un RNN sont les suivantes : xt est l’entrée au moment t. U, V, W sont les paramètres que le réseau va apprendre des données de l’apprentissage. st est l’état caché au moment t. C’est la « mémoire » du réseau. st est calculé en fonction de l’état caché précédent et de l’entrée à l’étape actuelle : st = f(Uxt + W st-1) Où f est une fonction non linéaire telle que : ReLu ou Hyperbolic tangent (tanh). ot est la sortie au moment t. Par exemple, si on veut prédire le prochain mot dans une phrase, ce serait un vecteur de probabilités dans un vocabulaire. ot = softmax(Vst) NB: En mathématiques, la fonction softmax, ou fonction exponentielle normalisée, est une généralisation de la fonction logistique qui prend en entrée un vecteur de K nombres réels et qui en sort un vecteur de K nombres réels strictement positifs et de somme 1. La fonction est définie par : Réseau de neuronnes récurents Modèle simple : classification avec SoftMax Les principaux frameworks de Machine Learning Les frameworks de ML offrent des bibliothèques de fonctions qui accélèrent la mise au point d’un réseau de neurones pour un usage spécifique. Ces bibliothèques permettent par exemple de : Structurer et construire une représentation de données de travail. Préparer les données. Modéliser et construire un réseau de neurones. Modéliser les caractéristiques des objets à analyser. Organiser et exécuter les phases d’entraînement et de test. Il existe aujourd’hui plusieurs dizaines de frameworks de ML mis au point par des laboratoires de recherche comme SCITKIT-LEARN (INRIA et TELECOM PARISTECH) ou des géants du web comme TENSORFLOW (GOOGLE). Outils logiciels Outils logiciels TensorFlow (Google -open source en 2015 - C++, Python, CUDA) Keras (publié en 2015 - bibliothèque Python) PyTorch (Facebook research 2016 - C, C++, Python, CUDA) Caffe (Berkeley Vision and Learning Center 2013 - C++) Theano (U. Montreal, 2007 - Python)..... Outils logiciels Framework Scikit-Learn (INRIA, Telecom ParisTech) Lancé initialement en 2007 par des membres de la communauté scientifique Python, le projet ScitKit-Learn est une bibliothèque open source en Python dédiée à l'apprentissage automatique.. Cette bibliothèque comprend notamment des fonctions pour estimer des forêts aléatoires, des régressions logistiques, des algorithmes de classification, et les machines à vecteurs de support. En septembre 2018, INRIA et ses partenaires industriels ont lancé une initiative de fondation ScitKit- Learn, en partenariat avec des entreprises utilisatrices pour intensifier les développements et développer plus rapidement la communauté des utilisateurs. Voici quelques acteurs privés qui utilisent la bibliothèque SCIKIT-LEARN : SPOTIFY, EVERNOTE, BOOKING.COM, DATA PUBLICA, DATAIKU. Outils logiciels Plusieurs framework open sources sont disponibles dans la littérature, la grande majorité supporte le langage Python. Voici une liste non exhaustive de quelques framework. 1. Theano Cré par Frédéric Bastien et l’équipe de recherche derrière le laboratoire de l’Université de Montréal,MILA. Avantages — Python — Performant si utilisé correctement Inconvénients — Le supporte du Multi GPU nécessite une solution de contournement — Les grands modèles peuvent nécessiter un long temps de compilation — API bas niveau 2. TensorFlow Outils logiciels TensorFlow fut cré par l’équipe GOOGLE BRAIN en 2015.pour mener des recherches sur le ML et le Deep Learning. Il est considéré comme une version moderne de Theano. Avantages — Python — supporté par Google — Une très grande communauté — Le support du multi-GPU Inconvénients — Plus lent que les autres framework dans de nombreux benchmarks, bien que Tensorflow se rattrape. — Le soutien des RNN est encore surclassé par Theano En dehors de GOOGLE, les entreprises qui utilisent TensorFlow sont entre autres : AIRBNB, EBAY, INTEL, DROPBOX, DEEPMIND, AIRBUS, CEVA, SNAPCHAT, SAP, UBER, TWITTER. Des radiologues utilisent aussi TensorFlow pour identifier des signes de Parkinson grâce aux analyses de scans. GOOGLE mène plusieurs de ses projets avec ce framework. On peut citer GOOGLE Translate ou WaveNet de DeepMind qui génère des comptes rendus audio à partir de textes (Text To speech). Outils logiciels 3. Keras Le framework le plus haut niveau, le plus convivial de la liste. Il permet aux utilisateurs de choisir si les modèles qu’ils construisent sont exécutés sur Theano ou TensorFlow. Il est écrit et entretenu par Francis Chollet, un autre membre de l’équipe Google Brain. Avantages — Python — Le backend par excellence pour Theano ou TensorFlow — Interface haut niveau, intuitive Inconvénients — Moins flexible que les autres API Outils logiciels 4. PyTorch Le dernier né de la liste. PyTorch est soutenu par l’équipe de recherche en intelligence artificielle de Facebook. Il permet le traitement des entrées et des sorties de longueur variable (dynamic computation graphs), ce qui est utile lorsque on travaille avec des RNN. Une caractéristique absente de TensorFlow et Theano. Avantages — Python — Soutenu par Facebook. — Mélange d’API de haut niveau et de bas niveau. — Support des graphes dynamiques. — Il semblerait que c’est le meilleur outil pour les chercheurs. Inconvénients — Beaucoup moins mûr que ses concurrents (Dans leurs propres termes : “We are in an early_x0002_release Beta. Expect some adventures.”) — Références / ressources limitées en dehors de la documentation officielle Framework SPARK (Fondation APACHE) Apache SPARK est un framework d'analyse de données open source créé en 2009 à l'université de BERKELEY. Il est désormais géré par DATABRICKS, entreprise fondée par les développeurs à l'origine du projet. Il est devenu un projet de la fondation Apache en juin 2013 et a obtenu le label « Apache Top-Level Project » en février 2014. Le projet réunit aujourd'hui plus de 200 contributeurs venant de plus de 50 entreprises. SPARK est un framework de calcul distribué, utilisé pour effectuer un passage à l’échelle des grands projets de Machine Learning. Il s’appuie sur plusieurs bibliothèques comme HADOOP et son système de fichiers distribués HDFS et le gestionnaire de ressources systèmes YARN. L’un des points forts de SPARK réside dans sa capacité de stockage des données en mémoire plutôt que sur disque, ce qui accélère considérablement les performances de travail. Les banques utilisent SPARK pour accéder et analyser les profils de médias sociaux, les enregistrements d'appels, les courriels ou les contenus des forums de discussions par exemple pour améliorer leur segmentation ou détecter des fraudes. ALIBABA a mis en place une infrastructure de ML basée sur SPARK pour analyser les interactions et transactions commerciales et améliorer le Matching produit / consommateur. NETFLIX utilise SPARK pour le traitement de flux en temps réel afin de fournir des recommandations en ligne à ses clients. Il traite 450 milliards d'événements par jour avec son infrastructure. Voici quelques acteurs privés qui utilisent la bibliothèque SPARK55 : NETFLIX, ALIBABA, AMAZON, BAIDU, GROUPON, NOKIA, TENCENT, TRIPADVISOR. Framework WATSON (IBM) La société IBM a développé le logiciel d’IA WATSON avec l’équipe DEEPQA RESEARCH TEAM. L’application est un framework regroupant des technologies algorithmiques et de virtualisation (BLUEMIX). Initialement le programme a été conçu pour répondre à des questions formulées en langage naturel. WATSON est déjà déployé au sein de grandes entreprises françaises comme ORANGE ou le CREDIT MUTUEL. WATSON est un framework de Machine Learning capable de travailler sur des images, du texte ou des séries numériques. Le framework est très utilisé pour des données non structurées. Il est capable de « lire » des articles de presse ou de recherche ou des tweets dans plusieurs langues. Concrètement, le système apprend à partir d’un corpus de données contextuelles (Ex. La recherche en oncologie). Au fur et à mesure du développement de connaissance nouvelle, celles-ci sont ajoutées au corpus pour améliorer les performances. Les principaux services métiers de WATSON sont les suivants : WATSON ANALYTICS. Il offre de services d’exploration et de visualisation de données. WATSON SANTE. Cette solution vise à aider les médecins à trouver le traitement le plus approprié pour soigner un cancer. WATSON BANKING. L’application analyse les messages clients pour améliorer la rapidité et la qualité des réponses. WATSON MARKETING. L’IA aide les agences à créer des campagnes de publicité plus efficaces pour les marques. Outils logiciels 5. Autres frameworks : CNTK : par Microsoft Neon : par Nervana Systems. Il a récemment été classé comme le frameworks le plus rapide dans plusieurs catégories Deeplearning4j : Il supporte le langage java Caffe : par Berkeley Vision and Learning Center Apprentissage d’un réseau Techniques d’apprentissage Descente stochastique du gradient (SGD) Stochastique vs mini-batch vs batch? momentum batch normalization Critère d’arrêt, early stopping Outils de calcul GPU Source: Wikipedia Implémentation en PyTorch Création d’un réseau en PyTorch (rappel) N1 = 2 N2 = 2 c l a s s Net ( nn. Module ) : def _ _ i n i t _ _ ( s e l f ) : super ( Net , s e l f ). _ _ i n i t _ _ ( ) s e l f. f c 1 = nn. Linea r ( 2 , N1 ) s e l f. f c2 = nn. L in e a r (N1 , N2) s e l f. f c3 = nn. L in e a r (N2 , NbClass ) def f or wa rd ( s e l f , x ) : x = F. r e l u ( s e l f. fc 1 ( x ) ) x = F. r e l u ( s e l f. fc 2 ( x ) ) x = s e l f. f c3 ( x ) return x EXPOSES Framework TENSORFLOW+ TP Framework KERAS+ TP Framework PyTorch + TP