Notions de base sur l’apprentissage profond

1.1 DE L’INTELLIGENCE ARTIFICIELLE ET L’APPRENTISSAGE AUTOMATIQUE VERS L’APPRENTISSAGE PROFOND

Intelligence artificielle

Un processus dans lequel un ordinateur résout une tâche d’une manière qui imite le comportement humain.

Apprentissage automatique

Un algorithme qui permet à l’ordinateur d’apprendre à partir d’exemples sans être explicitement programmé.

Apprentissage profond

Un sous-ensemble d’apprentissage automatique qui utilise des réseaux de neurones artificiels profonds comme modèles et ne nécessite pas d’ingénierie de fonctionnalités.

Apprentissage propofond vs Apprentissage automatique

Facteurs Apprentissage profond Apprentissage automatique
Données d’exigence Nécessite des données volumineuses Peut être réglé de différentes manières
Précision Fournir une grande précision Donne moins de précision
Temps d’entrainement Prend du temps à s’entraîner Prend moins de temps à s’entraîner
Dépendance matérielle Nécessite un GPU pour s’entraîner correctement Entraîner sur GPU
Réglage des hyperparamètres Peut être réglé de différentes manières Capacité de réglage limitées

Apprentissage supervisé

Dans le cadre de l’apprentissage supervisé, on distingue des données en entrée (features) et le résultat attendu (label). Ce mode d’apprentissage nous permet de faire des prédictions basées sur un modèle obtenu à partir d’un historique. On est amené à résoudre deux problèmes majeurs qui sont la classification (quelle classe ?) et la régression (combien ?).

Apprentissage non supervisé

L’apprentissage non supervisé est basé seulement sur des features et il n’y a pas la notion de label. Il sert à découvrir des structures et des modèles dans les données transmises d’où le résultat n’est pas prédéterminé.

Apprentissage par renforcement

L’apprentissage par renforcement sert à choisir une action parmi une liste d’actions et, en fonction de l’action choisie, il recevra un retour de l’environnement tout en maximisant la notion de récompense cumulative. L’agent apprend au fur et mesure quelle stratégie (ou choix d’actions) maximise le cumul de récompenses.

1.2 MOTIVATIONS DE L’APPRENTISSAGE PROFOND

Matériels

En règle générale, l’apprentissage profond dépend de machines haut de gamme, alors que l’apprentissage traditionnel dépend de machines bas de gamme.

Données

La performance est la principale différence entre les deux algorithmes. Les algorithmes d’apprentissage profond ont besoin d’une grande quantité de données pour apprendre parfaitement.

Algorithmes

C’est un processus général. En cela, la connaissance du domaine est mise dans la création d’extracteurs de fonctionnalités.

1.3 RÉSEAUX DE NEURONES ARTIFICIELS

On note que cette étape de modélisation est la chose la plus importante pour résoudre n’importe quel problème. On sait bien que le concept de réseaux de neurones artificiels a été inspiré des neurones biologiques. Dans un réseau de neurones artificiels, on fournit des paramètres à notre réseau pour prédire une valeur comme illustré dans les images ci-dessus, sachant que les réseaux de neurones tirent profit des expériences passées pour résoudre un problème.

1.4 ARCHITECTURE DE RÉSEAU DE NEURONES

Un réseau neuronal est un ensemble de neurones organisés en couches. Chaque neurone est une fonction mathématique qui prend son entrée, la multiplie par ses poids, puis transmet la somme à travers la fonction d’activation aux autres neurones. Le réseau neuronal apprend à classer une entrée en ajustant ses poids en fonction d’exemples précédents et en se basant sur le processus d’optimisation.

Neurones

Un neurone est une entité qui permet de recevoir les données d’entrée et produire une donnée en sortie. Un ensemble de neurones peut être vu comme une couche (entrées, cachées ou sorties).

Les 3 types:

  • Les neurones d’entrée reçoivent des données d’entrée, les traitent et les transmettent aux neurones dans la couche suivante.

- Les neurones cachés prennent les données de sortie des précédents neurones en entrée, calculent de nouvelles données de sortie et les transmettent aux des couches suivantes.

- Les neurones de la dernière couche cachée transmettent les données de sortie en entrée des neurones de la couche de sortie afin de produire les données de sortie finale.

Couches (Ensemble de neurones)

Une couche (layer) correspond à un ensemble de neurones, ayant comme rôle de faire transmettre l’information dans le réseau. On peut construire un réseau avec au minimum deux couches (une couche d’entrée et une couche de sortie). Dans un réseau de neurones, on distingue trois types de couches (d’entrées, cachées et sorties). Les couches, autres que les couches d’entrée et de sortie, sont appelées les couches cachées (ou hidden layers).

