Un método no supervisado de vanguardia 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 Autoenocder, que es una técnica de aprendizaje no supervisado. Si quiero expresarlo simplemente, codificadores automáticos reducir los ruidos de los datos por comprimir los datos de entraday codificar y reconstruir los datos. De esa manera los codificadores automáticos pueden reducir la dimensionalidad o el ruido de los datos y centrarse en el punto focal real de los datos de entrada.
Como puede ver en la introducción a los codificadores automáticos, se requiere más de un proceso.
- Primero, un modelo para comprimir los datos de entrada, que es el modelo del codificador.
- Luego, otro modelo para reconstruir los datos comprimidos que debería estar lo más cerca posible de los datos de entrada, que es un modelo decodificador.
En este proceso, puede eliminar el ruido, reducir la dimensionalidad y aclarar los datos de entrada.
En este tutorial, explicaré en detalle cómo funciona un codificador automático con un ejemplo funcional.
Para este ejemplo, elegí usar un conjunto de datos públicos (Licencia Apache 2.0) denominada deep_weeds.
import tensorflow as tf
import tensorflow_datasets as tfds
ds = tfds.load('deep_weeds', split='train', shuffle_files=True)
Preparación de datos
Necesitamos preparar un conjunto de datos para este ejemplo de detección de anomalías no supervisadas. Solo se tomará una clase como nuestra clase principal y se considerará la clase válida. Y pondré algunos datos de otra clase como anomalía. Luego desarrollaremos el modelo para ver si podemos encontrar esos pocos datos de anomalías.
Elegí la clase 5 como clase válida y la clase 1 como anomalía. En el bloque de código a continuación, primero tomo todos los datos de las clases 5 y 1 y creo listas de las imágenes y sus etiquetas correspondientes.
import numpy as np
images_main = []
images_anomaly = []
labels_main= []
labels_anomaly = []
ds = ds.prefetch(tf.data.AUTOTUNE)
for example in ds…