7
votes

Qu'est-ce qu'un réseau de neurones récurrents, quel est un réseau de mémoire courte à court terme (LSTM) et est-ce toujours meilleur?

Tout d'abord, laissez-moi vous excuser pour entamer trois questions dans ce titre. Je ne suis pas sûr de quelle meilleure façon y a-t-il.

Je vais y aller. Je pense que je comprends bien bien les réseaux de neurones.

Mais LSTM m'échappe vraiment, et je me sens peut-être que c'est parce que je n'ai pas une très bonne compréhension de réseaux de neurones récurrents en général. J'ai traversé le cours de Hinton et Andrew Ng sur Coursera. Beaucoup d'entre elles n'a toujours pas de sens pour moi.

De ce que j'ai compris, les réseaux de neurones récurrents sont différents des réseaux de neurones en fourrière dans ces valeurs antérieures influencent la prochaine prédiction. Le réseau neuronal récurrent est généralement utilisé pour des séquences.

L'exemple que j'ai vu du réseau neuronal récurrent était l'ajout binaire. xxx

Un réseau de neurones récurrents prendrait la À droite la plupart 0 et 1 d'abord, sortie A 1. Ensuite, prenez ensuite le 1,1 Ensuite, sortie A zéro, et que le 1. Prenez le 0,0 suivant et sortie A 1 car il a porté le 1 du dernier calcul. Où stocke-t-il cela 1? Dans les réseaux d'avance d'alimentation, le résultat est fondamentalement: xxx

Comment un réseau de neurones récurrent est-il calculé? Je suis probablement tort, mais d'après ce que j'ai compris, les réseaux de neurones récurrents sont un réseau de neurones avantageux avec t couches cachées, t étant le nombre de châssis. Et chaque couche cachée prend l'entrée X à TIMESTEP T et ses sorties sont ensuite ajoutées aux entrées de la couche cachée respective suivante. xxx

