What is an example of an auto encoder?

Autoencoders: El Secreto de la Compresión Neuronal

Valoración: 4.8 (6608 votos)

En el vasto y complejo campo del aprendizaje automático, las redes neuronales han demostrado ser herramientas increíblemente poderosas para resolver una miríada de problemas. Entre las diversas arquitecturas existentes, los autoencoders se destacan por su enfoque único en el aprendizaje no supervisado, centrándose en la compresión y reconstrucción de datos. A primera vista, su objetivo puede parecer simple: aprender a replicar su propia entrada. Sin embargo, la verdadera magia reside en la restricción impuesta en el proceso, lo que les permite descubrir representaciones latentes, compactas y significativas de los datos originales.

What is autoencoder in medical imaging?
Autoencoders (AEs) are a family of neural networks designed to encode input data and then reconstruct an output that is as similar as possible to the original input based on this encoded data.
Índice de Contenido

¿Qué es un Autoencoder?

Un autoencoder es esencialmente un tipo de red neuronal artificial diseñada para aprender codificaciones de datos de forma no supervisada. Su arquitectura se divide conceptualmente en dos partes principales:

  • El Codificador (Encoder): Esta parte toma los datos de entrada y los transforma en una representación de menor dimensión, a menudo llamada el 'código', 'variable latente', 'representación latente' o 'vector latente'. Piensa en ello como un proceso de compresión donde se intenta capturar la información más esencial del dato original. Matemáticamente, es una función parametrizada Eϕ que mapea el espacio de entrada X (de dimensión m) al espacio codificado Z (de dimensión n), donde típicamente m > n.
  • El Decodificador (Decoder): Esta parte toma el código (la representación latente) y lo transforma de nuevo al espacio original, intentando reconstruir el dato de entrada lo más fielmente posible. Es una función parametrizada Dθ que mapea el espacio Z al espacio X.

Ambos, el codificador y el decodificador, suelen implementarse como redes neuronales, comúnmente perceptrones multicapa (MLP). La red completa, el autoencoder, aplica primero el codificador y luego el decodificador a la entrada original, con el objetivo final de que la salida sea lo más parecida posible a la entrada inicial. Si la entrada es x, el autoencoder calcula Dθ(Eϕ(x)), esperando que esto sea una buena aproximación de x.

Para ilustrarlo con analogías simples, imagina que tienes una secuencia de números muy larga y aleatoria (como la Secuencia 01: 6, 7, 5, 4, 9, 9, 2, 8...). Es difícil de recordar. Pero si tienes una secuencia con un patrón claro (como la Secuencia 02: 2, 4, 6, 8, 10, 12, 14, 16...), solo necesitas recordar el patrón (empezar en 2 y sumar 2) para reconstruir toda la secuencia. El patrón es la representación latente comprimida. De manera similar, piensa en una fotografía de una cascada tridimensional que ves en una pantalla bidimensional. Pierdes una dimensión, pero aún puedes comprender la escena y extraer información clave. O considera un resumen de un libro; no necesitas recordar cada palabra, solo las ideas clave para retener la esencia.

Principios Matemáticos y Entrenamiento

