Cómo saber si, durante el entrenamiento de un modelo de aprendizaje profundo, está en camino de encontrar un mínimo local mejor o no

Es posible que esté buscando el enfoque de “parada temprana” utilizado en el aprendizaje automático y, en particular, en las redes neuronales, cuando queremos tratar de detectar el sobreajuste antes de que comience. Dado que un mínimo local mejor debería corresponder con un error de validación menor, podemos pensar en esto en términos de sobreajuste. Podemos usar reglas de detención temprana para guiarnos sobre cuántas iteraciones debemos ejecutar una red antes de que ocurra el sobreajuste.

La idea es simple. Dividimos los datos originales en conjuntos de entrenamiento y validación como de costumbre, donde el error en el conjunto de validación es nuestro proxy del error de generalización. Ese proxy se puede usar para señalar cuando el sobreajuste comienza a ocurrir durante el entrenamiento. Entonces, si evaluamos el error por ejemplo en el conjunto de validación de vez en cuando (por ejemplo, después de cada quinta época), podemos detener el entrenamiento cuando el conjunto de validaciones es más alto que la última vez que se verificó. Este enfoque puede extenderse a la validación cruzada para llevarnos más allá de la partición individual en conjuntos de capacitación y validación.

Saber cuándo ha comenzado el sobreajuste es un desafío, ya que en la práctica el error de validación puede fluctuar durante el entrenamiento. Aquí hay una versión idealizada del error de capacitación y validación de la referencia 1. Podemos ver que tiene sentido que se pueda utilizar un criterio de detención para detener la capacitación antes de los aumentos en el error de validación.

Curvas de error de formación y validación idealizadas (de Lutz Prechelt (ref 1))

Pero el error de validación no evoluciona tan suavemente como se muestra en la figura anterior. Puede tener muchas colinas y valles, y puede disminuir después de que ha comenzado a aumentar. La siguiente figura de la misma referencia muestra esto.

Una curva de error de validación real (de Lutz Prechelt (ref 1))

Esto significa que hay muchos posibles criterios de detención. Necesitamos encontrar el que nos da el error de generalización más bajo y la mejor relación precio-rendimiento (el error de generalización más bajo para un tiempo de entrenamiento determinado).

Una forma de pensar en la detención temprana es en términos de la descomposición del error en sesgo y varianza. Cuando comienza el entrenamiento, la red no ha aprendido mucho y, por lo tanto, es muy parcial. Este error continúa reduciéndose durante el entrenamiento, pero al mismo tiempo aumenta el componente de varianza del error (la magnitud y la diversidad de los pesos en la red aumentan). Habrá un punto durante el entrenamiento cuando los componentes de sesgo y varianza del error compitan pero ninguno de los dos domina. Finalmente, el componente de varianza del error comenzará a dominar y esa es la señal de cuándo detenerse (el modelo está comenzando a ajustarse demasiado). Ver referencia 1 para una discusión más detallada.

Algunas cosas a considerar (ref3):

Frecuencia de validación

  • Elegir el número de épocas para ejecutar antes de verificar el error de validación. Verificar el error después de cada época es común y no es demasiado costoso si el conjunto de validación es mucho más pequeño que el conjunto de entrenamiento.

Establecer una paciencia

  • El número de épocas a esperar después de que no haya más mejoras en el conjunto de validación. Por lo general, se establece entre 10 y 100.

Deeplearning4j tiene una implementación de detención temprana (ref4).

Tenga en cuenta que hay inconvenientes en el uso del enfoque de conjunto de validación. Si el conjunto de validación es grande, puede ser computacionalmente costoso ejecutar paradas anticipadas en la red. También hay una compensación cuando se trata de elegir el tamaño del conjunto de validación. Los conjuntos pequeños pueden llevar a decisiones de detención equivocadas debido al error estocástico asociado con el conjunto de validación pequeño, mientras que un conjunto de validación grande potencialmente priva al modelo de información posiblemente valiosa. Mahsereci et al publicaron recientemente un trabajo sobre el uso de estadísticas locales de los gradientes calculados, lo que permite detener la determinación de un criterio sin un conjunto de validación (ref5).

  1. http://page.mi.fu-berlin.de/prec…
  2. Parar temprano – Wikipedia
  3. ¿Cómo usar la detención temprana correctamente para entrenar la red neuronal profunda?
  4. Deeplearning4j: aprendizaje profundo distribuido y de código abierto para la JVM
  5. https://arxiv.org/pdf/1703.09580…

Puede verificar su entrenamiento de la siguiente manera: –

  1. Verifique la pérdida de su correspondiente función de pérdida para el conjunto de entrenamiento
  2. Verifique la pérdida de su función de pérdida correspondiente para el conjunto de validación

Si los dos anteriores están disminuyendo continuamente (monotónicamente, puede haber una pequeña fluctuación para la pérdida, pero la pérdida no debe aumentar a gran velocidad), época por época, entonces estará seguro de que su red está aprendiendo, es decir, está en camino de acuerdo con tu pregunta.

Si la pérdida no disminuye durante mucho tiempo (observará observando un patrón o si su pérdida fluctúa con un valor grande), o si aumenta continuamente, entonces debe dejar de entrenar y disminuir su tasa de aprendizaje a un valor relevante .

¿Por qué necesita el conjunto de datos de validación? En caso de que su red converja y la pérdida se minimice, pueden ocurrir dos posibilidades.

  1. Converge correctamente y puede funcionar con el conjunto de datos de prueba
  2. La pérdida minimizada puede indicar sobrecarga de red, que se comportará de manera anormal con el conjunto de datos de prueba

Para evitar la sobrecarga de la red, debe validar su entrenamiento. Entonces, si su pérdida correspondiente al entrenamiento está disminuyendo pero no con el conjunto de datos de validación, sabrá que su red se está sobrecargando. Así que deja de entrenar y configura tu red en consecuencia para eliminar la sobrecarga.