¿Qué es un autocodificador?
Explorar IBM® watsonx.ai
Representación abstracta de machine learning

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) eficazmente los datos de entrada hasta reducirlos a sus características esenciales y, a continuación, reconstruir (decodificar) la entrada original a partir de esta representación comprimida.

Mediante el machine learning 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, informan de manera fundamental sobre la forma en que se distribuyen los datos. En conjunto, 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í únicamente la información más esencial contenida en la entrada original.

La mayoría de los diferentes tipos de autocodificadores se utilizan para tareas de inteligencia artificial relacionadas con la extracción de características, como la compresión de datos, la eliminación de ruido en imágenes, la detección de anomalías y el reconocimiento facial. Ciertos tipos de autocodificadores, como los autocodificadores variacionales (VAE) y los autocodificadores adversariales (AAE), adaptan la arquitectura de los autocodificadores para su uso en tareas generativas, como la generación de imágenes o la generación de datos de series temporales.

Realice una visita guiada de IBM® watsonx.ai

Un estudio empresarial de nueva 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

Autocodificadores vs. codificadores-decodificadores

Aunque todos los modelos de autocodificador incluyen tanto un codificador como 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 utiliza esos datos de características extraídos como su entrada, se utilizan en una variedad de modelos de deep learning, como las arquitecturas de redes neuronales convolucionales (CNN) utilizadas en tareas de computer vision 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 las redes neuronales 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 de codificador-decodificador es etiquetar con precisión los píxeles según su clase semántica: se entrenan mediante aprendizaje supervisado, optimizando las predicciones del modelo frente a un conjunto de datos "verdad-terreno" de imágenes etiquetadas por expertos humanos.

Los autocodificadores se refieren a un subconjunto específico de arquitecturas de codificador-decodificador que se entrenan mediante aprendizaje no supervisado para reconstruir sus propios datos de entrada.

Al no depender de datos de entrenamiento etiquetados, los autocodificadores no se consideran un método de aprendizaje supervisado. Como todos los métodos de aprendizaje no supervisado, los autocodificadores se entrenan para descubrir patrones ocultos en datos no etiquetados, 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 verdad-terreno para medir su resultado: la propia entrada original (o alguna versión modificada de la misma). Por esa razón, se consideran “aprendizaje autosupervisado” y de ahí su nombre: autocodificadores.

¿Cómo funcionan los autocodificadores?

Los autocodificadores descubren variables latentes haciendo pasar los datos de entrada por un "cuello de botella" antes de que lleguen al decodificador. Esto obliga al codificador a aprender a extraer y pasar sólo la información más propicia para reconstruir con precisión la entrada original.

Aunque las distintas variantes de autocodificadores modifican ciertos elementos de sus redes neuronales artificiales para adaptarse mejor a objetivos y tipos de datos específicos, todos los autocodificadores comparten elementos estructurales clave:

El codificador comprende capas que codifican una representación comprimida de los datos de entrada a través de la reducción de dimensionalidad. En un autocodificador típico, las capas ocultas de las redes neuronales 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 "estrujarse" en menos dimensiones.

El cuello de botella (o "código") contiene la representación más comprimida de la entrada: es a la vez la capa de salida de la red codificadora y la capa de entrada de la red decodificadora. Un objetivo fundamental del diseño y el entrenamiento de un autocodificador es descubrir el número mínimo de características (o dimensiones) importantes necesarias para una reconstrucción eficaz de los datos de entrada. La representación del espacio latente, es decir, el código, que emerge de esta capa se introduce entonces en el decodificador.

El decodificador consta de capas ocultas con un número progresivamente mayor de nodos que descomprimen (o decodifican) la representación codificada de los datos, reconstruyéndolos finalmente a su forma original, previa a la codificación. Esta salida reconstruida se compara con la "verdad-terreno", 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-terreno se llama error de reconstrucción.

En algunas aplicaciones de los autocodificadores, el decodificador puede descartarse tras el entrenamiento: en tales casos, el único propósito del decodificador es entrenar al codificador [similar al papel del discriminador en una red generativa adversarial (GAN)], que luego se utiliza como componente de unas redes neuronales diferentes. En muchos autocodificadores, el decodificador sigue cumpliendo una función después del entrenamiento: por ejemplo, en los VAE, el decodificador produce nuevas muestras de datos.

