TensorFlow
Tutorial TensorFlow: Preprocesados de escalado, normalización y estandarización
TensorFlow: Aprende a escalar, normalizar y estandarizar datos en Deep Learning. Mejora el rendimiento del modelo asegurando una convergencia óptima.
Aprende TensorFlow GRATIS y certifícateImportancia del preprocesamiento
En el campo del Deep Learning, el preprocesamiento de datos es un paso crucial que influye significativamente en el rendimiento de los modelos. Los datos en su forma original suelen contener inconsistencias, distribuciones no uniformes y escalas dispares, lo que puede perjudicar el proceso de entrenamiento y la calidad de las predicciones.
El objetivo principal del preprocesamiento es transformar los datos para que sean adecuados para las redes neuronales, eliminando ruido, anomalías y escalas no homogéneas. Este paso asegura que el modelo pueda aprender patrones relevantes y generalizar de manera efectiva a nuevos datos.
Mejora de la convergencia
Uno de los beneficios clave del preprocesamiento es facilitar la convergencia del modelo durante el entrenamiento. Cuando los datos no están bien escalados o normalizados, los algoritmos de optimización pueden:
- Oscilar entre valores, sin llegar a una solución estable.
- Converger lentamente, aumentando el tiempo necesario para entrenar el modelo.
Técnicas como la normalización (ajustar los valores a un rango fijo, como [0, 1]) o la estandarización (ajustar a una media de 0 y desviación estándar de 1) aseguran que las características tengan una base uniforme, lo que optimiza el proceso de aprendizaje.
Reducción del sobreajuste
El preprocesamiento también desempeña un papel importante en la reducción del sobreajuste. Al destacar las características más relevantes y eliminar redundancias, se disminuye la complejidad del modelo. Esto mejora la capacidad de generalización, haciendo que el modelo sea más robusto en datos no vistos.
Sensibilidad de los modelos a la escala
Muchas funciones de activación, como la sigmoide, son sensibles a la escala de los datos. Si las entradas tienen magnitudes grandes, estas funciones pueden saturarse, reduciendo la capacidad del modelo para aprender eficientemente. Escalar los datos a un rango adecuado mejora la respuesta de estas funciones y, en consecuencia, el rendimiento del modelo.
Manejo de calores atípicos
El preprocesamiento también ayuda a manejar valores atípicos (outliers), que pueden distorsionar el entrenamiento. Al aplicar técnicas como el recorte de valores extremos, el escalado robusto o la imputación de datos, se minimiza el impacto negativo de estas anomalías. Esto aumenta la resiliencia del modelo frente a irregularidades en los datos.
En resumen, el preprocesamiento de datos no es solo una etapa preparatoria; es un componente esencial en el flujo de trabajo del Deep Learning. A través de prácticas como la normalización, la estandarización y el manejo de outliers, el preprocesamiento asegura que el modelo:
- Aprenda de manera eficiente, aprovechando al máximo los datos disponibles.
- Sea más robusto, reduciendo la influencia de anomalías y ruido.
- Generalice mejor, adaptándose a datos no vistos en aplicaciones reales.
Qué es escalado y cómo hacerlo con capas de Keras
El escalado es una técnica de preprocesamiento que ajusta las características numéricas de los datos a un rango específico. Esto es esencial cuando las variables tienen diferentes escalas, lo cual puede afectar negativamente al rendimiento de los modelos de aprendizaje automático.
En muchos casos, las funciones de activación y los algoritmos de optimización son sensibles a la magnitud de los datos de entrada. Por ejemplo, si una característica varía entre 1 y 1000 y otra entre 0 y 1, el modelo puede otorgar mayor importancia a la primera simplemente por su escala más grande. El escalado ayuda a mitigar este problema, proporcionando una base uniforme para todas las características.
En Keras, se pueden utilizar capas de preprocesamiento para realizar el escalado de manera eficiente e integrada dentro del modelo. La clase tf.keras.layers.Rescaling
permite escalar las entradas multiplicándolas por un factor determinado y sumando un desplazamiento opcional, ajustando así el rango de los datos según sea necesario.
Por ejemplo, para escalar los valores de entrada al rango [0, 1], se puede utilizar la siguiente capa:
import tensorflow as tf
# Capa de escalado
escalado = tf.keras.layers.Rescaling(scale=1./255)
En este caso, si los datos de entrada son imágenes con valores de píxeles entre 0 y 255, al aplicar una escala de 1./255
, los valores se ajustan al rango [0, 1], lo cual es adecuado para muchas arquitecturas de redes neuronales.
La capa Rescaling
se puede incorporar directamente en la definición del modelo secuencial o funcional de Keras, garantizando que el preprocesamiento se aplique consistentemente durante el entrenamiento y la inferencia:
modelo = tf.keras.Sequential([
tf.keras.layers.Rescaling(scale=1./255, input_shape=(altura, anchura, canales)),
# Otras capas del modelo...
])
Al integrar la capa de escalado en el modelo, no es necesario preprocesar los datos externamente. Además, al especificar el input_shape
en la capa de escalado, se establece la forma de entrada que el modelo espera recibir.
Si se requiere un escalado diferente, como ajustar los datos al rango [-1, 1], se puede modificar el factor de escala y el desplazamiento (offset
) en la capa Rescaling
. La fórmula aplicada es salida = entrada * escala + desplazamiento
.
Por ejemplo:
# Escalar al rango [-1, 1]
escalado_personalizado = tf.keras.layers.Rescaling(scale=1./127.5, offset=-1)
Aquí, los valores originales entre 0 y 255 se transforman al rango [-1, 1], lo cual es útil en ciertos modelos y funciones de activación que operan mejor en este rango específico.
El uso de capas de preprocesamiento dentro del modelo ofrece varias ventajas. Garantiza que cualquier nueva entrada pase por el mismo procesamiento que los datos de entrenamiento, manteniendo la coherencia y reduciendo el riesgo de errores. Además, estas capas son compatibles con la serialización y exportación del modelo de Keras, lo que facilita su despliegue en diferentes entornos sin necesidad de preprocesamiento adicional.
Qué es la normalización y cómo hacerla con capas de Keras
La normalización es una técnica de preprocesamiento que ajusta las características de los datos para mejorar la eficiencia y el rendimiento de los modelos de aprendizaje profundo. A diferencia del escalado, que ajusta las características a un rango específico, la normalización transforma los datos para que cada muestra tenga propiedades consistentes, como una norma unitaria.
Una forma común de normalización es convertir cada vector de datos en uno cuya longitud sea uno, es decir, normalizar los vectores para que tengan una norma L2 igual a uno. Esto se logra dividiendo cada componente del vector entre la norma L2 del vector. Esta técnica es útil en casos donde la dirección de los datos es más relevante que su magnitud, como en algoritmos basados en similitud de cosenos o en tareas de clasificación.
En Keras, se puede utilizar la capa tf.keras.layers.UnitNormalization
para normalizar las entradas. Esta capa transforma cada vector de características dividiéndolo por su norma L2, asegurando que todos los vectores tengan la misma longitud.
Para utilizar la capa de normalización unitaria en Keras:
import tensorflow as tf
# Crear la capa de normalización unitaria
normalizacion_unidad = tf.keras.layers.UnitNormalization(axis=-1)
Al añadir esta capa al modelo, se garantiza que cada muestra de entrada esté normalizada a una norma unitaria:
modelo = tf.keras.Sequential([
normalizacion_unidad,
# Otras capas del modelo...
])
En este ejemplo, la capa UnitNormalization
normaliza las muestras en el eje especificado (por defecto axis=-1
, que es el último eje). Esto es especialmente útil cuando las características de los datos tienen diferentes escalas y se desea que cada muestra contribuya de manera uniforme al entrenamiento del modelo.
Es importante destacar que la normalización afecta a cómo el modelo aprende de los datos. Al normalizar las entradas, se evita que características con magnitudes mayores dominen el proceso de aprendizaje, permitiendo que el modelo preste atención a todas las características por igual.
La capa UnitNormalization
es fácil de integrar y no requiere adaptar parámetros adicionales, a diferencia de otras capas de preprocesamiento. Sin embargo, es fundamental asegurarse de que la normalización aplicada es adecuada para el problema en cuestión. En algunos casos, otras formas de normalización o preprocesamiento pueden ser más apropiadas.
Al utilizar la normalización en Keras, se mejora la estabilidad numérica y se facilita la convergencia durante el entrenamiento. Esto se traduce en modelos más eficientes y con mejor capacidad de generalización, lo cual es esencial en aplicaciones de aprendizaje profundo.
Qué es la estandarización y cómo hacerla con capas de Keras
La estandarización es una técnica de preprocesamiento que transforma las características numéricas de los datos para que tengan una media cero y una desviación estándar uno. Esto se logra restando la media y dividiendo entre la desviación estándar de cada característica. La estandarización es esencial cuando las variables tienen diferentes escalas o unidades, lo que podría afectar negativamente al rendimiento del modelo.
Al aplicar la estandarización, se asegura que todas las características contribuyan de manera equitativa al proceso de aprendizaje, evitando que aquellas con magnitudes mayores dominen. Esto mejora la convergencia de los algoritmos de optimización y la estabilidad numérica durante el entrenamiento.
En Keras, se puede utilizar la capa tf.keras.layers.Normalization
para realizar la estandarización de manera eficiente. Esta capa se adapta a los datos calculando la media y la desviación estándar, y luego transforma las entradas restando la media y dividiendo por la desviación estándar.
Para utilizar la capa de normalización en Keras, se sigue el siguiente proceso:
- Crear una instancia de la capa
Normalization
:
import tensorflow as tf
# Crear la capa de normalización
estandarizacion = tf.keras.layers.Normalization(axis=-1)
- Adaptar la capa a los datos de entrenamiento para calcular las estadísticas:
# Suponiendo que 'datos_entrenamiento' es un arreglo NumPy o un tensor
estandarizacion.adapt(datos_entrenamiento)
- Incorporar la capa en el modelo:
modelo = tf.keras.Sequential([
estandarizacion,
# Otras capas del modelo...
])
La función adapt
permite a la capa calcular la media y la desviación estándar de los datos de entrenamiento. De esta manera, al pasar nuevas muestras a través de la capa, se aplicará la misma transformación basada en las estadísticas aprendidas.
Es importante destacar que el método adapt
solo debe aplicarse a los datos de entrenamiento, nunca a los datos de validación o prueba, para evitar fugas de información y preservar la integridad del modelo.
Si se trabaja con la API Funcional de Keras, la capa de estandarización se integra de manera similar:
entradas = tf.keras.Input(shape=(num_caracteristicas,))
x = estandarizacion(entradas)
# Continuar construyendo el modelo
La capa Normalization
es especialmente útil cuando se trabaja con conjuntos de datos grandes o complejos, ya que realiza el preprocesamiento de manera eficiente y está optimizada para funcionar con tensores.
Además, al incluir la estandarización dentro del modelo, se garantiza que cualquier dato nuevo procesado por el modelo será transformado utilizando las mismas estadísticas, lo que mejora la consistencia y evita errores asociados al preprocesamiento externo.
Para verificar que la capa ha calculado correctamente las estadísticas, se pueden acceder a los atributos mean
y variance
de la capa:
print("Media calculada:", estandarizacion.mean.numpy())
print("Varianza calculada:", estandarizacion.variance.numpy())
De esta forma, es posible inspeccionar y confirmar que la estandarización se ha configurado adecuadamente según los datos proporcionados.
Al utilizar la estandarización con la capa Normalization
, se mejora la capacidad del modelo para aprender patrones significativos en los datos, especialmente cuando las características tienen distribuciones diferentes. Esta práctica es común en problemas de regresión y clasificación, y es una de las técnicas fundamentales en el preprocesamiento de datos para Deep Learning.
Todas las lecciones de TensorFlow
Accede a todas las lecciones de TensorFlow y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción Al Deep Learning Y Redes Neuronales
Introducción Y Entorno
Introducción A Tensorflow
Introducción Y Entorno
Introducción A Keras
Introducción Y Entorno
Redes Neuronales De Múltiples Capas
Introducción Y Entorno
Algoritmo De Backpropagation
Introducción Y Entorno
Implementación De Una Red Neuronal Con Numpy
Introducción Y Entorno
Modelo Con Api Secuencial
Construcción De Modelos Con Keras
Modelo Con Api Funcional
Construcción De Modelos Con Keras
Subclases De Modelos
Construcción De Modelos Con Keras
Capas En Keras
Construcción De Modelos Con Keras
Funciones De Activación
Construcción De Modelos Con Keras
Redes Neuronales Densas De Regresión
Construcción De Modelos Con Keras
Redes Neuronales Densas De Clasificación Binaria
Construcción De Modelos Con Keras
Redes Neuronales Densas De Clasificación Multiclase
Construcción De Modelos Con Keras
Redes Convolucionales Cnn
Construcción De Modelos Con Keras
Redes Recurrentes Rnn
Construcción De Modelos Con Keras
Redes Neuronales Mixtas
Construcción De Modelos Con Keras
Api Dataset
Procesamiento De Datos
Manejo De Valores Faltantes
Procesamiento De Datos
Encoding De Valores Categóricos En Continuos
Procesamiento De Datos
Preprocesados De Escalado, Normalización Y Estandarización
Procesamiento De Datos
Generación De Nuevas Características
Procesamiento De Datos
Algoritmos De Optimización
Entrenamiento Y Evaluación De Modelos
Técnicas De Validación
Entrenamiento Y Evaluación De Modelos
Monitorización De Entrenamiento
Entrenamiento Y Evaluación De Modelos
Redes Generativas Adversariales Gans
Técnicas Avanzadas
Transformers
Técnicas Avanzadas
Autoencoders
Técnicas Avanzadas
Carga De Capas Ya Hechas
Técnicas Avanzadas
Regularización De Modelos
Herramientas Y Optimización
Hiperparámetros Con Keras Tuner
Herramientas Y Optimización
Tensorboard
Herramientas Y Optimización
Uso De Tensorflow Keras En Gpu
Herramientas Y Optimización
Objetivos de aprendizaje de esta lección
- Comprender la importancia del preprocesamiento en Deep Learning.
- Aprender a escalar datos con
tf.keras.layers.Rescaling
. - Aplicar normalización con
tf.keras.layers.UnitNormalization
. - Implementar estandarización usando
tf.keras.layers.Normalization
. - Reconocer cómo cada técnica mejora la convergencia y robustez del modelo.