Je me suis récemment intéressé aux LSTM et j'ai été surpris d'apprendre que les poids sont partagés dans le temps.
Je sais que si vous partagez les pondérations dans le temps, vos séquences temporelles d'entrée peuvent être de longueur variable.
Avec des poids partagés, vous avez beaucoup moins de paramètres à entraîner.
D'après ma compréhension, la raison pour laquelle on se tournerait vers un LSTM contre une autre méthode d'apprentissage est parce que vous pensez qu'il y a une sorte de structure / dépendance temporelle / séquentielle dans vos données que vous aimeriez apprendre. Si vous sacrifiez le luxe de longueur variable et acceptez un temps de calcul long, un RNN / LSTM sans poids partagés (c'est-à-dire pour chaque pas de temps dont vous avez des poids différents) fonctionnerait-il mieux ou y a-t-il quelque chose qui me manque?
la source
La perspective des «poids partagés» vient de la réflexion sur les RNN en tant que réseaux à action directe déroulés dans le temps. Si les poids étaient différents à chaque instant, ce ne serait qu'un réseau à action directe. Mais, je suppose qu'une autre façon de penser serait comme un RNN dont les poids sont une fonction variant dans le temps (et qui pourrait vous permettre de conserver la possibilité de traiter des séquences de longueur variable).
Si vous faisiez cela, le nombre de paramètres augmenterait linéairement avec le nombre de pas de temps. Ce serait une grosse explosion de paramètres pour des séquences de n'importe quelle longueur appréciable. Cela rendrait en effet le réseau plus puissant, si vous aviez les ressources de calcul massives pour l'exécuter et les données massives pour le contraindre. Pour de longues séquences, il serait probablement impossible de calculer et vous obtiendrez un sur-ajustement. En fait, les gens vont généralement dans la direction opposée en exécutant une rétropropagation tronquée dans le temps, ce qui ne déroule le réseau que pendant une courte période, plutôt que sur toute la séquence. Ceci est fait pour la faisabilité du calcul. Fait intéressant, les RNN peuvent toujours apprendre une structure temporelle qui s'étend au-delà de la longueur de troncature, car les unités récurrentes peuvent stocker de la mémoire d'avant.
la source
Je pense que puisque les RNN avec des récurrences cachées à cachées (et des poids partagés dans le temps) sont équivalents aux machines de Turing universelles, leur laisser des poids différents pour différents pas de temps ne les rend pas plus puissants.
la source