¿Qué debo hacer cuando mi red neuronal no se generaliza bien?

37

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

¿Qué debo hacer cuando mi red neuronal no aprende?

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:

¿Hay una pregunta genérica a la que podamos redirigir preguntas del tipo "por qué mi red neuronal no se generaliza bien?"

DeltaIV
fuente
44
Si planea publicar su propia respuesta integral, entonces podría haber sido una buena idea publicar la Q y la A simultáneamente (la interfaz de usuario lo permite). De lo contrario, está alentando a otras personas a escribir respuestas y podríamos terminar con varias respuestas que se duplican parcialmente entre sí ... De todos modos, esperamos su respuesta.
ameba dice Reinstate Monica
@amoeba ah, no lo sabía: la interfaz de usuario abre una ventana emergente cuando intento responder a la pregunta, así que pensé que las preguntas y respuestas no podían publicarse juntas ... Bueno, si alguien escribe un mejor / más respuesta completa de lo que iba a escribir, simplemente evitaré agregar un duplicado.
DeltaIV

Respuestas:

37

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 .

  • Regularizaciones específicas de la red neuronal . Algunos ejemplos son:
    • Deserción . La deserción es una técnica interesante que funciona sorprendentemente bien. La deserción se aplica entre dos capas sucesivas en una red. En cada iteración un porcentaje especificado de las conexiones (seleccionados al azar), la conexión de las dos capas, se dejó caer . Esto hace que la capa posterior dependa de todas sus conexiones con la capa anterior.
      implementación de keras
    • Transferencia de aprendizaje . Esto se usa especialmente en el aprendizaje profundo. Esto se realiza inicializando los pesos de su red a los de otra red con la misma arquitectura pre-entrenada en un gran conjunto de datos genérico.
    • Otras cosas que pueden limitar el sobreajuste en las redes neuronales profundas son: Normalización por lotes , que puede actuar como un regulador y, en algunos casos (por ejemplo, módulos de inicio) funciona tan bien como el abandono; relativamente pequeños lotes de tamaño en SGD, que también pueden prevenir overfitting; agregando un pequeño ruido aleatorio a los pesos en capas ocultas.

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

  • Con mucho, la técnica de regularización más efectiva es la deserción , lo que significa que debería ser la primera que debería usar. Sin embargo, no es necesario (y probablemente no debería) colocar el abandono en todas partes. Las capas más propensas al sobreajuste son las capas totalmente conectadas (FC), porque contienen la mayoría de los parámetros. El abandono debe aplicarse a estas capas (afectando sus conexiones a la siguiente capa).
  • La normalización por lotes , además de tener un efecto de regularización, ayuda a su modelo de varias otras maneras (por ejemplo, acelera la convergencia, permite el uso de tasas de aprendizaje más altas). También debe usarse en capas FC.
  • Como se mencionó anteriormente, también puede ser beneficioso detener su modelo antes en la fase de entrenamiento de lo programado. El problema con la detención temprana es que no hay garantía de que, en un momento dado, el modelo no comience a mejorar nuevamente. Un enfoque más práctico que la detención temprana es almacenar los pesos del modelo que logran el mejor rendimiento en el conjunto de validación. Sin embargo, tenga cuidado, ya que esta no es una estimación imparcial del rendimiento de su modelo (simplemente mejor que el conjunto de entrenamiento). También puede sobreajustar en el conjunto de validación. Más sobre eso más tarde.
    implementación de keras
  • En algunas aplicaciones (p. Ej., Tareas relacionadas con la imagen), se recomienda seguir una arquitectura ya establecida (p. Ej., VGG, ResNet, Inception), para la que puede encontrar pesos de ImageNet. La naturaleza genérica de este conjunto de datos permite que las características sean a su vez lo suficientemente genéricas como para ser utilizadas para cualquier tarea relacionada con la imagen. Además de ser robusto para sobreajustar, esto reducirá en gran medida el tiempo de entrenamiento.
    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.
  • Aumento de datos . Si bien siempre ayuda tener un conjunto de datos más grande, las técnicas de aumento de datos tienen sus defectos. Más específicamente, debe tener cuidado de no aumentar demasiado , ya que esto podría arruinar el contenido semántico de los datos. Por ejemplo, en el aumento de imagen si traduce / desplaza / escala o ajusta el brillo / contraste la imagen demasiado, perderá mucha de la información que contiene. Además, los esquemas de aumento deben implementarse para cada tarea de manera ad-hoc (por ejemplo, en el reconocimiento de dígitos escritos a mano, los dígitos generalmente están alineados y no deben rotarse demasiado; tampoco deben voltearse en ninguna dirección, ya que no son simétricas horizontal / verticalmente. Lo mismo ocurre con las imágenes médicas).
    0
