[PYTHON] Génération de séries temporelles par réseau neuronal récurrent (traduction magenta ① où l'intelligence artificielle fait de l'art et de la musique)

introduction

Cet article est la documentation du projet Google Magenta. Une traduction de "Générer des séquences avec des réseaux neuronaux récurrents" (David Ha). Ce document est une revue de Un article du même nom par Alex Graves. Il s'agit d'un livrable distribué sous Licence Apache, Version 2.0.

Google Brain a lancé Magenta, un projet visant à générer de l'art et de la musique grâce à l'apprentissage en profondeur. L'un des objectifs de Magenta est de présenter les recherches du projet et de publier des articles de synthèse pour plusieurs articles.

Le réseau neuronal récurrent (RNN) est un réseau neuronal compatible avec les données de séries chronologiques et est également utilisé comme modèle de composition dans le projet Google Magenta. .. Dans cet article, j'expliquerai l'idée de base de la génération de séries chronologiques par RNN.

Génération de séries temporelles par réseau neuronal récurrent

Generating Sequences With Recurrent Neural Networks, écrit par Alex Graves en 2013, a été l'un des principaux articles sur la génération de séries temporelles avec des réseaux de neurones récurrents. Je suis. Nous discutons ici de la modélisation de la distribution de probabilité des données de séries chronologiques. Avec cette approche, au lieu de prédire avec précision ce qui va se passer ensuite, nous obtenons un RNN qui prédit la distribution de probabilité future à partir de toutes les informations que nous connaissons du passé.

Même les humains sont plus faciles à prédire quoi et dans quelle mesure cela se produira dans le futur que de prédire avec précision le futur. Cependant, c'est un problème difficile pour les machines, en particulier [Markov](https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%82%B3%E3% C'est difficile pour les séries chronologiques qui n'ont pas 83% 95% E6% 80% A7). Une telle prédiction peut être définie comme le calcul de la distribution de probabilité qui se produira à l'étape suivante étant donné l'ensemble de la série chronologique passée.

  P( Y[n+1]=y[n+1]\ |\ Y[n]=y[n], Y[n-1]=y[n-1], Y[n-2]=y[n-2], \ldots) \ \ \ \ (1)

Une méthode simple comme le modèle N-gramme donne les N caractères précédents et prédit le caractère suivant. Là, ceux avant l'étape t-N sont tronqués et approximés. Ensuite, lorsque N devient grand, il ne sera pas bien ajusté.

Dans cet article, Graves explique comment utiliser RNN pour approximer la fonction de distribution de probabilité (PDF) dans l'équation (1). Comme RNN est récursif, il peut mémoriser de riches représentations d'événements passés. Cet article propose d'utiliser la cellule LSTM pour que RNN enregistre des informations d'un passé lointain. Avec ce changement, la fonction de distribution de probabilité pour la valeur suivante dans la série chronologique peut être approximée en fonction de l'état caché du RNN avec la valeur de la série chronologique actuelle.

  P( Y[n+1]=y[n+1]\ |\ Y[n]=y[n], H[n]=h[n]) \ \ \ \ (2)

Graves explique comment former et adapter les RNN à de nombreux ensembles de données de séries chronologiques, y compris le travail de Shakespeare, tous les articles de Wikipédia et une base de données manuscrite en ligne. Cette formation utilise la rétro-propagation dans le temps (BPTT), qui utilise l'erreur d'entropie croisée entre la série temporelle générée par le RNN et l'ensemble de données réel. En outre, l’utilisation de l’écrêtage en dégradé empêche les dégradés et les pondérations de diverger.

Après l'entraînement, quelque chose d'intéressant se produit. Si la distribution de probabilité générée par RNN est suffisamment proche de la fonction de distribution de probabilité empirique des données réelles, RNN générera une série chronologique plausible, bien qu'imitation, en prélevant un échantillon de cette distribution. Cette technique est devenue bien connue ces dernières années. C'est de l'ironie politique (Obama-RNN, [@deepdrumpf](https: // Il est également utilisé pour générer twitter.com/deepdrumpf)) et Asciiart.

