¿Cómo usar la detención temprana correctamente para entrenar la red neuronal profunda?

20

Tengo un modelo de red neuronal profunda y necesito entrenarlo en mi conjunto de datos que consta de aproximadamente 100,000 ejemplos, mis datos de validación contienen aproximadamente 1000 ejemplos. Debido a que lleva tiempo entrenar cada ejemplo (alrededor de 0.5s para cada ejemplo) y para evitar el sobreajuste, me gustaría aplicar una detención temprana para evitar cálculos innecesarios. Pero no estoy seguro de cómo entrenar adecuadamente mi red neuronal con parada temprana, varias cosas que no entiendo ahora:

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

  • ¿Es el caso de que las primeras épocas podrían dar un peor resultado antes de que comience a converger a un mejor valor? En ese caso, ¿deberíamos capacitar a nuestra red durante varias épocas antes de verificar la detención temprana?

  • ¿Cómo manejar el caso cuando la pérdida de validación puede subir y bajar? En ese caso, la detención temprana podría evitar que mi modelo aprenda más, ¿verdad?

Gracias de antemano.

The Lazy Log
fuente
Recomiendo un tamaño de lote mayor que uno. Los tamaños habituales son 32, 64 y 128.
ComputerScientist

Respuestas:

20

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

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

¿Es el caso de que las primeras épocas podrían dar un peor resultado antes de que comience a converger a un mejor valor?

si

En ese caso, ¿deberíamos capacitar a nuestra red durante varias épocas antes de verificar la detención temprana?

Podría, pero el problema es cuántas épocas debe omitir. Entonces, en la práctica, la mayoría de las veces las personas no se saltan ninguna época.

¿Cómo manejar el caso cuando la pérdida de validación puede subir y bajar? En ese caso, la detención temprana podría evitar que mi modelo aprenda más, ¿verdad?

Las personas suelen definir una paciencia, es decir, el número de épocas que esperar antes de la parada anticipada si no hay progreso en el conjunto de validación. La paciencia a menudo se establece entre 10 y 100 (10 o 20 es más común), pero realmente depende de su conjunto de datos y red.

Ejemplo con paciencia = 10:

ingrese la descripción de la imagen aquí

Franck Dernoncourt
fuente
¿Se debe usar el modelo cuando se detuvo temprano o las patienceépocas del modelo antes de detenerse (el 'mejor' sin mejoras adicionales)?
stackunderflow
2
@displayname épocas de paciencia antes de detenerse
Franck Dernoncourt
11

Recientemente me encontré con un artículo titulado "Parar temprano, pero ¿cuándo?" por Lutz Prechelt que tiene muchos ejemplos excelentes de cómo usar la parada temprana con explicaciones claras de lo que cada uno hace y fórmulas para ellos.

Espero que echar un vistazo a eso pueda ayudar.

Pro Q
fuente
El documento está escrito en un estilo extraño, pero la información fue útil.
Josiah
3

Para agregar a otras excelentes respuestas, también puede, no parar. Yo suelo:

  • ejecutar NN por mucho más tiempo, hubiera 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 la pérdida de validación más baja.

Por supuesto, eso solo tiene sentido cuando no paga por minuto (o el costo es lo suficientemente pequeño) y cuando puede detener la capacitación manualmente. Lo bueno es que es mucho más fácil determinar el error de validación más bajo en retrospectiva.

johndodo
fuente
1
Yo también hago esto. Aunque como tú, sé que es un lujo. Cuando los modelos comenzaron a ocupar mucho espacio, descubrí que usando las cifras anteriores de pérdida y puntaje f también podía determinar mediante programación cuándo eliminar modelos anteriores, por lo que terminas con una ventana móvil de los mejores modelos candidatos que consumen aproximadamente mucho espacio en el disco duro ya que probablemente valen la pena.
QA Collective