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.

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.

Contenido exclusivo suscriptores

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:

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:

  1. Entrenamiento (80%): para entrenar cada modelo
  2. Prueba (10%): para verificar el desempeño de cada modelo con un set diferente al de entrenamiento y así escoger el mejor de todos
  3. 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:

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%.

Contenido exclusivo suscriptores

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.

Ver todas las lecciones de este curso