Une fenêtre coulissante conduit à un sur-ajustement dans LSTM?

15

Vais-je suréquiper mon LSTM si je l'entraîne via l'approche à fenêtre coulissante? Pourquoi les gens ne semblent-ils pas l'utiliser pour les LSTM?

Pour un exemple simplifié, supposons que nous devons prédire la séquence de caractères:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Est-ce mauvais (ou mieux?) Si je continue à entraîner mon LSTM avec les minibatches suivants:

A B C D E F G H I J K L M N, backprop, erase the cell

B C D E F G H I J K L M N O, backprop, erase the cell

 .... and so on, shifting by 1 every time?

Auparavant, je l'ai toujours formé comme:

A B C D E F G H I J K L M N,  backprop, erase the cell

O P Q R S T U V W X Y Z,  backprop, erase the cell

Au lieu de décaler d'un, serait-il préférable de faire glisser la fenêtre de 2 entrées à la place, etc.? Qu'est-ce que cela signifierait (en termes de précision / sur-ajustement)?


De plus, si je devais faire l'approche à fenêtre coulissante dans un réseau à action directe, cela entraînerait-il un surajustement? Je suppose que oui, car le réseau est exposé aux mêmes régions d'information pendant très longtemps. Par exemple, il est exposé E F G H I J Kpendant longtemps.


Éditer:

N'oubliez pas que l'état des cellules est effacé entre les lots d'entraînement, de sorte que le LSTM aura un "marteau à tête" à ces moments. Il est incapable de se rappeler ce qui était avant OPQRSTUVWXYZ. Cela signifie que le LSTM ne peut jamais apprendre que "O" suit le "M".

Alors, j'ai pensé (donc toute ma question), pourquoi ne pas lui donner un lot intermédiaire (qui se chevauchent) entre ... et dans ce cas, pourquoi ne pas utiliser plusieurs minibatches qui se chevauchent - pour moi, cela fournirait une formation plus fluide? En fin de compte, cela signifierait une fenêtre coulissante pour un LSTM.


Quelques informations utiles que j'ai trouvées après acceptation de la réponse:

d'ici

Le premier mot de la traduction anglaise est probablement fortement corrélé avec le premier mot de la phrase source. Mais cela signifie que le décodeur doit tenir compte des informations d'il y a 50 étapes, et que ces informations doivent être en quelque sorte codées dans le vecteur. Les réseaux de neurones récurrents sont connus pour avoir des problèmes face à de telles dépendances à longue portée. En théorie, les architectures comme les LSTM devraient être capables de gérer cela, mais dans la pratique, les dépendances à longue portée posent toujours problème.

Par exemple, les chercheurs ont découvert que l'inversion de la séquence source (la réinjection dans le codeur) produit des résultats nettement meilleurs car elle raccourcit le chemin du décodeur vers les parties pertinentes du codeur. De même, alimenter une séquence d'entrée deux fois semble également aider un réseau à mieux mémoriser les choses. Par exemple, si un exemple de formation est «John rentra chez lui», vous donneriez «John rentra chez moi John rentra chez lui» au réseau comme entrée.

Modifier après avoir accepté la réponse:

Plusieurs mois après, je suis plus enclin à utiliser l'approche à fenêtre coulissante, car elle utilise mieux les données. Mais dans ce cas, vous ne voulez probablement pas entraîner BCDEFGHIJKLMNO juste après ABCDEFGHIJKLMNO. Au lieu de cela, mélangez vos exemples pour «intégrer» progressivement et uniformément toutes les informations dans votre LSTM. Donnez-lui HIJKLMNOPQRSTU après ABCDEFGHIJKLMNO etc. C'est directement lié à l'oubli catastrophique. Comme toujours, surveillez attentivement l'ensemble de validation et de test et arrêtez dès que vous voyez que leurs erreurs augmentent régulièrement

En outre, le problème "marteau à tête" peut être amélioré, en utilisant des dégradés synthétiques. Voir son avantage ici: (la réponse liée discute de son avantage des séquences longues) /datascience//a/32425/43077

Kari
la source

Réponses:

9

Bien que la réponse précédente de @Imran soit correcte, je pense qu'il est nécessaire d'ajouter une mise en garde: il existe des applications où les gens alimentent une fenêtre coulissante dans un LSTM. Par exemple, ici , pour encadrer la prévision comme un problème d'apprentissage supervisé.

4(mn+n2+n)mn

Étant donné que les LSTM ne nécessitent pas d'entrée de taille fixe, ils peuvent trouver par eux-mêmes le nombre d'analyse optimal. Cependant, si vous avez effectué une analyse autorégressive antérieure et décidé que, par exemple, le pas de temps actuel est le plus corrélé avec le 10e pas de temps précédent, et non corrélé avec le 11e ou tout pas de temps plus loin dans le passé, alors vous pourriez peut-être vous épargner du temps d'entraînement en vous alimentant en séquences de longueur fixe. Cependant, ce genre de choses va à l'encontre de l'objectif d'un LSTM.

