Comment sélectionner le nombre de couches cachées et le nombre de cellules mémoire dans un LSTM?

28

J'essaie de trouver des recherches existantes sur la façon de sélectionner le nombre de couches cachées et la taille de celles-ci d'un RNN basé sur LSTM.

Existe-t-il un article dans lequel ce problème est étudié, c'est-à-dire combien de cellules de mémoire doit-on utiliser? Je suppose que cela dépend entièrement de l'application et dans quel contexte le modèle est utilisé, mais que dit la recherche?

Stephen Johnson
la source

Réponses:

15

Votre question est assez large, mais voici quelques conseils:

Pour les réseaux à action directe, consultez cette question :

La réponse de @ doug a fonctionné pour moi. Il existe une règle de base supplémentaire qui aide à résoudre les problèmes d'apprentissage supervisé. La limite supérieure du nombre de neurones cachés qui n'entraînera pas de sur-ajustement est:

Nh=Ns(α(Ni+No))

NiNoNsα
alphaNs(Ni+No)α

Pour une procédure automatisée, vous commenceriez avec un alpha de 2 (deux fois plus de degrés de liberté dans vos données d'entraînement que votre modèle) et progresseriez jusqu'à 10 si l'erreur pour les données d'entraînement est considérablement plus petite que pour la validation croisée ensemble de données.

Et spécifiquement sur les LSTM, vous voudrez peut-être vérifier cela .

Mais le point principal: il n'y a pas de règle pour la quantité de nœuds cachés que vous devez utiliser, c'est quelque chose que vous devez déterminer pour chaque cas par essais et erreurs .

Thomas W
la source
7

Sélectionnez le nombre de couches masquées et le nombre de cellules de mémoire dans LSTM dépend toujours du domaine d'application et du contexte où vous souhaitez appliquer ce LSTM.

Pour les calques masqués. L'introduction de couche (s) cachée (s) permet au réseau de présenter un comportement non linéaire.

Le nombre optimal d'unités cachées pourrait facilement être plus petit que le nombre d'entrées, il n'y a pas de règle comme multiplier le nombre d'entrées avec N ... Si vous avez beaucoup d'exemples de formation, vous pouvez utiliser plusieurs unités cachées, mais parfois juste 2 unités cachées fonctionnent mieux avec peu de données. Habituellement, les gens utilisent une couche cachée pour des tâches simples, mais de nos jours, les recherches sur les architectures de réseaux de neurones profonds montrent que de nombreuses couches cachées peuvent être utiles pour des problèmes d'objet difficile, de caractère manuscrit et de reconnaissance de visage.

I assume it totally depends on the application and in which context the model is being used.

Maheshwar Ligade
la source
5
La non-linéarité est due à l'utilisation de fonctions d'activation non linéaires. Le nombre de couches ne fait qu'augmenter l'expressivité du NN. Vous devez corriger cette réponse. Les combinaisons de fonctions linéaires sont toujours des fonctions linéaires (donc, si vous aviez plusieurs couches qui n'effectuaient qu'une combinaison linéaire des entrées, alors la combinaison de ces couches serait toujours linéaire).
nbro
4

En général, il n'existe aucune directive sur la façon de déterminer le nombre de couches ou le nombre de cellules de mémoire dans un LSTM.

Le nombre de couches et de cellules nécessaires dans un LSTM peut dépendre de plusieurs aspects du problème:

  1. La complexité de l'ensemble de données. La quantité de fonctionnalités, le nombre de points de données, etc.

  2. Le processus de génération de données. Voici un exemple de la façon dont le processus de génération de données peut jouer un rôle important.

Ex - Prédiction des prix du pétrole par rapport à la prédiction du PIB d'une économie bien comprise. Ce dernier est beaucoup plus facile que le premier. Ainsi, la prévision des prix du pétrole pourrait tout aussi bien nécessiter un plus grand nombre de cellules de mémoire LSTM pour prédire avec la même précision par rapport au PIB.

  1. La précision requise pour le cas d'utilisation. Le nombre de cellules de mémoire en dépendra fortement . Si le but est de battre l'état de l'art - il faut en général plus de cellules LSTM. Comparez cela à l'objectif de proposer des prévisions raisonnables - qui nécessiteraient un nombre moindre de cellules LSTM.

Je suit ces étapes lors de la modélisation à l'aide de LSTM:

  1. Essayez une seule couche cachée avec 2 ou 3 cellules mémoire. Découvrez ses performances par rapport à une référence. S'il s'agit d'un problème de série chronologique, je fais généralement une prévision à partir des techniques classiques de série chronologique comme référence.

  2. Essayez d'augmenter le nombre de cellules de mémoire. Si les performances n'augmentent pas beaucoup, passez à l'étape suivante.

  3. Commencez à rendre le réseau profond, c'est-à-dire ajoutez une autre couche avec un petit nombre de cellules de mémoire.

De côté :

Il n'y a pas de limite à la quantité de travail qui peut être consacrée pour atteindre ces minima globaux de la fonction de perte et régler les meilleurs hyper-paramètres. Donc, se concentrer sur l'objectif final de la modélisation devrait être la stratégie plutôt que d'essayer d'augmenter la précision autant que possible.

La plupart des problèmes peuvent être traités en utilisant 2-3 couches du réseau.

naïve
la source