Un autoencoder es un tipo de red neuronal artificial utilizada para aprender codificaciones eficientes de datos no etiquetados, una forma de aprendizaje no supervisado. Aprende dos funciones: una función de codificación que transforma los datos de entrada en una representación comprimida, y una función de decodificación que reconstruye los datos originales a partir de esa representación. La red se entrena para minimizar la diferencia entre la entrada y su reconstrucción, aprendiendo así una incrustación de menor dimensión que captura la estructura esencial de los datos. Estas incrustaciones se utilizan a menudo para la reducción de dimensionalidad o como entradas para otros algoritmos de aprendizaje automático.
Los autoencoders tienen numerosas variantes que imponen restricciones adicionales para hacer que las representaciones aprendidas sean más útiles. Los autoencoders regularizados, como los dispersos, de denoising y contractivos, son efectivos para tareas de clasificación, mientras que los autoencoders variacionales pueden generar nuevas muestras de datos similares a la distribución de entrenamiento. Las aplicaciones incluyen reconocimiento facial, detección de anomalías, detección de características y aprendizaje de significados de palabras.
Principios matemáticos
Un autoencoder se define formalmente mediante dos conjuntos: el espacio de mensajes codificados \(\mathcal{Z}\) y el espacio de mensajes decodificados \(\mathcal{X}\), típicamente espacios euclidianos con \(\mathcal{X} = \mathbb{R}^m\) y \(\mathcal{Z} = \mathbb{R}^n\) donde \(m > n\). También incluye dos familias parametrizadas de funciones: una familia de codificadores \(E_\phi: \mathcal{X} \to \mathcal{Z}\) y una familia de decodificadores \(D_\theta: \mathcal{Z} \to \mathcal{X}\). Para una entrada \(x\), el codificador produce una variable latente \(z = E_\phi(x)\), y el decodificador genera una reconstrucción \(x' = D_\theta(z)\). Tanto el codificador como el decodificador son típicamente perceptrones multicapa; por ejemplo, un codificador de una capa calcula \(\sigma(Wx + b)\), donde \(\sigma\) es una función de activación, \(W\) una matriz de pesos y \(b\) un vector de sesgo.
Entrenar un autoencoder requiere una tarea definida por una distribución de probabilidad de referencia \(\mu_{ref}\) sobre \(\mathcal{X}\) y una función de calidad de reconstrucción \(d: \mathcal{X} \times \mathcal{X} \to [0, \infty]\). La función de pérdida es el error de reconstrucción esperado \(L(\theta, \phi) = \mathbb{E}_{x \sim \mu_{ref}}[d(x, D_\theta(E_\phi(x)))]\). El objetivo es encontrar los parámetros \(\theta\) y \(\phi\) que minimicen esta pérdida, típicamente utilizando métodos de optimización basados en gradientes como Adam o variantes de descenso de gradiente estocástico.
Variantes y regularizaciones
Varias variantes de autoencoders modifican la función de pérdida o la arquitectura para fomentar propiedades específicas. Los autoencoders dispersos añaden una penalización sobre la activación de las unidades ocultas, promoviendo representaciones dispersas. Los autoencoders de denoising corrompen la entrada con ruido y entrenan la red para reconstruir el original limpio, haciendo que la representación sea robusta al ruido. Los autoencoders contractivos añaden una penalización sobre el jacobiano del codificador, fomentando que la representación sea insensible a pequeños cambios en la entrada. Estas formas regularizadas se utilizan a menudo para la extracción de características en pipelines de clasificación.
Los autoencoders variacionales (VAEs) adoptan un enfoque probabilístico, aprendiendo una distribución sobre las variables latentes y permitiendo el modelado generativo. Los VAE han sido influyentes en IA generativa y se utilizan en aplicaciones como la síntesis de imágenes y el descubrimiento de fármacos.
Aplicaciones
Los autoencoders se aplican en muchos dominios. En visión por computadora, se utilizan para reconocimiento facial y detección de anomalías, donde el error de reconstrucción resalta patrones inusuales. En procesamiento de lenguaje natural, ayudan a aprender incrustaciones de palabras y representaciones semánticas. También sirven como bloques de construcción en arquitecturas de aprendizaje profundo, como U-Net para segmentación de imágenes, que utiliza una estructura codificador-decodificador similar a los autoencoders.
En la industria, los autoencoders se despliegan para detección de fraude, detección de intrusiones en redes y mantenimiento predictivo. Por ejemplo, AWS y Google Cloud ofrecen servicios de aprendizaje automático que incorporan detección de anomalías basada en autoencoders. Instituciones de investigación como MIT CSAIL y Stanford AI Lab han contribuido al avance de la teoría y las aplicaciones de los autoencoders.
Relación con otros modelos
Los autoencoders están estrechamente relacionados con los modelos codificador-decodificador y las arquitecturas secuencia a secuencia utilizadas en transformers. Mientras que los transformers utilizan atención de múltiples cabezas y codificación posicional para tareas como la traducción, los autoencoders se centran en el aprendizaje de representaciones no supervisado. Algunos modelos de lenguaje grandes modernos incorporan objetivos similares a los autoencoders para el preentrenamiento, como el modelado de lenguaje enmascarado, que puede verse como un autoencoder de denoising sobre texto.
Limitaciones y extensiones
Un autoencoder básico puede aprender una función identidad si el espacio latente es demasiado grande, por lo que son necesarias restricciones como capas de cuello de botella o regularización. El sobreajuste es una preocupación, abordada mediante técnicas como dropout y normalización por lotes. Las extensiones incluyen autoencoders apilados, donde múltiples capas se entrenan de manera codiciosa, y poda de modelos para reducir el costo computacional. La investigación continúa en la mejora de la robustez y la interpretabilidad, con contribuciones de grupos como OpenAI y Google DeepMind.