Métodos de aprendizaje por conjuntos para redes neuronales de aprendizaje profundo

Tweet Share

Última actualización el 6 de agosto de 2019

Cómo mejorar el rendimiento combinando predicciones de múltiples modelos.

Las redes neuronales de aprendizaje profundo son métodos no lineales.

Ofrecen una mayor flexibilidad y pueden escalar en proporción a la cantidad de datos de entrenamiento disponibles. Una desventaja de esta flexibilidad es que aprenden a través de un algoritmo de entrenamiento estocástico, lo que significa que son sensibles a las características específicas de los datos de entrenamiento y pueden encontrar un conjunto diferente de pesos cada vez que se entrenan, lo que a su vez produce diferentes predicciones.

Generalmente, esto se conoce como que las redes neuronales tienen una alta varianza y puede ser frustrante cuando se intenta desarrollar un modelo final para utilizarlo para hacer predicciones.

Un enfoque exitoso para reducir la varianza de los modelos de redes neuronales es entrenar múltiples modelos en lugar de un único modelo y combinar las predicciones de estos modelos. Esto se denomina aprendizaje en conjunto y no solo reduce la varianza de las predicciones, sino que también puede dar lugar a predicciones que son mejores que cualquier modelo individual.

En este post, descubrirás métodos para que las redes neuronales de aprendizaje profundo reduzcan la varianza y mejoren el rendimiento de las predicciones.

Después de leer este post, sabrás:

  • Los modelos de redes neuronales no son lineales y tienen una alta varianza, lo que puede ser frustrante a la hora de preparar un modelo final para hacer predicciones.
  • El aprendizaje conjunto combina las predicciones de múltiples modelos de redes neuronales para reducir la varianza de las predicciones y reducir el error de generalización.
  • Las técnicas para el aprendizaje en conjunto se pueden agrupar por el elemento que varía, como los datos de entrenamiento, el modelo y la forma en que se combinan las predicciones.
  • Inicie su proyecto con mi nuevo libro Better Deep Learning, que incluye tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.

    Comencemos.

    Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks

    Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks
    Photo by University of San Francisco’s Performing Arts, some rights reserved.

    Overview

    This tutorial is divided into four parts; they are:

  1. High Variance of Neural Network Models
  2. Reduce Variance Using an Ensemble of Models
  3. How to Ensemble Neural Network Models
  4. Summary of Ensemble Techniques

High Variance of Neural Network Models

Training deep neural networks can be very computationally expensive.

Very deep networks trained on millions of examples may take days, weeks, and sometimes months to train.

El modelo de referencia de Google era una red neuronal convolucional profunda que se había entrenado durante unos seis meses utilizando el descenso de gradiente estocástico asíncrono en un gran número de núcleos.

– Distilling the Knowledge in a Neural Network, 2015.

Después de la inversión de tanto tiempo y recursos, no hay garantía de que el modelo final tenga un bajo error de generalización, rindiendo bien en ejemplos no vistos durante el entrenamiento.

… entrenar muchas redes candidatas diferentes y luego seleccionar la mejor, y descartar el resto. Este enfoque tiene dos desventajas. En primer lugar, se desperdicia todo el esfuerzo que supone entrenar las redes restantes. En segundo lugar, la red que tuvo el mejor rendimiento en el conjunto de validación puede no ser la que tenga el mejor rendimiento en los nuevos datos de prueba.

– Páginas 364-365, Neural Networks for Pattern Recognition, 1995.

Los modelos de redes neuronales son un método no lineal. Esto significa que pueden aprender relaciones no lineales complejas en los datos. Una desventaja de esta flexibilidad es que son sensibles a las condiciones iniciales, tanto en términos de los pesos aleatorios iniciales como en términos del ruido estadístico en el conjunto de datos de entrenamiento.

Esta naturaleza estocástica del algoritmo de aprendizaje significa que cada vez que se entrena un modelo de red neuronal, puede aprender una versión ligeramente (o dramáticamente) diferente de la función de mapeo de las entradas a las salidas, que a su vez tendrá un rendimiento diferente en los conjuntos de datos de entrenamiento y de retención.

