Je veux discuter de certaines intuitions de haut niveau derrière les réseaux LSTM. Voici quelques questions pour aider à explorer les aspects du pourquoi :

  • Pourquoi/quand utiliserions-nous un LSTM plutôt qu’un réseau neuronal à action directe (FFNN) ?
  • Quels sont les avantages et les inconvénients des LSTM et comment se comparent-ils aux FFNN ?
  • Comment sont-ils différents des réseaux neuronaux récurrents traditionnels (RNN) ?

Réseaux neuronaux à action directe (FFNN)

Prenons d’abord un FFNN standard avec une architecture:Vers l'image de la science des données : *Compter le nombre de paramètres dans les modèles d'apprentissage profond à la main*

Comme vous le savez probablement, ce FFNN prend trois entrées, les traite en utilisant la couche cachée, et produit deux sorties. Nous pouvons étendre cette architecture pour incorporer plus de couches cachées, mais le concept de base tient toujours : les entrées entrent, elles sont traitées dans une direction, et elles sont sorties à la fin.

Ce concept est très bien expliqué par d’autres articles, donc je n’entrerai pas beaucoup plus en détail. L’essentiel à retenir est :

La condition principale qui sépare les FFNN des architectures récurrentes est que les entrées d’un neurone doivent provenir de la couche précédant ce neurone.

FFNN Wikipedia

Réseaux de neurones récurrents (RNN)

Les réseaux de neurones récurrents sont mathématiquement assez similaires aux modèles FFNN. Leur principale différence est que la restriction placée sur les FFNN n’est plus appliquée :

Les entrées d’un neurone peuvent provenir de n’importe quelle autre couche.

Une enquête sur l'application des réseaux de neurones récurrents à la modélisation statistique du langage

Vous verrez souvent cette architecture est souvent « roulée » dans une unité récurrente telle que la suivante :

Article moyen : Tout ce que vous devez savoir sur les réseaux neuronaux récurrents

Les unités « roulées » que vous pourriez voir dans les diagrammes d’architecture peuvent donc être faussement petites. Lorsque vous les déroulez, le réseau sera souvent assez profond !

RNN Wikipédia

Mémoire à long et court terme (LSTM)

LSTM sont un type spécial de RNN qui sont conçus pour s’attaquer au problème du gradient de vanishing/exploding.

Lorsque vous formez un RNN traditionnel, le réseau souffre souvent de gradients de vanishing/exploding : dérouler une unité récurrente donne un réseau très profond ! Si vous suivez l’algorithme de rétropropagation en utilisant des architectures RNN traditionnelles, les premières couches deviennent de moins en moins importantes au fur et à mesure que l’on se propage dans le réseau. Cela rend les RNN traditionnels enclins à oublier des informations, en particulier les données qui apparaissent de nombreux pas de temps avant le temps actuel.

Un exemple de cellule LSTM est illustré comme suit :

Architecture de la cellule LSTM

Cette structure est similaire à l’unité déroulée du RNN traditionnel, mais la différence clé avec le LSTM sont les portes : porte d’entrée, porte de sortie, et porte d’oubli. La fonction de ces portes est bien décrite par leurs noms:

  • la porte d’entrée contrôle les données qui entrent dans la cellule
  • la porte d’oubli contrôle la mesure dans laquelle les données restent dans la cellule
  • la porte de sortie contrôle la sortie de la cellule via la fonction d’activation

Ce post IO de github est une excellente introduction aux bases des LSTM. Il fait également un travail incroyable pour expliquer l’intuition derrière les mathématiques d’un LSTM.

LSTM Wikipedia

Propriétés et un exemple de cas d’utilisation de RNN

Les boucles de rétroaction prêtent mieux les réseaux neuronaux récurrents aux défis temporels. Le temps est pris en compte dans leur architecture !

Explorons un exemple :

Par exemple, vous utilisez un réseau pour prédire le prochain mot d’une phrase. Disons que l’on vous donne les entrées :

Affamée, Alice se rend au magasin le plus proche pour acheter

Un réseau neuronal récurrent pourrait oublier le premier mot « affamé » alors qu’un LSTM le propagerait idéalement. Un LSTM utiliserait donc le contexte qu’il a entendu précédemment dans la phrase pour deviner « nourriture » alors qu’un RNN pourrait deviner tout ce qui est acheté dans un magasin, en particulier étant donné une longue phrase ou plusieurs phrases.

Les mécanismes de déclenchement qui permettent ce type de mémoire sont bien expliqués par @StatsSorceress ici : Couche d’oubli dans un réseau neuronal récurrent (RNN) –

Les RNR sont conçus pour traiter des séquences. Cela peut être utilisé pour analyser la vidéo (séquences d’images), l’écriture/la parole (séquences de mots), etc.

LSTMs sont conçus pour laisser les informations importantes persister dans le temps. Les RNN vont souvent « oublier » au fil du temps.

Les RNF sont des systèmes sans mémoire ; après avoir traité une certaine entrée, ils oublient tout de cette entrée. Disons, par exemple, que nous formons un FFNN qui prend 5 mots comme entrées et prédit la prochaine sortie. Ce modèle recevrait alors l’entrée de l’exemple ci-dessus :

le magasin le plus proche pour acheter .

C’est clairement une perte de contexte, et nous obtiendrions un mauvais résultat.

Maintenant, vous pourriez demander, que se passerait-il si nous faisions un FFNN qui prenait beaucoup d’entrées de façon à inclure le mot « starving » dans ses entrées ? En d’autres termes, ne pourrions-nous pas augmenter le nombre d’entrées d’un FFNN pour représenter suffisamment les données antérieures ?

La réponse est oui, mais cette méthode est à la fois inefficace et souvent peu pratique. Disons, par exemple, que nous devons nous souvenir du contexte d’un paragraphe entier en arrière. Nous aurions besoin d’un très grand FFNN ! De plus, comment savoir combien de mots en arrière nous voulons comme contexte ? Est-ce que 20 mots seraient suffisants ? 30 ? 100 ? L’architecture LSTM élimine entièrement ces problèmes en laissant le réseau gérer une mémoire transitoire. Ce problème est exacerbé par les défis du traitement vidéo, car chaque image nécessitera beaucoup plus d’entrées que les tâches NLP.

Notez cependant que les unités LSTM sont intrinsèquement plus complexes sur le plan informatique que les unités d’un FFNN, de sorte que leur formation est souvent plus difficile et prend plus de temps. Malgré ces inconvénients, leur succès dans les défis liés aux données temporelles justifie clairement leur utilisation par rapport à un FFNN.

Articles

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.