Estoy entrenando una red neuronal y la pérdida de entrenamiento disminuye, pero la pérdida de validación no lo hace, o disminuye mucho menos de lo que esperaría, en base a referencias o experimentos con arquitecturas y datos muy similares. ¿Cómo puedo arreglar esto?
En cuanto a la pregunta
para lo cual esta pregunta se inspira, la pregunta se deja intencionalmente en general para que otras preguntas sobre cómo reducir el error de generalización de una red neuronal a un nivel que se ha demostrado que sea alcanzable , puedan cerrarse como duplicados de esta.
Ver también hilo dedicado en Meta:
neural-networks
deep-learning
DeltaIV
fuente
fuente
Respuestas:
En primer lugar, mencionemos qué significa "mi red neuronal no se generaliza bien" y cuál es la diferencia con decir "mi red neuronal no funciona bien" .
Al entrenar una red neuronal, la evalúa constantemente en un conjunto de datos etiquetados llamado conjunto de entrenamiento . Si su modelo no funciona correctamente y no parece aprender del conjunto de capacitación, aún no tiene un problema de generalización, en su lugar, consulte esta publicación . Sin embargo, si su modelo es lograr un rendimiento satisfactorio en el conjunto de entrenamiento, pero no puede realizar bien en los datos previamente invisibles (por ejemplo, validación de sistemas / prueba), a continuación, hacer que tenga un problema de generalización.
¿Por qué su modelo no se generaliza correctamente?
La parte más importante es comprender por qué su red no se generaliza bien. Los modelos de aprendizaje automático de alta capacidad tienen la capacidad de memorizar el conjunto de entrenamiento, lo que puede conducir a un sobreajuste .
El sobreajuste es el estado en el que un estimador ha comenzado a aprender el conjunto de entrenamiento tan bien que ha comenzado a modelar el ruido en las muestras de entrenamiento (además de todas las relaciones útiles).
Por ejemplo, en la imagen a continuación podemos ver cómo la línea azul se ha sobreajustado claramente.
¿Pero por qué es esto malo?
Al intentar evaluar nuestro modelo en datos nuevos y nunca vistos anteriormente (es decir, conjunto de validación / prueba), el rendimiento del modelo será mucho peor de lo que esperamos.
¿Cómo prevenir el sobreajuste?
Al comienzo de la publicación, di a entender que la complejidad de su modelo es lo que realmente está causando el sobreajuste, ya que permite que el modelo extraiga relaciones innecesarias del conjunto de entrenamiento, que mapean su ruido inherente. La forma más fácil de reducir el sobreajuste es esencialmente limitar la capacidad de su modelo. Estas técnicas se llaman técnicas de regularización .
Parámetro norma penalizaciones . Estos agregan un término adicional a la función de actualización de peso de cada modelo, que depende de la norma de los parámetros. El propósito de este término es contrarrestar la actualización real (es decir, limitar cuánto se puede actualizar cada peso). Esto hace que los modelos sean más resistentes a los valores atípicos y al ruido. Ejemplos de tales regularizaciones son las regularizaciones L1 y L2 , que se pueden encontrar en los regresores Lasso , Ridge y Elastic Net .
Dado que cada capa (totalmente conectada) en una red neuronal funciona de manera muy similar a una regresión lineal simple, estas se usan en redes neuronales. El uso más común es regularizar cada capa individualmente.
implementación de keras .
Detención temprana . Esta técnica intenta detener la fase de entrenamiento de un estimador prematuramente, en el punto en que aprendió a extraer todas las relaciones significativas de los datos, antes de comenzar a modelar su ruido. Esto se realiza mediante el monitoreo de la pérdida de validación (o una métrica de validación de su elección) y finalizando la fase de entrenamiento cuando esta métrica deja de mejorar . De esta manera, le damos al estimador suficiente tiempo para aprender la información útil, pero no suficiente para aprender del ruido.
implementación de keras .
implementación de keras
Otra forma de evitar el sobreajuste, además de limitar la capacidad del modelo, es mejorar la calidad de sus datos. La opción más obvia sería la eliminación de ruido / valores atípicos , sin embargo, en la práctica, su utilidad es limitada. Una forma más común (especialmente en tareas relacionadas con imágenes) es el aumento de datos . Aquí intentamos transformar aleatoriamente los ejemplos de entrenamiento para que, aunque parezcan diferentes para el modelo, transmitan la misma información semántica (por ejemplo, volteo de imágenes de izquierda a derecha).
Resumen de aumento de datos
Sugerencias prácticas
implementación de keras
Otro uso del concepto similar es el siguiente: si su tarea no tiene muchos datos, pero puede encontrar otra tarea similar que sí, puede usar el aprendizaje de transferencia para reducir el sobreajuste. Primero entrene su red para la tarea que tiene el conjunto de datos más grande y luego intente ajustarel modelo al que inicialmente deseabas. El entrenamiento inicial, en la mayoría de los casos, hará que su modelo sea más robusto para el sobreajuste.
fuente
Hay muchas pruebas empíricas de que las redes neuronales lo suficientemente profundas pueden memorizar etiquetas aleatorias en grandes conjuntos de datos (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals, "Comprender el aprendizaje profundo requiere repensar la generalización"). Por lo tanto, en principio, al obtener un NN lo suficientemente grande, siempre podemos reducir el error de entrenamiento a valores extremadamente pequeños, limitados en la práctica por la precisión numérica, sin importar cuán insignificante sea la tarea.
Las cosas son bastante diferentes para el error de generalización . No podemos estar seguros de que para cada problema de aprendizaje exista un modelo NN que se pueda aprender y que pueda producir un error de generalización tan bajo como se desee. Por esta razón, el primer paso es
1. Establezca sus expectativas correctamente
Encuentre una referencia confiable que le indique que existe una arquitectura que puede alcanzar el error de generalización que está buscando, en su conjunto de datos o en el más similar para el que puede encontrar referencias. Por ejemplo, mira aquí
¿Cuáles son las redes neuronales convolucionales de vanguardia actuales?
para encontrar el rendimiento actual (en el momento de las respuestas) de SOTA (estado del arte) para CNN en diversas tareas. Es una buena idea intentar reproducir dichos resultados en estos conjuntos de datos de referencia, antes de entrenar en su propio conjunto de datos, como prueba de que toda su infraestructura está en su lugar.
2. Asegúrese de que su procedimiento de entrenamiento sea perfecto
Todos los controles descritos en las respuestas a la pregunta.
¿Qué debo hacer cuando mi red neuronal no aprende?
Para asegurarse de que su procedimiento de entrenamiento sea correcto, es un requisito previo para la reducción exitosa del error de generalización (si su NN no está aprendiendo, no puede aprender a generalizar). Estas verificaciones incluyen, entre otras cosas:
3. Intenta conseguir la superconvergencia
"Superconvergencia: entrenamiento muy rápido de redes neuronales usando grandes tasas de aprendizaje" por Leslie N. Smith y Nicholay Topin muestra que en algunos casos la combinación de grandes tasas de aprendizaje con el método de tasa de aprendizaje cíclico de Leslie N. Smith actúa como un regularizador , acelerando la convergencia en un orden de magnitud y reduciendo la necesidad de una extensa regularización. Por lo tanto, esto es bueno probar antes
4. Establecer su regularización al MAXXX
La regularización a menudo aumenta el tiempo de entrenamiento (malo), aumenta el error de entrenamiento y reduce el error de generalización (bueno), pero demasiada regularización en realidad puede aumentar ambos errores (falta de ajuste). Por esta razón, y debido al aumento en el tiempo de entrenamiento, a menudo es mejor introducir las diversas técnicas de regularización de una en una, después de haber logrado adaptar el conjunto de entrenamiento con éxito. Tenga en cuenta que la regularización en sí misma no necesariamente implica que su error de generalización se reducirá: el modelo debe tener una capacidad lo suficientemente grande como para lograr buenas propiedades de generalización. Esto a menudo significa que necesita una red suficientemente profunda, antes de poder ver los beneficios de la regularización.
Los métodos de regularización más antiguos son probablemente la detención temprana y la pérdida de peso. Algunos de los otros:
5. Búsqueda de hiperparámetro / arquitectura
Si nada más ayuda, tendrá que probar múltiples configuraciones diferentes de hiperparámetros (la optimización bayesiana puede ayudar aquí) o múltiples cambios arquitectónicos diferentes (por ejemplo, tal vez en su arquitectura GAN y para el conjunto de datos en el que está trabajando, la norma de lote solo funciona en el generador, pero cuando se agrega al discriminador también empeora las cosas). Asegúrese de realizar un seguimiento de los resultados de estos experimentos largos y aburridos en un libro de registro bien ordenado.
PS para una GAN no tiene mucho sentido hablar de un error de generalización: el ejemplo anterior fue solo una indicación de que todavía hay mucha alquimia en Deep Learning, y cosas que esperarías que funcionen bien, a veces no 't, o viceversa, algo que funcionó bien muchas veces, de repente te deja sin aliento por un nuevo conjunto de datos.
fuente
Una lista de las técnicas de regularización comúnmente utilizadas que he visto en la literatura son:
fuente
Siento que Djib2011, dar grandes puntos sobre los métodos automatizados, pero no abordan realmente el problema subyacente de cómo sabemos si el método empleado para reducir el sobreajuste hizo su trabajo. Así como una nota importante respuesta DeltaIV, quería incluir esta basado en investigaciones recientes en los últimos 2 años. Sobreajuste para las redes neuronales no es sólo sobre el modelo exceso de memorización, su también acerca de los modelos incapacidad para aprender cosas nuevas o hacer frente a las anomalías.
Detectando Overfitting en el Cuadro Negro Modelo: Interpretabilidad de un modelo está directamente relacionado con lo bien que puede contar una capacidad de generalizar los modelos. Por lo tanto muchas parcelas son interpretables métodos de detección de sobreajuste y se puede decir lo bien que cualquiera de los métodos sugeridos anteriormente están trabajando. Parcelas interpretabilidad detectan directamente, especialmente si se comparan las parcelas de validación y el resultado de la prueba. Los capítulos 5 y 6 de esta charla libro inédito sobre los últimos avances en el campo de la detección de sobreajuste: Interpretables Modelando
Sobre la base de este libro, me gustaría hablar de otros tres métodos de detección y eliminación de sobreajuste, que podría ser obvio para algunos, aunque yo personalmente encuentro que la gente se olvide de estos con demasiada frecuencia. Así que me gustaría hacer hincapié en ellos si no uno mentes:
Detección de selección de características : cuanto menos número de parámetros y menos características tenga su modelo, mejor. Entonces, si solo incluye el importante de los 100 millones (quizás tenga 75 millones en su lugar), tendrá un mejor modelo generalizable. El problema es que muchas redes neuronales no son perfectas en la selección de funciones, especialmente cuando el # 2 está presente. Bootstrap o Boosting fundamentalmente no pueden arreglar ambos (solo una versión llamada bootstrap salvaje puede). En términos más simples, si le proporciona datos basura de la red neuronal, le dará basura. (La normalización L2 mencionada anteriormente es muy buena para ayudar con esto)
Detección y tratamiento de anomalías: cuantos menos "valores atípicos", más generalizable será el modelo. Por "valores atípicos", no queremos decir solo valores atípicos en los datos. Los valores atípicos en los datos (como el tipo que se ve con un diagrama de caja) es una definición demasiado limitada para las redes neuronales. Debe considerar también los valores atípicos en el error en un modelo, que se conoce como influencia, así como otras anomalías. Por lo tanto, detectar anomalías antes de ejecutar su red es importante. Una red neuronal puede ser robusta contra un tipo de anomalía, pero no robusta contra todos los demás tipos. Los métodos de ejemplo de contador, los métodos de crítica y los métodos de ejemplo adversarios, y los gráficos de influencia son excelentes para ayudarlo a descubrir valores atípicos y luego descubrir cómo factorizarlos (es decir, cambiar los parámetros o incluso eliminar algunos de los datos)
Muestreo estratificado, sobremuestreo y submuestreo basado en consideraciones estadísticas o éticas : desearía ser un experto en submuestreo y sobremuestreo, pero no lo soy pero sé sobre el muestreo estratificado. Agrupar factores importantes como (raza, sexo, género) y luego hacer un muestreo estratificado por el grupo es vital para no sobreajustar cuando uno considera grandes datos. Al realizar la detección de imágenes, el muestreo estratificado en combinación con la agrupación es legalmente requerido en algunos campos para evitar la discriminación racial. El libro vinculado anteriormente habla brevemente sobre los métodos para hacerlo.
PD ¿Debo incluir más enlaces?
fuente