Detección de anomalías en TensorFlow y Keras utilizando el método del autoencoder
Detección de anomalías en TensorFlow y Keras con autoencoder
Un método de vanguardia no supervisado para la eliminación de ruido, reducción de dimensionalidad, detección de anomalías y más
Todos los tutoriales sobre TensorFlow y redes neuronales que he compartido hasta ahora han sido sobre aprendizaje supervisado. Este será sobre el Autoencoder, que es una técnica de aprendizaje no supervisado. Si quiero expresarlo de manera sencilla, los autoencoders reducen los ruidos de los datos mediante la compresión de los datos de entrada, y codifican y reconstruyen los datos. De esta manera, los autoencoders pueden reducir la dimensionalidad o el ruido de los datos y centrarse en el verdadero punto focal de los datos de entrada.
Como puedes ver en la introducción a los autoencoders aquí, se requiere más de un proceso.
- En primer lugar, un modelo para comprimir los datos de entrada, que es el modelo de codificador.
- Luego otro modelo para reconstruir los datos comprimidos que deberían ser tan similares como los datos de entrada, que es un modelo de decodificador.
En este proceso, se puede eliminar el ruido, reducir la dimensionalidad y limpiar los datos de entrada.
En este tutorial, explicaré en detalle cómo funciona un autoencoder con un ejemplo práctico.
Para este ejemplo, elegí usar un conjunto de datos públicos (licencia Apache 2.0) llamado deep_weeds.
- Optimizando LLMs con C, y ejecutando GPT, Lama, Whisper en tu laptop
- Cómo programar una Red Neuronal
- Una Taxonomía del Procesamiento del Lenguaje Natural
import tensorflow as tfimport tensorflow_datasets as tfdsds = tfds.load('deep_weeds', split='train', shuffle_files=True)
Preparación de los datos
Necesitamos preparar un conjunto de datos para este ejemplo de detección de anomalías no supervisadas. Tomaremos solo una clase como nuestra clase principal que se considerará como la clase válida. Y tomaré algunos datos de otra clase como anomalía. Luego desarrollaremos el modelo para ver si podemos encontrar esos pocos datos anómalos.
Elegí la clase 5 como la clase válida y la clase 1 como la anomalía. En el bloque de código a continuación, estoy tomando todos los datos de las clases 5 y 1 primero y creando listas de las imágenes y sus etiquetas correspondientes.
import numpy as npimages_main = []images_anomaly = []labels_main= []labels_anomaly = []ds = ds.prefetch(tf.data.AUTOTUNE)for example in ds…