Utilizados en el aprendizaje no supervisado, los autoencoders son capaces de aprender a partir de datos no etiquetados y pueden emplearse en una gran variedad de dominios. Su arquitectura los convierte en valiosos aliados y, aunque pueda parecer trivial, aborda y resuelve varias complejidades.
Los autoencoders son redes neuronales que se utilizan para aprender a partir de datos no etiquetados, lo que los sitúa en el ámbito del aprendizaje no supervisado, es decir, del aprendizaje profundo no supervisado.
La disponibilidad de cada vez más datos plantea, en primer lugar, dos problemas: la necesidad de procesarlos en un plazo y un espacio ajustados. La compresión de datos es la piedra angular de los autoencoders, diseñados para la reducción de la dimensionalidad pero aplicados posteriormente a distintos dominios.
También se convierten en modelos generativos en la medida en que, si se entrenan autoencoders para reconocer imágenes de caras, también son capaces de generarlas.
Qué es un Autoencoder
Como ya se ha dicho, los autoencoders son estructuras de redes neuronales, técnicas de aprendizaje no supervisado entrenadas para copiar la entrada en la salida.
Los autoencoders constan de tres partes: codificador, codificador y decodificador. El codificador comprime los datos y el decodificador los reconstruye. En este proceso de representación de los datos de entrada, los autoencoders aprenden la codificación, es decir, la representación de los propios datos pero en una dimensionalidad inferior.
En palabras más accesibles, los autoencoders procesan los datos de entrada comprimiéndolos y codificándolos para, a continuación, reconstruir los datos de salida. El modelo del autoencoder se entrena hasta que la salida se representa lo más fielmente posible. Gracias a este proceso, el autoencoder aprende a reconocer las características fundamentales de los datos.
Los autoencoders, como cualquier red neuronal, constan de varias capas, y lo que los caracteriza es que las capas de entrada contienen la misma cantidad de información que las de salida. Esto queda más claro al profundizar en su arquitectura.
La detección de anomalías y la reducción del ruido (denoising) de las imágenes es uno de los principales ámbitos en los que se utilizan los autoencoders
Observan los datos de entrada, procesan una representación de los mismos y producen salidas similares a los datos de entrada. Para ello, utilizan dos partes distintas:
-una red de reconocimiento, que es el codificador, encargado de convertir los datos de entrada en representaciones internas
-una red generativa, que es el descodificador y que convierte la representación interna en salida.
Esta subdivisión es funcional al discurso sobre la arquitectura de los autoencoders.
Arquitectura de un autoencoder
El codificador y el decodificador son redes neuronales feedforward con un número idéntico de capas de entrada y de salida, según lo determinen los datos de entrada, las capas centrales tienen un número menor de nodos, este es de hecho el cuello de botella típico de las redes neuronales y, en el caso concreto, mientras que la entrada y la salida son la representación de datos de alta dimensión, la capa central coincide con la representación de baja dimensión.
El objetivo del proceso es reducir los errores de reconstrucción de los datos y, manteniéndonos en el ámbito del aprendizaje automático, los algoritmos más utilizados para lograr este objetivo son los de retropropagación, una estrategia orientada a mejorar las redes neuronales durante el entrenamiento que se basa en hacer que el error tome un camino inverso entre la salida (decodificador) y la oculta (la capa oculta).
En el aprendizaje automático existe lo que se denomina el dilema sesgo-varianza. En los modelos, hay errores constantes (sesgo) que pueden variar en función del conjunto de datos (varianza). El compromiso resultante es crucial en los autoencoders, que tienen que reconstruir las entradas reduciendo los errores, y puede lograrse mediante arquitecturas implementadas.
Cómo se implementan
Un autoencoder se entrena configurando cuatro parámetros. Hay que recordar en este paso que consta de tres partes, a saber, codificador, cola y decodificador, y que éstas deben parametrizarse:
-hay que configurar el número de niveles, que varían en función de la complejidad de los datos a tratar
-el número de nodos por nivel es un parámetro a tener en cuenta considerando que codificadores y decodificadores tienen el mismo tamaño
-el número de nodos en la capa intermedia (colas) también debe ajustarse, cuanto menor sea el valor, mayor será la compresión
-la función de pérdida es otro parámetro y se utiliza para medir la “pérdida de reconstrucción”. Es un problema de regresión, las funciones de pérdida son la entropía cruzada binaria (para valores de entrada binarios) o el error cuadrático medio.
La implementación de los autoencoders varía en función de la librería utilizada. Entre las más populares se encuentran Keras o el framework PyTorch.
Aplicaciones de los autoencoders
Las áreas en las que se utilizan los autoencoders son muchas. Encuentran su lugar en la reducción de dimensionalidad, la detección de anomalías y, de forma más general, para el aprendizaje de características.
Otra finalidad clásica es el denoising, modelos que se entrenan para eliminar el ruido de los datos de entrada. Un ejemplo clásico son las imágenes y el entrenamiento de los sistemas conectados a ellas. Se puede añadir ruido a los datos de entrada y entrenar a la red para que recupere los datos originales.
Del mismo modo, los autoencoders también se pueden utilizar para comprimir bases de datos de imágenes.
En 2019, un autoencoder variacional -que difiere de los clásicos de los que hemos hablado aquí- permitió predecir interacciones farmacológicas en una prueba realizada con ratones.