Réseau de neurones

Qu'est-ce qu'un réseau de neurones ?

3 choses à savoir

Un réseau de neurones est un modèle informatique dont la structure en couches est similaire à la structure en réseau des neurones du cerveau, avec des couches de nœuds connectés. Un réseau de neurones peut apprendre à partie de données ; il peut ainsi être entraîné à reconnaître des tendances, classer des données et prévoir des événements à venir.

Un réseau de neurones décompose vos données en couches d'abstraction. Il peut être entraîné sur de nombreux exemples en vue de reconnaître des modèles au niveau de la parole ou des images, par exemple, à l'instar du cerveau humain. Son comportement est défini par la façon dont ses éléments individuels sont reliés et par la solidité (ou poids) de ces liaisons. Ces poids sont automatiquement ajustés au cours de l'entraînement selon une règle d'apprentissage spécifiée jusqu'à ce que le réseau de neurones exécute correctement la tâche souhaitée.

Pourquoi les réseaux de neurones sont-ils importants ?

Les réseaux de neurones sont particulièrement bien adaptés à la reconnaissance de formes pour identifier et classer des objets ou des signaux dans les systèmes de la parole, de la vision et du contrôle. Ils peuvent également être utilisés pour la prédiction et la modélisation de séries chronologiques.

Voici quelques exemples d'utilisation des réseaux de neurones :

  • Les compagnies d'électricité anticipent avec précision la charge sur leur réseaux électriques pour assurer la fiabilité et optimiser l'efficacité des générateurs d'électricité qu'ils exploitent.
  • Les guichets automatiques bancaires acceptent de façon fiable les dépôts bancaires via la lecture du numéro de compte et du montant du dépôt sur votre chèque.
  • Les pathologistes se fient aux applications de détection du cancer pour les orienter dans la classification des tumeurs, de bénignes à malignes, en fonction de l'uniformité de la taille des cellules, de l'épaisseur de la masse, de la mitose et d'autres facteurs.

Deep Learning

Les réseaux de neurones qui fonctionnent sur deux ou trois couches de neurones connectés sont appelés réseaux de neurones peu profonds. Les réseaux Deep Learning peuvent comporter de nombreuses couches, voire des centaines. Les deux sont des techniques d'apprentissage automatique qui tirent directement des enseignements des données d'entrée.

Ces derniers temps, le Deep Learning attire beaucoup l'attention, et pour cause : Il obtient des résultats auparavant irréalisables.

Le Deep Learning est particulièrement bien adapté aux applications d'identification complexe telles que la reconnaissance faciale, la traduction de texte et la reconnaissance vocale. Il s'agit également d'une technologie essentielle utilisée dans les systèmes avancés d'aide à la conduite et dans des tâches telles que la classification des voies de circulation et la reconnaissance des panneaux de signalisation.

Comment fonctionnent les réseaux de neurones ?

Un réseau de neurones combine plusieurs couches de traitement, utilisant des éléments simples fonctionnant en parallèle et inspirés du système nerveux biologique. Il se compose d'une couche d'entrée, d'une ou de plusieurs couches masquées et d'une couche de sortie. Les couches sont interconnectées par des nœuds, ou neurones, chaque couche utilisant la sortie de la couche précédente en guise d'entrée.

Architecture de réseau de neurones composée d'une couche d'entrée, de deux couches cachées et d'une couche de sortie.

Architecture type d'un réseau de neurones.

Techniques utilisées par les réseaux de neurones

Les techniques courantes de Machine Learning entrant dans la conception d'applications de réseaux de neurones comprennent l'apprentissage supervisé et non supervisé, la classification, la régression, la reconnaissance de formes et le clustering.

Apprentissage supervisé

Les réseaux de neurones supervisés sont formés pour générer les sorties voulues en réponse aux échantillons d'entrée, afin de les adapter tout particulièrement à la modélisation et au contrôle de systèmes dynamiques, à la classification de données bruyantes et à la prédiction des événements futurs. Deep Learning Toolbox™ inclut quatre types de réseaux supervisés : contrôleur boucle ouvert, base radiale, dynamique et quantification de vecteur d'apprentissage.

