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 K
pendant 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:
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