Plus il y aura de couches, plus le réseau sera profond (deep learning).

Poids et biais : valeurs numériques

Les poids et biais sont des variables du réseau dont les mises à jour servent à perfectionner la performance du réseau. Les poids sont des valeurs numériques initialisées de manière aléatoires et ajustées au fur et mesure pour améliorer la précision de l’apprentissage. Les biais sont également des valeurs numériques utilisés par une fonction de pré-activation.

Fonction de pré-activation et d’activation

Fonction de pré-activation : elle permet aux neurones de calculer la somme pondérée des valeurs d’entrée + le biais, la valeur obtenue est transmise à la fonction d’activation, qui vérifie si la valeur calculée est supérieure au seuil requis. Fonction d’activation : c’est une formule mathématique qui est activée, si la valeur calculée est supérieure au seuil requis.

Types de fonctions d’activation:

Sigmoïde : produit une courbe en forme de S. Bien que de nature non linéaire, il ne tient toutefois pas compte des légères variations des entrées, ce qui entraîne des résultats similaires.

Fonctions de tangente hyperbolique (tanh) : est une fonction lente à converger.

Unité linéaire rectifiée (ReLu) : Cette fonction converge plus rapidement, optimise et produit la valeur souhaitée plus rapidement. Cette fonction est utilisée dans les couches cachées.

Softmax : utilisée dans la couche de sortie dans le cas d’une classification multiclasse.

Optimiseur

A l’aide de la fonction de perte, on mesure la performance d’un modèle. Afin de diminuer l’erreur, l’optimisateur aide à ajuster les poids, en se basant sur différents algorithmes d’optimisation.

Métriques d’évaluation

L’accuracy est la métrique la plus utilisée pour la mesure de la performance des modèles, mais n’est pas suffisante pour réellement évaluer un modèle.

Accuracy = Prédictions correctes / Total des prédictions

Plusieurs métriques selon que l’on fait une classification ou une régression.

  • Logarithmic Loss

  • Matrice de confusion

  • F1 score

  • Mean Absolute Error (MAE)

  • Mean Squared Error (MSE)

1.5 FONCTIONNEMENT DES RÉSEAUX DE NEURONES

Le concept de réseau de neurones repose sur trois étapes principales :

  1. Pour chaque neurone dans une couche, multiplier la valeur d’entrée par le poids.

  2. Ensuite, pour chaque couche, additionner tous les poids des neurones et ajouter un biais.

  3. Enfin, appliquer la fonction d’activation sur cette valeur pour calculer une nouvelle sortie.

  4. Une fois la valeur de sortie est obtenue, la fonction de perte est calculée et les poids sont mis à jours grâce aux algorithmes d’optimisation.

1.6 RÉSEAUX DE NEURONES PROFONDS

Le réseau multicouche est l’exemple par excellence d’un modèle d’apprentissage profond. Habituellement, un réseau de neurones est considéré comme profond, s’il est composé d’au moins quatre couches (c’est-à-dire trois couches cachées + une couche de sortie). Le nombre de neurones de chaque couche peut être différent. Pour la classification binaire, la couche de sortie est constituée d’un seul neurone (sortie: 0 ou 1). On parle de classification multiclasse lorsque le problème de classification comporte trois classes ou plus. Dans ce cas, le nombre de neurone de la couche de sortie est égal au nombre de classes à prédire.

1.7 APPRENTISSAGE DES RÉSEAUX DE NEURONES

Les réseaux de neurones apprennent en se basant sur l’algorithme de rétropropagation du gradient.

Algorithme de rétropropagation du gradient