Formalmente, un autoencoder busca minimizar la diferencia entre la entrada y su reconstrucción. Esto se logra definiendo una 'función de calidad de reconstrucción' d(x, x') que mide cuánto difiere la reconstrucción x' de la entrada original x. La función de pérdida del autoencoder se define como la esperanza de esta diferencia sobre la distribución de los datos de referencia:

L(θ, ϕ) := Ex∼μref [d(x, Dθ(Eϕ(x)))]

El objetivo del entrenamiento es encontrar los parámetros θ y ϕ (los pesos y sesgos de las redes neuronales del codificador y decodificador) que minimicen esta función de pérdida. Este proceso se realiza típicamente utilizando técnicas de optimización como el descenso de gradiente.

En la práctica, la distribución de referencia μref es la distribución empírica dada por un conjunto de datos de entrenamiento {x₁, ..., xN}. Una función de calidad de reconstrucción común es la pérdida L2 (error cuadrático medio):

d(x, x') = ||x - x'||₂²

Por lo tanto, el problema de entrenamiento se convierte en una optimización de mínimos cuadrados:

minθ, ϕ L(θ, ϕ), donde L(θ, ϕ) = (1/N) ∑i=1N ||xi - Dθ(Eϕ(xi))||₂²

El entrenamiento busca que el autoencoder sea capaz de reconstruir las entradas lo más fielmente posible a partir de su representación comprimida en el espacio latente.

Interpretación: Compresión y Dimensionalidad

La interpretación principal de un autoencoder radica en su capacidad para comprimir datos. Si el espacio codificado Z tiene una dimensión significativamente menor que el espacio de entrada X (m > n), el autoencoder se denomina undercomplete. Esta restricción obliga al codificador a aprender a capturar la información más relevante de la entrada para que el decodificador pueda reconstruirla. Es como si el autoencoder se viera forzado a encontrar una 'esencia' de los datos en un espacio más pequeño.

Un autoencoder undercomplete ideal aprendería a mapear las entradas que realmente aparecen en la distribución de referencia a códigos únicos en el espacio latente, permitiendo una reconstrucción perfecta. En teoría, un autoencoder idealmente entrenado podría incluso usarse para generar datos similares a los del entrenamiento, simplemente alimentando al decodificador con códigos muestreados del espacio latente aprendido.

Si la dimensión del espacio codificado es igual o mayor que la del espacio de entrada (n ≥ m), el autoencoder se considera overcomplete. En este caso, la red podría simplemente aprender la función identidad (copiar la entrada directamente a la salida) sin aprender ninguna representación útil. Para evitar esto y asegurar que incluso los autoencoders overcomplete aprendan características significativas, se suelen aplicar modificaciones o técnicas de regularización, como las que veremos a continuación.

What is an autoencoder in neural network?
An autoencoder is a type of artificial neural network used to learn efficient codings of unlabeled data (unsupervised learning). An autoencoder learns two functions: an encoding function that transforms the input data, and a decoding function that recreates the input data from the encoded representation.

Variaciones de Autoencoders

El autoencoder básico es solo el punto de partida. Se han desarrollado numerosas variaciones para dotar a los autoencoders de propiedades específicas o para aplicar regularización que les permita aprender mejores representaciones, incluso en escenarios donde un autoencoder undercomplete simple no sería suficiente.

Autoencoder Variacional (VAE)

Aunque comparten la arquitectura general de codificador-decodificador, los Autoencoders Variacionales (VAEs) tienen un objetivo matemático y formulación distintos. En lugar de mapear una entrada a un único vector de código fijo, el codificador de un VAE aprende a mapear la entrada a los parámetros (generalmente la media y la varianza) de una distribución de probabilidad (típicamente gaussiana) en el espacio latente. El decodificador luego reconstruye la entrada a partir de un vector muestreado de esta distribución.

Esta naturaleza probabilística hace que los VAEs sean particularmente adecuados para tareas generativas. Pueden generar nuevas muestras de datos que se parecen a los datos de entrenamiento simplemente muestreando puntos del espacio latente aprendido y pasándolos por el decodificador. La función de pérdida de un VAE combina el error de reconstrucción con un término que regulariza la distribución latente aprendida, típicamente forzándola a ser similar a una distribución a priori simple (como una gaussiana estándar).

Autoencoder Disperso (Sparse Autoencoder - SAE)

Inspirados por la hipótesis de codificación dispersa en neurociencia, los Autoencoders Dispersos (SAEs) fomentan que las representaciones latentes Eϕ(x) sean 'dispersas', es decir, que la mayoría de las entradas del vector latente sean cercanas a cero para una entrada dada. Esto puede lograrse incluso si el número de unidades ocultas (la dimensión del espacio latente) es mayor que la de la entrada.

La dispersión se puede imponer de dos maneras principales: forzando activamente que solo un pequeño número de neuronas en la capa latente estén activas (como en el k-sparse autoencoder) o añadiendo un término de regularización de dispersión a la función de pérdida. Este término penaliza las activaciones promedio de las neuronas ocultas que se desvían de un nivel de dispersión deseado bajo (por ejemplo, cercano a cero). Las funciones de penalización comunes incluyen la divergencia Kullback-Leibler (KL) o las normas L1/L2 de las activaciones. Fomentar la dispersión puede ayudar a la red a aprender características más significativas y separables.

Autoencoder Denoising (DAE)

Los Autoencoders Denoising (DAEs) buscan aprender representaciones robustas corrompiendo intencionadamente la entrada durante el entrenamiento y entrenando la red para reconstruir la entrada *original* (sin ruido). Se define un proceso de ruido T que transforma una entrada x en una versión ruidosa T(x). La función de pérdida se calcula entre la entrada original x y la reconstrucción de la entrada ruidosa Dθ(Eϕ(T(x))).

El objetivo es que la red aprenda a 'denoising' (eliminar el ruido) de la entrada corrompida para recuperar la versión limpia. Esto fuerza al autoencoder a capturar la estructura inherente de los datos que es estable bajo las perturbaciones de ruido, haciendo que las representaciones aprendidas sean más robustas. Ejemplos de procesos de ruido incluyen añadir ruido gaussiano, enmascarar (poner a cero) una fracción de las entradas, o añadir ruido sal y pimienta (poner a cero o al valor máximo una fracción de las entradas).

Autoencoder Contractivo (CAE)

El Autoencoder Contractivo (CAE) añade un término de regularización a la función de pérdida estándar que penaliza la sensibilidad de las representaciones latentes a pequeños cambios en la entrada. Específicamente, añade el cuadrado de la norma de Frobenius de la matriz Jacobiana de las activaciones del codificador con respecto a la entrada.

What is an autoencoder in neural network?
An autoencoder is a type of artificial neural network used to learn efficient codings of unlabeled data (unsupervised learning). An autoencoder learns two functions: an encoding function that transforms the input data, and a decoding function that recreates the input data from the encoded representation.

Lcont(θ, ϕ) = Ex∼μref ||∇xEϕ(x)||F²

Un valor pequeño de esta norma Jacobiana significa que pequeñas variaciones en la entrada resultan en variaciones aún más pequeñas (o nulas) en la representación latente. Esto fuerza al autoencoder a 'contraer' los vecindarios de la entrada en vecindarios más pequeños en el espacio latente, aprendiendo así representaciones que son robustas a pequeñas perturbaciones de la entrada. Se puede entender que los DAEs hacen que la función de reconstrucción resista perturbaciones de entrada pequeñas pero finitas, mientras que los CAEs hacen que las características extraídas resistan perturbaciones de entrada infinitesimales.

Autoencoder de Mínima Longitud de Descripción (MDL-AE)

Esta variación aplica el principio de Mínima Longitud de Descripción (MDL) de la teoría de la información. El principio MDL sugiere que el mejor modelo es aquel que permite la codificación más corta tanto del modelo como de los datos. Un MDL-AE busca minimizar la longitud total de descripción de los datos, que es la suma de la longitud del código latente (cuán compacta es la representación) y el error de reconstrucción (cuán bien se pueden reconstruir los datos a partir del código). El objetivo es aprender una representación que no solo sea compacta sino también eficiente e interpretable para la reconstrucción.

Autoencoder Concreto (Concrete Autoencoder)

Diseñado específicamente para la selección discreta de características. Fuerza al espacio latente a consistir en un número predefinido de características de entrada seleccionadas. Utiliza una relajación continua de la distribución categórica (de ahí el nombre 'concreto') para permitir que los gradientes fluyan a través de la capa de selección de características, haciendo posible usar backpropagation estándar para aprender un subconjunto óptimo de características de entrada que minimice la pérdida de reconstrucción.

Ventajas de la Profundidad

Aunque los autoencoders pueden ser poco profundos (un codificador y un decodificador de una sola capa), el uso de arquitecturas profundas (con múltiples capas ocultas en el codificador y el decodificador) ofrece ventajas significativas:

  • La profundidad puede reducir exponencialmente el costo computacional para representar ciertas funciones complejas.
  • La profundidad puede disminuir exponencialmente la cantidad de datos de entrenamiento necesarios para aprender algunas funciones.
  • Experimentalmente, los autoencoders profundos suelen lograr una mejor compresión y aprender representaciones más útiles en comparación con los autoencoders poco profundos o lineales.

Entrenamiento de Autoencoders Profundos

Entrenar autoencoders profundos puede ser un desafío. Una técnica pionera fue el preentrenamiento capa por capa desarrollado por Geoffrey Hinton, que trataba pares de capas como máquinas de Boltzmann restringidas para obtener una buena inicialización de pesos, seguida de un ajuste fino con backpropagation estándar. Sin embargo, investigaciones más recientes han demostrado que el entrenamiento conjunto (entrenar toda la arquitectura de extremo a extremo con una única función de pérdida de reconstrucción global) puede aprender mejores modelos de datos y características más representativas para tareas posteriores, siempre y cuando se utilicen estrategias de regularización adecuadas.

Aplicaciones de los Autoencoders

Los autoencoders, y especialmente sus variaciones, tienen una amplia gama de aplicaciones:

  • Reducción de Dimensionalidad: Como se mencionó, los autoencoders undercomplete son una forma no lineal de reducir la dimensionalidad, similar pero a menudo más potente que PCA.
  • Compresión de Datos: Al aprender representaciones compactas, pueden usarse para comprimir datos, especialmente imágenes.
  • Detección de Anomalías: Al entrenar un autoencoder con datos 'normales', las entradas anómalas a menudo resultan en un alto error de reconstrucción, lo que permite identificarlas.
  • Generación de Datos: Los VAEs son una herramienta popular para generar nuevas muestras de datos que se parecen a los datos de entrenamiento.
  • Eliminación de Ruido (Denoising): Los DAEs están diseñados específicamente para este propósito.
  • Extracción de Características: La representación latente aprendida por el codificador a menudo captura características importantes de los datos de entrada que pueden usarse en otras tareas, como clasificación o clustering.
  • Procesamiento de Imágenes: Más allá de la compresión y el denoising, se usan en tareas como super-resolución, transferencia de estilo, etc.

Autoencoders en Imágenes Médicas: Detección de Anomalías

Una aplicación particularmente importante y prometedora de los autoencoders, especialmente de los VAEs, es la detección de anomalías en imágenes médicas. La dificultad en este campo a menudo reside en obtener grandes cantidades de datos de pacientes con condiciones específicas, especialmente enfermedades raras. Los autoencoders ofrecen una solución elegante: pueden entrenarse exclusivamente con imágenes de pacientes sanos o 'normales'.

Una vez entrenado con datos normales, el autoencoder (o VAE) aprende a codificar y reconstruir imágenes saludables de manera efectiva. Cuando se le presenta una imagen que contiene una anomalía (algo que no estaba presente en los datos de entrenamiento 'normales'), la red lucha por reconstruirla fielmente. La diferencia entre la imagen de entrada anómala y su reconstrucción se conoce como error de reconstrucción o 'mapa de anomalías'.

Las regiones de la imagen donde este error de reconstrucción es alto son indicativas de la presencia de una anomalía. El autoencoder intenta 'normalizar' la imagen anómala en su reconstrucción, y la diferencia revela dónde se encontraba la desviación de la normalidad aprendida.

Esta técnica es valiosa porque no requiere ejemplos de *cada* posible anomalía durante el entrenamiento. Simplemente necesita aprender qué aspecto tienen los datos 'normales'. Los VAEs son particularmente útiles aquí debido a su naturaleza probabilística, que les permite modelar mejor la variabilidad de los datos normales.

What is the theory of autoencoders?
Autoencoders are a type of unsupervised learning technique used in machine learning. They are capable of finding hidden features or information in raw input data using artificial neural networks .

Los VAEs se han aplicado con éxito para la detección de anomalías en una variedad de modalidades de imágenes médicas, incluyendo:

  • Radiografías (por ejemplo, detección de masas en radiografías de tórax).
  • Resonancia Magnética (RM).
  • Tomografía por Emisión de Positrones (PET).
  • Imágenes Retinianas (como en OCTA para detectar retinopatía diabética).
  • Tomografía Computarizada (TC).
  • Imágenes Dermatológicas de lesiones cutáneas.
  • Muestras de tejido histopatológico.

Si bien un autoencoder entrenado en datos saludables puede detectar la *presencia* de una anomalía, no está inherentemente vinculado a un diagnóstico específico. Para abordar esto, se están explorando enfoques híbridos que combinan el mapa de error de reconstrucción con información del vector latente para proporcionar capacidades de diagnóstico más específicas.

Comparación de Variaciones Comunes de Autoencoders
TipoObjetivo PrincipalMecanismo ClaveVentajasLimitaciones/Consideraciones
Básico (Undercomplete)Reducción de Dimensionalidad, CompresiónEspacio latente de menor dimensiónSimple, eficiente para compresiónPuede aprender función identidad si no es undercomplete; solo aprende relaciones no lineales si tiene activaciones no lineales
Variacional (VAE)Generación de Datos, Aprendizaje de Distribución LatenteEspacio latente probabilístico (distribuciones)Permite muestrear y generar datos nuevos; espacio latente suave e interpolableFunción de pérdida más compleja; la calidad de las muestras generadas puede variar
Disperso (SAE)Extracción de Características, SelecciónRegularización que fomenta la dispersión de activaciones latentesAprende características importantes incluso con espacio latente grande; mejora rendimiento en clasificaciónRequiere ajustar parámetros de regularización de dispersión
Denoising (DAE)Robustez a Ruido, Extracción de CaracterísticasEntrenamiento con entradas ruidosas para reconstruir originalAprende representaciones robustas a perturbaciones; útil para limpiar datosLa robustez depende del tipo de ruido usado en entrenamiento
Contractivo (CAE)Robustez a Pequeñas Variaciones, Extracción de CaracterísticasRegularización que penaliza la sensibilidad del codificador a la entrada (norma Jacobiana)Aprende representaciones robustas a perturbaciones infinitesimalesRequiere calcular la matriz Jacobiana, computacionalmente costoso
MDL-AERepresentaciones Compactas e InterpretablesMinimiza longitud total de descripción (código + error)Fomenta representaciones eficientesMás complejo conceptualmente; aplicación menos extendida que otros tipos
ConcretoSelección Discreta de Características de EntradaUsa relajación continua en capa de selecciónPermite selección de características entrenable con backpropagationEspecífico para selección de características; requiere definir el número de características

Preguntas Frecuentes sobre Autoencoders

¿Cuál es la diferencia principal entre un autoencoder y un autoencoder variacional (VAE)?

La diferencia clave es que un autoencoder estándar aprende a mapear una entrada a un punto fijo en el espacio latente, mientras que un VAE aprende a mapear una entrada a los parámetros de una distribución de probabilidad en el espacio latente. Esto último permite a los VAEs ser utilizados para generar nuevas muestras de datos.

¿Por qué se les llama "no supervisados"?

Se consideran no supervisados porque no requieren datos etiquetados (pares entrada/salida deseada) para su entrenamiento. La "etiqueta" o salida deseada es simplemente la propia entrada original.

¿Qué es el "cuello de botella" (bottleneck)?

El cuello de botella es la capa o conjunto de capas en el medio del autoencoder donde se encuentra la representación latente comprimida. Es el punto de menor dimensión de la red y es crucial porque limita la cantidad de información que puede pasar, forzando a la red a aprender una codificación eficiente.

¿Pueden los autoencoders generar datos?

Los autoencoders estándar (como los undercomplete) no están diseñados principalmente para la generación de datos de manera flexible. Sin embargo, los Autoencoders Variacionales (VAEs) sí son capaces de generar nuevas muestras al muestrear puntos del espacio latente aprendido y pasarlos por el decodificador.

¿Para qué se usan en imágenes médicas?

En imágenes médicas, los autoencoders (especialmente VAEs) se utilizan comúnmente para la detección de anomalías. Se entrenan con imágenes saludables y detectan patologías o irregularidades como regiones con un alto error de reconstrucción.

En conclusión, los autoencoders son una familia de redes neuronales versátiles que dominan el arte de la compresión y la representación de datos. Desde su forma básica hasta sus variaciones más sofisticadas como los VAEs o DAEs, demuestran cómo las restricciones bien diseñadas pueden llevar al aprendizaje de características significativas y a la resolución de problemas complejos, como la detección de anomalías en campos críticos como la medicina. Su capacidad para desentrañar la estructura latente de los datos los convierte en una herramienta fundamental en el arsenal del aprendizaje automático moderno.

Si quieres conocer otros artículos parecidos a Autoencoders: El Secreto de la Compresión Neuronal puedes visitar la categoría Neurociencia.

Foto del avatar

Jesús Porta Etessam

Soy licenciado en Medicina y Cirugía y Doctor en Neurociencias por la Universidad Complutense de Madrid. Me formé como especialista en Neurología realizando la residencia en el Hospital 12 de Octubre bajo la dirección de Alberto Portera y Alfonso Vallejo, donde también ejercí como adjunto durante seis años y fui tutor de residentes. Durante mi formación, realicé una rotación electiva en el Memorial Sloan Kettering Cancer Center.Posteriormente, fui Jefe de Sección en el Hospital Clínico San Carlos de Madrid y actualmente soy jefe de servicio de Neurología en el Hospital Universitario Fundación Jiménez Díaz. Tengo el honor de ser presidente de la Sociedad Española de Neurología, además de haber ocupado la vicepresidencia del Consejo Español del Cerebro y de ser Fellow de la European Academy of Neurology.A lo largo de mi trayectoria, he formado parte de la junta directiva de la Sociedad Española de Neurología como vocal de comunicación, relaciones internacionales, director de cultura y vicepresidente de relaciones institucionales. También dirigí la Fundación del Cerebro.Impulsé la creación del grupo de neurooftalmología de la SEN y he formado parte de las juntas de los grupos de cefalea y neurooftalmología. Además, he sido profesor de Neurología en la Universidad Complutense de Madrid durante más de 16 años.

Subir