Comprendre la topologie LSTM

9

Comme beaucoup d'autres, j'ai trouvé les ressources ici et ici extrêmement utiles pour comprendre les cellules LSTM. Je suis convaincu que je comprends comment les valeurs circulent et sont mises à jour, et je suis assez confiant pour ajouter les "connexions judas" mentionnées, etc. également.

Dans mon exemple, j'ai à chaque pas de temps un vecteur d'entrée de longueur iet un vecteur de sortie de longueur o, où o < i.

Ce que ni l'une ni l'autre des pages ne couvre vraiment, c'est la manière dont elles sont organisées et formées.

J'ai 2 questions:

  1. Dans mes données d'entraînement, j'ai beaucoup de paires de vecteurs d'entrée / sortie correspondant à de très nombreuses unités de temps. Supposons que je forme le LSTM avec toutes les données. Puis-je ensuite exécuter une entrée de longueur arbitraire à travers elle? Ce que je veux dire, c'est que si j'ai des données de formation pour, disons, l'ensemble de 2015 et 2016, puis-je ensuite exécuter les données via le réseau pour 2017? Ou peut-être de 2017 à 2020?
  2. D'après ce que j'ai lu, j'ai l'impression d'avoir une cellule LSTM par unité de temps, donc si j'ai plusieurs unités de temps, j'ai plusieurs cellules LSTM chaînées. Étant donné que la longueur de la chaîne dépend de la longueur des données que je souhaite parcourir via le réseau, et qui est probablement arbitraire, je ne vois pas comment j'entraînerais cela, sauf si je ne forme qu'une seule cellule LSTM qui est ensuite dupliquée un nombre fois. Il semble donc que je formerais une seule cellule LSTM, puis les enchaînerais npour une liste de vecteur d'entrée donnée de longueur n? Même si une seule cellule LSTM contient un certain nombre d'éléments et de fonctions, il semble que ce ne soit pas suffisant pour capturer autant d'informations dans quelque chose d'aussi petit?

Merci. Y a-t-il d'autres ressources que je peux utiliser (relativement rapidement) qui m'aideront à comprendre les détails de la mise en œuvre? Les 2 liens ci-dessus ont donné une image fantastique de haut niveau de ce qui se passe mais ne parviennent pas à capturer ces détails plus fins.

AKrip4k
la source

Réponses:

1

Supposons que je forme le LSTM avec toutes les données. Puis-je ensuite exécuter une entrée de longueur arbitraire à travers elle?

Abstrait, oui. Cependant, certaines implémentations logicielles ont des règles strictes quant à savoir si les variables doivent être de taille fixe ou si elles peuvent être de tailles variables, donc en termes de programmation, vous devrez vérifier que vous implémentez les choses correctement.

Il semble donc que je formerais une seule cellule LSTM, puis enchaînerais n d'entre elles pour une liste de vecteurs d'entrée donnée de longueur n?

XtXt+1

Sycorax dit de réintégrer Monica
la source