Recorte de degradado al entrenar redes neuronales profundas

10

¿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)

pir
fuente

Respuestas:

4

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.

Miguel
fuente
1
No estoy seguro de si se supone que el contexto de esta respuesta excluye los RNN, pero si no lo hace, ambas soluciones propuestas no son mejores que el recorte de gradiente, especialmente en el caso de los RNN.
Alex R.
Lo siento, estaba pensando más en el contexto de las CNN, siéntase libre de editar
Miguel