Les réseaux neuronaux récurrents sont l'algorithme de pointe pour les données séquentielles et entre autres utilisés par Apple Siri et Googles Voice Search.

Les réseaux neuronaux récurrents sont l'algorithme de pointe pour les données séquentielles et entre autres utilisés par Apple Siri et Googles Voice Search. C'est parce que c'est le premier algorithme qui se souvient de son entrée, en raison d'une mémoire interne, ce qui le rend parfaitement adapté aux problèmes de Machine Learning qui impliquent des données séquentielles. C'est l'un des algorithmes derrière les coulisses des incroyables réalisations de Deep Learning ces dernières années. Dans cet article, vous apprendrez les concepts de base du fonctionnement des réseaux neuronaux récurrents, les problèmes les plus importants et la façon de les résoudre.

Introduction

Les réseaux neuronaux récurrents (RNN) sont un type puissant et robuste de réseaux neuronaux et appartiennent aux algorithmes les plus prometteurs du moment car ils sont les seuls à avoir une mémoire interne.

Les RNN sont relativement anciens, comme beaucoup d'autres algorithmes d'apprentissage en profondeur. Ils ont été initialement créés dans les années 1980, mais ne peuvent montrer leur potentiel réel que depuis quelques années, en raison de l'augmentation de la puissance de calcul disponible, des quantités massives de données que nous avons aujourd'hui et de l'invention de LSTM dans les années 1990.

En raison de leur mémoire interne, les RNN sont capables de se souvenir de choses importantes concernant les données qu'ils ont reçues, ce qui leur permet d'être très précis dans la prédiction de ce qui va suivre.

C'est la raison pour laquelle ils sont l'algorithme préféré pour les données séquentielles comme les séries temporelles, la parole, le texte, les données financières, audio, vidéo, météo et bien plus parce qu'ils peuvent former une compréhension beaucoup plus profonde d'une séquence et de son contexte. algorithmes.

Les réseaux neuronaux récurrents produisent des résultats prédictifs dans des données séquentielles que d'autres algorithmes ne peuvent pas produire.

Mais quand avez-vous besoin d'utiliser un réseau neuronal récurrent?

Chaque fois qu'il y a une séquence de données et que la dynamique temporelle qui relie les données est plus importante que le contenu spatial de chaque trame individuelle

- Lex Fridman (MIT)

Depuis qu'ils sont utilisés dans le logiciel derrière Siri d'Apple et Google Translate, les réseaux neuronaux récurrents apparaissent partout.

Comment ils travaillent?

Nous allons d'abord discuter de certains faits importants sur les réseaux neuronaux Feed Forward «normaux», que vous devez savoir, pour comprendre correctement les réseaux neuronaux récurrents.

Mais il est également important que vous compreniez ce que sont les données séquentielles. Il s'agit essentiellement de données ordonnées, où les choses liées se suivent. Des exemples sont des données financières ou la séquence d'ADN. Le type le plus courant de données séquentielles est peut-être les données de séries chronologiques, qui sont juste une série de points de données répertoriés dans l'ordre chronologique.

Réseaux neuronaux à action directe (Feed-Forward Neural Networks)

 

 

RNN et Feed-Forward Neural Networks sont tous deux nommés d'après la façon dont ils canalisent l'information.

Dans un réseau de neurones Feed-Forward, l'information ne se déplace que dans une direction, de la couche d'entrée, à travers les couches cachées, à la couche de sortie. L'information se déplace directement à travers le réseau. Pour cette raison, l'information ne touche jamais un nœud deux fois.

Feed-Forward Neural Networks, n'ont aucune mémoire de l'entrée qu'ils ont reçu précédemment et sont donc mauvais dans la prédiction de ce qui va suivre. Parce qu'un réseau feedforward ne considère que l'entrée actuelle, il n'a aucune notion d'ordre dans le temps. Ils ne peuvent tout simplement pas se souvenir de ce qui s'est passé dans le passé, sauf de leur entraînement.

Réseaux neuronaux récurrents

