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.
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 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.
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 type d'un réseau 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.
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.
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.
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).
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.
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.
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.
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.
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 :
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.
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 :
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 :
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é.
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 :
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.