Nos referimos brevemente a la adaptación y el ajuste excesivo en el Capítulo 9. Ahora vamos a profundizar más en el tema y discutiremos sobre el bajo ajuste y el sobre ajuste excesivo en el contexto del aprendizaje profundo. Para ayudarnos a comprender el concepto de bajo ajuste y sobreajuste, le proporcionaré una serie de gráficos y cifras para que pueda hacer coincidir sus propias curvas de precisión / pérdida de entrenamiento. Esta práctica será especialmente útil si este libro es su primera exposición. Aprendizaje automático / Aprendizaje profundo y no ha tenido que detectar un ajuste insuficiente o excesivo antes.
A partir de ahí, analizaremos cómo podemos crear un monitor de capacitación (casi) en tiempo real para Keras que pueda utilizar para cuidar el proceso de capacitación de su red. Hasta ahora, hemos tenido que esperar hasta que nuestra red hubiera completado el entrenamiento antes de poder trazar la pérdida y la precisión del entrenamiento.
Esperar hasta el final del proceso de entrenamiento para visualizar la pérdida y la precisión puede ser un desperdicio computacional, especialmente si nuestros experimentos tardan mucho tiempo en ejecutarse y no tenemos forma de visualizar la pérdida / precisión durante el proceso de entrenamiento en sí (aparte de observar lo crudo) salida de terminal): podríamos pasar horas o incluso días entrenando una red cuando no nos damos cuenta de que el proceso debería haberse detenido después de las primeras épocas.
En cambio, sería mucho más beneficioso si pudiéramos trazar el entrenamiento y la pérdida después de cada época y visualizar los resultados. A partir de ahí podríamos tomar decisiones mejores y más informadas sobre si deberíamos terminar el experimento antes de tiempo o seguir entrenando.
What Are Underfitting and Overfitting?
Al entrenar sus propias redes neuronales, debe preocuparse mucho por underfitting y el overfitting. El underfitting se produce cuando su modelo no puede obtener una pérdida suficientemente baja en el conjunto de entrenamiento. En este caso, su modelo no aprende los patrones subyacentes en sus datos de entrenamiento. En el otro extremo del espectro, overfitting donde su red modela demasiado bien los datos de entrenamiento y no logra generalizar sus datos de validación.
Por lo tanto, nuestro objetivo al entrenar un modelo de aprendizaje automático es:
- Reducir la pérdida de entrenamiento tanto como sea posible.
- Mientras se asegura que la brecha entre la pérdida de entrenamiento y prueba es razonablemente pequeña.
El control de ello, es posible cuando un modelo puede estar con bajo ajusteo o sobre ajustado, se puede lograrse ajustando la capacidad de la red neuronal. Podemos aumentar la capacidad, agregando más capas y neuronas a nuestra red. De manera similar, podemos disminuir la capacidad eliminando capas y neuronas y aplicando técnicas de regularización (reducción de peso (weight decay), abandono (dropout), aumento de datos (data augmentation), detención temprana (early stopping), etc.)
La siguiente figura 17.1 ayuda a visualizar la relación entre el ajuste insuficiente y el ajuste excesivo junto con la capacidad del modelo:
http://i65.tinypic.com/1zduoi9.png
Figura 17.1: Relación entre capacidad y pérdida del modelo. La línea púrpura vertical separa la capacidad óptima del ajuste insuficiente (izquierda) y el ajuste excesivo (derecha). Cuando estamos por debajo del ajuste la brecha de generalización se mantiene. La capacidad óptima se produce cuando la pérdida tanto de entrenamiento como de generalización nivela. Cuando la pérdida de generalización aumenta, estamos demasiado preparados. Nota: Figura inspirada en Goodfellow et al., Página 112 [10].
En el eje x, hemos trazado la capacidad de la red, y en el eje y, tenemos la pérdida, donde una pérdida más baja es más deseable. Por lo general, cuando una red comienza a entrenar, nos encontramos en la “zona de baja adaptación” (Figura 17.1, izquierda). En este punto, simplemente estamos tratando de aprender algunos patrones iniciales en los datos subyacentes y alejar los pesos de sus inicializaciones aleatorias a valores que nos permiten "aprender" realmente de los datos en sí. Idealmente, tanto la pérdida de entrenamiento como la de validación se reducirán juntas durante este período, esa caída demuestra que nuestra red está realmente aprendiendo. Sin embargo, a medida que aumente la capacidad de nuestro modelo (debido a redes más profundas, más neuronas, no a la regularización, etc.) alcanzaremos la "capacidad óptima" de la red. En este punto, nuestra pérdida / precisión de entrenamiento y validación comienzan a divergir entre sí, y comienza a formarse una brecha notable. Nuestro objetivo es limitar esta brecha, preservando así la generalización de nuestro modelo. Si eliminamos el límite de esta brecha, ingresamos en la "zona de overfitting" (Figura 17.1, derecha). En este punto, nuestra pérdida de entrenamiento se estancará o continuará cayendo mientras que nuestra pérdida de validación se estanca y eventualmente aumenta. Un aumento en la pérdida de validación a lo largo de una serie de épocas consecutivas es un fuerte indicador de exceso de ajuste.
Entonces, ¿cómo combatimos el ajuste excesivo? En general, hay dos técnicas:
Entonces, ¿cómo combatimos el ajuste excesivo? En general, hay dos técnicas:
- Reduzca la complejidad del modelo, optando por una red más superficial con menos capas (shallownets) y neuronas.
- Aplicar métodos de regularización.
El uso de redes neuronales más pequeñas puede funcionar para conjuntos de datos más pequeños, pero en general, esta no es la solución preferida. En lugar de eso, deberíamos aplicar una técnica de regulación tales como reducción de peso (weight decay), abandono (dropout), aumento de datos (data augmentation).. etc. En la práctica, casi siempre es mejor usar técnicas de regularización para controlar el ajuste en lugar del tamaño de su red [129], a menos que tenga una buena razón para creer que la arquitectura de su red es simplemente demasiado grande por el problema.
Efectos de las tasas de aprendizaje (Effects of Learning Rates)
En nuestra sección anterior vimos un ejemplo de exceso de ajuste, pero ¿qué papel juega nuestra tasa de aprendizaje en el ajuste excesivo? ¿Existe realmente una forma de detectar si nuestro modelo se adapta demasiado a un conjunto de hiperparámetros simplemente examinando la curva de pérdida? Usted apuesta que hay. Simplemente observe la Figura 17.2 para ver un ejemplo (inspirado en gran medida por Karpathy et al. [93]).
http://i67.tinypic.com/3464zde.png
Figura 17.2: Un gráfico que visualiza el efecto que tendrán las tasas de aprendizaje variables en la pérdida (inspirado por Karpathy et al. [93]). Las tasas de aprendizaje muy altas (rojo) disminuirán la pérdida inicialmente, pero aumentarán dramáticamente poco después. Las tasas de aprendizaje bajas (azul) serán aproximadamente lineales en su pérdida a lo largo del tiempo, mientras que las tasas de aprendizaje altas (púrpura) disminuirán rápidamente, pero se nivelarán. Finalmente, las buenas tasas de aprendizaje (verde) disminuirán a una velocidad más rápida que la lineal, pero a un exponencial más bajo, lo que nos permitirá navegar por el panorama de la pérdida.
En el eje x, hemos trazado las épocas de una red neuronal junto con la pérdida correspondiente en el eje y. Idealmente, nuestra pérdida de entrenamiento y validación debería parecerse a la curva verde, donde la pérdida disminuye rápidamente pero no tan rápido que no podemos navegar por nuestro panorama de pérdida y establecernos en un área de baja pérdida. Además, cuando trazamos tanto la pérdida de capacitación como la de validación al mismo tiempo, podemos obtener una comprensión aún más detallada del progreso de la capacitación. Preferiblemente, nuestra pérdida de entrenamiento y validación casi se imitaría entre sí, con solo una pequeña brecha entre la pérdida de entrenamiento y la pérdida de validación, lo que indica un poco más de ajuste.
Sin embargo, las aplicaciones de un mundo real, idénticas, que imitan un comportamiento, simplemente no son prácticas o incluso deseables, ya que puede implicar que llevará mucho tiempo entrenar nuestro modelo. Por lo tanto, simplemente debemos "cuidar la brecha" entre la pérdida de capacitación y la validación. Mientras la brecha no aumente dramáticamente, sabemos que hay un nivel aceptable de exceso de ajuste. Sin embargo, si no mantenemos esta brecha y la pérdida de capacitación y validación divergen mucho, entonces sabemos que corremos el riesgo de un exceso de ajuste. Una vez que la pérdida de la validación comienza a aumentar, sabemos que estamos muy preparados.
Pay Attention to Your Training Curves
Al entrenar sus propias redes neuronales, preste atención a sus curvas de pérdida y precisión tanto para los datos de entrenamiento como para los datos de validación. Durante las primeras épocas, puede parecer que una red neuronal está rastreando bien, quizás con un poco de adaptación, pero este patrón puede cambiar rápidamente y es posible que empiece a ver una divergencia en la pérdida de entrenamiento y validación. Cuando esto sucede, evalúa tu modelo:
• ¿Estás aplicando alguna técnica de regularización?
• ¿Es tu índice de aprendizaje demasiado alto?
• ¿Su red es demasiado profunda?
Una vez más, la formación de redes de aprendizaje profundo es parte ciencia, parte arte. La mejor manera de aprender a leer estas curvas es entrenar tantas redes como puedas e inspeccionar sus parcelas. Con el tiempo, desarrollará un sentido de lo que funciona y lo que no, pero no espere hacerlo "bien" en el primer intento. Incluso el practicante de aprendizaje profundo más experimentado realizará entre 10 y 100 experimentos, examinando las curvas de pérdida / precisión a lo largo del camino, observando qué funciona y qué no, y finalmente enfocándose en una solución que funcione.
Finalmente, también debe aceptar el hecho de que el ajuste excesivo de ciertos conjuntos de datos es inevitable. Por ejemplo, es muy fácil adaptar un modelo al conjunto de datos CIFAR-10. Si su pérdida de entrenamiento y de validación comienza a divergir, no se asuste, simplemente intente controlar la brecha tanto como sea posible. También tenga en cuenta que a medida que disminuya su tasa de aprendizaje en épocas posteriores (como cuando usa un programador de tasas de aprendizaje - step decay), también será más fácil sobreponerse.
¿Qué pasa si la pérdida de validación es menor que la pérdida de entrenamiento?
Otro fenómeno extraño que podría encontrar es cuando su pérdida de validación es en realidad menor que su pérdida de entrenamiento. ¿Cómo es esto posible? ¿Cómo puede una red tener un mejor rendimiento en los datos de validación cuando los patrones que está tratando de aprender son los datos de entrenamiento? ¿No debería ser el rendimiento del entrenamiento siempre mejor que la validación o la pérdida de prueba?
No siempre. De hecho, hay múltiples razones para este comportamiento. Quizás la explicación más simple es:
1. Sus datos de entrenamiento están viendo todos los ejemplos "difíciles" para clasificar.
2. Mientras que sus datos de validación consisten en los puntos de datos "fáciles"
Sin embargo, a menos que haya muestreado deliberadamente sus datos de esta manera, es poco probable que una división aleatoria de entrenamiento y pruebas segmenten de manera clara estos tipos de puntos de datos.
Una segunda razón sería el aumento de datos. Cubrimos el aumento de datos en detalle dentro de Practitioner Bundle, pero lo esencial es que durante el proceso de entrenamiento modificamos aleatoriamente las imágenes de entrenamiento aplicándoles transformaciones aleatorias, tales como traslación, rotación, cambio de tamaño y corte. Debido a estas alteraciones, la red está viendo constantemente ejemplos aumentados de los datos de entrenamiento, que es una forma de regularización, lo que permite que la red se generalice mejor a los datos de validación, aunque quizás tenga un peor desempeño en el conjunto de entrenamiento (consulte el Capítulo 9.4 para obtener más detalles sobre regularización).
Una tercera razón podría ser que no estás entrenando "lo suficientemente fuerte". Es posible que desee considerar aumentar su tasa de aprendizaje y ajustar su fuerza de regularización.
Comentarios
Publicar un comentario