¿Cuándo se querría realizar un recorte de gradiente al entrenar un RNN o CNN? Estoy especialmente interesado en lo último. ¿Cuál sería un buen valor inicial para el recorte? (por supuesto, se puede ajustar)
fuente
¿Cuándo se querría realizar un recorte de gradiente al entrenar un RNN o CNN? Estoy especialmente interesado en lo último. ¿Cuál sería un buen valor inicial para el recorte? (por supuesto, se puede ajustar)
Debería realizar un recorte de degradado cuando tenga el problema de desvanecer degradados o explotar degradados. Sin embargo, para ambos escenarios, hay mejores soluciones:
El gradiente explosivo ocurre cuando el gradiente se vuelve demasiado grande y obtienes un desbordamiento numérico. Esto se puede solucionar fácilmente inicializando los pesos de la red a valores más pequeños. Si esto no funciona, es probable que haya un error en el código.
El gradiente de fuga ocurre cuando la optimización se atasca en un punto de silla de montar, el gradiente se vuelve demasiado pequeño para que la optimización avance. Esto se puede solucionar mediante el uso de descenso de gradiente con impulso o RMS prop o ambos (también conocido como el optimizador Adam).
Los valores iniciales para el límite superior del recorte de gradiente serían algo más pequeños que el número más grande que puede tomar la variable. Para el límite inferior, diría que es un problema específico, pero tal vez comience con algo como 1e-10.