mais même si je l'ai bien compris, je n'ai pas compris cela Il convient de voir l'avantage de le faire simplement en utilisant simplement des valeurs passées en tant qu'entrées d'un réseau d'alimentation normal (fenêtre coulissante ou autre qu'on appelle).

Par exemple, quel est l'avantage d'utiliser un réseau de neurones récurrent pour Ajout binaire au lieu de former un réseau d'avantages avec deux neurones de sortie. Un pour le résultat binaire et l'autre pour le transport? Puis prenez la sortie de report et rebranchez-le dans le réseau en ligne.

Cependant, je ne sais pas comment est-ce différent de simplement avoir des valeurs passées en tant qu'entrées dans un modèle en ligne. < P> Il me semble que plus il y a de temps, les réseaux de neurones récurrents ne sont qu'un désavantage sur les réseaux en fourrage en raison de la disparition de gradient. Ce qui m'amène à ma deuxième question, d'après ce que j'ai compris, LSTM est une solution au problème du dégradé de disparition. Mais je n'ai aucune idée de la façon dont ils travaillent. En outre, sont-ils simplement meilleurs que les réseaux de neurones récurrents, ou y a-t-il des sacrifices à l'utilisation d'un LSTM?


0 commentaires

3 Réponses :


6
votes

Un réseau de neurones en avant d'alimentation contient des connexions de couche n à couche n + 1.

Un réseau neuronal récurrent permet aux connexions de la couche n à couche n aussi.

Ces boucles permettent au réseau d'effectuer des calculs sur les données des cycles précédents, ce qui crée une mémoire réseau. La longueur de cette mémoire dépend d'un certain nombre de facteurs et est une zone de recherche active, mais pourrait être n'importe où des dizaines à des centaines de marches.

Pour en faire un peu plus clair, le porté 1 Dans votre exemple est stocké de la même manière que les entrées: dans un motif d'activation d'une couche neurale. C'est juste les connexions récurrentes (de la même couche) qui permettent à la 1 de persister le temps.

Évidemment, il serait infaisable de reproduire chaque flux d'entrée pendant plus de quelques étapes de temps passé et de choisir quels flux historiques sont importants serait très difficile (et conduisait à une flexibilité réduite).

LSTM est un modèle très différent que je connaisse uniquement par comparaison avec le modèle PBWM, mais dans cet examen, la LSTM a été en mesure de maintenir activement des représentations de neurones indéfiniment, alors je pense que cela est plus destiné au stockage explicite. Les RNN sont plus adaptés à l'apprentissage des séries chronologiques non linéaires, pas de stockage. Je ne sais pas s'il y a des inconvénients pour utiliser LSTM plutôt RNNS.


0 commentaires

3
votes

RNN et LSTM peuvent être des apprenants de séquence. RNN souffre de problème de point de disparition de ponte à gradient. Ce problème fait que le RNN ait du mal à se souvenir des valeurs des entrées passées après plus de 10 horaires d'env. (RNN peut se souvenir des entrées précédemment observées pour quelques étapes de temps uniquement)

LSTM est conçu pour résoudre le problème de point de dégradé en voie de disparition dans RNN. LSTM a la capacité de réduire les retards de temps entre les entrées. En d'autres termes, il est capable de rappeler des entrées allant jusqu'à 1000 étapes temporelles dans le passé (certains papiers ont même fait des sinistres, cela peut aller plus que cela). Cette capacité permet à LSTM un avantage d'apprendre de longues séquences avec des décalages longs. Reportez-vous à Alex Graves Ph.D. thèse Étiquetage de séquence supervisé Avec des réseaux de neurones récurrents pour certains détails. Si vous êtes nouveau à LSTM, je vous recommande Blog de Colah pour Super Explication simple et facile.

Toutefois, les avancées récentes de RNN affirment également qu'avec une initialisation minutieuse, RNN peut également apprendre de longues séquences comparables à la performance de la LSTM. Un moyen simple d'initialiser les réseaux récurrents d'unités linéaires rectifiées .


0 commentaires

9
votes

Qu'est-ce qu'un réseau de neurones récurrents?

L'idée de base est que les réseaux récurrents ont des boucles. Ces boucles permettent au réseau d'utiliser des informations provenant de passes précédents, qui sert de mémoire. La longueur de cette mémoire dépend d'un certain nombre de facteurs, mais il est important de noter qu'il n'est pas indéfini. Vous pouvez penser à la mémoire comme dégradant, les informations plus anciennes étant de moins en moins utilisables.

Par exemple, disons que nous voulons juste que le réseau fasse une chose: rappelez-vous si une entrée de plus tôt était 1, ou 0. Il n'est pas difficile d'imaginer un réseau qui passe continuellement le 1 autour d'une boucle. Cependant, chaque fois que vous envoyez un 0, la sortie dans la boucle est un peu inférieure (c'est une simplification, mais affiche l'idée). Après un certain nombre de passes, l'entrée de boucle sera arbitrairement faible, en faisant la sortie du réseau 0. Comme vous le savez, le problème de dégradé en voie de disparition est essentiellement identique, mais en sens inverse.

Pourquoi ne pas simplement utiliser une fenêtre d'entrées de temps?

Vous proposez une alternative: une fenêtre de glissement d'entrées passées étant fournie en tant qu'entrées de courant. Ce n'est pas une mauvaise idée, mais considérez ceci: tandis que la RNN peut avoir érodée au fil du temps, vous perdrez toujours l'intégralité de vos informations de temps après la fin de la fenêtre. Et pendant que vous supprimez le problème de la dégradation de la disparition, vous devriez augmenter plusieurs fois le nombre de poids de votre réseau. Avoir à former tous ces poids supplémentaires vous fera mal autant que (sinon pire que) disparaître le dégradé.

Qu'est-ce qu'un réseau LSTM?

Vous pouvez penser à LSTM en tant que type spécial de RNN. La différence est que LSTM est capable de maintenir activement des boucles auto-connectées sans les dégrader. Ceci est accompli à travers une activation quelque peu fantaisie, impliquant une sortie "mémoire" supplémentaire pour la connexion de bouclage automatique. Le réseau doit ensuite être formé pour sélectionner quelles données sont placées sur ce bus. En formant le réseau à expliciter Sélectionnez ce qu'il faut mémoriser, nous n'avons pas à vous soucier des nouvelles intrants détruisant des informations importantes et que le gradient de disparition n'affecte pas les informations que nous avons décidées de conserver.

Il y a deux inconvénients principaux:

  1. Il est plus coûteux de calculer la sortie du réseau et d'appliquer la propagation du dos. Vous avez simplement plus de mathématiques à faire en raison de l'activation complexe. Cependant, ce n'est pas aussi important que le deuxième point.
  2. La mémoire explicite ajoute plusieurs autres poids à chaque nœud, qui doivent tous être formés. Cela augmente la dimensionnalité du problème et rend potentiellement plus difficile de trouver une solution optimale.

    est-il toujours meilleur?

    Quelle structure dépend mieux d'un certain nombre de facteurs, tels que le nombre de nœuds dont vous avez besoin pour votre problème, la quantité de données disponibles et la fréquentation de votre réseau de la mémoire de votre réseau. Toutefois, si vous voulez seulement la réponse théorique, je dirais que cela donne une vitesse infinie de données et de vitesse informatique, un LSTM est le meilleur choix, mais il ne faut-il pas prendre cela comme un conseil pratique.


0 commentaires