Autoencoders

 Un codificador automático (autoencoders) es un tipo de red neuronal feedforward que intenta copiar su entrada en su salida. Internamente, tiene una capa oculta, h , que describe un código , que se usa para representar la entrada. La red consta de dos partes:

  • Una función de codificador :h=f(x)
  • Una función decodificadora , que produce una reconstrucción:r=g(h)

La siguiente figura muestra la arquitectura presentada.

Esquema

El codificador automático comprime la entrada en un código de menor dimensión y luego reconstruye la salida a partir de esta representación. El código es un "resumen" o "compresión" compacto de la entrada, y también se denomina representación de espacio latente .

Si un codificador automático simplemente aprendiera a establecer g(f(x))=x en todas partes, entonces no sería muy útil; en cambio, los codificadores automáticos están diseñados para no poder aprender a copiar perfectamente. Están restringidos de manera que les permiten copiar solo aproximadamente y copiar solo la entrada que se parece a los datos de entrenamiento. Debido a que el modelo se ve obligado a priorizar qué aspectos de la entrada copiar, aprende propiedades útiles de los datos. Para construir un codificador automático, se necesitan tres cosas: un método de codificación, un método de decodificación y una función de pérdida para comparar la salida con el objetivo.

Tanto el codificador como el decodificador son redes neuronales feedforward totalmente conectadas. El código es una sola capa de una red neuronal artificial, con la dimensionalidad de nuestra elección. El número de nodos en la capa de código (el tamaño del código ) es un hiperparámetro que se debe configurar antes de entrenar el codificador automático. La siguiente figura muestra la arquitectura del codificador automático. Primero, la entrada pasa a través del codificador, que es una red neuronal completamente conectada, para producir el código. El decodificador, que tiene una estructura de red neuronal similar, produce la salida usando solo el código. El objetivo es obtener una salida idéntica a la entrada.

Arquitectura

Tradicionalmente, los codificadores automáticos se usaban para la reducción de la dimensionalidad o el aprendizaje de funciones. Más recientemente, las conexiones teóricas entre los codificadores automáticos y los modelos de variables latentes han llevado a los codificadores automáticos al frente del modelado generativo. Como método de compresión, los codificadores automáticos no funcionan mejor que sus alternativas. Y el hecho de que los codificadores automáticos sean específicos de datos los hace poco prácticos como técnica general.

En general, los codificadores automáticos tienen tres casos de uso comunes:

  1. Eliminación de ruido de datos: se debe tener en cuenta que los codificadores automáticos de eliminación de ruido no están destinados a eliminar automáticamente el ruido de una imagen, sino que se inventaron para ayudar a las capas ocultas del codificador automático a aprender filtros más robustos y reducir el riesgo de sobreajuste.
  2. Reducción de la dimensionalidad: la visualización de datos de alta dimensión es un desafío. t-SNE [7] es el método más utilizado, pero tiene problemas con un gran número de dimensiones (normalmente por encima de 32). Por lo tanto, los codificadores automáticos se pueden usar como un paso de preprocesamiento para reducir la dimensionalidad, y t-SNE usa esta representación comprimida para visualizar los datos en el espacio 2D.
  3. Codificadores automáticos variacionales (VAE): este es un caso de uso más moderno y complejo de codificadores automáticos. VAE aprende los parámetros de la distribución de probabilidad modelando los datos de entrada, en lugar de aprender una función arbitraria en el caso de los codificadores automáticos de vainilla. Al muestrear puntos de esta distribución, también podemos usar el VAE como modelo generativo