Dans un RNN, l'information parcourt une boucle. Quand il prend une décision, il prend en compte l'entrée courante et aussi ce qu'il a appris des entrées qu'il a reçues précédemment.

Les deux images ci-dessous illustrent la différence dans le flux d'informations entre un RNN et un réseau neuronal

Feed-Forward.

Un RNN habituel a une mémoire à court terme. En combinaison avec un LSTM, ils ont aussi une mémoire à long terme, mais nous en discuterons plus loin.

Un autre bon moyen d'illustrer le concept de la mémoire d'un RNN est de l'expliquer par un exemple:

Imaginez que vous ayez un réseau de neurones feed-forward normal et que vous lui donniez le mot "neurone" comme une entrée et qu'il traite le mot caractère par caractère. Au moment où il atteint le caractère "r", il a déjà oublié "n", "e" et "u", ce qui rend presque impossible à ce type de réseau de neurones de prédire quel personnage viendrait ensuite.

Un réseau neuronal récurrent est capable de se souvenir exactement de cela, à cause de sa mémoire interne. Il produit une sortie, copie cette sortie et la boucle dans le réseau.

Les réseaux neuronaux récurrents ajoutent le passé immédiat au présent.

Par conséquent, un réseau neuronal récurrent a deux entrées, le présent et le passé récent. Ceci est important car la séquence de données contient des informations cruciales sur ce qui va suivre, ce qui explique pourquoi un RNN peut faire des choses que d'autres algorithmes ne peuvent pas faire.

Un réseau neuronal Feed-Forward attribue, comme tous les autres algorithmes Deep Learning, une matrice de pondération à ses entrées, puis produit la sortie. Notez que les RNN appliquent des poids à l'entrée actuelle et à l'entrée précédente. En outre, ils ajustent aussi leurs poids pour la descente en gradient et la propagation inverse à travers le temps, dont nous parlerons dans la prochaine section ci-dessous.

