¿Cómo se emplea una parada temprana en TensorFlow?

Esta pregunta pretende abordar la biblioteca TensorFlow, pero de hecho no lo hace. La detención temprana no tiene nada que ver con la mecánica de TensorFlow. Una estrategia estándar para detenerse temprano es verificar el rendimiento en un conjunto de datos de validación de reserva después de cada época de entrenamiento, guardando el modelo cada vez que se establece un mejor puntaje. Cuando el rendimiento de los datos de validación se deteriora o deja de mejorar (durante K épocas consecutivas), puede detener el entrenamiento y seguir con el mejor modelo (el último modelo guardado).

Tenga en cuenta que esto aborda el bucle externo del entrenamiento y, por lo tanto, se implementa de la misma manera para el código TensorFlow que para Theano o Torch, o cualquier otra biblioteca. TensorFlow (o Theano, etc.) ingresa a la imagen porque facilita la aceleración del bucle interno (avance y retroceso a través de la red neuronal) al acelerar las operaciones de álgebra lineal y paralelizarlas a través de los núcleos de la GPU.

Una opción es implementar Early Stopping usted mismo evaluando el rendimiento de su modelo en un conjunto de validación cada N pasos durante el entrenamiento, y guardando una instantánea “ganadora” del modelo (usando un protector) cuando el modelo supera a la instantánea anterior “ganadora”. Al final del entrenamiento, solo restaure la última instantánea del “ganador”. Tenga en cuenta que no debe detenerse de inmediato cuando el rendimiento comienza a disminuir, ya que puede mejorar algunos pasos más tarde. Una buena estrategia es contar el número de pasos desde la última vez que se guardó una instantánea “ganadora”, y detenerse cuando este contador sea lo suficientemente grande como para que pueda estar seguro de que la red nunca lo superará.

Otra opción es utilizar la clase `ValidationMonitor` de TensorFlow y establecer sus parámetros` early_stopping`. Esto está documentado aquí.

Recomiendo escribir algo similar a la devolución de llamada anticipada de Keras: devoluciones de llamada – Documentación de Keras

Queremos definir un cambio mínimo aceptable (min_delta) en la función de pérdida y un parámetro de paciencia que una vez excedido desencadena la detención temprana. Por ejemplo, suponiendo que estamos ahorrando nuestra pérdida promedio por época en hist_loss, podemos escribir:

para época en rango (entrenamiento_epocas):
# …
# parada temprana
paciencia = 16
min_delta = 0.01
si epoch> 0 y hist_loss [epoch-1] – hist_loss [epoch]> min_delta:
patience_cnt = 0
más:
paciencia_cnt + = 1

if paciencia_cnt> paciencia:
print (“parada temprana …”)
descanso

Cuando la pérdida aumenta o cuando deja de disminuir en más de min_delta, se activa el contador de paciencia. Una vez que el contador de paciencia expira, el ciclo de iteración finaliza y se detiene antes de tiempo.

Guarde el modelo cada k cantidad de épocas.
Trace el gráfico de validación para descubrir qué modelo ocurre justo antes de detenerse temprano y usar ese modelo.
Básicamente, debe poder diagnosticar su red mientras se está ejecutando.

More Interesting

¿Se utiliza R en la minería de datos a gran escala en grandes compañías de software como Facebook y LinkedIn?

¿Cómo se puede utilizar la inteligencia artificial y el aprendizaje automático en el comercio y la inversión?

Quiero extraer acciones del texto y la entidad que actuó y sobre la que se actúa. Cómo proceder ?

¿Cómo estimar la divergencia KL si no se conoce el posterior? En inferencia variacional, KL se utiliza para encontrar una distribución que se aproxime al verdadero posterior, pero el KL requiere conocer el posterior mismo. ¿Cómo se trata esto?

¿Quiénes son los mejores expertos en Machine Learning en el Área de la Bahía?

Quiero hacer aplicaciones de visión por computadora. ¿Dónde empiezo?

¿Cómo se pueden usar las redes neuronales recurrentes para predecir el género a partir de los nombres de pila?

¿Cuál es la tasa de error de trama (FER) en las tareas de reconocimiento de voz?

Redes neuronales artificiales: ¿Por qué las partes internas de las neuronas se simulan con una suma lineal de entradas en lugar de alternativas no lineales?

¿Puede un ML / AI aprender a pasar captchas?

¿Cuáles son las desventajas de usar el algoritmo clásico de árbol de decisión para grandes conjuntos de datos?

¿Cuáles son algunas de las ventajas del aprendizaje por diferencia temporal y cómo se puede mejorar?

Si hoy existiera una computadora cuántica, ¿qué pasaría con la IA / aprendizaje automático / aprendizaje profundo? ¿En qué se traduciría esto para las empresas / industrias?

Cómo elegir el conjunto de validación para poder representar mejor el conjunto de prueba

¿Por qué podría ser preferible incluir menos predictores sobre muchos?