Question

Vais-je surfiler mon LSTM si je l'entraîne via l'approche de la 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 à former mon LSTM avec les minibatchs 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 passer par un, serait-il préférable de glisser la fenêtre par 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 de la fenêtre coulissante dans un réseau d'alimentation, cela entraînerait-il un sur-ajustement? 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 de cellule est effacé entre les lots d'entraînement, donc le LSTM aura un "marteau à tête" à ces moments. Il est incapable de se souvenir Ce qui était avant Opqrstuvwxyz. Cela signifie que le LSTM est incapable d'apprendre que "O" suit le "M".

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


Des informations utiles que j'ai trouvées après la réponse ont été acceptées:

d'ici

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

Par exemple, les chercheurs ont découvert que l'inversion de la séquence source (l'alimentant en arrière dans le codeur) produit des résultats significativement meilleurs car il raccourcit le chemin du décodeur aux parties pertinentes de l'encodeur. De même, l'alimentation d'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 est rentré chez lui", vous donneriez "John rentre à la maison, John est rentré chez lui" sur le réseau comme une entrée.

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

Plusieurs mois après, je suis plus enclin à utiliser l'approche de la 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élanger vos exemples, pour "brosser" progressivement et uniformément " tout des informations dans votre LSTM. Donnez-le hijklmnopqrstu après abcdefghijklmno etc. C'est directement lié à l'oubli catastrophique. Comme toujours, surveillez de près la validation et les tests, et arrêtez-vous dès que vous voyez leurs erreurs augmenter régulièrement

De plus, le problème du "marteau à tête" peut être amélioré, en utilisant des gradients synthétiques. Voir son avantage ici: (La réponse liée discute de son avantage des séquences longues) https://datascience.stackexchange.com/a/32425/43077

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top