Afin de faire un apprentissage performant, la fonction de perte doit être bien minimisée en calculant la différence entre les résultats corrects et les résultats prédits. Une fois la perte calculée, la fonction de perte est dérivée pour en trouver le minimum (selon que nous savons que si la dérivée première d’une fonction s’annule en changeant de signe en un point donné alors ce point représente potentiellement un minimum de la fonction en question). Le but ici est de trouver le signe de la dérivée afin de savoir si les poids s’ils doivent être augmentés ou diminués afin de minimiser la perte et donc de faire des prédictions plus exactes. La dérivée d’une fonction avec des opérateurs tenseurs s’appelle un gradient d’où le nom descente du gradient (gradient descent) pour l’algorithme d’optimisation des poids. Il comprend les étapes suivantes :

  1. Tirer un lot de données d’entrainement Xi et les prédictions correctes Yi correspondantes.

  2. Exécuter l’algorithme du feedforward pour obtenir les Yi’ prédits.

  3. Calculer la différence/perte entre les sorties attendues et obtenues en utilisant la fonction de perte (MSE ou autre).

  4. Calculer le gradient (la dérivée) de la fonction de perte avec comme valeurs des inconnues, les paramètres du réseau qui ont généré les résultats obtenus.

  5. Modifier les poids des connexions du réseau dans la direction réduisant le gradient comme illustré dans l’image ci-dessous.

  6. Faire passer le prochain lot de données et réexécuter les étapes 1–5 jusqu’à obtenir des prédictions satisfaisantes.

1.8 DONNÉES

Avec l’apprentissage profond, les données sont stockées dans des tenseurs. Un tenseur est un conteneur de données où les données sont de nature numérique. Un tenseur admet des attributs : - Dimension. - Format. - Type de données (entier, réel,…). De ce fait, on distingue 5 types de tenseurs qu’on va présenter dans la partie suivante.

Tenseurs 0D (Scalaires)

Un tenseur contient qu’un seul nombre qui est appelé un scalaire.

Tenseurs 1D (Vecteurs)

Un tableau de nombres est appelé un vecteur ou un tenseur 1D.

Tenseurs 2D (Matrices)

Il correspond à un tableau de vecteurs ou on peut dire une matrice à deux axes (lignes et colonnes).

Tenseurs 3D

Pour obtenir des tenseurs de 3D, on combine de multiple matrices dans un nouveau vecteur pour avoir des tenseurs de 3D ( voir table ).

Tenseurs 4D

Cette dimension est créée, en regroupant des tenseurs de 3D, comme schématisé dans le tableau ci-dessous.

Tenseurs 5D

C’est le type de tenseurs lorsque nous devons stocker des données avec encore une autre dimension.

1.9 TYPES DES RÉSEAUX DE NEURONES

Il existe différents types de réseaux de neurones. Les deux réseaux de neurones les plus populaires sont :

Réseaux de neurones récurrents – Recurrent Neural Network (RNN) :

La principale caractéristique des réseaux de neurones récurrents est le fait que le présent dépend du passé pour prédire la sortie. Ce type de réseau est très approprié aux applications d’analyse de séries temporelles, de données audio, ou de textes dans lesquelles l’aspect temporel est important afin d’analyser chaque nouvelle entrée tout en se basant sur l’état précédent à (t-1). Long Short-Term Memory networks (LSTM) est un autre type de réseaux récurrents utilisant des neurones plus sophistiqués *. Une cellule LSTM se caractérise par un état de mémoire et trois portes (entrée, oubli* et de sortie).

Réseaux de neurones à convolution (CNN)

Ce réseau est approprié à la classification des images qui reposent sur des filtres de convolution (matrices numériques). Les filtres sont appliqués aux entrées avant que celles-ci ne soient transmises aux neurones.

Réseaux auto-encodeurs

Les auto-encodeurs assurent un apprentissage non supervisé en se basant sur un encodeur et un décodeur. Le but est d’apprendre comment réduire le nombre de dimensions de manière intéressante par un encodage. L’encodeur est un réseau de neurones qui transforme les données d’entrée dans un nouvel espace et, inversement, le décodeur retransforme les données.

Réseaux antagonistes (GAN)

Un modèle récent très en vogue… dont les applications sont à explorer. Modèle génératif où deux réseaux sont placés en compétition dans un scénario de théorie des jeux. Le premier réseau est le générateur, il génère un échantillon (ex. une image), tandis que son adversaire, le discriminateur essaie de détecter si un échantillon est réel ou bien s’il est le résultat du générateur.

1.10 RÉGLAGE DES HYPERPARAMÈTRES (TUNING)

On appelle paramètres les poids synaptiques. La valeur des paramètres est déterminée par l’apprentissage. Ils sont donc liés aux données présentées en entrée lors de l’apprentissage.

Les hyperparamètres sont des paramètres dont la valeur est déterminée avant la phase d’apprentissage. Ils sont indépendants des données présentées en entrée. Ils influencent la façon dont se fera l’apprentissage.