Djib2011
fuente
9

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:

  • pruebas unitarias
  • verificaciones del conjunto de datos (eche un vistazo a algunas muestras aleatorias de entrada / etiqueta para el conjunto de entrenamiento y el conjunto de prueba y verifique que las etiquetas sean correctas; verifique el ancho y el tamaño de las imágenes de entrada; mezcle muestras en el conjunto de entrenamiento / prueba y vea si afecta resultados; etc.)
  • pruebas de aleatorización
  • estandarice sus versiones de preprocesamiento y paquete
  • mantener un cuaderno de bitácora de experimentos numéricos

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:

  • m=16
  • use SGD en lugar de optimizadores adaptativos: esto ya ha sido cubierto por @shimao, por lo tanto, solo lo menciono en aras de la integridad
  • usar abandono: si usa LSTM, use el abandono estándar solo para las unidades de entrada y salida de una capa LSTM. Para las unidades recurrentes (las puertas) use el abandono recurrente, como lo mostró Yarin Gal por primera vez en su Ph.D. tesis . Sin embargo, si usa CNN, el abandono se usa con menos frecuencia ahora. En cambio, tiendes a ...
  • ... use la normalización por lotes: las arquitecturas CNN más recientes evitan el abandono a favor de la normalización por lotes. Esto podría ser solo una moda, o podría deberse al hecho de que aparentemente la deserción y la normalización de lotes no funcionan bien juntas (Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang, Comprender la falta de armonía entre la deserción y la normalización de lotes por variación Turno ). Dado que la norma de lote es más efectiva que la deserción cuando se tienen grandes conjuntos de datos, esta podría ser una razón por la cual la deserción ha caído en desgracia para las arquitecturas CNN. Si usa la normalización por lotes, verifique que la distribución de pesos y sesgos para cada capa se vea aproximadamente normal. Para los RNN, la implementación de la norma de lotes es complicada: la normalización del peso (Tim Salimans, Diederik P. Kingma,La normalización del peso: una reparametrización simple para acelerar el entrenamiento de las redes neuronales profundas ) es una alternativa viable.
  • utilizar el aumento de datos: también tiene un efecto de regularización.

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.

DeltaIV
fuente
5

Una lista de las técnicas de regularización comúnmente utilizadas que he visto en la literatura son:

  1. Usando la normalización por lotes, que es un regularizador sorprendentemente efectivo hasta el punto en que rara vez veo que la deserción ya no se usa, porque simplemente no es necesario.
  2. Una pequeña cantidad de pérdida de peso.
  3. Algunas técnicas de regularización más recientes incluyen Shake-shake ("Regularización Shake-Shake" de Xavier Gastaldi) y Cutout ("Regularización mejorada de redes neuronales convolucionales con recorte" de Terrance DeVries y Graham W. Taylor). En particular, la facilidad con la que se puede implementar el recorte lo hace muy atractivo. Creo que estos funcionan mejor que la deserción, pero no estoy seguro.
  4. Si es posible, prefieren arquitecturas totalmente convolucionales a arquitecturas con capas totalmente conectadas. Comparar VGG-16, que tiene 100 millones de parámetros en una sola capa totalmente conectado, a Resnet-152, que tiene 10 veces el número de capas y todavía menos parámetros.
  5. Prefiero SGD a otros optimizadores como Rmsprop y Adam. Se ha demostrado generalizar mejor. ( "Mejora de Generalización Actuación de conmutación de Adán a SGD" por Nitish Shirish Keskar y Richard Socher)
shimao
fuente
0

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:

  1. 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)

  2. 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)

  3. 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?

mlane
fuente