Una de las principales ventajas de utilizar autocodificadores frente a otras técnicas de dimensionalidad, como el análisis de componentes principales (ACP) , es que los autocodificadores pueden captar correlaciones no lineales complejas. En consecuencia, las funciones de activación utilizadas en los autocodificadores suelen ser funciones no lineales, como la función sigmoidea.

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 adecuado de redes neuronales (por ejemplo, una arquitectura basada en CNN, una arquitectura basada en RNN como la memoria a corto plazo larga, una arquitectura del transformador o una simple red neuronal vainilla prealimentada), el diseño de un autocodificador conlleva múltiples hiperparámetros:

  • Tamaño del código: el tamaño del cuello de botella determina cuánto se deben comprimir los datos. El tamaño del código también puede utilizarse como término de regularización: los ajustes al tamaño del código son una forma de contrarrestar el exceso o la falta de ajuste.
  • 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: por lo general, el número de nodos (o "neuronas") disminuye con cada capa del codificador, alcanza un mínimo en el cuello de botella y aumenta con cada capa del decodificador, aunque en algunas variantes, como los autocodificadores dispersos, no siempre es así. El número de neuronas también puede variar según la naturaleza de los datos de entrada: por ejemplo, un autocodificador que trate con 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: al entrenar 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 los pesos del modelo mediante el descenso de gradiente durante la retropropagación. El algoritmo ideal para la función de pérdida depende de la tarea para la que se utilice el autocodificador.
Autocodificadores incompletos

Los autocodificadores incompletos son una estructura de autocodificador simple utilizada principalmente para la reducción de la 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 ajuste en exceso 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 una compresión significativa de los datos, las redes neuronales deben aprender a conservar sólo las características más esenciales para la reconstrucción.

Pero si el codificador y el decodificador 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 inútil. Esto hace que los autocodificadores incompletos sean poco flexibles y limita su capacidad.

Autocodificadores regularizados

Los autocodificadores regularizados abordan las deficiencias de los autocodificadores incompletos introduciendo la 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 sólo reducen el sobreajuste, sino que también permiten al autocodificador aprender 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 reduciendo el número de nodos en cada capa oculta, los SAE crean un cuello de botella reduciendo el número de nodos que pueden activarse al mismo tiempo.

Mientras que un autocodificador incompleto estándar utilizará todas las redes neuronales para cada observación, los autocodificadores con una función de dispersión se penalizan por cada neurona que se haya activado por encima de un determinado umbral. Esto permite que el codificador y el decodificador tengan una mayor capacidad sin el correspondiente riesgo de sobreajuste de 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 sólo "merezca 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 los pesos de los parámetros mediante retropropagación se producen por separado, esta optimización se regulariza mediante esta función de dispersión. De este modo, el autocodificador se ve obligado a aprender la representación del espacio latente más eficaz dentro de las restricciones de dispersión dadas.

Las funciones utilizadas para imponer una restricción de dispersión suelen ser la regularización L1 o la divergencia KL.

Divergencia KL
La divergencia de Kullback-Leibler (KL) mide la diferencia entre dos distribuciones de probabilidad. Cuando se utiliza en el contexto de los EEA, la penalización aplicada a la red después de cada lote de entrenamiento es proporcional a la divergencia 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 verá más adelante en este artículo, la divergencia 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 Universidad de Montreal,1 los autocodificadores contractivos están diseñados para ser insensibles a pequeñas variaciones (o "ruido") en los datos de entrada con el fin de reducir el sobreajuste y capturar con mayor eficacia la información esencial.

Esto se consigue añadiendo un término de regularización en el entrenamiento, que penaliza a la red por cambiar la salida en respuesta a cambios insuficientemente grandes en la entrada. Este término de penalización se calcula utilizando dos conceptos matemáticos:

  • La matriz jacobiana contiene todas las derivadas de primer orden de una función que pueden utilizarse para la retropropagación. Representa cómo cambian los gradientes de la red a medida que se modifica la entrada.
  • La norma Frobenius se calcula como "la raíz cuadrada de la suma de los cuadrados absolutos de sus elementos".2 Mide la ganancia media de la matriz a lo largo de cada dirección ortogonal en el espacio.3

Específicamente, el término de penalización es la norma 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 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 sólo contiene 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 inútil mediante la reducción de la dimensionalidad.

A diferencia de la mayoría de los autocodificadores, los autocodificadores de eliminación de ruido no tienen los datos reales como entrada. En su lugar, se añade ruido gaussiano a los datos originales (por ejemplo, añadiendo estática aleatoria a una imagen) y el autocodificador de eliminación de ruido (DAE) aprende a filtrarlo. Durante el entrenamiento del modelo, el error de reconstrucción del resultado de la eliminación de ruido no se mide con respecto a los datos de entrada corruptos, sino con respecto a 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 dañados. Los autocodificadores de eliminación de ruido también han servido como paradigmas de entrenamiento fundamentales para los modelos de generación de imágenes más avanzados, como la difusión estable.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 los VAE y otros tipos de autocodificadores es que, mientras que la mayoría de autocodificadores aprenden modelos espaciales latentes discretos, los VAE aprenden modelos variables latentes continuos. En lugar de un único 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, "σ". Dado que estos vectores capturan los 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, lo que amplía enormemente sus capacidades y casos prácticos. Esto significa que los VAE son modelos de IA generativa.

