Deep Learning

Introduction au Deep Learning

Appliquer le Deep Learning au design de systèmes d'ingénierie intelligents

Le Deep Learning est une branche du Machine Learning qui utilise des réseaux de neurones pour apprendre aux ordinateurs à faire ce qui semble naturel aux humains : apprendre à partir d’exemples. Dans le Deep Learning, un modèle apprend à effectuer des tâches de classification ou de régression directement à partir de données telles que des images, du texte ou du son. Les modèles de Deep Learning peuvent atteindre une précision remarquable, dépassant souvent les performances humaines.

Comment fonctionne le Deep Learning ?

Les modèles de Deep Learning sont fondés sur des architectures de réseaux de neurones. Un réseau de neurones, inspiré de celui d'un cerveau humain, est constitué de nœuds ou de neurones interconnectés dans une infrastructure en couches qui relient les entrées aux sorties souhaitées. Les neurones situés entre les couches d'entrée et de sortie d'un réseau de neurones sont appelés couches cachées. Le terme « deep » fait généralement référence au nombre de couches cachées dans le réseau de neurones. Les modèles de Deep Learning peuvent comporter des centaines, voire des milliers de couches cachées.

Les réseaux de Deep Learning sont organisés en couches constituées d'un ensemble de neurones interconnectés.

Représentation de l'architecture d'un réseau de neurones typique.

Les modèles de Deep Learning sont entraînés en utilisant de grands jeux de données labellisées et peuvent souvent apprendre des caractéristiques, directement à partir des données, sans qu'il soit nécessaire de les extraire manuellement. Alors que le premier réseau de neurones artificiels a été théorisé en 1958, le Deep Learning nécessite une puissance de calcul importante qui n'était pas disponible avant les années 2000. Aujourd'hui, les chercheurs ont accès à des ressources informatiques qui permettent de construire et d'entraîner des réseaux comportant des centaines de neurones et de connexions.

Les GPU haute performance disposent d'une architecture parallèle efficace pour le Deep Learning. Associés à des clusters ou au cloud computing, ils permettent aux équipes de développement de réduire le temps d'apprentissage d'un réseau de Deep Learning, de plusieurs semaines à quelques heures, voire moins encore.

Types de modèles de Deep Learning

Voici trois types de modèles de Deep Learning  : les réseaux de neurones à convolution (CNN), les réseaux de neurones récurrents (RNN) et les transformateurs.

CNN : Un CNN effectue une convolution des caractéristiques apprises avec les données d'entrée et utilise des couches convolutives 2D, ce qui rend cette architecture bien adaptée au traitement des données 2D, telles que les images. Le CNN fonctionne en extrayant des caractéristiques directement à partir des images. Les caractéristiques pertinentes sont apprises pendant que le réseau s'entraîne sur une collection d'images. Cette extraction de caractéristiques automatisée rend les modèles de Deep Learning très précis pour les tâches de classification d'images. Les CNN peuvent également être utilisés pour classer d'autres types de données, notamment des séries temporelles ou du texte.

Un réseau de neurones à convolution destiné au Deep Learning apprend automatiquement les caractéristiques des images d'entrée et calcule la probabilité pour chaque classe.

Visualisation d'un exemple de réseau de neurones à convolution.

RNN: Un réseau de neurones récurrents (RNN) est une architecture de réseau destinée au Deep Learning qui effectue des prévisions sur des séries temporelles ou des données séquentielles. Les RNN sont particulièrement efficaces pour travailler avec des données séquentielles dont la longueur varie et pour résoudre des problèmes tels que la classification des signaux naturels, le traitement du langage ou l'analyse vidéo. Le réseau LSTM (Long Short-Term Memory) est un type de RNN spécifique qui apprend mieux les dépendances à long terme que les RNN simples.

Transformateurs: Les transformateurs sont conçus pour détecter des relations dans les données séquentielles. Ils s'appuient sur un mécanisme d'auto-attention pour saisir les dépendances globales entre les entrées et les sorties. Ils sont souvent utilisés pour le traitement du langage naturel et constituent la base des grands modèles de langage (LLM) tels que BERT ou ChatGPT™.

Comment créer des modèles de Deep Learning ?

Vous pouvez créer un modèle de Deep Learning en partant de zéro ou commencer par un modèle de Deep Learning pré-entraîné, que vous pouvez appliquer ou adapter à votre tâche.