Si vos données ne sont pas suffisamment riches pour un LSTM, je recommanderais d'essayer quelque chose de beaucoup plus simple, comme un modèle autorégressif, et de progresser.

EDIT (répondant à un commentaire):

Les séquences qui se chevauchent sont utilisées en entrée, en particulier lorsque la séquence est très longue (bien que, bien sûr, «longue» soit relative). Bien que les LSTM soient meilleurs qu'un RNN vanille pour les séquences longues, ils peuvent toujours avoir du mal à se souvenir des pas de temps depuis le début d'une séquence si la séquence est très longue. Cela a conduit à des choses comme le LSTM bidirectionnel, qui lit la séquence en avant et en arrière, améliorant l'exposition du réseau au début et à la fin de chaque séquence d'entrée. Le principe est le même pour les séquences qui se chevauchent, même si je dirais que les séquences qui se chevauchent est plus intuitive.

StatsSorcière
la source
Merci, je-je ne vois toujours pas si LSTM devrait / ne devrait pas être formé avec des lots qui ne se chevauchent pas. Le message que vous avez aimé est précieux, mais il ne traite que des réseaux Feed-Forward et ne traite pas des avantages / dangers des minibatches chevauchants de LSTM pendant la formation. @Imran n'a pas non plus discuté de l '"anti-prescription" contre les minibatches qui se chevauchent - mon premier commentaire à son article.
Kari
J'ai modifié ma question pour inclure le commentaire
Kari
Beaucoup de bonnes informations!
Imran
@Kari, j'ai modifié ma réponse. Est ce que ça aide?
StatsSorceress
5

Les LSTM ne nécessitent pas de fenêtre coulissante d'entrées. Ils peuvent se souvenir de ce qu'ils ont vu dans le passé, et si vous alimentez les exemples de formation un par un, ils choisiront la fenêtre de taille appropriée pour se souvenir d'eux-mêmes.

Les LSTM sont déjà sujettes au sur-ajustement, et si vous alimentez de nombreuses données redondantes avec une fenêtre coulissante, alors oui, elles sont susceptibles de sur-équiper.

D'un autre côté, une fenêtre coulissante est nécessaire pour la prévision de séries chronologiques avec Feedforward Neural Networks, car les FNN nécessitent une entrée de taille fixe et n'ont pas de mémoire, c'est donc le moyen le plus naturel de leur fournir des données de séries chronologiques.

Le fait que le FNN soit ou non surchargé dépend de son architecture et de vos données, mais toutes les techniques de régularisation standard s'appliqueront dans ce cas. Par exemple, vous pouvez essayer de choisir un réseau plus petit, la régularisation L2, le décrochage, etc.

Imran
la source
Merci! Je dirais que l'état de la cellule est effacé entre les lots d'entraînement, donc le LSTM aura un "marteau à tête" à ces moments. Il est incapable de se rappeler ce qui était avant OPQRSTUVWXYZ. Cela signifie que LSTM ne peut jamais apprendre que "O" suit le "M". J'ai donc pensé, pourquoi ne pas lui donner un lot intermédiaire (qui se chevauchent) entre les deux ... et dans ce cas, pourquoi ne pas utiliser plusieurs minibatches qui se chevauchent - pour moi, cela fournirait une formation plus fluide?
Kari
En fin de compte, cela signifierait une fenêtre coulissante pour un LSTM
Kari
Il n'est pas nécessaire d'effacer l'état des cellules entre les lots d'entraînement, bien que la rétropropagation plus en arrière ne soit bien sûr pas possible.
Jan van der Vegt
Je l'ai essayé, et - même avec un taux d'apprentissage de 0, l'erreur montait et descendait en petite quantité car des états de cellule incorrects étaient réutilisés comme «héritage» pendant l'entraînement. Je ne pouvais pas empiler plus de 6 couches avec cette approche - elle devenait trop chaotique et ne convergeait pas. Cependant, réinitialiser l'état de la cellule à zéro après chaque Backprop m'a permis d'empiler 150 couches avec 64 neurones dans chaque couche et de l'entraîner avec un taux d'apprentissage de 0,001 et un élan de 0,9 (j'utilise LayerNormalization, c'est pourquoi le taux d'apprentissage est si important dans mon cas)
Kari
1
Cela signifie qu'avec les "états de cellule hérités", LSTM devient instable et peu fiable - il commence à travailler sur un nouveau mini-lot en basant ses décisions sur le dernier état de cellule (du mini-lot précédent) qui n'a pas été corrigé dans sa totalité. Ainsi, l'effacement de l'état de la cellule supprime cette faille fondamentale, mais rend l'expérience de l'amnésie LSTM
Kari