Les réseaux de neurones récurrents | Reccurent neural network - Deep learning -

Les-reseaux-de-neurones-reccurent
Les réseaux de neurones récurrents sont utilisé pour le traitement de série temporelle. Il peuvent être utilisé pour diverse applications tels que la prédiction du cours des d'actions, la reconnaissance vocales, ou encore la reconnaissance d'actions dans des vidéos. Ce type de réseau, se distingue des autres types de réseaux neuronaux de part sa capacité à retenir les observations qui lui ont précédemment été soumise et à en déduire la réponse en fonction des information extraites de ces observation. Il est l'équivalent donc de la mémoire de travaille à cour-terme que nous avons.

Comment fonctionne un réseau de neurones récurrents



Cette propriété de rétention d'information lui est permise de par sa topologie particulière qui n'est pas orienté comparativement au réseau feed foward classique tels que le perceptron multi-couche ou l'information circule de l'entrée vers la sortie. Mais surtout du fait qu'un neurone récurrent comme son nom l'indique est connecté à lui même et donc son état peut évoluer au fur et à mesure de la réception des informations induisant ainsi l'effet mémoire.





Perceptron multi-couches







Les réseaux de neurones réccurent leurs topologie particulière  des informations précédemment reçus. C'est grâce à cette effet mémoire qu'il est possible de créer des réseaux neuronaux capable de prendre en compte le contexte dans le traitement des données reçus. 

Ces réseaux à large « mémoire court-terme » ont notamment révolutionné la reconnaissance de la voix par les machines (Speech Recognition) et la compréhension et la génération de texte (Natural Langage Processing).










Réseau de neurones récurrent









Réseau de neurones récurrent déroulé

Entraînement des réseaux de neurones récurrents

L'entraînement des réseau neuronaux à propagation avant se fait en utilisant l'algorithme de rétropropagation du gradient. Ce dernier consiste à soumettre des exemples dont on connait déjà le résultat au réseau de neurones et à utiliser l'écart entre le résultat espéré et le résultat obtenu afin d'améliorer la fonction modéliser par le réseau en modifiant les poids de ce dernier. 

Mais qu'en est t'il pour les réseau neuronaux récurrents? 

L'entraînement des réseaux neuronaux est nettement moins aisé que celui des réseaux neuronaux classique du fait justement de la présence des connections réccurente. 

Comment peut-on corriger des poids récurrent? 

Si on se met à corriger le poids récurrent tels quel, il serait impossible d'entraîner le réseau car cela entraînerait une infinité de gradient. C'est pour cela que lors de son entraînement, le réseau de neurones récurrents sera déroulé selon son évolution au cours du temps pour les séquences reçus en entrée. Le schéma ci-dessous illustre cette propriété.





Ce nouvel algorithme se nomme :la rétropropagation au travers du temps où "Backpropagation through time" (BPTT) en anglais. 

Seulement, vous devez savoir, comme je l'ai dit dans mon article sur le percerptron multi-couches, qu'il ne sert à rien pour un perceptron multi-couches d'avoir plus de 2 couches. En effet, au delà de ce nombre, la performance en classification où en régression selon ce que l'on souhaite faire décroît.  

Hors dans le cas d'un réseau neuronale récurrent, quand l'on lui présente une longue séquence lors de son entraînement et que l'on le déroule comme je l'ai dit plus haut, nous obtenons un réseau très profond qui entraîne inévitablement une baisse de la performance du réseau et rends l'algorithme de rétropropagation innefficient pour son entraînement. 

Ce problème est couramment connu dans la communauté sous le nom de :exploding or Vanishing gradient. 

Exploding or vanishing car lors de l'entraînement soit le gradient devient trop grand (nettement supérieur au poids du réseaux) orientant alors les nouveaux poids générer lors de la rétropropagation du gradients vers des valeurs abérente. Ou encore vanishing "qui disparait" en français (trop petit pour avoir la moindre influence) qui entraîne le réseau dans un entraînement ou il n'avance strictement plus, Les nouveaux poids sont alors les poids de l'itération précédente. L'entraînement n'a aucun effet.

 Afin de résoudre cela , la communauté a inventé nombre de méthode tels que les echo state network (ESN), ...., mais à ce jour, la plus populaire et efficace qui à su s'imposé dans l'industrie reste le réseau de neurones LSTM.  

Long- short term memory network (LSTM)

Les  réseaux de neurones LSTM ont été créé afin de résoudre le Vanishing gradient problem 


Forget gate 

Input gate 

Output Gate



Qu'elle sont les différents types de réseaux de neurones récurents?

Il existe de nombreux type de réseaux de neurones récurrents tels que :

Pleinement récurrent "fully récurrent"

Réseaux de hopfield Hopfield network 

Réseaux récurrent à porte 'Gated reccurent unit' (GRU)

Long Short Term memory network (LSTM)

echo state network (ESN)

Machine à état liquide (MEL) - liquid state machine (LSM) 


Seulement en pratique seul les LSTM et GRU sont utilisé dans l'industrie. 


Applications des réseaux de neurones récurrents

Traduction automatique de langage

Reconnaissance vocale

Prédiction de séries temporelles (Prix, consommation électrique, marché financier)

Reconnaissance d'action dans les vidéos

Génération de texte 

Chatbot

Correction orthographique grammaticale automatique

Reconnaissance de caractère manuscrits

Analyse et classification de texte (emails, commentaire, etc.....)





Source :

https://machinelearningmastery.com/crash-course-recurrent-neural-networks-deep-learning/

https://analyticsindiamag.com/overview-of-recurrent-neural-networks-and-their-applications/

https://en.wikipedia.org/wiki/Recurrent_neural_network

https://www.superdatascience.com/blogs/recurrent-neural-networks-rnn-the-idea-behind-recurrent-neural-networks/








 

 

.