L'apprentissage à partir de zéro : Pour entraîner un modèle de Deep Learning en partant de zéro, vous devez rassembler un grand jeu de données labellisées et concevoir une architecture réseau qui apprendra les caractéristiques et le modèle. Il s'agit d'une bonne approche pour les applications nouvelles ou spécifiques, ou plus généralement pour les applications pour lesquelles il n'existe pas de modèles préexistants. L’inconvénient principal de cette approche est qu'elle nécessite un vaste jeu de données (avec la vérité-terrain annotée) et que le temps d'apprentissage peut varier de quelques heures à quelques semaines, en fonction de votre tâche et de vos ressources informatiques.

Apprentissage par transfert : Dans les applications de Deep Learning telles que la classification d'images, la Computer Vision, le traitement audio ou le traitement du langage naturel, l'approche de l'apprentissage par transfert est couramment utilisée. Il s'agit d'affiner un modèle de Deep Learning pré-entraîné. Vous partez d'un modèle existant, tel que SqueezeNet ou GoogLeNet pour la classification d'images, et vous introduisez de nouvelles données contenant des catégories inédites. Après avoir procédé à quelques ajustements sur le réseau, vous pouvez alors effectuer une nouvelle tâche, telle que catégoriser uniquement des chiens ou des chats, au lieu de 1 000 objets différents. Cette méthode présente aussi l'avantage de demander beaucoup moins de données, ce qui réduit considérablement le temps d'apprentissage.

