Qué son los autoencoders
Los autoencoders es un tipo de arquitectura de redes neuronales que pertenece al grupo de métodos de aprendizaje no supervisados. Esta arquitectura extrae las características más importantes del input eliminando el resto de poca relevancia.
Esto permite que los autoencoders aprendan una representación de la información reducida siendo un perfecto método para comprimir información.
La información completa puede ser reconstruida gracias a la arquitectura del autoencoder. Esto hace que sea un algoritmo generativo.
Modelos generativos y discriminativos
Los algoritmos estadísticos utilizados en inteligencia artificial pueden ser clasificados en métodos generativos y métodos discriminativos.
Bias en estadística y machine learning
El bias es uno de los errores en machine learning más comunes y que más influyen a las malas predicciones de los modelos. Aprende qué es y cómo solucionarlo.
Ver artículoLos algoritmos discriminativos son los que aprenden la representación de la función que mapea las variables independientes a la variable dependiente de interés. Es decir, un clasificador de coches y motos es un modelo discriminativo ya que, dadas unas variables de input, en este caso los pixeles de la imagen, es capaz de discriminar si es un coche o una moto.
Un modelo de predicción de ventas también es un modelo discriminativo ya que a partir de unas variables es capaz de predecir el valor de las ventas en un tiempo determinado.
En otras palabras, los algoritmos discriminativos aprenden la probabilidad de Y dado X: P(Y|X)
En cambio, los autoencoders variacionales, la asignación latente de Dirichlet o las máquinas de Boltzmann generan la información a partir de una representación interna llamada espacio latente. En este caso, el modelo aprende la probabilidad conjunta P(X,Y).
Los autoencoders como modelos generativos y discriminativos
Como hemos visto, uno de los puntos fuertes de los autocodificadores es el aprendizaje de una nueva representación más comprimida de la información.
Otros posts que te gustarán
Para realizar dicha tarea el autocodificador aprende a generar el propio input. Esto puede parecer trivial, pero si añadimos ruido o limitamos el tamaño de la representación interna podemos generar un modelo que aprenda las características más importantes de nuestra información y pueda ser comprimida de forma eficiente.
La mayoría de autoencoders no son considerados modelos generativos. No obstante, como veremos más adelante, existe uno en particular llamado autocodificador variacional o VAE que es capaz de aprender la distribución de variables independientes que son capaces de generar con alta probabilidad un output muy similar a nuestros datos de entrenamiento. En este caso, los VAEs si que son considerados como algoritmos generativos.
Partes y arquitectura del autocodificador
Como veremos en la siguiente sección existen distintos tipos de autocodificadores. Sin embargo, todos ellos comparten una arquitectura de base.
La primera parte es el que se conoce como encoder o codificador y es el encargado de comprimir la información. Este se consigue apilando diferentes capas de neuronas reduciendo en cada uno de ellas el número de neuronas empleadas.
La segunda parte de la arquitectura es el espacio latente, que es el espacio mínimo en el cual la información es representada dentro de la red neuronal.
La última parte se conoce como decoder o decodificador y tiene la misma forma que el encoder pero al contrario. En cada capa de la red se aumentan el número de neuronas hasta la última capa que tiene el mismo número de neuronas que la primera capa.
Tipos de autoencoders
Existen distintas estructuras que pueden adoptar los autocodificadores. Cada una de ellas tiene un nombre especifico y se especializa en una tarea en concreto.
Autoencoder apilado
Los autoencoder apilados o autocodificadores profundos es simplemente la arquitectura que utiliza distintas capas de neuronas para aprender representaciones más complejas de la información.
Tienen una estructura simétrica con respecto a la capa del espacio latente y son realmente eficientes reconstruyendo la información.
Autoencoder variacional
Los autocodificadores variacionales o VAEs son algoritmos generativos en los cuales se infiere una distribución continua de los datos de entrenamiento a través de un campo de la estadística que se conoce como inferencia variacional.
El codificador genera una media y una desviación estándar con lo que se puede generar una distribución Gaussiana de la cual el decodificador puede obtener muestras y generar el espacio latente. A partir de este, el decodificador puede crear datos ficticios muy similares a los reales.
Autoencoder disperso
Esta arquitectura tiene como objetivo limitar el número de neuronas que se activan para obligar al algoritmo a aprender patrones más complejos. Esto se consigue a través de la restricción de dispersión, donde se añade un termino en la función de coste que fuerza al autocodificador a disminuir el número de neuronas activas durante el entrenamiento.
Denoising autoencoders
Una técnica de regularización para evitar el aprendizaje trivial y obligar a la red a aprender patrones complejos es añadir ruido procedente de una distribución gaussiana aleatoria para alterar los datos introducidos forzando la obtención de patrones relevantes de la información.
Aplicaciones de los autoencoders
Los autocodificadores tienen múltiples utilidades en distintos sectores. Mencionaremos algunos, pero existen muchísimos más. Muchos problemas pueden ser enfocados de tal manera que una arquitectura de autoencoder sea capaz de resolverlo.
- Compresión de información : la principal característica de este tipo de algoritmo es que son capaces de extraer las características más importantes de la información y crear una nueva representación de esta en una dimensión reducida.
- Detección de fraudes : los autoencoders han sido utilizados por empresas como PayPal para construir sistemas de detección de fraudes extrayendo las características clave que determinan si una cierta transacción es fraudulenta o no.
- Generación de imágenes : otra aplicación posible es la generación de imágenes. Esto puede ser muy útil para tareas de diseño y para la generación de nuevos datasets de imágenes de libre distribución.