L’optimisation d’hyper-paramètres exige le bon choix des valeurs lors de la conception d’un réseau de neurones. De ce fait, on distingue les hyperparamètres suivants :

  • Initialisation des poids d’un réseau de neurones.

  • Nombre d’époques : Une époque, c’est quand un ensemble de données entier est passé en feedforwad et en backward à travers le réseau neuronal en une seule fois. Le nombre de passages de l’ensemble des exemples d’apprentissage.

  • Nombre d’unités: il correspond au nombre de neurones par couche de type (Dense).

  • Taille du lot (batch size) : nombre d’exemples (samples ) traités avant de mettre à jour les poids.

  • Vitesse d’apprentissage (learning rate).

  • Momentum : paramètre modulant la vitesse d’apprentissage (et autres astuces…) Certains hyperparamètres sont liés à des fonctions caractérisant le réseau :

  • Fonction d’activation: fonction mathématique qui calcule la valeur de sortie d’un neurone artificiel.

  • Optimiseur (façon de mettre à jour les poids)

  • Méthodes de régularisation : dropout, L1 et L2.

  • Fonction de perte: est une fonction qui évalue l’écart entre les prédictions réalisées par le réseau de neurones et les valeurs réelles des observations utilisées pendant l’apprentissage. Plus le résultat de cette fonction est minimisé, plus le réseau de neurones est performant. Sa minimisation, c’est-à-dire réduire au minimum l’écart entre la valeur prédite et la valeur réelle pour une observation donnée, se fait en ajustant les différents poids du réseau de neurones.

Erreur=Predictionreelle−Predictionrealisee

Nous avons besoin aux hyperparamètres précisément lorsque les données sont trop volumineuses, ce qui se produit tout le temps dans l’apprentissage profond et on ne peut pas transmettre toutes les données à la machine en même temps. Donc, pour remédier à ce problème, on découpe les données en plus petites tailles et les transmettre à la machine une par une et mettre à jour les poids des réseaux de neurones à la fin de chaque étape pour les adapter aux données fournies.

1.11 LIMITES DES RÉSEAUX DE NEURONES

Sur apprentissage (Overfitting).

Cela représente un modèle qui a appris par cœur ses données d’entrainement, qui fonctionne donc bien sur le jeu d’entrainement mais pas de validation. Il effectue alors de mauvaises prédictions sur de nouvelles, car elles ne sont pas exactement les mêmes que celles du jeu d’entrainement. Pour y remédier, il faut améliorer la flexibilité du modèle, et donc jouer sur des concepts de régularisation par exemple, ou encore d’early stopping.

Sous apprentissage (Underfiting).

Ce cas-ci représente un modèle qui n’arrive pas à déduire des informations du jeu de données. Il n’apprend donc pas assez et réalise de mauvaises prédictions sur le jeu d’entrainement. Il faut donc complexifier le réseau, car il ne taille pas bien par rapport aux types de données d’entrées. En effet, il n’arrive pas à capter la relation entre les données d’entrées et leur label.

Solutions

Régularisation

Une technique standard pour éviter le sur-apprentissage, elle consiste à ajouter des contraintes aux poids du réseau. La contrainte oblige la taille du réseau à ne prendre que de petites valeurs. La contrainte est ajoutée à la fonction de perte de l’erreur. On distingue deux méthodes L1 et L2.

Dropout

Cette méthode est très utile et sert à désactiver des liens d’une manière aléatoire entre les neurones à chaque itération de manière provisoire. Cela veut dire que les poids des neurones désactivés vont être égaux à 0. Les neurones désactivés ne participent donc pas à la sortie du réseau de neurones pendant une itération d’apprentissage. Les autres neurones doivent donc compenser cette absence. Cela a pour effet de rendre le réseau de neurones plus robuste face ??? tout en évitant le sur-apprentissage. On peut voir l’illustration sur le schéma ci-dessous.

Dans le cas où la précision du réseau n’est ni bonne sur le jeu d’entrainement, ni sur celui de validation, c’est que le réseau n’a pas eu assez de temps pour apprendre des données. Il faut donc augmenter le nombre d’itérations, ou augmenter la taille du jeu de données.

1.12 DOMAINES D’APPLICATION D’APPRENTISSAGE PROFOND

Le deep learning a prouvé son importance dans différents domaines :

Expérience d’utilisateur

Les chatbots (agents conversationnels) permettent de répondre aux demandes des services clients. Ces derniers sont optimisés par l’apprentissage profond.

Assistants vocaux

Le fonctionnement des assistants vocaux repose sur le deep learning tout en permettant d’’étoffer de manière autonome leur vocabulaire et de renforcer leur compréhension du langage.

Traductions

