Le Machine Learning Blog

Introduction aux réseaux neuronaux récurrents

 

deep jazz

 

Dans cet article, je vais expliquer ce que sont les réseaux neuronaux récurrents (RNN), comment ils fonctionnent et ce que vous pouvez faire avec eux. Je montrerai également un très bon exemple de génération de musique utilisant l’intelligence artificielle.

Cependant, avant de discuter les RNN, nous devons expliquer le concept de séquences de données.

 

Séquence de données

 

Comme son nom l'indique, les séquence de données sont une collection de données dans différents états au fil du temps, de sorte qu'ils puissent former autre chose de plus grand. Voici quelques exemples:

 

  • Toutes les différentes notes qui forment une chanson.
  • Tous les mots qui forment une phrase.
  • Toutes les images qui forment une vidéo.

 

Prenons par exemple toutes les images qui forment le clip vidéo suivant.

 

frame by frame video

 

Individuellement, elles ne peuvent que nous dire qu'il s'agit de photos d'un mec jouant au golf.

Mais si vous regardez toutes les images dans le bon ordre (de gauche à droite), vous pouvez voir le swing qui se déroule. Il s’agit d’une "séquence" de données qui doivent être analysée dans son ensemble si nous voulons la comprendre et arriver à la conclusion que toutes ces images représentent un "swing".

 

Alors, qu'est-ce que les réseaux neuronaux récurrents?

 

Si vous avez lu mon blog, vous devez maintenant être familier avec les réseaux de neurones, si vous ne l’êtes pas, je vous recommande lisez d'abord cet article.

Les réseaux de neurones sont très sympas, mais ils ont un petit problème. Ils ne peuvent prendre qu'une seule entrée de taille fixe et fournir une sortie de taille fixe. En d'autres termes, ils ne peuvent pas analyser des séquences de données.

Si vous prenez l'exemple de la classification des images, le réseau neuronal donnera un vecteur (X) de toutes les valeurs de pixels de ladite image et la sortie (le résultat) sera un vecteur de classification (Y) représentant une prédiction de ce que c'est l'image.

Aussi étonnant qu'il puisse paraître, les professionnels du machine learning qualifient souvent ces modèles de réseaux neuronaux «vanille», puisqu'ils ont une architecture «un à un» et à leurs yeux, ils sont «réguliers» et «sans aucun mystère». ..

 

vanilla relationship
Relation vanille

 

Les réseaux neuronaux récurrents (RNN), quant à eux, sont un type de réseau de neurones artificiels plus intéressants où les sorties dépendent des entrées.

Cela signifie que la prédiction tiendra compte de toutes les informations précédentes.

La fonction de complétion automatique de nos smartphones est un excellent exemple de ce que peut faire un réseau neuronal récurrent.

Chaque fois que vous tapez un mot, le logiciel prend tous les mots que vous avez déjà tapés pour prédire lequel est le plus susceptible de suivre. Donner à un RNN juste le premier mot et le laisser prédire le reste peut être très amusant.

autocomplete

 

Vous pouvez tester vous-même que si vous modifiez l'un des mots saisis au milieu d'une phrase, votre téléphone proposera des mots différents. C'est ainsi que vous savez que la fonction prend en compte toutes les séquences de données dans l'ordre que vous l'avez fourni et que ce ne sont pas simplement des mots aléatoires.

La fonction d'auto complétion est un exemple de RNN "plusieurs à un", car le logiciel doit analyser plusieurs mots dans le bon ordre à travers le temps pour venir à une conclusion ... Quel sera le prochain mot?

Mais il existe d'autres types d'architectures RNN:

  • Une entrée et plusieurs sorties
  • Plusieurs entrées et une sortie
  • Plusieurs entrées et de nombreuses sorties
  • Plusieurs entrées et de nombreuses sorties (avec des longueurs différentes)

 

J'espère que l'image ci-dessous vous donne une meilleure compréhension de ces différentes architectures.

types of recurrent neural networks

 

La cellule "NN" représente un réseau neuronal que peut être aussi profond que vous le souhaitez, même avec des centaines de couches cachées.

Certains chercheurs représentent souvent les RNN avec un diagramme différent, mais le concept est exactement le même.

RNN

 

Je préfère personnellement le diagramme "déroulé" que j'ai présenté en premier car je pense que c'est plus facile à comprendre.

 

Former un RNN

 

Former un RNN, c'est comme former un réseau neuronal normal.

  • Vous commencez par définir les paramètres (poids et biais) sur des valeurs aléatoires.
  • Vous faites la propagation en avant pour calculer le coût.
  • Vous faites de la propagation en arrière pour trouver le bon ensemble de paramètres qui minimise l'erreur de votre modèle.
  • Vous répétez le même processus plusieurs fois jusqu'à ce que votre modèle soit aussi précis que possible (la plus petite erreur)

 

machine learning model training

Si vous êtes nouveau dans le monde du machine learning et que vous n'avez pas compris l'image ci-dessus ou ce que je viens d'écrire, ne vous inquiétez pas.

La seule chose à comprendre est que vous devez prendre en compte les résultats du NN précédent lors du calcul du résultat du NN actuel et ainsi de suite jusqu'à la fin.

En d'autres termes, le modèle prend en compte toutes les séquences de données précédentes, lorsqu'il est entraîné, mais aussi lorsqu'il fournit des prédictions.

 

google autocomplete

 

Générer de la musique avec les RNN

 

À présent, vous devez comprendre le concept de base des réseaux neuronaux récurrents. Comme vous pouvez le voir, vous pouvez entraîner un modèle avec des mots pour qu'il prédisse les mots suivants ou vous pouvez l'entraîner avec des poèmes de Shakespare pour qu'il génère sa propre poésie.

 

shakespeare

 

Mais personnellement, je trouve que l'un des exemples les plus étonnants de RNN est de générer de la musique, une note à la fois.

Si vous êtes nouveau sur mon blog, vous devez comprendre que mes articles sont destinés à un public non technique. Je ne couvrirai donc pas les détails de la mise en œuvre de ce projet, ni fournir le code que j'ai utilisé. Il y a des centaines de tutoriels sur la façon de réaliser ce que j'ai fait, donc si vous êtes intéressé à faire la même chose, vous pouvez simplement le faire sur Google ou me contacter pour plus de détails.

Dans cet article, je ne donnerai qu'une idée générale de ce que j'ai fait.

 

  1. J'ai collecté différents clips de musique jazz
  2. Je les ai utilisés pour entraîner un RNN
  3. J'ai donné au RNN une première note aléatoire pour qu'il puisse prédire les notes suivantes.
  4. Du jazz a été généré!

 

Voici le résultat final que j'ai mis sur youtube.

 

 

 

 

Les images de la vidéo ont également été générées avec de l'IA en utilisant une technique appelée "transfert neuronal" que je couvrirai définitivement dans un article différent.

 

C'est tout pour le moment. Il y a d'autres concepts intéressants derrière les RNN comme la "mémoire" et les RNN bidirectionnels que je couvrirai également dans d'autres articles. J'espère que vous avez apprécié la lecture de ce sujet. N'hésitez pas à laisser vos commentaires ci-dessous.

 

 

Intelligence Artificielle
Apprentissage profond
Apprentissage supervisé