Como tal, podemos pensar en una red neuronal como un método que tiene un sesgo bajo y una alta varianza. Incluso cuando se entrena en grandes conjuntos de datos para satisfacer la alta varianza, tener cualquier varianza en un modelo final que se pretende utilizar para hacer predicciones puede ser frustrante.

¿Quieres mejores resultados con el aprendizaje profundo?

Toma mi curso intensivo gratuito de 7 días por correo electrónico ahora (con código de muestra).

Haz clic para registrarte y también obtén una versión gratuita del curso en PDF Ebook.

Descargue su minicurso gratuito

Reduzca la varianza utilizando un conjunto de modelos

Una solución a la alta varianza de las redes neuronales es entrenar múltiples modelos y combinar sus predicciones.

La idea es combinar las predicciones de múltiples modelos buenos pero diferentes.

Un buen modelo tiene habilidad, lo que significa que sus predicciones son mejores que el azar. Es importante que los modelos sean buenos de diferentes maneras; deben cometer diferentes errores de predicción.

La razón por la que el promedio de modelos funciona es que los diferentes modelos no suelen cometer los mismos errores en el conjunto de pruebas.

– Página 256, Deep Learning, 2016.

Combinar las predicciones de múltiples redes neuronales añade un sesgo que a su vez contrarresta la varianza de un único modelo de red neuronal entrenado. Los resultados son predicciones que son menos sensibles a las especificidades de los datos de entrenamiento, la elección del esquema de entrenamiento y la serendipia de una sola ejecución de entrenamiento.

Además de reducir la varianza en la predicción, el conjunto también puede dar lugar a mejores predicciones que cualquier mejor modelo individual.

… el rendimiento de un comité puede ser mejor que el rendimiento de la mejor red individual utilizada de forma aislada.

– Página 365, Neural Networks for Pattern Recognition, 1995.

Este enfoque pertenece a una clase general de métodos llamada «aprendizaje de conjunto» que describe métodos que intentan hacer el mejor uso de las predicciones de múltiples modelos preparados para el mismo problema.

Generalmente, el aprendizaje por conjuntos implica el entrenamiento de más de una red en el mismo conjunto de datos y, a continuación, el uso de cada uno de los modelos entrenados para hacer una predicción antes de combinar las predicciones de alguna manera para hacer un resultado o predicción final.

De hecho, el ensamblaje de modelos es un enfoque estándar en el aprendizaje automático aplicado para asegurar que se hace la predicción más estable y mejor posible.

Por ejemplo, Alex Krizhevsky, et al. en su famoso artículo de 2012 titulado «Imagenet classification with deep convolutional neural networks» que introdujo redes neuronales convolucionales muy profundas para la clasificación de fotos (es decir, AlexNet) utilizó el promedio de modelos a través de múltiples modelos CNN de buen rendimiento para lograr resultados de vanguardia en ese momento. El rendimiento de un modelo se comparó con las predicciones del conjunto promediadas entre dos, cinco y siete modelos diferentes.

Promediar las predicciones de cinco CNN similares da una tasa de error del 16,4%. Si se promedian las predicciones de dos CNN preentrenadas con las cinco CNN mencionadas, se obtiene una tasa de error del 15,3%.

El ensamblaje es también el enfoque utilizado por los ganadores de las competiciones de aprendizaje automático.

Otra poderosa técnica para obtener los mejores resultados posibles en una tarea es el ensamblaje de modelos. Si te fijas en las competiciones de aprendizaje automático, en particular en Kaggle, verás que los ganadores utilizan conjuntos muy grandes de modelos que inevitablemente superan a cualquier modelo individual, por muy bueno que sea.

– Página 264, Deep Learning With Python, 2017.

Cómo ensamblar modelos de redes neuronales

Tal vez el enfoque de ensamblaje más antiguo y todavía más utilizado para las redes neuronales es el llamado «comité de redes»

Se entrena una colección de redes con la misma configuración y diferentes pesos aleatorios iniciales en el mismo conjunto de datos. A continuación, cada modelo se utiliza para hacer una predicción y la predicción real se calcula como la media de las predicciones.