Classification

La classification est un type de Machine Learning supervisé dans lequel un algorithme « apprend » à classifier de nouvelles observations à partir d'exemples de données étiquetées.

Régression

Les modèles de régression décrivent la relation entre une variable réponse (sortie) et une ou plusieurs variables prédictives (entrée).

Reconnaissance de formes

La reconnaissance de formes est une composante importante des applications des réseaux de neurones dans les domaines de la vision par ordinateur, du traitement radar, de la reconnaissance vocale et de la classification de texte. Elle fonctionne en classant les données d'entrée en objets ou en classes selon des caractéristiques clés, en utilisant une classification supervisée ou non supervisée.

Par exemple, en vision par ordinateur, les techniques non supervisées de reconnaissance de formes servent pour la reconnaissance optique des caractères (ROC), la détection des visages, la reconnaissance faciale, la détection d'objets et la classification d'objets. Dans le traitement d'image et la vision par ordinateur, les techniques non supervisées de reconnaissance de formes servent pour la détection d'objets et la segmentation d'images.

Apprentissage non supervisé

La formation d'un réseau de neurones non supervisé s'effectue en le laissant s'ajuster continuellement aux nouvelles entrées. Il est utilisé pour tirer des conclusions à partir d'ensembles de données composés de données d'entrée sans réponses labellisées. Vous pouvez l'utiliser pour découvrir des distributions naturelles, des catégories et des relations de catégories au sein des données.

Deep Learning Toolbox inclut deux types de réseaux non supervisés : les couches cachées et les cartes auto-organisatrices de Kohonen.

Clustering

Le clustering est une approche d'apprentissage non supervisée dans laquelle les réseaux de neurones peuvent être utilisés pour effectuer une analyse exploratoire des données afin de trouver des modèles cachés ou des regroupements dans les données. Ce processus implique de grouper les données par similarité. L'analyse de séquence génomique, l'étude de marché et la reconnaissance d'objets sont des exemples d'applications d'analyse de cluster.

Développement de réseaux de neurones peu profonds avec MATLAB

En plus d'outils et de fonctions permettant de gérer de grands volumes de données, MATLAB® propose des boîtes à outils spécialisées pour vous aider à développer des algorithmes de Machine Learning, de réseaux de neurones, de Deep Learning, de vision par ordinateur et de conduite automatisée.

En seulement quelques lignes de code, MATLAB vous permet de développer des réseaux de neurones, sans pour autant que vous en soyez un spécialiste. Lancez-vous rapidement, créez et visualisez des modèles, et déployez-en sur des serveurs et sur des dispositifs embarqués.

MATLAB vous permet d'intégrer des résultats à vos applications existantes. MATLAB automatise le déploiement des modèles de réseaux de neurones dans des systèmes d'entreprise, des clusters, le cloud et des dispositifs embarqués.

Processus type de conception de réseaux de neurones

Chaque application de réseau de neurones est unique, mais le développement du réseau suit généralement les étapes ci-après :

  1. Accès et préparation de vos données
  2. Création du réseau de neurones
  3. Configuration des entrées et sorties du réseau
  4. Réglage des paramètres du réseau (poids et biais) afin d'optimiser les performances
  5. Apprentissage du réseau
  6. Validation des résultats du réseau
  7. Intégration du réseau dans un système de production

Classification et segmentation des réseaux peu profonds

MATLAB et Deep Learning Toolbox fournissent des fonctions de ligne de commande et des applications pour créer, entraîner et simuler des réseaux de neurones peu profonds. Les applications facilitent le développement de réseaux de neurones pour des tâches telles que la classification, la régression (y compris la régression de séries temporelles) et le clustering. Une fois vos réseaux créés dans ces outils, vous pouvez générer automatiquement le code MATLAB pour capturer le travail et automatiser les tâches.

Prétraitement, post-traitement et amélioration de votre réseau

