RNN avec la régularisation L2 cesse d'apprendre

10

J'utilise un RNN bidirectionnel pour détecter un événement d'occurrence déséquilibrée. La classe positive est 100 fois moins souvent que la classe négative. Sans utilisation de régularisation, je peux obtenir une précision de 100% sur le train et de 30% sur le jeu de validation. J'active la régularisation l2 et le résultat est seulement 30% de précision sur le train aussi, au lieu d'un apprentissage plus long et 100% de précision sur le jeu de validation.

Je pensais que mes données étaient peut-être trop petites, donc juste pour l'expérience, j'ai fusionné le train avec le test que je n'avais pas utilisé auparavant. La situation était la même que j'utiliserais la régularisation l2, ce que je n'avais pas maintenant. J'obtiens 30% de précision sur le train + test et validation.

En cours d'utilisation 128 unités cachées et 80 pas de temps dans les expériences mentionnées Lorsque j'ai augmenté le nombre d'unités cachées à 256, je peux à nouveau suréquiper le train + l'ensemble de test pour obtenir une précision de 100% mais toujours seulement 30% sur l'ensemble de validation.

J'ai essayé tant d'options pour les hyperparamètres et presque aucun résultat. Peut-être que l'entropie croisée pondérée est à l'origine du problème, dans des expériences données, le poids sur la classe positive est de 5. En essayant des poids plus grands, les résultats sont souvent pires autour de 20% de précision.

J'ai essayé les cellules LSTM et GRU, aucune différence.

Les meilleurs résultats que j'ai obtenus. J'ai essayé 2 couches cachées avec 256 unités cachées, cela a pris environ 3 jours de calcul et 8 Go de mémoire GPU. J'ai obtenu une précision d'environ 40 à 50% avant qu'il ne recommence à sur-ajuster alors que la régularisation l2 était activée mais pas si forte.

J'utilise des optimiseurs Adam, d'autres ne fonctionnaient pas aussi bien. La fonctionnalité que j'ai est suffisante, car en utilisant la machine d'état, je peux obtenir une précision de 90%. Dans cette machine d'état, la fonctionnalité principale est la somme et le seuillage basés sur d'autres propriétés de fonctionnalité et sa longueur variable, parfois 10, 20 horodatages, qui parle de la fonctionnalité.

Y a-t-il des directives générales que faire dans cette situation? Je n'ai rien trouvé.

Andrej Fogelton
la source

Réponses:

11

L'article de Bengio et al « Sur la difficulté de former des réseaux de neurones récurrents » donne une idée de la raison pour laquelle la régularisation de L2 pourrait tuer les performances des RNN. Essentiellement, la régularisation L1 / L2 des cellules RNN compromet également la capacité des cellules à apprendre et à conserver des informations dans le temps.

L'utilisation d'une pénalité L1 ou L2 sur les poids récurrents peut aider à exploser les gradients. En supposant que les poids sont initialisés à de petites valeurs, la plus grande valeur singulière de est probablement inférieure à 1. Le terme L1 / L2 peut garantir que pendant l'entraînement reste inférieur à 1, et dans ce régime les gradients ne peuvent pas exploser . Cette approche limite le modèle à un attracteur ponctuel à l'origine, où toute information insérée dans le modèle s'éteint exponentiellement rapidement. Cela empêche le modèle d'apprendre les réseaux de générateurs et ne peut pas présenter de traces de mémoire à long terme.λ1Wrecλ1

Sycorax dit de réintégrer Monica
la source