El número de modelos en el conjunto suele ser pequeño tanto por el gasto computacional en el entrenamiento de los modelos como por la disminución del rendimiento al añadir más miembros del conjunto. Los conjuntos pueden ser tan pequeños como tres, cinco o 10 modelos entrenados.

El campo del aprendizaje por conjuntos está bien estudiado y hay muchas variaciones sobre este sencillo tema.

Puede ser útil pensar en variar cada uno de los tres elementos principales del método de conjuntos; por ejemplo:

  • Datos de entrenamiento: Variar la elección de los datos utilizados para entrenar cada modelo en el conjunto.
  • Modelos de conjunto: Variar la elección de los modelos utilizados en el conjunto.
  • Combinaciones: Variar la elección de la forma en que se combinan los resultados de los miembros del conjunto.
  • Veamos con más detalle cada elemento por separado.

    Variar los datos de entrenamiento

    Los datos utilizados para entrenar a cada miembro del conjunto pueden ser variados.

    El enfoque más sencillo sería utilizar la validación cruzada k-fold para estimar el error de generalización de la configuración del modelo elegido. En este procedimiento, se entrenan k modelos diferentes en k subconjuntos distintos de los datos de entrenamiento. Estos k modelos pueden guardarse y utilizarse como miembros de un conjunto.

    Otro enfoque popular implica el remuestreo del conjunto de datos de entrenamiento con reemplazo, y luego el entrenamiento de una red utilizando el conjunto de datos remuestreado. El procedimiento de remuestreo significa que la composición de cada conjunto de datos de entrenamiento es diferente, con la posibilidad de que haya ejemplos duplicados, lo que permite que el modelo entrenado en el conjunto de datos tenga una expectativa ligeramente diferente de la densidad de las muestras y, a su vez, un error de generalización diferente.

    Este enfoque se denomina agregación bootstrap, o bagging para abreviar, y fue diseñado para su uso con árboles de decisión no podados que tienen una alta varianza y un bajo sesgo. Normalmente se utiliza un gran número de árboles de decisión, como cientos o miles, dado que son rápidos de preparar.

    … una forma natural de reducir la varianza y, por tanto, de aumentar la precisión de la predicción de un método de aprendizaje estadístico es tomar muchos conjuntos de entrenamiento de la población, construir un modelo de predicción independiente utilizando cada conjunto de entrenamiento y promediar las predicciones resultantes. Por supuesto, esto no es práctico porque generalmente no tenemos acceso a múltiples conjuntos de entrenamiento. En su lugar, podemos hacer un bootstrap, tomando muestras repetidas del (único) conjunto de datos de entrenamiento.

    Páginas 216-317, An Introduction to Statistical Learning with Applications in R, 2013.

    Un enfoque equivalente podría ser utilizar un subconjunto más pequeño del conjunto de datos de entrenamiento sin regularización para permitir un entrenamiento más rápido y algo de sobreajuste.

    El deseo de modelos ligeramente suboptimizados se aplica a la selección de los miembros del conjunto de forma más general.

    … los miembros del comité no deben ser elegidos individualmente para tener un equilibrio óptimo entre el sesgo y la varianza, sino que deben tener un sesgo relativamente menor, ya que la varianza extra puede ser eliminada por el promedio.

    – Página 366, Neural Networks for Pattern Recognition, 1995.

    Otros enfoques pueden implicar la selección de un subespacio aleatorio del espacio de entrada para asignarlo a cada modelo, como un subconjunto del hipervolumen en el espacio de entrada o un subconjunto de características de entrada.

    Tutoriales de conjuntos

    Para ver ejemplos de conjuntos de aprendizaje profundo que varían los datos de entrenamiento, consulte:

    • Cómo desarrollar un conjunto de división aleatoria, validación cruzada y embolsado para el aprendizaje profundo

    Modelos variables

    Entrenar el mismo modelo con restricciones en los mismos datos con diferentes condiciones iniciales dará como resultado diferentes modelos dada la dificultad del problema y la naturaleza estocástica del algoritmo de aprendizaje.

    Esto se debe a que el problema de optimización que la red está tratando de resolver es tan desafiante que hay muchas soluciones «buenas» y «diferentes» para mapear las entradas a las salidas.

    La mayoría de los algoritmos de redes neuronales logran un rendimiento sub-óptimo específicamente debido a la existencia de un número abrumador de mínimos locales sub-óptimos. Si tomamos un conjunto de redes neuronales que han convergido a mínimos locales y aplicamos el promedio podemos construir una estimación mejorada. Una forma de entender este hecho es considerar que, en general, las redes que han caído en diferentes mínimos locales tendrán un mal rendimiento en diferentes regiones del espacio de características y, por tanto, sus términos de error no estarán fuertemente correlacionados.

    – Cuando las redes no están de acuerdo: Ensemble methods for hybrid neural networks, 1995.

    Esto puede resultar en una varianza reducida, pero puede no mejorar dramáticamente el error de generalización. Los errores cometidos por los modelos pueden seguir estando demasiado correlacionados porque todos los modelos han aprendido funciones de mapeo similares.

    Un enfoque alternativo podría ser variar la configuración de cada modelo de ensemble, como utilizar redes con diferente capacidad (por ejemplo, número de capas o nodos) o modelos entrenados bajo diferentes condiciones (por ejemplo, tasa de aprendizaje o regularización).

    El resultado puede ser un ensemble de modelos que han aprendido una colección más heterogénea de funciones de mapeo y, a su vez, tienen una menor correlación en sus predicciones y errores de predicción.

    Las diferencias en la inicialización aleatoria, la selección aleatoria de los minibatches, las diferencias en los hiperparámetros o los diferentes resultados de las implementaciones no deterministas de las redes neuronales suelen ser suficientes para que los diferentes miembros del conjunto cometan errores parcialmente independientes.

    – Páginas 257-258, Deep Learning, 2016.

    Este tipo de ensemble de modelos configurados de forma diferente se puede conseguir mediante el proceso normal de desarrollo de la red y el ajuste de sus hiperparámetros. Cada modelo podría guardarse durante este proceso y elegir un subconjunto de mejores modelos para conformar el conjunto.

    Las redes con un entrenamiento ligeramente inferior son un subproducto gratuito de la mayoría de los algoritmos de ajuste; es deseable utilizar esas copias adicionales incluso cuando su rendimiento es significativamente peor que el mejor rendimiento encontrado. Todavía se puede conseguir un mejor rendimiento mediante una planificación cuidadosa de una clasificación de conjunto utilizando los mejores parámetros disponibles y entrenando diferentes copias en diferentes subconjuntos de la base de datos disponible.

    – Ensembles de redes neuronales, 1990.

    En los casos en los que un único modelo puede tardar semanas o meses en entrenarse, otra alternativa puede ser guardar periódicamente el mejor modelo durante el proceso de entrenamiento, lo que se denomina modelos snapshot o checkpoint, y luego seleccionar los miembros del conjunto entre los modelos guardados. Esto proporciona los beneficios de tener múltiples modelos entrenados en los mismos datos, aunque recogidos durante una sola ejecución de entrenamiento.

    Snapshot Ensembling produce un conjunto de modelos precisos y diversos a partir de un único proceso de entrenamiento. El núcleo del Snapshot Ensembling es un proceso de optimización que visita varios mínimos locales antes de converger a una solución final. Tomamos instantáneas del modelo en estos diversos mínimos y promediamos sus predicciones en el momento de la prueba.

    – Snapshot Ensembles: Entrena 1, obtén M gratis, 2017.

    Una variación del ensemble Snapshot es guardar modelos de un rango de épocas, quizás identificadas revisando las curvas de aprendizaje del rendimiento del modelo en los conjuntos de datos de entrenamiento y validación durante el entrenamiento. Los conjuntos de tales secuencias contiguas de modelos se denominan conjuntos horizontales.

    En primer lugar, se seleccionan las redes entrenadas para un rango de épocas relativamente estable. Las predicciones de la probabilidad de cada etiqueta son producidas por clasificadores estándar la época seleccionada, y luego se promedian.

    – Conjunto horizontal y vertical con representación profunda para la clasificación, 2013.

    Una mejora adicional del conjunto instantáneo es variar sistemáticamente el procedimiento de optimización durante el entrenamiento para forzar diferentes soluciones (es decir, conjuntos de pesos), la mejor de las cuales puede guardarse en puntos de control. Esto podría implicar la inyección de una cantidad oscilante de ruido durante las épocas de entrenamiento o la oscilación de la tasa de aprendizaje durante las épocas de entrenamiento. Una variación de este enfoque llamada Stochastic Gradient Descent with Warm Rarests (SGDR) demostró un aprendizaje más rápido y resultados de vanguardia para tareas de clasificación de fotos estándar.

    Nuestro SGDR simula los reinicios en caliente programando la tasa de aprendizaje para lograr resultados competitivos aproximadamente de dos a cuatro veces más rápidos. También logramos nuevos resultados del estado del arte con SGDR, principalmente al utilizar conjuntos aún más amplios y conjuntos de instantáneas de la trayectoria de SGDR.

    – SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.

    Una ventaja de las redes neuronales muy profundas es que las capas ocultas intermedias proporcionan una representación aprendida de los datos de entrada de baja resolución. Las capas ocultas pueden dar salida a sus representaciones internas directamente, y la salida de una o más capas ocultas de una red muy profunda puede utilizarse como entrada a un nuevo modelo de clasificación. Esto es quizá más eficaz cuando el modelo profundo se entrena utilizando un modelo de autocodificador. Este tipo de ensemble se denomina ensemble vertical.

    Este método ensambla una serie de clasificadores cuyas entradas son la representación de las capas intermedias. Se espera una menor tasa de error porque estas características parecen diversas.

    – Ensemble horizontal y vertical con representación profunda para la clasificación, 2013.

    Tutoriales sobre ensembles

    Para ver ejemplos de ensembles de aprendizaje profundo que varían los modelos, consulte:

    • Cómo desarrollar un ensemble instantáneo para el aprendizaje profundo
    • Cómo desarrollar un ensemble de votación horizontal para el aprendizaje profundo

    Combinaciones variables

    La forma más sencilla de combinar las predicciones es calcular la media de las predicciones de los miembros del ensemble.

    Esto puede mejorarse ligeramente ponderando las predicciones de cada modelo, donde las ponderaciones se optimizan utilizando un conjunto de datos de validación de retención. Esto proporciona un conjunto promedio ponderado que a veces se llama mezcla de modelos.

    … podríamos esperar que algunos miembros del comité hagan típicamente mejores predicciones que otros miembros. Por lo tanto, esperaríamos poder reducir aún más el error si damos mayor peso a algunos miembros del comité que a otros. Así, consideramos una predicción generalizada del comité dada por una combinación ponderada de las predicciones de los miembros …

    – Página 367, Neural Networks for Pattern Recognition, 1995.

    Un paso más en la complejidad implica el uso de un nuevo modelo para aprender cómo combinar mejor las predicciones de cada miembro del conjunto.

    El modelo podría ser un modelo lineal simple (por ejemplo, muy parecido a la media ponderada), pero podría ser un método no lineal sofisticado que también considera la muestra de entrada específica además de las predicciones proporcionadas por cada miembro. Este enfoque general de aprendizaje de un nuevo modelo se denomina apilamiento de modelos, o generalización apilada.

    La generalización apilada funciona deduciendo los sesgos de los generalizadores con respecto a un conjunto de aprendizaje proporcionado. Esta deducción procede al generalizar en un segundo espacio cuyas entradas son (por ejemplo) las conjeturas de los generalizadores originales cuando se les enseña con parte del conjunto de aprendizaje y tratan de adivinar el resto, y cuya salida es (por ejemplo) la conjetura correcta. Cuando se utiliza con un único generalizador, la generalización apilada es un esquema para estimar (y luego corregir) el error de un generalizador que ha sido entrenado con un conjunto de aprendizaje particular y luego se le hace una pregunta particular.

    – Generalización apilada, 1992.

    Existen métodos más sofisticados para apilar modelos, como el boosting, en el que los miembros del conjunto se añaden de uno en uno para corregir los errores de los modelos anteriores. La complejidad añadida hace que este enfoque se utilice con menos frecuencia con modelos de redes neuronales grandes.

    Otra combinación un poco diferente es combinar los pesos de múltiples redes neuronales con la misma estructura. Los pesos de múltiples redes se pueden promediar, para esperar que el resultado sea un nuevo modelo único que tenga un mejor rendimiento general que cualquier modelo original. Este enfoque se denomina promediado de pesos del modelo.

    … sugiere que es prometedor promediar estos puntos en el espacio de pesos, y utilizar una red con estos pesos promediados, en lugar de formar un conjunto promediando las salidas de las redes en el espacio del modelo

    – Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

    Tutoriales de conjuntos

    Para ejemplos de conjuntos de aprendizaje profundo que varían las combinaciones ver:

    • Cómo desarrollar un ensemble de promedio de modelos para el aprendizaje profundo
    • Cómo desarrollar un ensemble de promedio ponderado para el aprendizaje profundo
    • Cómo desarrollar un ensemble de apilamiento para el aprendizaje profundo
    • Cómo crear un ensemble Polyak-Ruppert para el aprendizaje profundo

    Resumen de técnicas de ensemble

    En resumen, we can list some of the more common and interesting ensemble methods for neural networks organized by each element of the method that can be varied, as follows:

    • Varying Training Data
      • k-fold Cross-Validation Ensemble
      • Bootstrap Aggregation (bagging) Ensemble
      • Random Training Subset Ensemble
    • Varying Models
      • Multiple Training Run Ensemble
      • Hyperparameter Tuning Ensemble
      • Snapshot Ensemble
      • Horizontal Epochs Ensemble
      • Vertical Representational Ensemble
    • Varying Combinations
      • Model Averaging Ensemble
      • Weighted Average Ensemble
      • Stacked Generalization (stacking) Ensemble
      • Boosting Ensemble
      • Model Weight Averaging Ensemble

    There is no single best ensemble method; perhaps experiment with a few approaches or let the constraints of your project guide you.

    Further Reading

    This section provides more resources on the topic if you are looking to go deeper.

    Books

    • Section 9.6 Committees of networks, Neural Networks for Pattern Recognition, 1995.
    • Section 7.11 Bagging and Other Ensemble Methods, Deep Learning, 2016.
    • Section 7.3.3 Model ensembling, Deep Learning With Python, 2017.
    • Section 8.2 Bagging, Random Forests, Boosting, An Introduction to Statistical Learning with Applications in R, 2013.

    Papers

    • Neural Network Ensembles, 1990.
    • Neural Network Ensembles, Cross Validation, and Active Learning, 1994.
    • When networks disagree: Ensemble methods for hybrid neural networks, 1995.
    • Snapshot Ensembles: Train 1, get M for free, 2017.
    • SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.
    • Horizontal and vertical ensemble with deep representation for classification, 2013.
    • Stacked generalization, 1992.
    • Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

    Articles

    • Ensemble learning, Wikipedia.
    • Bootstrap aggregating, Wikipedia.
    • Boosting (machine learning), Wikipedia.

    Summary

    In this post, you discovered ensemble methods for deep learning neural networks to reduce variance and improve prediction performance.

    Specifically, you learned:

    • Neural network models are nonlinear and have a high variance, which can be frustrating when preparing a final model for making predictions.
    • El aprendizaje por conjuntos combina las predicciones de múltiples modelos de redes neuronales para reducir la varianza de las predicciones y reducir el error de generalización.
    • Las técnicas para el aprendizaje por conjuntos se pueden agrupar por el elemento que se varía, como los datos de entrenamiento, el modelo y la forma en que se combinan las predicciones.
    • ¿Tienes alguna pregunta?
      Haz tus preguntas en los comentarios de abajo y haré todo lo posible por responder.

      Desarrolla mejores modelos de Deep Learning hoy mismo!

      Mejor Deep Learning

      Entrena más rápido, reduce el sobreesfuerzo y los ensembles

      …con sólo unas pocas líneas de código python

      Descubre cómo en mi nuevo Ebook:
      Mejor Aprendizaje Profundo

      Proporciona tutoriales de autoaprendizaje sobre temas como:
      decadencia de pesos, normalización de lotes, abandono, apilamiento de modelos y mucho más…

      ¡Lleva un mejor aprendizaje profundo a tus proyectos!

      Olvida lo académico. Just Results.

      See What’s Inside

      Tweet Share Share

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *