Introduction douce aux réseaux de mémoire générative à long terme et à court terme
Le réseau neuronal récurrent Long Short-Term Memory a été développé pour la prédiction de séquences.
En plus des problèmes de prédiction de séquence. Les LSTM peuvent également être utilisés comme modèle génératif
Dans cet article, vous découvrirez comment les LSTM peuvent être utilisés comme modèles génératifs.
Après avoir terminé cet article, vous saurez :
- À propos des modèles génératifs, avec un accent sur les modèles génératifs pour le texte appelés modélisation du langage.
- Exemples d'applications où des modèles génératifs LSTM ont été utilisés.
- Exemples de modélisation de texte pour des modèles génératifs avec des LSTM.
Démarrez votre projet avec mon nouveau livre Long Short-Term Memory Networks With Python, comprenant des tutoriels étape par étape et le code source Python fichiers pour tous les exemples.
Commençons.
Modèles génératifs
Les LSTM peuvent être utilisés comme modèle génératif.
Étant donné un vaste corpus de données de séquence, telles que des documents texte, les modèles LSTM peuvent être conçus pour apprendre les propriétés structurelles générales du corpus et, lorsqu'ils reçoivent une entrée de départ, peuvent générer de nouvelles séquences représentatives du corpus d'origine.
Le problème du développement d’un modèle pour généraliser un corpus de texte est appelé modélisation du langage dans le domaine du traitement du langage naturel. Un modèle de langage peut fonctionner au niveau des mots et apprendre les relations probabilistes entre les mots d'un document afin de compléter avec précision une phrase et de générer des phrases entièrement nouvelles. Dans leur forme la plus complexe, les modèles de langage fonctionnent au niveau des personnages, apprenant à partir de séquences de caractères et générant de nouvelles séquences, un caractère à la fois.
L’objectif de la modélisation du langage au niveau des caractères est de prédire le caractère suivant dans une séquence.
— Génération de texte avec des réseaux de neurones récurrents, 2011.
Bien que plus complexe, la flexibilité supplémentaire d'un modèle au niveau des caractères permet de générer de nouveaux mots, d'ajouter de la ponctuation et de générer toute autre structure pouvant exister dans les données textuelles.
… prédire un caractère à la fois est plus intéressant du point de vue de la génération de séquences, car cela permet au réseau d'inventer de nouveaux mots et chaînes.
— Génération de séquences avec des réseaux de neurones récurrents, 2013.
La modélisation linguistique est de loin l'application la plus étudiée des LSTM génératifs, peut-être en raison de l'utilisation d'ensembles de données standard où les performances du modèle peuvent être quantifiées et comparées. Cette approche a été utilisée pour générer du texte sur une suite de problèmes intéressants de modélisation de langage, tels que :
- Générer des articles Wikipédia (y compris le balisage).
- Générer des extraits de grands auteurs comme Shakespeare.
- Générer des manuscrits techniques (y compris le balisage).
- Génération de code source informatique.
- Générer des titres d'articles.
La qualité des résultats varie ; par exemple, le balisage ou le code source peut nécessiter une intervention manuelle pour le rendu ou la compilation. Néanmoins, les résultats sont impressionnants.
L'approche a également été appliquée à différents domaines où un vaste corpus d'informations sur les séquences existantes est disponible et où de nouvelles séquences peuvent être générées étape par étape, tels que :
- Génération d'écriture manuscrite.
- Génération musicale.
- Génération de parole.
LSTM génératifs
Un LSTM génératif n'est pas vraiment une architecture, c'est plutôt un changement de perspective sur ce qu'un modèle prédictif LSTM apprend et comment le modèle est utilisé.
Nous pourrions éventuellement utiliser n'importe quelle architecture LSTM comme modèle génératif. Dans ce cas, nous utiliserons un simple Vanilla LSTM.
Dans le cas d'un modèle de langage au niveau des caractères, l'alphabet de tous les caractères possibles est fixe. Un encodage à chaud est utilisé à la fois pour apprendre les séquences d’entrée et prédire les séquences de sortie.
Un modèle un-à-un est utilisé dans lequel une étape est prédite pour chaque pas de temps d'entrée. Cela signifie que les séquences d'entrée peuvent nécessiter un traitement spécialisé afin d'être vectorisées ou formatées pour former efficacement un modèle supervisé.
Par exemple, étant donné la séquence :
"hello world"
Un ensemble de données devrait être construit tel que :
'h' => 'e'
'e' => 'l'
'l' => 'l'
...
Cela pourrait être présenté tel quel comme un ensemble de données d'échantillons à un pas de temps, ce qui pourrait être assez limitatif pour le réseau (par exemple pas de BPTT).
Alternativement, il pourrait être vectorisé en une séquence d'entrée de longueur fixe pour un modèle de pas de temps plusieurs-à-un, tel que :
['h', 'e', 'l'] => 'l'
['e', 'l', 'l'] => 'o'
['l', 'l', 'o'] => ' '
...
Ou une séquence de sortie de longueur fixe pour un modèle à pas de temps un-à-plusieurs :
'h' => ['e', 'l', 'l']
'e' => ['l', 'l', 'o']
'l' => ['l', 'o', ' ']
...
Ou une variante de ces approches.
Notez que la même représentation vectorisée serait requise lors de la réalisation de prédictions, ce qui signifie que les caractères prédits devraient être présentés en entrée pour les échantillons suivants. Cela pourrait être assez maladroit à mettre en œuvre.
L'état interne du réseau peut nécessiter une gestion minutieuse, peut-être être réinitialisé à des endroits choisis dans la séquence de saisie (par exemple à la fin d'un paragraphe, d'une page ou d'un chapitre) plutôt qu'à la fin de chaque séquence de saisie.
Lectures complémentaires
Cette section fournit plus de ressources sur le sujet si vous cherchez à approfondir.
Papiers
- Génération de texte avec des réseaux de neurones récurrents, 2011.
- Génération de séquences avec des réseaux de neurones récurrents, 2013.
- Synthèse TTS avec des réseaux de neurones récurrents bidirectionnels basés sur LSTM, 2014.
- Un premier regard sur la composition musicale à l'aide des réseaux de neurones récurrents LSTM, 2002.
- Génération de mélodies jazz à partir de l'apprentissage en réseau récurrent de plusieurs mélodies humaines, 2005.
Messages
- Génération de texte avec les réseaux de neurones récurrents LSTM en Python avec Keras, 2016
L'efficacité déraisonnable des réseaux de neurones récurrents, 2015. - Modèle de langage sur Wikipédia.
Résumé
Dans cet article, vous avez découvert l'utilisation des LSTM comme modèles génératifs.
Concrètement, vous avez appris :
- À propos des modèles génératifs, avec un accent sur les modèles génératifs pour le texte appelés modélisation du langage.
- Exemples d'applications où des modèles génératifs LSTM ont été utilisés.
- Exemples de modélisation de texte pour des modèles génératifs avec des LSTM.
Avez-vous des questions ?
Posez vos questions dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.