Un modèle de Deep Learning pré-entraîné peut aussi être utilisé comme extracteur de caractéristiques. Vous pouvez utiliser les activations des couches comme caractéristiques pour entraîner un autre modèle de Machine Learning (tel qu'une machine à vecteurs de support (SVM)). Vous pouvez aussi utiliser le modèle pré-entraîné comme bloc de base pour un autre modèle de Deep Learning. Par exemple, vous pouvez utiliser un CNN de classification d'images comme extracteur de caractéristiques pour un détecteur d'objets.

Comparaison entre le Deep Learning et le Machine Learning

Le Deep Learning est une forme spécialisée du Machine Learning, et tous deux font partie du domaine de l'intelligence artificielle (IA). Le Machine Learning propose une variété de techniques et de modèles que vous pouvez choisir en fonction de votre application, du volume de données que vous traitez et du type de problème que vous souhaitez résoudre.

Définitions de l'intelligence artificielle, du Machine Learning et du Deep Learning dans une illustration présentant les trois concepts.

La comparaison visant à choisir entre les algorithmes de Deep Learning ou de Machine Learning pour votre application d'intelligence artificielle dépend des objectifs et des exigences de votre système.

Pourquoi choisir le Deep Learning plutôt que le Machine Learning ? En un mot, la précision. Le Deep Learning permet généralement d'obtenir une précision plus élevée et offre une plus grande automatisation du workflow étendu que le Machine Learning. Les principaux inconvénients des modèles de Deep Learning tiennent à leur complexité accrue et à la grande taille des jeux de données d'apprentissage requis, rendant ces modèles plus longs à entraîner. Il existe des méthodes pour surmonter, ou du moins atténuer, l'effet de ces inconvénients.

Automatisation de l'extraction des caractéristiques

Un workflow de Machine Learning commence par l'extraction manuelle des caractéristiques pertinentes à partir des données. Les caractéristiques sont ensuite utilisées pour créer un modèle capable de prédire l'évolution de nouvelles données. Avec un workflow de Deep Learning, dans des applications telles que la reconnaissance d'images ou la Computer Vision, les caractéristiques pertinentes sont automatiquement extraites des données de l'image. Lorsqu'il traite des signaux ou des données textuelles, le Deep Learning peut réduire le prétraitement des données nécessaire.

Comparaison entre une approche de Machine Learning (à gauche) et une approche de Deep Learning (à droite) dans un exemple de classification de véhicules.

Données d'apprentissage et temps d'apprentissage

La précision du Deep Learning progresse avec les données. Autrement dit, les performances du Deep Learning continuent de s'améliorer au fur et à mesure que la taille de vos données d'apprentissage augmente. Généralement, le Deep Learning nécessite une très grande quantité de données (par exemple, des milliers d’images dans le cas de la classification d'images) pour entraîner le modèle. L'accès à des GPU hautes performances peut réduire considérablement le temps d'apprentissage. Comme alternative, la modification et le réentraînement d'un réseau pré-entraîné avec l'apprentissage par transfert sont généralement beaucoup plus rapides et nécessitent moins de données labellisées que l'apprentissage d'un réseau à partir de zéro.

Si vous ne disposez pas de suffisamment de données d'apprentissage, vous pouvez compléter vos données existantes par des données synthétiques. Vous pouvez générer des données synthétiques en utilisant des réseaux antagonistes génératifs (GAN) ou en créant et simulant un modèle de votre système physique.

Taille et complexité des modèles

Comparés aux modèles de Machine Learning, les modèles de Deep Learning sont beaucoup plus complexes et plus volumineux car ils sont construits avec des centaines de couches interconnectées. A mesure que la technologie du Deep Learning progresse, la complexité des architectures des réseaux de Deep Learning continue de croître. Leur complexité et leur taille contribuent à la précision que peut obtenir le Deep Learning.

En raison de leur complexité, les modèles de Deep Learning sont souvent considérés comme des « boîtes noires » qui manquent d'interprétabilité. Un domaine émergent, connu sous le nom d'IA explicable, propose des techniques ayant pour objectif d'expliquer le comportement des modèles de Deep Learning en termes humains. Vous pouvez par exemple utiliser Grad-CAM et LIME pour expliquer les prédictions de modèles de Deep Learning pour des tâches de classification d'images.

Les modèles de Deep Learning ne se cantonnent plus à l'ordinateur de bureau. Le déploiement de modèles de Deep Learning de plus en plus volumineux et complexes sur des équipements aux ressources limitées est un défi croissant auquel sont confrontés de nombreux utilisateurs du Deep Learning. Il existe de nombreuses techniques de compression des modèles de Deep Learning, utilisées pour réduire la taille des modèles de Deep Learning sur le disque, la mémoire d'exécution et les temps d'inférence, tout en conservant une grande précision.

Compression d'une couche entièrement connectée en utilisant la projection. L'opération effectuée sur la couche est inscrite sous la figure.

Projection d'une couche entièrement connectée. La projection est une méthode de compression des réseaux.

Pourquoi le Deep Learning est-il important ?

Le Deep Learning est une technologie essentielle sur laquelle s'appuient les voitures sans conducteur, permettant de reconnaître un panneau d'arrêt ou de distinguer un piéton d'un lampadaire. C'est également un élément clé de la commande vocale des équipements grand public tels que les téléphones, les tablettes, les téléviseurs ou les enceintes portables. Le Deep Learning suscite beaucoup d’intérêt ces derniers temps, et ce pour de bonnes raisons. Grâce au Deep Learning, les ordinateurs et les systèmes peuvent effectuer des tâches complexes avec davantage de précision et d'automatisation.

Applications de Deep Learning

Le Deep Learning est appliqué à la Computer Vision, au traitement d'images, à la conduite autonome, au traitement du signal, et à bien d'autres domaines. Chaque domaine d'application du Deep Learning peut englober plusieurs domaines d'application secondaires. Par exemple, la classification d'images, la détection d'objets et la segmentation sémantique sont des applications secondaires de la Computer Vision. Au fur et à mesure que de nouvelles méthodes et technologies de Deep Learning sont développées, les applications de Deep Learning vont continuer à se diversifier et de nouvelles applications secondaires, où le Deep Learning peut améliorer la précision, seront découvertes.

Des exemples de Deep Learning en action

L'inspection visuelle concerne les inspections de pièces basées sur les images, où une caméra scanne la pièce à tester pour détecter les possibles défaillances et les défauts qualité. En utilisant les techniques de Deep Learning et de Computer Vision, l'inspection visuelle peut être automatisée pour détecter les défauts de fabrication dans de nombreuses industries telles que la biotechnologie, l'automobile ou les semi-conducteurs.

Les signaux d'électroencéphalographie (EEG) sont les signaux cérébraux les plus accessibles et, sans surprise, les plus étudiés. Vous pouvez utiliser le Deep Learning pour diagnostiquer automatiquement l'épilepsie et prédire les crises d'épilepsie à partir des signaux EEG.

Des capteurs virtuels peuvent être utilisés dans n'importe quel système nécessitant une surveillance et un contrôle temps réel, lorsque l'utilisation de capteurs physiques peut s'avérer peu pratique ou coûteuse. Vous pouvez combiner le Deep Learning avec l'approche Model-Based Design pour concevoir des capteurs virtuels.

Le Deep Learning appliqué à la recherche sur le cancer

Découvrez comment le Moffit Cancer Center a utilisé le Deep Learning pour accélérer la découverte scientifique et personnaliser ses soins.

MATLAB® a fourni tous les outils nécessaires pour appliquer l'IA à l'imagerie et à la radiomique avec succès. MATLAB a été utilisé pour des tâches telles que le prétraitement des données, le débruitage et la segmentation des images.

Deep Learning avec MATLAB

L'utilisation de MATLAB avec Deep Learning Toolbox™ vous permet de concevoir, d'analyser et de simuler des réseaux de Deep Learning. Vous pouvez étendre les workflows de Deep Learning à de nombreuses applications (telles que la Computer Vision, le traitement du signal et le traitement du langage naturel) en utilisant des toolboxes supplémentaires (comme par exemple Computer Vision Toolbox™, Signal Processing Toolbox™, et Text Analytics Toolbox™).

Le workflow du Deep Learning comprend le prétraitement et la labellisation des données, la construction d'un modèle d'IA, la visualisation des décisions du modèle, la simulation du système d'IA et le déploiement sur cible.

Visualisation d'un workflow de Deep Learning, de la préparation des données au déploiement.

Les données pour le Deep Learning

Le Deep Learning nécessite d’importantes quantités de données de bonne qualité. Vous pouvez utiliser des datastores afin de gérer efficacement les collections de données trop volumineuses pour être stockées en mémoire en une seule fois. Vous pouvez utiliser des applications low-code et des fonctions prédéfinies pour améliorer la qualité des données et labelliser automatiquement la vérité terrain.

Concevoir des modèles de Deep Learning

 

Développer des réseaux en partant de zéro

  • Avec quelques lignes de code, vous pouvez créer des réseaux de Deep Learning tels que des CNN, des LSTM, des GAN ou des transformateurs.
  • Accélérez l'apprentissage en utilisant plusieurs GPU, le cloud ou des clusters. Lors de l'apprentissage des modèles de Deep Learning, MATLAB utilise les GPU (lorsqu'ils sont disponibles) sans que vous ayez explicitement à les programmer.
Créez un réseau de Deep Learning de type LSTM avec quelques lignes de code MATLAB.

Création d'un réseau LSTM de manière programmatique.

Réseaux pré-entraînés

  • Appliquez directement un modèle pré-entraîné à votre tâche, adaptez-le en effectuant un apprentissage par transfert ou utilisez-le comme extracteur de caractéristiques.
  • Explorez le MATLAB Deep Learning Model Hub pour accéder aux derniers modèles par catégorie et charger des modèles pré-entraînés via la ligne de commande.
  • Convertissez les modèles TensorFlow™, PyTorch® et ONNX™ vers les réseaux MATLAB en utilisant une fonction d'importation. Exportez des réseaux entraînés et non entraînés de Deep Learning Toolbox vers TensorFlow et ONNX.
  • Exécutez facilement l'apprentissage par transfert grâce aux fonctions prédéfinies pour le remplacement des couches et l'ajustement des taux d'apprentissage pour le réentraînement.

Obtenir des modèles pré-entraînés pour les adapter à votre tâche Deep Learning.

Applications low-code

  • Avec l'application Deep Network Designer, vous pouvez concevoir, analyser et modifier des réseaux de manière interactive. Vous pouvez également importer des réseaux pré-entraînés à partir de Deep Learning Toolbox, TensorFlow et PyTorch.
  • L'application Experiment Manager vous permet de gérer plusieurs expérimentations de Deep Learning, d'assurer le suivi des paramètres d'apprentissage, d'analyser les résultats et de comparer le code issu de plusieurs expérimentations.
Capture d'écran de l'application Deep Network Designer montrant les couches d'un réseau de Deep Learning CNN.

Concevoir, analyser et modifier graphiquement des réseaux de Deep Learning avec Deep Network Designer.

Deep Learning pour les ingénieurs

Deep Learning explicable et robuste

Avec MATLAB, vous pouvez visualiser et vérifier les modèles de Deep Learning ainsi que leurs prédictions.

  • Surveillez la progression de l'apprentissage des modèles de Deep Learning et tracez les métriques de performance.
  • Visualisez les sorties de modèles de Deep Learning en appliquant des techniques d'explicabilité, telles que Grad-CAM, la sensibilité aux occlusions, LIME ou Deep Dream. Cela vous permet de comprendre comment les modèles de Deep Learning établissent leurs prédictions.
  • Entraînez des modèles de Deep Learning et vérifiez la robustesse des modèles. Vous pouvez vérifier les propriétés de robustesse d'un réseau, calculer les limites de sortie du réseau, trouver des exemples contradictoires, détecter les données hors distribution et vérifier la conformité aux normes industrielles.

Simulation au niveau système

Utilisez les blocs de Deep Learning Toolbox pour intégrer les réseaux entraînés aux systèmes Simulink®. Cela permet de tester l'intégration des modèles de Deep Learning avec les autres éléments du système.

Déployer vers la cible

Vous pouvez déployer des modèles de Deep Learning sur des équipements de périphérie, des systèmes embarqués ou le cloud. Avant le déploiement, vous pouvez compresser vos modèles en effectuant une quantification, une projection ou un élagage (pruning).