Inicio topics autocodificador ¿Qué es un autocodificador?
Explore IBM watsonx.ai
Representación abstracta del aprendizaje automático

Publicado: 23 de noviembre de 2023
Colaboradores: Dave Bergmann, Cole Stryker

¿Qué es un autocodificador?

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.

Haga un recorrido por IBM® Watsonx.ai

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.

Contenido relacionado

Suscríbase a los boletines de IBM

Codificadores automáticos frente a codificadores-decodificadores

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.

¿Cómo funcionan los autocodificadores?

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:

  • Tamaño del código: El tamaño del cuello de botella determina cuánto se van a comprimir los datos.El tamaño del código también se puede usar con un término de regularización: los ajustes al tamaño del código son una forma de contrarrestar el sobreajuste o el subajuste.
  • Número de capas: La profundidad del autocodificador se mide por el número de capas del codificador y del decodificador.Más profundidad proporciona mayor complejidad, mientras que menos profundidad proporciona mayor velocidad de procesamiento.
  • Número de nodos por capa: Generalmente, el número de nodos (o "neuronas") disminuye con cada capa de codificador, alcanza un mínimo en el cuello de botella y aumenta con cada capa de la capa de decodificador, aunque, en ciertas variantes, como autocodificadores dispersos, este no siempre es el caso.El número de neuronas también puede variar según la naturaleza de los datos de entrada: por ejemplo, un autocodificador que se ocupa de imágenes grandes requeriría más neuronas que uno que se ocupe de imágenes más pequeñas.
  • Función de pérdida: Cuando se entrena un autocodificador, la función de pérdida (que mide la pérdida de reconstrucción entre la salida y la entrada) se utiliza para optimizar las ponderaciones del modelo mediante el descenso de gradiente durante la retropropagación.Los algoritmos ideales para la función de pérdida dependen de la tarea para la que se usará el autocodificador.
Codificadores automáticos con menos nodos

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.

Autocodificadores regulados

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.

Autocodificadores dispersos

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).

Autocodificadores contractivos

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:

  • La matriz jacobiana contiene todos los derivados de primer orden de una función que se puede utilizar para la retropropagación. Representa cómo cambian los gradientes de la red a medida que se cambia la entrada.
  • La norma Frobenius se calcula como "la raíz cuadrada de la suma de los cuadrados absolutas de sus elementos".2Mide la ganancia promedio de la matriz a lo largo de cada dirección ortogonal en el espacio.3

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.

Autocodificadores de eliminación de ruido

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

Autocodificadores variacionales

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.

Casos de uso de autocodificador

Tanto los autocodificadores generativos como los deterministas tienen una amplia variedad de casos de uso en diferentes campos y tipos de datos.

  • Compresión de datos: Los autocodificadores aprenden naturalmente una representación comprimida de los datos de entrada.
  • Reducción de dimensionalidad: Las codificaciones aprendidas por los autocodificadores se pueden utilizar como entrada para redes neuronales compuestas más grandes.La reducción de la dimensionalidad de los datos complejos puede extraer características relevantes para otras tareas, así como aumentar la velocidad y la eficiencia computacional.
  • Detección de anomalías y reconocimiento facial: Los autocodificadores pueden detectar anomalías, fraudes u otros defectos y, a la inversa, confirmar una coincidencia genuina, determinando la pérdida de reconstrucción de los datos examinados en relación con el ejemplo "normal" o "genuino" con el que se compara.
  • Eliminación de ruido de imagen y de audio: Los codificadores automáticos de eliminación de ruido pueden eliminar artefactos extraños o corrupción que no coinciden con la representación del espacio latente aprendida por la red.
  • Reconstrucción de imágenes: Invirtiendo técnicas aprendidas para la eliminación de ruido, los autocodificadores pueden rellenar elementos faltantes de una imagen.Se pueden usar de manera similar para colorear imágenes.
  • Tareas generativas: Los VAE y autocodificadores adversariales (AAE), que aprenden distribuciones probabilísticas similares a las aprendidas por VAE, pero utilizan una red de discriminación adversarial (similar a las redes adversariales generativas) en lugar de divergencia de KL, han sido utilizadas con grandes tareas generativas.Entre las aplicaciones generativas más destacadas de los autocodificadores se encuentran el modelo Dall-E original de OpenAI para la generación de imágenes6 e incluso la generación de estructuras moleculares utilizadas para medicamentos.7
Soluciones relacionadas
watsonx.ai

Entrene, valide, ajuste y despliegue IA generativa, modelos básicos y capacidades de aprendizaje automático con facilidad, y cree aplicaciones de IA en una fracción del tiempo con un fragmento de los datos.

Explore watsonx.ai

Recursos de autocodificador Aprendizaje supervisado vs. no supervisado: ¿Cuál es la diferencia?

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.

Aprendizaje profundo y aprendizaje por refuerzo

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.

El nuevo modelo fundacional geoespacial de IBM

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.

Dé el siguiente paso

Capacítese, valide, ajuste y despliegue IA generativa, modelos básicos y capacidades de aprendizaje automático con facilidad, y desarrolle aplicaciones de IA en una fracción de tiempo utilizando un fragmento de los datos con IBM Watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA.

Inicie su prueba gratuita Reserve una demostración en vivo
Notas de pie de página

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