L’apprentissage profond a montré ces capacités dans le domaine de la traduction automatique où la traduction automatique est basée sur des fichiers d’image, la langue d’un texte. Par contre, auparavant, la traduction automatique était basée seulement sur des données structurées.

Rédaction de textes

Le deep learning a des capacités pour rédiger un texte correct sur le plan le plan grammaire et orthographe, mais également personnalisé au style d’un auteur donné. Pour ce faire, il faut disposer suffisamment de connaissance pour la phase d’apprentissage.

Cybersécurité

Les systèmes d’IA s’appuyant sur le deep learning sont particulièrement adaptés à la détection d’irrégularités dans les activités d’un système en raison de leur capacité de se former en continu et de manière autonome. C’est une méthode désormais éprouvée pour repérer d’éventuelles attaques de pirates informatiques. Avec les systèmes de vidéosurveillance, les sites particulièrement vulnérables aux vols, comme les aéroports par exemple, peuvent renforcer leur sécurité grâce à l’intervention d’un ordinateur capable de repérer des anomalies dans le fonctionnement normal du site au quotidien.

Finances

Cette capacité à détecter les anomalies se révèle particulièrement utile dans le domaine sensible des transactions financières. Sous réserve d’instruire l’algorithme en conséquence, il est possible de repousser les attaques contre les réseaux bancaires et de repérer les fraudes à la carte de crédit de façon plus efficace qu’auparavant.

Marketing et ventes

Les systèmes d’IA peuvent utiliser l’apprentissage profond pour analyser les sentiments des clients : ils sont capables de passer au crible les messages des clients (par chat ou par email) pour repérer s’ils sont en colère, de façon à pouvoir déterminer leur degré d’urgence à l’intention des collaborateurs chargés du traitement des plaintes. Ces systèmes pourraient également prendre des mesures automatiques prédéfinies de manière indépendante visant à préserver la satisfaction des clients et prévenir toute résiliation de services. En analysant ces données collectées dans un CRM, les systèmes disposant d’une IA avec deep learning peuvent prévoir le comportement futur d’un client, ce qui permet de mettre en œuvre des mesures ciblées pour faire basculer une décision d’achat ou convaincre le client de ne pas résilier son contrat.

Conduite autonome

Le développement des voitures sans conducteur semble appelé à participer à la sécurisation de la circulation routière à l’avenir. Mais la technologie nécessaire existe déjà. Il s’agit ici du fruit de la combinaison de différents algorithmes d’apprentissage profond : par exemple, un algorithme reconnaît les panneaux de signalisation tandis qu’un autre se spécialise dans la localisation des piétons.

Robots industriels

Les robots dotés d’une IA avec deep learning pourraient être utilisés dans de nombreux secteurs industriels. Il suffirait à un système d’observer le comportement d’une personne pour faire fonctionner les machines, puis à optimiser de façon autonome le processus de production.

Maintenance

D’autres applications industrielles potentielles existent dans le domaine de la maintenance industrielle. En effet, dans les systèmes complexes, un grand nombre de paramètres doivent être surveillés en permanence pour assurer la sécurité des processus. Un apprentissage profond permettrait non seulement de veiller à permettre un fonctionnement sans erreur de systèmes complexes, mais aussi d’anticiper les interventions de maintenance nécessaires sur telle ou telle unité du système (maintenance prévisionnelle).

Médecine

Les IA à apprentissage profond ont la capacité de scanner les images avec beaucoup plus de précision qu’un œil humain, même entraîné. Par exemple, en imagerie de tomodensitométrie ou de radiographie, il est possible d’utiliser des systèmes intelligents pour détecter les maladies plus tôt qu’avant, ce qui améliore les chances de guérison des patients.

1.13 AVENIR DE L’APPRENTISSAGE PROFOND

De nos jours, l’apprentissage automatique et la data science sont à la mode. Dans l’industrie, la demande pour les deux augmente rapidement. Aussi, leur demande en particulier pour certaines entreprises. C’est-à-dire une entreprise qui veut survivre pour inculquer le machine learning dans son entreprise. D’où, il est nécessaire de connaître les technologies de base.

Les travaux de recherches se focalisent de plus en plus sur l’apprentissage automatique et l’apprentissage profond. Mais, de nos jours, la recherche en ML et DL fait sa place à la fois dans l’industrie et dans le monde académique. Par contre dans le passé, les chercheurs étaient limités au monde académique. L’apprentissage profond a prouvé que c’est une meilleure technique avec ces performances. Ainsi, le deep learning nous surprend et continuera de le faire dans l’avenir.