Notez également que, bien que les réseaux neuronaux Feed-Forward fassent correspondre une entrée à une sortie, les RNN peuvent correspondre à un à plusieurs, plusieurs à plusieurs (traduction) et plusieurs à un (classification d'une voix).

Backpropagation à travers le temps

Pour comprendre le concept de rétropropagation à travers le temps, vous devez d'abord comprendre les concepts de propagation avant et arrière. Je ne vais pas entrer dans les détails ici parce que ce serait loin de la limite de ce billet de blog, donc je vais essayer de vous donner une définition de ces concepts qui est aussi simple que possible, mais vous permet de comprendre le concept global de rétropropagation À travers le temps.

Dans les réseaux de neurones, vous faites essentiellement la propagation vers l'avant pour obtenir la sortie de votre modèle et vérifier si cette sortie est correcte ou incorrecte, pour obtenir l'erreur.

Maintenant vous faites Backward-Propagation, qui n'est rien d'autre que de revenir en arrière à travers votre réseau de neurones pour trouver les dérivées partielles de l'erreur par rapport aux poids, ce qui vous permet de soustraire cette valeur des poids.

Ces dérivées sont ensuite utilisées par Gradient Descent, un algorithme utilisé pour minimiser itérativement une fonction donnée. Ensuite, il ajuste les poids vers le haut ou vers le bas, en fonction de ce qui diminue l'erreur. C'est exactement la façon dont un réseau de neurones apprend pendant le processus de formation.

Donc, avec Backpropagation, vous essayez essentiellement de modifier les poids de votre modèle, pendant l'entraînement.

L'image ci-dessous illustre parfaitement le concept de la propagation vers l'avant et de la propagation vers l'arrière à l'exemple d'un réseau de neurones Feed Forward:

Backpropagation à travers le temps (BPTT) est fondamentalement juste un mot à la mode pour faire backpropagation sur un réseau neuronal récurrent déroulé. Unrolling est un outil de visualisation et de conceptualisation qui vous aide à comprendre ce qui se passe dans le réseau. La plupart du temps, lorsque vous implémentez un réseau neuronal récurrent dans les cadres de programmation communs, ils s'occupent automatiquement de la rétropropagation, mais vous devez comprendre comment cela fonctionne, ce qui vous permet de résoudre les problèmes qui surviennent au cours du processus de développement.

Vous pouvez voir un RNN comme une séquence de réseaux neuronaux que vous entraînez l'un après l'autre avec rétropropagation.

L'image ci-dessous illustre un RNN déroulé. Sur la gauche, vous pouvez voir le RNN, qui est déroulé après le signe égal. Notez qu'il n'y a pas de cycle après le signe égal puisque les différents pas de temps sont visualisés et que l'information est passée d'une étape à l'autre. Cette illustration montre également pourquoi un RNN peut être vu comme une séquence de réseaux neuronaux.

Si vous faites Backpropagation Through Time, il est nécessaire de faire la conceptualisation du déroulement, car l'erreur d'un pas de temps donné dépend du pas de temps précédent.

Dans BPTT, l'erreur est rétropropagée du dernier au premier pas de temps, tout en déroulant tous les pas de temps. Cela permet de calculer l'erreur pour chaque pas de temps, ce qui permet de mettre à jour les poids. Notez que BPTT peut être coûteux en calcul lorsque vous avez un nombre élevé de timesteps.

Mémoire à long terme à court terme LSTM

Les réseaux de longue mémoire à court terme (LSTM) sont une extension pour les réseaux neuronaux récurrents, qui étend leur mémoire. Par conséquent, il est bien adapté pour apprendre des expériences importantes qui ont des retards très longs entre les deux.

Les unités d'un LSTM sont utilisées comme unités de construction pour les couches d'un RNN, qui est alors souvent appelé un réseau LSTM.

Les LSTM permettent aux RNN de se souvenir de leurs intrants sur une longue période de temps. C'est parce que les LSTM contiennent leurs informations dans une mémoire, ce qui ressemble beaucoup à la mémoire d'un ordinateur parce que le LSTM peut lire, écrire et supprimer des informations de sa mémoire.

Cette mémoire peut être vue comme une cellule gated, où gated signifie que la cellule décide de stocker ou de supprimer des informations (par exemple si elle ouvre les portes ou non), en fonction de l'importance qu'elle attribue à l'information. L'attribution de l'importance se fait à travers des poids, qui sont également appris par l'algorithme. Cela signifie simplement qu'il apprend avec le temps quelle information est importante et laquelle ne l'est pas.

Dans un LSTM vous avez trois portes: entrée, oublier et sortie porte. Ces portes déterminent s'il faut ou non laisser entrer une nouvelle entrée (porte d'entrée), supprimer l'information car elle n'est pas importante (oublier la porte) ou la laisser influencer la sortie au pas de temps courant (porte de sortie). Vous pouvez voir une illustration d'un RNN avec ses trois portes ci-dessous:

Les portes d'un LSTM sont analogiques, sous la forme de sigmoïdes, ce qui signifie qu'elles vont de 0 à 1. Le fait qu'elles soient analogiques leur permet de faire une rétropropagation avec elles.

Les problèmes posés par la disparition des gradients sont résolus grâce à LSTM, car les gradients sont assez raides et l'entraînement est relativement court et la précision élevée.

Résumé

Vous avez maintenant une bonne compréhension du fonctionnement d'un réseau neuronal récurrent, ce qui vous permet de décider si c'est le bon algorithme à utiliser pour un problème d'apprentissage automatique donné.

Plus précisément, vous avez appris quelle est la différence entre un réseau neuronal Feed-Forward et un RNN, quand vous devez utiliser un réseau neuronal récurrent, comment fonctionne la rétropropagation et rétropropagation dans le temps, quels sont les principaux problèmes d'un RNN et comment fonctionne un LSTM.

 

Auteur

HOURRANE Oumaima

PhD Student

HASSAN 2 University, Casablanca

Faculty of Sciences  Ben M'Sik

Morocco