Un réseau Long Short-Term Memory (LSTM) est un type de réseau de neurones récurrents (RNN). Les LSTM sont principalement utilisés pour l’apprentissage, le traitement et la classification de données séquentielles, puisqu’ils sont capables d’apprendre les dépendances à long terme entre les pas de temps des données.
Fonctionnement des LSTM
Réseaux LSTM et RNN
Les réseaux LSTM sont une forme spécifique de l’architecture RNN. Les RNN se servent d’informations passées afin d’améliorer les performances d’un réseau de neurones pour les entrées actuelles et futures. Ils contiennent un état caché et des boucles, qui permettent au réseau de stocker des informations passées dans l’état caché et de fonctionner de manière séquentielle. Les RNN ont deux ensembles de poids : un pour le vecteur d’état caché et l’autre pour les entrées. Lors de l’apprentissage, le réseau apprend les poids pour les entrées et pour l’état caché. Lorsque le réseau est implémenté, la sortie se base sur l’entrée actuelle ainsi que sur l’état caché, qui est lui-même basé sur les entrées passées.
En pratique, la capacité d’apprentissage des RNN simples est limitée pour les dépendances à plus long terme. Les RNN sont généralement entraînés par rétropropagation. Avec cette méthode, ils peuvent être confrontés à des problèmes de disparition ou d’explosion du gradient. Ces problèmes rendent les poids du réseau très faibles ou très élevés, ce qui limite son efficacité pour des applications qui nécessitent que le réseau apprenne des relations à long-terme.
Architecture des couches des LSTM
Les couches des LSTM utilisent des portes supplémentaires afin de contrôler quelles informations de l’état caché sont exportées en tant que sortie puis vers le prochain état caché. Ces portes supplémentaires permettent de surmonter le problème courant d’apprentissage des dépendances à long terme des RNN. En plus de l’état caché présent dans les RNN traditionnels, l’architecture d’un bloc LSTM comprend généralement une cellule mémoire, une porte d’entrée, une porte de sortie et une porte d’oubli. Les portes supplémentaires permettent au réseau d’apprendre de manière plus efficace les relations à long terme entre les données. Bénéficiant d’une plus faible sensibilité à l’écart temporel, les réseaux LSTM sont plus à même d’analyser les données séquentielles que les RNN simples. Dans la figure ci-dessous, vous pouvez voir l’architecture LSTM et le flux de données à un pas de temps t.
Les poids et les biais de la porte d’entrée contrôlent dans quelle mesure une nouvelle valeur circule au sein de l’unité LSTM. De la même façon, les poids et les biais de la porte d’oubli et de la porte de sortie contrôlent, respectivement, la mesure dans laquelle une valeur reste dans l’unité et la mesure dans laquelle la valeur de l’unité est utilisée pour calculer l’activation de la sortie du bloc LSTM.
Le diagramme illustre le flux de données à travers une couche LSTM avec plusieurs pas de temps. Le nombre de canaux dans la sortie correspond au nombre d’unités cachées dans la couche LSTM.
Architecture du réseau LSTM
Les LSTM sont bien adaptés aux données séquentielles et aux données de séries temporelles pour les tâches de classification et de régression. Les LSTM sont également efficaces sur les vidéos, ces dernières étant fondamentalement constituées d’une séquence d’images. Tout comme le travail avec des signaux, il est utile d’effectuer une extraction de caractéristiques avant d’alimenter la couche LSTM avec la séquence d’images. Utilisez les réseaux de neurones à convolution (CNN) (par exemple GoogLeNet), pour l’extraction des caractéristiques de chaque image. La figure suivante montre comment concevoir un réseau LSTM pour différentes tâches.
LSTM bidirectionnel
Un LSTM bidirectionnel (BiLSTM) apprend les dépendances bidirectionnelles entre les pas de temps des données de séries temporelles ou de séquences. Ces dépendances peuvent être utiles lorsque vous souhaitez que le réseau apprenne à partir de données de séries temporelles complètes à chaque pas de temps. Les réseaux BiLSTM permettent un apprentissage supplémentaire, puisque les données d’entrée passent par la couche LSTM à deux reprises, ce qui augmente les performances de votre réseau.
Un BiLSTM est constitué de deux composantes LSTM : le LSTM de type forward et le LSTM de type backward. Le LSTM forward fonctionne du premier pas de temps au dernier pas de temps. Le LSTM backward fonctionne du dernier pas de temps au premier pas de temps. Après avoir fait passer les données à travers les deux composantes LSTM, l’opération effectue une concaténation des sorties le long de la dimension du canal.
Exemples de LSTM dans MATLAB
Applications des LSTM
Les LSTM sont particulièrement efficaces pour le travail avec des données séquentielles, qui peuvent varier en longueur, et pour l’apprentissage de dépendances à long terme entre les pas de temps de ces données. Parmi les applications courantes des LSTM, on trouve l’analyse de sentiments, la modélisation de langage, la reconnaissance vocale et l’analyse vidéo.
Applications larges des LSTM
Les RNN forment une technologie essentielle dans les champs d’application suivants :
- Traitement du signal. Les signaux sont des données naturellement séquentielles, puisqu’ils sont souvent collectés par des capteurs au cours du temps. La classification et la régression automatiques sur des jeux de données de signaux volumineux permettent une prédiction en temps réel. Les données de signaux brutes peuvent être utilisées pour alimenter des réseaux profonds ou peuvent être prétraitées afin de se concentrer sur des caractéristiques particulières, comme les composantes fréquentielles. L’extraction de caractéristiques peut grandement améliorer les performances d’un réseau.
- Traitement du langage naturel (NLP). Le langage est naturellement séquentiel, et la longueur des morceaux de texte est variable. Les LSTM sont un excellent outil pour les tâches de traitement du langage naturel, comme la classification et la génération de texte, la traduction automatique et l’analyse de sentiments, puisqu’ils peuvent apprendre à contextualiser les mots dans une phrase.
Apprenez-en davantage avec les exemples suivants, pour commencer à appliquer les LSTM au traitement du signal et au traitement du langage naturel.
Applications verticales des LSTM
Alors que les applications du Deep Learning se développent toujours plus, les LSTM sont utilisés pour les applications verticales suivantes :
Pour continuer à explorer ce sujet
Utiliser des réseaux LSTM pour estimer les émissions de NOx
Les ingénieurs Renault ont utilisé des LSTM pour le développement d’une technologie nouvelle génération pour les véhicules zéro émission (ZEV).
Ils ont obtenu les données d’apprentissage de tests effectués sur un moteur réel. Pendant ces tests, le moteur a fonctionné sur des cycles de conduite courants. Les données capturées, qui comprenaient le couple moteur, la vitesse du moteur, la température du liquide de refroidissement et les émissions selon le rapport engagé, ont fourni les entrées au réseau LSTM. Après plusieurs itérations sur le design de l’architecture LSTM, la version finale du LSTM a atteint une précision de 85 à 90 % dans la prédiction des niveaux de NOX.
LSTM avec MATLAB
Avec MATLAB® et Deep Learning Toolbox™, vous pouvez concevoir, entraîner et déployer des LSTM. Avec Text Analytics Toolbox™ ou Signal Processing Toolbox™, vous pouvez appliquer les LSTM à l’analyse de texte ou de signaux.
Concevoir et entraîner des réseaux
Vous pouvez concevoir et entraîner des LSTM de manière programmatique, avec quelques lignes de code. Utilisez des couches LSTM, des couches LSTM bidirectionnelles et des couches LSTM projetées pour construire des LSTM. Vous pouvez également concevoir, analyser et modifier des LSTM de manière interactive avec l’application Deep Network Designer.
Importer et exporter des réseaux
Vous pouvez échanger des réseaux LSTM avec des frameworks de Deep Learning basés sur Python® :
Déployer des réseaux
Déployez votre LSTM entraîné sur des systèmes embarqués, des systèmes d’entreprise ou dans le cloud :
- Générez automatiquement du code C/C++ et CUDA optimisé pour le déploiement sur des CPU et GPU.
- Générez du code Verilog® et VHDL® synthétisable pour le déploiement sur des FPGA et SoC.
Ressources
Développez vos connaissances grâce à la documentation, aux exemples, aux vidéos et plus encore.
Sujets connexes
Explorez des sujets similaires pour lesquels on utilise couramment les produits MATLAB et Simulink.
Version d'essai gratuite de 30 jours
CommencerSélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)