[Schéma conceptuel de l'échantillonnage de la série chronologique à partir de RNN](https://camo.githubusercontent.com/0312d4a679bc4bc3ba12152b3cb71071e80980a1/687474703a2f2f626c6f672e6f746f726f2e4a679bc4bc3ba12152b3cb71071e80980a1/687474703a2f2f626c6f672e6f746f726f2e4a679bc4bc3ba12152b3cb71071e80980a1/687474703a2f2f626c6f672e6f746f726f2e6376e65742f776702d632675632f776326756326756326f776326f776326756326756756326756756326756326702

La génération de documents a été l'application la plus largement utilisée de cette technique ces dernières années. Ces données sont facilement disponibles et la distribution de probabilité est modélisée dans la couche Softmax. D'un autre côté, l'approche de la génération de séries chronologiques «numériques» réelles, comprenant des formes d'ondes sonores, des caractères manuscrits et des peintures vectorielles, est moins étudiée.

Dans cet article, nous expérimentons la formation des RNN dans une base de données de caractères manuscrits en ligne. Ces données sont les caractères manuscrits réels enregistrés à partir de la tablette et sont exprimées dans un format vectoriel trait par trait. [L'exemple du jeu de données de caractères manuscrits IAM ressemble à ceci. ](Https://camo.githubusercontent.com/0d1c202e1330d9f2a23e4e1e28ffb92db7908549/687474703a2f2f626c6f672e6f746f726f2e6e65742f77702d636f6e74656e742f75706c6f6164732f73697465732d636f6e74656e742f75706c6f6164732f736974657

Ces échantillons manuscrits sont enregistrés par la tablette comme une représentation d'une collection de petits vecteurs de mouvement de coordonnées. Chaque vecteur a un état binaire distinct du vecteur, ce qui indique que le trait se termine (c'est-à-dire que le stylo quitte l'écran). Le vecteur suivant après un trait montre les coordonnées pour commencer un nouveau trait.

Les données d'entraînement ressemblent à ceci en visualisant chaque vecteur avec des couleurs aléatoires.

[De plus, chaque trait peut également être visualisé dans des couleurs aléatoires, ce qui semble plus attrayant que de visualiser chaque petit vecteur. ](Https://camo.githubusercontent.com/ccb49182edce110ed2183a9a315b6163dd1ceaf6/687474703a2f2f626c6f672e6f746f726f2e6e65742f77702d636f6f6e6e65742f77702d636f6f6e7465742f77702d636f6f6e7465742f77702d63642f6e7465742f77702d63642f6e74656e7327327327326e74656e7327327327326e74656e7327327327326e74656e7327327327326e74656e7327327327326e74656e7327327327326e74656f

Il faut mentionner que le modèle s'entraîne pour chaque vecteur, pas pour chaque trait. (Un trait est une collection de vecteurs jusqu'à ce que le stylo monte)

Ce que fait RNN, c'est modéliser la distribution de probabilité conditionnelle pour le prochain mouvement de coordonnées (une combinaison de nombres réels qui indiquent l'ampleur du mouvement) et la distribution de probabilité conditionnelle pour laquelle un trait se termine (indiqué par deux valeurs, c'est S). C'est.

  P( X[n+1]=x_{n+1}, Y[n+1]=y[n+1], S[n+1]=s[n+1]\ |\ \\X[n]=x[n], Y[n]=y[n], S[n]=s[n], H[n]=h[n] ) \ \ \ \ (3)

Dans la méthode décrite dans l'article, la distribution de probabilité conditionnelle de X et Y est approximée par une distribution gaussienne mixte qui est la somme de nombreuses petites distributions gaussiennes, et S est approximé par la variable aléatoire de Bernoulli. La technique d'utilisation des réseaux de neurones pour générer des paramètres de distribution mixtes a été développée à l'origine par Bishop (https://www.researchgate.net/publication/40497979_Mixture_density_networks) pour les réseaux feedforward. Étendre cette approche à RNN. À chaque étape, RNN transforme (x [n], y [n], s [n], h [n]) en paramètres pour la fonction de distribution gaussienne mixte. Cela changera au fil du temps lorsque x et y seront réécrits. [Par exemple, imaginez que RNN regarde certains points précédents (points gris), et RNN devrait prédire la distribution de probabilité pour l'emplacement du point suivant (dans la plage rose). .. ](Https://camo.githubusercontent.com/0c33f16ff35dcaefc97cdae674bcbffff2626665/687474703a2f2f626c6f672e6f746f726f2e6e65742f77702d636f6e74656e674bcbffff2626665/687474703a2f2f626c6f672e6f746f726f2e6e65742f77702d636f6e74656f742f77702d636f6e74656f7302327327327f6327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327327 et

Le stylo peut continuer avec le trait actuel ou le terminer et se déplacer vers la droite pour commencer à écrire de nouvelles lettres. RNN modélise cette incertitude. Après avoir ajusté le modèle à toutes les bases de données IAM, [RNN peut échantillonner de faux caractères manuscrits comme décrit ci-dessus. ](Https://camo.githubusercontent.com/5d9bcc37d297f4cd4adc83721b3592e138cb259d/687474703a2f2f626c6f672e6f746f726f2e6e65742f77702d636f6f6e74656e732f77702d636f6e74656e7327327327326f6326e7327327327326f6326f6326f6326f6326f6326f6326f6326f6326f6326f6326f6327f6326f6326f6327f6f6f6

Vous pouvez également étudier en détail la distribution de probabilité produite par RNN pendant le processus d'échantillonnage. où, afin de comprendre l'idée de l'RNN, en plus d'un échantillon de RNN, la distribution de probabilité de coordonner le mouvement (points rouges) et la course est terminant probabilité (gris L'échantillon (Densité de ligne) est visualisé.

C'est très puissant. Et à l'avenir, nous pouvons explorer n'importe quelle politique en élargissant la façon dont nous échantillonnons cette série chronologique. Par exemple, RNN qui ont été faites un peu de changement est la formation pour les données kanjis chinois Peut générer des Kanji chinois fictifs.

Le reste de l'article de Graves décrit également plusieurs façons de procéder à un échantillonnage conditionnel. Étant donné un modèle qui utilise les informations d'un personnage que vous souhaitez écrire et les caractères avant et après celui-ci, vous serez en mesure de comprendre les différences subtiles dans la connexion des caractères.

  P( X[n+1]=x[n+1], Y[n+1]=y[n+1], S[n+1]=s[n+1]\ |\ X[n]=x[n], Y[n]=y[n],\\ S[n]=s[n], C[n+1]=c[n+1], C[n]=c[n], C[n-1]=c[n-1], H[n]=h[n] ) \ \ \ \ (4)

Comme tous les modèles, le modèle RNN généré n'est pas sans limites. Par exemple, le modèle RNN généré serait difficile à entraîner sur des ensembles de données plus complexes tels que des dessins vectoriels d'animaux. En effet, la nature de chaque image est complexe et diversifiée. Par exemple, lors de la représentation d'un animal, le modèle doit apprendre des concepts d'ordre supérieur tels que les yeux, les oreilles, le nez, le corps, les jambes et la queue. Lorsque les gens écrivent et dessinent, ils ont presque toujours des idées sur ce qu'ils veulent écrire à l'avance. Un inconvénient de ce modèle est que le caractère aléatoire est concentré uniquement dans la couche de sortie, et il peut ne pas être possible de capturer et de générer de tels concepts de haut niveau.

Une extension prometteuse de cette technique RNN est de convertir le RNN en RNN variationnel (VRNN) pour apprendre la distribution de probabilité conditionnelle. En utilisant cette nouvelle méthode, vous pouvez gérer les types de contenu et les styles de sortie avec des variables latentes (https://en.wikipedia.org/wiki/Latent_variable) et un vecteur de pensée (http: // www.iamwire.com/2015/09/google-thought-vectors-inceptionism-artificial-intelligence-artificial-neural-networks-ai-dreams-122293/122293) peut être intégré dans le modèle. Dans l'article de Graves, l'application de VRNN à la même expérience de texte manuscrit qu'auparavant a donné des résultats fiables. Les échantillons de caractères manuscrits générés par VRNN conservent le même style manuscrit, inchangé d'un style à l'autre.

En conclusion, cet article présente une méthodologie qui permet aux RNN d'agir comme des modèles de génération et ouvre des directions intéressantes dans le domaine où les ordinateurs génèrent du contenu.

Recommended Posts

Génération de séries temporelles par réseau neuronal récurrent (traduction magenta ① où l'intelligence artificielle fait de l'art et de la musique)
Algorithme de réseau de neurones de style peinture (traduction magenta ② où l'intelligence artificielle crée de l'art et de la musique)
L'histoire de la création d'un réseau neuronal de génération musicale
Etude du réseau neuronal récurrent (RNN) par Chainer ~ Vérification de l'exactitude des nombres aléatoires dans Excel et R ~