Quand voudrait-on effectuer un découpage de gradient lors de la formation d'un RNN ou CNN? Je suis particulièrement intéressé par ce dernier. Quelle serait une bonne valeur de départ pour l'écrêtage? (il peut bien sûr être réglé)
Quand voudrait-on effectuer un découpage de gradient lors de la formation d'un RNN ou CNN? Je suis particulièrement intéressé par ce dernier. Quelle serait une bonne valeur de départ pour l'écrêtage? (il peut bien sûr être réglé)
Vous souhaitez effectuer un écrêtage de dégradé lorsque vous rencontrez le problème de la disparition des dégradés ou de l'explosion des dégradés. Cependant, pour les deux scénarios, il existe de meilleures solutions:
Le gradient explosif se produit lorsque le gradient devient trop grand et que vous obtenez un débordement numérique. Cela peut être facilement résolu en initialisant les poids du réseau à des valeurs plus petites. Si cela ne fonctionne pas, il y a probablement un bogue dans le code.
Le gradient de fuite se produit lorsque l'optimisation est coincée dans un point de selle, le gradient devient trop petit pour que l'optimisation progresse. Cela peut être résolu en utilisant une descente de gradient avec une impulsion ou une hélice RMS ou les deux (également connu sous le nom d'optimiseur Adam).
Les valeurs de départ pour la limite supérieure de l'écrêtage du gradient seraient quelque chose de plus petit que le plus grand nombre que la variable peut prendre. Pour la borne inférieure, je dirais que c'est spécifique au problème, mais commencez peut-être par quelque chose comme 1e-10.