44 · Autoencoders (autocodificadores)
Un encoder comprime la entrada a través de un cuello de botella estrecho y un decoder la reconstruye. Forzar la reconstrucción a través de un código más pequeño hace que la red aprenda la estructura esencial de los datos — la semilla de todo modelo generativo de este capítulo.
Un autoencoder aprende a copiar su entrada en su salida a través de un cuello de botella estrecho — y como el código es más pequeño que la entrada, la única forma de reconstruir bien es aprender una representación comprimida de la estructura real de los datos.
Sin esto:
Los autoencoders son el ancestro conceptual de los VAEs, los denoisers de difusión y el espacio latente de Stable Diffusion. Si los saltas, el resto del capítulo se queda sin cimientos.
Cada modelo hasta ahora tenía una etiqueta que predecir. Un autoencoder no tiene ninguna — su objetivo ES su entrada. Aprende a copiar lo que se le da, pero con un obstáculo deliberado en el medio, y ese obstáculo es todo el propósito.
La red tiene dos mitades. El encoder mapea la entrada x hacia abajo a un código pequeño z (también llamado el latente o cuello de botella, bottleneck). El decoder mapea ese código de vuelta hacia arriba a una reconstrucción x̂, de la misma forma que x. El entrenamiento minimiza la pérdida de reconstrucción ‖x − x̂‖² — hacer que la salida coincida con la entrada.
Si el código fuera tan grande como la entrada, la red podría hacer trampa copiando directamente y no aprendería nada. La magia es el cuello de botella: el código es mucho más pequeño que la entrada. Para comprimir x en un puñado de números y aún así reconstruirlo, el encoder debe descubrir la estructura esencial de los datos — qué direcciones de variación realmente importan — y descartar ruido y redundancia. El código latente es un resumen comprimido y aprendido de la entrada.
Este es un primo no lineal de PCA (el capítulo de reducción de dimensionalidad). De hecho, un autoencoder lineal con una pérdida de error cuadrático recupera exactamente el subespacio de PCA — la celda de abajo lo concreta. Cambia a capas no lineales y el autoencoder puede capturar estructura curva y no lineal que PCA no puede.
¿Para qué sirven los autoencoders? Compresión (el código es una representación compacta), denoising (entrénalo para mapear una entrada corrupta de vuelta a la limpia — el denoising autoencoder), detección de anomalías (las entradas distintas a los datos de entrenamiento se reconstruyen mal, así que un error de reconstrucción alto señala valores atípicos) y aprendizaje de representaciones (el código latente se vuelve un vector de características útil para tareas posteriores). Y de forma crucial, la forma encoder→cuello de botella→decoder se repite a lo largo de este capítulo: el VAE añade probabilidad al cuello de botella, la difusión es un denoising autoencoder iterado, y Stable Diffusion literalmente difunde dentro del espacio latente de un autoencoder.
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Un autoencoder convolucional en PyTorch: el encoder comprime imágenes a un código de 16-D, el decoder lo refleja de vuelta, pérdida de reconstrucción MSE; la variante denoising mapea una entrada corrupta a la imagen limpia.
¿Por qué el cuello de botella (un código más pequeño que la entrada) obliga a un autoencoder a aprender algo útil?
- Un autoencoder reconstruye su propia entrada a través de un cuello de botella estrecho; minimizar ‖x − x̂‖² obliga al encoder a aprender una representación comprimida de la estructura esencial de los datos.
- Un autoencoder lineal con error cuadrático recupera el subespacio de PCA; las capas no lineales lo extienden a estructura curva. Usos: compresión, denoising, detección de anomalías, aprendizaje de representaciones.
- Un autoencoder simple NO es un generador — muestrear un código latente aleatorio normalmente decodifica a basura porque el espacio latente tiene agujeros; el VAE arregla esto en la próxima lección.
Los autoencoders impulsan la reducción de dimensionalidad, el denoising de imágenes y la detección de anomalías en producción; su forma encoder→cuello de botella→decoder es la columna vertebral de los VAEs, los denoisers de difusión y el espacio latente de Stable Diffusion.
Si lo quitas: Verías los VAEs y la difusión como trucos sin relación en lugar de variaciones de una sola idea — comprimir datos a través de un cuello de botella aprendido y reconstruirlos.