La división de datos en Deep Learning es uno de los saberes más importantes para trabajar con las redes neuronales en este campo tan amplio dentro del manejo de los macrodatos. Por esta razón, en este post, te explicamos qué es y cómo funciona la división de datos en Deep Learning.
División de datos en Deep Learning
En general, la división de datos en Deep Learning se produce debido a que los algoritmos de Machine Learning aprenden de los datos con los que los entrenamos. A partir de ellos, intentan encontrar o inferir el patrón que les permita predecir el resultado para un nuevo caso. Pero, para poder calibrar si un modelo funciona, necesitaremos probarlo con un conjunto de datos diferente.
¿Qué pasaría si entrenamos y validamos el modelo con los mismos datos? Tendríamos unos muy buenos resultados en la validación, pero ¿el modelo sería capaz de generalizar tan bien?
Por tanto, en todo proceso de aprendizaje automático, los datos se deben dividir en tres partes: datos de entrenamiento, datos de validación y datos test.
- Entrenamiento: se utilizan para actualizar los pesos cada batch.
- Validación: comprueba la capacidad de generalización de la red en cada época. Prueba con muestras que no ha visto durante el entrenamiento y sirve para monitorizar el entrenamiento de la red a titulo informativo, pero no interviene en ningún cálculo. Suele emplearse cuando se quieren ajustar los parámetros, siendo este conjunto el que indica qué parámetros es mejor utilizar. A más precisión en validación, mejor set de parámetros tenemos. Por este motivo, no podemos confiar en este resultado para hacernos una idea de la capacidad de generalización de la red, porque hemos elegido la configuración de la red para que nos dé una precisión más alta. Por tanto, debemos tener un conjunto extra que nos permita, ahora sí, decir si nuestra red es buena con muestras que no haya visto nunca o no: el de test.
- Test: nos da una intuición de lo buena que es nuestra red al generalizar con un conjunto (más grande que el de validación) nunca visto.
Veamos las proporciones que se suelen utilizar de cada tipo en la división de datos en Deep Learning:
Para las implementaciones de las redes neuronales que vamos a realizar, vamos a trabajar con el set de datos MNIST. El set de datos MNIST es un conjunto de 70000 imágenes de 28×28 píxeles que contienen números manuscritos junto con la etiqueta solución del número codificado (nuestro ground truth). Cabe destacar que, por convención, MNIST dispone de una división específica en conjuntos de entrenamiento, validación y test.
A continuación, vamos a cargar los datos y a visualizar las particiones llevadas a cabo:
# Seleccionamos la version 1.x de TF %tensorflow_version 1.x
TensorFlow 1.x selected.
# Imports necesarios import numpy as np import tensorflow as tf print(tf.__version__) import matplotlib.pyplot as plt # Importamos el dataset MNIST y cargamos los datos from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("/tmp/data/", one_hot=True) # Comprobar el tamaño del dataset print("El conjunto de entrenamiento tiene dimensiones: ", mnist.train.images.shape) print("El conjunto de validación tiene dimensiones: ",mnist.validation.images.shape) print("El conjunto de test tiene dimensiones: ",mnist.test.images.shape) # Método para visualizar los datos de entrenamiento def display_digit(num): # Seleccionar la imagen num de mnist.train.images y hacer un reshape al tamaño de la imagen image = mnist.train.images[num,:].reshape([28,28]) #(X) # Seleccionar el target num de mnist.train.labels (Recuerda que esta en one-hot encoding, conviertelo a decimal con argmax) label = mnist.train.labels[num,:].argmax(axis=0) #(X) # Mostrar plt.title('Example: %d Label: %d' % (num, label)) plt.imshow(image, cmap=plt.get_cmap('gray_r')) plt.show() # Mostramos algunos ejemplos display_digit(np.random.randint(0, mnist.train.images.shape[0])) display_digit(np.random.randint(0, mnist.train.images.shape[0])) display_digit(np.random.randint(0, mnist.train.images.shape[0]))
En este post, te hemos expuesto la división de datos en Deep Learning, sin embargo, si quieres aprender más sobre el manejo Big Data, todavía queda un largo camino por recorrer.
Por ello, te aconsejamos que te apuntes a nuestro Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning, una formación intensiva en la que aprenderás mucho más sobre las principales herramientas del Big Data de la mano de grandes profesionales.
Además, podrás conocer los procesos completos de ingesta, clasificación, resguardo, procesamiento y presentación de los datos utilizando diferentes herramientas y lenguajes del ecosistema del Big Data. ¡Matricúlate ya!