En términos más sencillos, los VAE aprenden a codificar los aprendizajes de características importantes de las entradas de los conjuntos de datos en los que se entrenan de una forma 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 está regularizada por la divergencia KL entre la distribución de probabilidad de los datos de entrenamiento (la distribución previa) y la distribución de las 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 fueron entrenados, evitando al mismo tiempo el sobreajuste, 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), en otras palabras, 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, llamado el truco de reparametrización,5 evita el muestreo directo de la distribución variacional: como 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 puede descartarse a menudo tras el entrenamiento. Las evoluciones más avanzadas de los VAE, como los VAE condicionales, ofrecen al usuario un mayor control sobre las muestras generadas al proporcionar entradas condicionales que modifican la salida del codificador.

Casos prácticos de Autoencoder

Tanto los autocodificadores generativos como los deterministas tienen una amplia variedad de casos prácticos en distintos campos y tipos de datos.

  • Compresión de datos: los autocodificadores aprenden de forma natural una representación comprimida de los datos de entrada.
  • Reducción de dimensionalidad: las codificaciones aprendidas por los autocodificadores pueden utilizarse como entrada para redes neuronales compuestas de mayor tamaño. La reducción de la dimensionalidad de datos complejos puede extraer características relevantes para otras tareas, así como aumentar la velocidad y la eficiencia computacionales.
  • Detección de anomalías y reconocimiento facial: los autocodificadores pueden detectar anomalías, fraudes u otros defectos (y también confirmar una coincidencia auténtica), determinando la pérdida de reconstrucción de los datos examinados en relación con el ejemplo "normal" o "auténtico" con el que se comparan.
  • Eliminación de ruido en imágenes y audio: los autocodificadores de eliminación de ruido pueden eliminar artefactos extraños o corrupción que no coincide con la representación del espacio latente aprendida por la red.
  • Reconstrucción de imágenes: invirtiendo las técnicas aprendidas para la eliminación de ruido, los autocodificadores pueden rellenar los elementos que faltan en una imagen. También pueden utilizarse para colorear imágenes.
  • Tareas generativas: los VAE y los autocodificadores adversariales (AAE), que aprenden distribuciones probabilísticas similares a las aprendidas por los VAE pero utilizan una red discriminadora adversarial (similar a las redes adversariales generativas) en lugar de la divergencia KL, se han utilizado con gran éxito para 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

Entrenar, validar, ajustar e implementar IA generativa, modelos fundacionales y capacidades de aprendizaje automático con facilidad y crear aplicaciones de IA en una fracción del tiempo con una fracción de los datos.

Explore watsonx.ai

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

Este artículo explora los aspectos básicos de dos enfoques de la ciencia de datos: el aprendizaje supervisado y el no supervisado. Averigüe qué enfoque es el adecuado para su situación.

Deep learning y aprendizaje por refuerzo

Una introducción a dos de las disciplinas más demandadas del machine learning. En primer lugar, conozca la teoría en la que se basan las redes neuronales y varias arquitecturas modernas de deep learning. Una vez que haya desarrollado algunos modelos de deep learning, el curso se centrará en el aprendizaje por refuerzo.

El nuevo modelo fundacional geoespacial de IBM

Construido a partir de la colaboración de IBM con la NASA, el modelo watsonx.ai está diseñado para convertir datos de satélite en mapas de alta resolución de inundaciones, incendios y otros cambios en el paisaje para revelar el pasado de nuestro planeta y sugerir su futuro. IBM construyó el modelo a partir de un autocodificador enmascarado para procesar vídeo y lo adaptó a las imágenes de satélite.

De el siguiente paso

Entrene, valide, ajuste e implemente IA generativa, modelos básicos y capacidades de aprendizaje automático con facilidad y cree aplicaciones de IA en una fracción del tiempo utilizando una fracción de los datos con IBM® Watsonx.ai, un estudio empresarial de próxima generación para constructores de IA.

Comience su prueba sin coste Reserve una demostración en directo
Notas a pie de página

1 "Contractive Auto-Encoders: Explicit Invariance During Feature Extraction," Proceedings of the 28th International Conference on Machine Learning, julio 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 de 2021
7 "Junction Tree Variational Autoencoder for Molecular Graph Generation," Proceedings of the 35th International Conference on Machine Learning, julio 2018