Le prétraitement des cibles et des entrées de réseau améliore l'efficacité de l'entraînement des réseaux de neurones peu profonds. Le post-traitement active une analyse détaillée des performances réseau. MATLAB et Simulink® fournissent des outils qui aident :

  • à réduire les dimensions des vecteurs d'entrée au moyen d'une analyse en composantes principales ;
  • à effectuer une analyse de régression entre la réponse du réseau et les cibles correspondantes ;
  • à dimensionner les entrées et les cibles de sorte qu'elles s'inscrivent dans l'intervalle [-1,1] ;
  • à normaliser l'écart type et l'écart moyen de l'ensemble de données d'entraînement ;
  • à utiliser le prétraitement automatisé des données et la division de données intégrées lors de la création de vos réseaux.

L'amélioration de la capacité du réseau à généraliser contribue à prévenir le surajustement, un problème courant dans la conception des réseaux de neurones. Le surajustement se produit lorsqu'un réseau a mémorisé le jeu d'entraînement, mais qu'il n'a pas appris à généraliser de nouvelles entrées. Le surajustement produit une erreur relativement faible sur le jeu d'entraînement, mais une erreur beaucoup plus importante lorsque de nouvelles données sont présentées au réseau.

Les deux solutions permettant d'améliorer la généralisation incluent :

  • La régularisation, qui modifie la fonction de performances du réseau (la mesure de l'erreur que le processus d'apprentissage minimise). En tenant compte de la taille des poids et des biais, la régularisation génère un réseau qui fonctionne bien avec les données d'apprentissage et affiche un comportement plus homogène lorsqu'on lui présente de nouvelles données.
  • L'arrêt anticipé, qui utilise deux jeux de données différents : le jeu d'entraînement pour actualiser les poids et les biais, et le jeu de validation pour cesser l'apprentissage lorsque le réseau commence à surajuster les données.
Tracés de post-traitement permettant d'analyser les performances du réseau.

Tracés de post-traitement permettant d'analyser les performances du réseau, notamment les performances de validation des erreurs quadratiques moyennes dans le cas de phases successives d'apprentissage (en haut à gauche), un histogramme des erreurs (en haut à droite) et des matrices de confusion (en bas) pour les étapes d'apprentissage, de validation et de test.

Génération et déploiement de code

En utilisant Deep Learning Toolbox avec MATLAB Coder™, GPU Coder™ et MATLAB Compiler™, vous pouvez déployer des réseaux entraînés sur des systèmes embarqués ou les intégrer avec un vaste éventail d'environnements de production. Vous pouvez utiliser MATLAB Coder pour générer du code C et C++ pour votre réseau entraîné, ce qui vous permet de simuler un réseau entraîné sur du matériel PC, puis de déployer ce réseau sur des systèmes embarqués. Vous pouvez utiliser MATLAB Compiler et MATLAB Compiler SDK™ pour déployer des réseaux entraînés en tant que bibliothèques partagées C/C++, assemblages Microsoft® .NET, classes Java® et packages Python® à partir de programmes MATLAB. Vous pouvez également entraîner un modèle de réseau dans l'application ou le composant déployé.

Prise en charge de Simulink

Deep Learning Toolbox propose un ensemble de blocs destinés à la construction de réseaux de neurones peu profonds dans Simulink. Tous les blocs sont compatibles avec Simulink Coder™. Ces blocs sont divisés en quatre bibliothèques :

  • Les blocs de fonction de transfert, qui génèrent un vecteur de sortie à partir d'un vecteur d'entrée nette
  • Les blocs de fonction d'entrée nette, qui renvoient un vecteur d'entrée nette à partir de tout nombre de vecteur d'entrée pondérée, de vecteurs de poids de sortie par couche et de vecteurs de biais
  • Les blocs de fonction de poids, qui appliquent le vecteur de poids d'un neurone à un vecteur d'entrée (ou un vecteur de sortie par couche) pour obtenir la valeur d'entrée pondérée d'un neurone
  • Les blocs de prétraitement de données, qui mappent les données d'entrée et de sortie dans les plages les mieux adaptées à un traitement direct par le réseau de neurones.

Vous pouvez aussi créer et former vos réseaux dans l'environnement MATLAB afin de générer automatiquement des blocs de simulation réseau utilisables dans Simulink. Cette approche vous permet également de consulter une représentation graphique de vos réseaux.