Publicado: 23 de noviembre de 2023
Colaboradores: Dave Bergmann, Cole Stryker
Un autocodificador es un tipo de arquitectura de red neuronal diseñada para comprimir (codificar) de manera eficiente los datos de entrada a sus características esenciales y luego reconstruir (decodificar) la entrada original de esta representación comprimida.
Mediante el aprendizaje automático no supervisado, los autocodificadores se entrenan para descubrir variables latentes de los datos de entrada: variables ocultas o aleatorias que, a pesar de no ser directamente observables, fundamentan la manera en que se distribuyen los datos.Colectivamente, las variables latentes de un conjunto dado de datos de entrada se denominan espacio latente.Durante el entrenamiento, el autocodificador aprende qué variables latentes pueden utilizarse para reconstruir con mayor precisión los datos originales: esta representación del espacio latente representa así solo la información más esencial contenida en la entrada original.
La mayoría de los tipos de autocodificadores se utilizan para tareas de inteligencia artificial relacionadas con la extracción de características, como compresión de datos, eliminación de ruido de imágenes, detección de anomalías y reconocimiento facial. Ciertos tipos de autocodificadores, como los autocodificadores variacionales (VAE) y los autocodificadores adversariales (AAE), adaptan la arquitectura del autocodificador para su uso en tareas generativas, como la generación de imágenes o de datos de series temporales.
Ahora disponible: un estudio empresarial de próxima generación para que los creadores de IA entrenen, validen, ajusten e implementen modelos de IA. Pruebe IBM watsonx.ai gratis.
Suscríbase a los boletines de IBM
Aunque todos los modelos de autocodificador incluyen un codificador y un decodificador, no todos los modelos de codificador-decodificador son autocodificadores.
Los marcos de codificador-decodificador , en los que una red codificadora extrae características clave de los datos de entrada y una red decodificadora toma esos datos de características extraídos como entrada, se utilizan en una variedad de modelos de aprendizaje profundo, como las arquitecturas de redes neuronales convolucionales (CNN) utilizadas en tareas de visión artificial, como la segmentación de imágenes o las arquitecturas de redes neuronales recurrentes (RNN) utilizadas en tareas de secuencia a secuencia (seq2seq).
En la mayoría de las aplicaciones de modelos de codificador-decodificador, la salida de la red neuronal es diferente de su entrada. Por ejemplo, en modelos de segmentación de imágenes como U-Net, la red codificadora extrae datos de características de la imagen de entrada para determinar la clasificación semántica de los distintos píxeles; utilizando ese mapa de características y esas clasificaciones por píxeles, la red decodificadora construye entonces máscaras de segmentación para cada objeto o región de la imagen. El objetivo de estos modelos codificador-decodificador es etiquetar con precisión los píxeles por su clase semántica: se entrenan a través del aprendizaje supervisado, optimizando las predicciones del modelo frente a un conjunto de datos de “verdad fundamental” de imágenes etiquetadas por expertos humanos.
Autocodificadores se refiere a un subconjunto específico de arquitecturas codificador-decodificador que se entrenan mediante aprendizaje no supervisado para reconstruir sus propios datos de entrada.
Debido a que no dependen de datos de capacitación etiquetados, los codificadores automáticos no se consideran un método de aprendizaje supervisado. Al igual que todos los métodos de aprendizaje no supervisado, los autocodificadores se entrenan para descubrir patrones ocultos en datos sin etiquetar, en lugar de predecir patrones conocidos demostrados en datos de entrenamiento etiquetados. Sin embargo, al igual que los modelos de aprendizaje supervisado, y a diferencia de la mayoría de los ejemplos de aprendizaje no supervisado, los autocodificadores tienen una realidad fundamental con la que medir su producción: la propia entrada original (o alguna versión modificada de la misma). Por esa razón, se consideran "aprendizaje autosupervisado" y, por ende, autocodificador.
Los autocodificadores descubren variables latentes pasando los datos de entrada a través de un "cuello de botella" antes de llegar al decodificador. Esto obliga al codificador a aprender a extraer y pasar solo la información más propicia para reconstruir con precisión la entrada original.
Aunque las diferentes variantes de autocodificadores alteran ciertos elementos de su red neuronal artificial para adaptarse mejor a objetivos y tipos de datos específicos, todos los autocodificadores comparten elementos estructurales clave:
El codificador consta de capas que codifican una representación comprimida de los datos de entrada a través de la reducción de la dimensionalidad. En un autocodificador típico, las capas ocultas de la red neuronal contienen un número progresivamente menor de nodos que la capa de entrada: a medida que los datos atraviesan las capas del codificador, se comprimen mediante el proceso de "comprimirse" en menos dimensiones.
El cuello de botella (o "código") contiene la representación más comprimida de la entrada: es tanto la capa de salida de la red codificadora como la capa de entrada de la red decodificadora.Un objetivo fundamental del diseño y entrenamiento de un autocodificador es descubrir la cantidad mínima de características (o dimensiones) importantes necesarias para una reconstrucción efectiva de los datos de entrada.La representación del espacio latente, es decir, el código, que emerge de esta capa se introduce luego en el decodificador.
El decodificador comprende capas ocultas con un número progresivamente mayor de nodos que descomprimen (o decodifican) la representación codificada de datos, reconstruyendo finalmente los datos a su forma original de codificación previa.Esta producción reconstruida se compara entonces con la "verdad fundamental", que en la mayoría de los casos es simplemente la entrada original para medir la eficacia del autocodificador.La diferencia entre la salida y la verdad fundamental se llama error de reconstrucción.
En algunas aplicaciones de autocodificadores, el decodificador puede descartarse después del entrenamiento: en tales casos, el único propósito del decodificador es entrenar al codificador similar al rol del discriminador en una red adversarial generativa (GAN), que luego se utiliza como un componente diferente de la red neuronal. En muchos autocodificadores, el decodificador continúa atendiendo un propósito posterior al entrenamiento: por ejemplo, en VAE, el decodificador produce nuevas muestras de datos.
Una de las principales ventajas de usar codificadores automáticos sobre otras técnicas de dimensionalidad, como el análisis de componentes principales (PCA), es que los autocodificadores pueden capturar correlaciones complejas no lineales .En consecuencia, las funciones de activación utilizadas en los autocodificadores suelen ser funciones no lineales como la función sigmoide.
Los diferentes tipos de autocodificadores realizan adaptaciones a esta estructura para adaptarse mejor a diferentes tareas y tipos de datos. Además de seleccionar el tipo apropiado de red neuronal (por ejemplo, una arquitectura basada en CNN, una arquitectura basada en RNN, como memoria a largo plazo a corto plazo, una arquitectura transformadora o una simple red neuronal de descenso por gradiente), el diseño de un autocodificador implica múltiples hiperparámetros:
Los autocodificadores con menos nodos son una estructura simple de autocodificador que se utiliza principalmente para la reducción de dimensionalidad. Sus capas ocultas contienen menos nodos que sus capas de entrada y salida, y la capacidad de su cuello de botella es fija.
El objetivo de este cuello de botella es evitar que el autocodificador se sobreajuste a sus datos de entrenamiento. Sin limitar suficientemente la capacidad del cuello de botella, la red tiende a aprender la función de identidad entre la entrada y la salida: en otras palabras, puede aprender a minimizar la pérdida de reconstrucción simplemente copiando la entrada directamente. Al forzar que los datos se compriman significativamente, la red neuronal debe aprender a retener solo las características más esenciales para la reconstrucción.
Pero si el codificador y el descodificador tienen una capacidad suficientemente alta (es decir, si procesan entradas de datos grandes o complejas), entonces el autocodificador (incluso con un cuello de botella) puede aprender la función de identidad de todos modos, haciéndola inservible. Esto hace que los autocodificadores con menos nodos sean poco flexibles y limita su capacidad.
Los autocodificadores regularizados abordan las deficiencias de los autocodificadores con menos nodos mediante la introducción de regularización: técnicas que restringen o modifican la forma en que el modelo calcula el error de reconstrucción. Estos términos de regularización no solo reducen el sobreajuste, sino que también permiten que el autocodificador aprenda características o funciones útiles.
Los autocodificadores dispersos (SAE) imponen una restricción de dispersión: en lugar de crear un cuello de botella de información al reducir el número de nodos en cada capa oculta, los SAE crean un cuello de botella al reducir el número de nodos que se pueden activar al mismo tiempo.
Mientras que un autocodificador estándar incompleto utilizará toda la red neuronal para cada observación, los autocodificadores con una función de dispersión son penalizados por cada neurona que se haya activado más allá de un cierto umbral. Esto permite que el codificador y el decodificador tengan una capacidad más alta sin el riesgo correspondiente de sobreajuste a los datos de entrenamiento (porque no todas las neuronas se activarán). También permite que las capas ocultas contengan nodos dedicados a descubrir características específicas: la función de dispersión garantiza que solo "valga la pena" activar esos nodos si dichas características están presentes.
Aunque el cálculo del error de reconstrucción y la posterior optimización de las ponderaciones de parámetros a través de la retropropagación se producen por separado, esta optimización es regularizada por esta función de dispersión. Por lo tanto, el autocodificador se ve obligado a aprender la representación del espacio latente más efectiva dentro de las restricciones de escasez dadas.
Las funciones utilizadas para imponer una restricción de dispersión suelen ser regularización L1 o divergencia de KL.
Divergencia de KL
La divergencia de Kullback-Leibler (KL) mide la diferencia entre dos distribuciones de probabilidad.Cuando se utiliza en el contexto de SAE, la penalización otorgada a la red después de cada lote de entrenamiento es proporcional a la divergencia de KL entre la distribución objetivo de los valores de activación (la dispersión deseada) y la distribución real de los valores de activación.Como se analizará más adelante en este artículo, la divergencia de KL también se utiliza para optimizar la precisión de las distribuciones de probabilidad aprendidas por los autocodificadores variacionales (VAE).
Introducidos por primera vez en 2011 por investigadores de la Université de Montréal,1los autocodificadores contractivos están diseñados para ser insensibles a variaciones menores (o “ruido”) en los datos de entrada con el fin de reducir el sobreajuste y capturar de manera más efectiva la información esencial.
Esto se logra agregando un término de regularización en el entrenamiento, penalizando la red para cambiar la salida en respuesta a cambios considerablemente grandes en la entrada. Este término de penalización se calcula con dos conceptos matemáticos:
En concreto, el término de penalización es la norma de Frobenius de la matriz jacobiana de activaciones neuronales en la red codificadora con respecto a la entrada. Este término de penalización y el algoritmo de la función de pérdida utilizado para reducir el error de reconstrucción son contradictorios: la función de pérdida de reconstrucción tiende a observar las variaciones en los datos de entrada, mientras que el término de penalización tiende a ignorarlas.Al combinar ambos términos, la red se ve obligada a aprender una representación comprimida de la entrada que contiene solo las variables más importantes.
Los autocodificadores de eliminación de ruido reciben datos de entrada parcialmente corruptos y se entrenan para restaurar la entrada original eliminando la información inservible mediante la reducción de la dimensionalidad.
A diferencia de la mayoría de los autcodificadores, aquellos con eliminación de ruido no tienen datos reales como entrada. En cambio, el ruido Gaussiano se agrega a la base de datos original, por ejemplo, con estática aleatoria a una imagen y el autocodificador de eliminación de ruido (DAE) aprende a filtrarla. Durante el entrenamiento del modelo, el error de reconstrucción de la salida con ruido eliminado no se mide con los datos de entrada corruptos, sino con la imagen original.
Además de evitar el sobreajuste, esta técnica de entrenamiento también hace que los autocodificadores de eliminación de ruido sean muy útiles para limpiar archivos de imagen y audio ruidosos o corruptos.Los autocodificadores de eliminación de ruido también han servido como paradigmas de entrenamiento fundacionales para modelos de generación de imágenes de última generación, como Stable Diffusion.4
Los autocodificadores variacionales (VAE) son modelos generativos que aprenden representaciones comprimidas de sus datos de entrenamiento como distribuciones de probabilidad, que se utilizan para generar nuevos datos de muestra creando variaciones de esas representaciones aprendidas.
La diferencia fundamental entre VAE y otros tipos de autocodificadores es que, aunque la mayoría de los autocodificadores aprenden modelos de espacio latente discreto, los VAE aprenden modelos de variables latentes continuas. En lugar de un solo vector de codificación para el espacio latente, los VAE modelan dos vectores diferentes: un vector de medias, “μ”, y un vector de desviaciones estándar, “σ”.Debido a que estos vectores capturan atributos latentes como una distribución de probabilidad, es decir, aprenden una codificación estocástica en lugar de una codificación determinista, los VAE permiten la interpolación y el muestreo aleatorio, expandiendo en gran medida sus capacidades y casos de uso.Esto significa que los VAE son modelos de IA generativa.
En términos más simples, los VAE aprenden a codificar aprendizajes de características importantes a partir de las entradas en los conjuntos de datos en los que están entrenados de una manera flexible y aproximada que les permite generar nuevas muestras que se asemejan a los datos de entrenamiento originales. La función de pérdida utilizada para minimizar el error de reconstrucción se regula por la divergencia de KL entre la distribución de probabilidad de datos de entrenamiento (la distribución anterior) y la distribución de variables latentes aprendidas por el VAE (la distribución posterior). Esta función de pérdida regularizada permite a los VAE generar nuevas muestras que se asemejan a los datos con los que se entrenaron, al tiempo que evita el sobreajuste, lo que, en este caso, significaría generar nuevas muestras demasiado idénticas a los datos originales.
Para generar una nueva muestra, el VAE muestrea un vector latente aleatorio (ε) dentro de la unidad gaussiana (enlace externo a ibm.com); es decir, selecciona un punto de partida aleatorio dentro de la distribución normal, lo desplaza por la media de la distribución latente (μ) y lo escala por la varianza de la distribución latente (σ).Este proceso, denominado truco de reparametrización, 5 evita el muestreo directo de la distribución variacional: debido a que el proceso es aleatorio, no tiene derivada, lo que elimina la necesidad de retropropagación sobre el proceso de muestreo.
Cuando se utiliza un VAE para tareas generativas, el codificador a menudo se puede descartar después del entrenamiento. Las evoluciones más avanzadas de VAE, como los VAE condicionales, brindan al usuario más control sobre las muestras generadas al proporcionar entradas condicionales que modifican la salida del codificador.
Tanto los autocodificadores generativos como los deterministas tienen una amplia variedad de casos de uso en diferentes campos y tipos de datos.
Este artículo explora los aspectos esenciales de dos enfoques de ciencia de datos: el aprendizaje supervisado y no supervisado. Averigüe qué enfoque es el más adecuado para su situación.
Una introducción a dos de las disciplinas más buscadas en aprendizaje automático. Primero, aprenda sobre la teoría detrás de las redes neuronales y varias arquitecturas modernas de aprendizaje profundo. Una vez que hayas desarrollado algunos modelos de aprendizaje profundo, el curso se centrará en el aprendizaje por refuerzo.
Creado a partir de la colaboración de IBM con la NASA, el modelo watsonx.ai está diseñado para convertir datos satelitales en mapas de alta resolución de inundaciones, incendios y otros cambios de paisaje para revelar el pasado de nuestro planeta y tener un indicio de su futuro. IBM construyó el modelo en un autocodificador enmascarado para procesar video y lo adaptó a imágenes satelitales.
1 "Contractive Auto-Encoders: Explicit Invariance During Feature Extraction", Proceedings of the 28th International Conference on Machine Learning, July 2011
2 "Frobenius Norm", Wolfram Mathworld
3 "Matrix Norms", UC Berkeley, February 2021
4 "High-Resolution Image Synthesis With Latent Diffusion Models", Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), junio 2022
5 "Auto-Encoding Variational Bayes", arXiv, diciembre 2013 (última actualización 10 de diciembre de 2022)
6 "DALL-E: Creating Images from Text", OpenAI, 5 de enero 2021
7 "Junction Tree Variational Autoencoder for Molecular Graph Generation", Proceedings of the 35th International Conference on Machine Learning, julio 2018