32 votos

¿Cómo utilizar correctamente la parada temprana para el entrenamiento de una red neuronal profunda?

Tengo un modelo de red neuronal profunda y necesito entrenarlo en mi conjunto de datos que consta de unos 100.000 ejemplos, mis datos de validación contienen unos 1000 ejemplos. Debido a que se necesita tiempo para entrenar cada ejemplo (alrededor de 0,5s para cada ejemplo) y con el fin de evitar el sobreajuste, me gustaría aplicar la parada temprana para evitar el cálculo innecesario. Pero no estoy seguro de cómo entrenar correctamente mi red neuronal con parada temprana, hay varias cosas que no entiendo bien ahora:

  • ¿Cuál sería una buena frecuencia de validación? ¿Debo comprobar mi modelo en los datos de validación al final de cada época? (Mi tamaño de lote es 1)

  • ¿Es posible que las primeras épocas den un resultado peor antes de que empiece a converger a un valor mejor? En ese caso, ¿deberíamos entrenar nuestra red durante varias épocas antes de comprobar si se detiene pronto?

  • ¿Cómo manejar el caso cuando la pérdida de validación puede subir y bajar? En ese caso, una parada temprana podría impedir que mi modelo siguiera aprendiendo, ¿verdad?

Gracias de antemano.

23voto

Franck Dernoncourt Puntos 2128

¿Cuál sería una buena frecuencia de validación? ¿Debo comprobar mi modelo con los datos de validación al final de cada época? (Mi tamaño de lote es 1)

No hay una regla de oro, el cálculo del error de validación después de cada época es bastante común. Dado que el conjunto de validación es mucho más pequeño que el conjunto de entrenamiento, no ralentizará mucho el entrenamiento.

¿Es posible que las primeras épocas den un resultado peor antes de que empiece a converger a un valor mejor?

En ese caso, ¿debemos entrenar nuestra red durante varias épocas antes de comprobar si se detiene pronto?

Podrías, pero entonces la cuestión es cuántas épocas debes saltar. Así que en la práctica, la mayoría de las veces la gente no se salta ninguna época.

¿Cómo manejar el caso cuando la pérdida de validación puede subir y bajar? En ese caso, una parada temprana podría impedir que mi modelo siguiera aprendiendo, ¿no?

La gente suele definir una paciencia, es decir, el número de épocas que hay que esperar antes de detenerse anticipadamente si no hay progreso en el conjunto de validación. La paciencia suele establecerse entre 10 y 100 (10 o 20 es lo más común), pero realmente depende de tu conjunto de datos y de tu red.

Ejemplo con paciencia = 10:

enter image description here

15voto

Pro Q Puntos 108

Hace poco me encontré con un artículo titulado "Parada temprana ¿pero cuándo?" de Lutz Prechelt que tiene muchos ejemplos estupendos de cómo utilizar la parada temprana con explicaciones claras de lo que hace cada uno y fórmulas para ellos.

Espero que echar un vistazo a eso pueda ayudar.

4voto

SilentSteel Puntos 155

Para añadir a otras excelentes respuestas, también puedes - no parar. Yo suelo hacerlo:

  • ejecutar NN durante mucho más tiempo que habría pensado que es sensato,
  • guardar los pesos del modelo cada N épocas, y
  • cuando veo que la pérdida de entrenamiento se ha estabilizado, simplemente elijo el modelo con menor pérdida de validación.

Por supuesto, eso sólo tiene sentido cuando no se paga por minuto (o el coste es lo suficientemente pequeño) y cuando se puede detener el entrenamiento manualmente. La ventaja es que es mucho más fácil determinar el error de validación más bajo a posteriori.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X