2.19 - Práctica 6: cómo crear, entrenar y validar una Red Neuronal en Keras
Lección 19 de la sección “Redes Neuronales” del curso Fundamentos de Deep Learning con Python.
Tabla de contenido
Introducción
En las lecciones anteriores hablamos de los sets de entrenamiento, prueba y validación y de los conceptos de underfitting y overfitting, así que ya estamos listos para aplicar estas ideas de forma práctica.
Entonces, en esta lección resolveremos el mismo problema propuesto en la práctica 5 (detección de partículas con Redes Neuronales) pero en este caso usaremos los sets de entrenamiento, prueba y validación para entrenar múltiples modelos y escoger aquel que tenga mejor desempeño.
Suscríbete y accede al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
El problema a resolver
Los físicos usan aceleradores de partículas, como el Gran Colisionador de Hadrones para descubrir nuevas partículas subatómicas.
La detección de estas partículas usualmente es un problema de clasificación, para determinar si el dato observado corresponde a la señal de interés o al ruido de fondo.
La idea es entrenar múltiples Redes Neuronales capaces de realizar esta clasificación, y escoger el modelo que tenga el mejor desempeño usando los sets de entrenamiento, prueba y validación y los conceptos de underfitting y overfitting vistos anteriormente.
El set de datos
El set de datos fue desarrollado por investigadores del Departamento de Física y Astronomía de la Universidad de California Irvine.
En total contiene 11 millones de datos, cada uno representado por 28 características (features). Cada dato está etiquetado en una de dos posibles características:
- “1”: presencia de señal (posiblemente una partícula)
- “0”: ruido de fondo (no corresponde a una partícula)
Teniendo en cuenta el elevado número de datos que contiene este set, para esta práctica se trabajará con una versión reducida del mismo que contiene un total de 100.000 datos.
Lectura del set de datos
La lectura la realizamos usando el módulo drive
de Google Colab junto con la librería Pandas.
Creación de los sets de entrenamiento, prueba y validación
Haciendo uso del módulo train_test_split
de la librería Scikit-Learn, dividiremos el set de datos en tres partes:
- Entrenamiento (80%): para entrenar cada modelo
- Prueba (10%): para verificar el desempeño de cada modelo con un set diferente al de entrenamiento y así escoger el mejor de todos
- Validación (10%): para verificar el desempeño del modelo ganador. Este set nunca será mostrado a ninguno de los modelos
Creación y entrenamiento de los modelos
Usando los módulos Sequential
y Dense
de Keras, crearemos 5 diferentes modelos, que difieren en el número de neuronas por capa y el número de capas ocultas usadas en cada caso.
Usaremos Adam
como algoritmo de optimización, así como el método compile
de Keras para definir la pérdida a usar (entropía cruzada) y la métrica de desempeño (accuracy
).
Finalmente, para el entrenamiento haremos uso del método fit
.
Resultados del entrenamiento
El modelo_3
parece ser el más adecuado, mientras que el modelo_1
presenta underfitting y el modelo_5
overfitting.
El paso a seguir sería afinar el modelo_3
, modificando uno a uno sus hiperparámetros, entrenando, validando y verificando si hay alguna mejoría.
En lugar de esto nos enfocaremos en estrategias para reducir el overfitting en el modelo_5
.
Reducción del overfitting en el modelo_5
A partir del modelo_5
crearemos dos modelos adicionales con ligeras variaciones:
modelo_5a
: se agregará Drop out al `modelo_5``modelo_5b
: se agregará weight regularization almodelo_5
Una vez entrenados los resultados indican que la mejor estrategia es reducir el número de capas del modelo.
Validación del modelo elegido
Finalmente, usando el método evaluate
podemos calcular el desempeño del modelo_3
con el set de validación, obteniendo una exactitud cercana al 71%.
Recuerda suscribirte para acceder al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Conclusión
Perfecto, ya hemos seguido un procedimiento más riguroso para la creación y entrenamiento de un modelo capaz de clasificar partículas.
En la próxima lección hablaremos de una herramienta muy útil en el proceso de afinación de un modelo y que permite reducir el overfitting. Así que veremos en detalle las diferentes técnicas de regularización en el Deep Learning.