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.