2 votes

Quelle est la différence entre le bloc Stabilizer() et le paramètre enable_self_stabilization ?

Quand dois-je utiliser l'un ou l'autre ? Les tutoriels et les exemples utilisent soit Sequential([Stabilizer(), Recurrence(LSTM(hidden_dim))]) ou LSTMP_component_with_self_stabilization à partir de Examples/common/nn.py. J'ai essayé de remplacer le premier par Recurrence(LSTM(hidden_dim, enable_self_stabilization=True)) dans l'exemple char_rnn.py, mais les résultats sont nettement moins bons.

4voto

Frank Seide MSFT Points 427

Le site Stabilizer multiplie son entrée avec un scalaire apprenable. Il a été démontré que cette simple astuce améliore considérablement la convergence et la stabilité. Elle présente certaines similitudes avec BatchNormalization . En général, lorsque vous pouvez utiliser BatchNormalization vous devriez essayer d'abord. Lorsque cela n'est pas possible, notamment à l'intérieur de boucles récurrentes, je recommande d'utiliser la méthode suivante Stabilizer à la place.

Normalement, vous devez l'injecter explicitement dans votre modèle. Un cas particulier est celui des fonctions d'étape récurrentes (par ex. LSTM ), qui comprennent Stabilizer à l'intérieur. Utilisez enable_self_stabilization=True pour permettre cela. Ces fonctions intégrées Stabilizer s'appliquent uniquement aux variables internes. Pour l'entrée principale, vous devez insérer un Stabilizer vous-même.

Si vous incluez des Stabilizer s, mais mettre enable_self_stabilization=False (par exemple, en tant que default_option ), alors ces explicites Stabilizer sont sans effet.

Ce n'est pas mon expérience que Stabilizer rend les choses plus difficiles. C'est généralement un moyen sûr d'améliorer la convergence. En revanche, elle modifie les plages numériques. Donc, si cela aggrave la convergence, je suggère d'expérimenter avec différents paramètres d'hyper-paramètres, par exemple en réduisant le taux d'apprentissage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X