Un autocodificador es un tipo de red neuronal artificial utilizada para aprender codificaciones eficientes de datos no etiquetados (aprendizaje no supervisado).[1][2]​ El autocodificador aprende dos funciones, la primera es aquella que transforma los datos de entrada y la segunda es la función de decodificación que recrea los datos de entrada a partir de la representación codificada. El autocodificador aprende una representación eficiente (codificación) para un conjunto de datos, normalmente para reducir la dimensionalidad.

Existen variantes que pretenden forzar a las representaciones aprendidas a asumir propiedades útiles.[3]​ Algunos ejemplos son los autocodificadores regularizados (Sparse, Denoising y Contractive), que son eficaces en el aprendizaje de representaciones para tareas de clasificación posteriores,[4]​ y los autocodificadores variacionales, con aplicaciones como modelos generativos.[5]​ Los autocodificadores pueden ser aplicados en muchos problemas, incluyendo el reconocimiento facial,[6]​ la detección de características,[7]​ la detección de anomalías y la adquisición del significado de las palabras.[8][9]​ Los autocodificadores también son modelos generativos que pueden generar aleatoriamente nuevos datos que son similares a los datos de entrada (datos de entrenamiento).[7]

Principios matemáticos editar

Definición editar

Un autocodificador se define por los siguientes componentes:

  • Dos conjuntos: el espacio de los mensajes descodificados  ; el espacio de los mensajes codificados  . Casi siempre, ambos   y   son espacios euclidianos, es decir,   para algunos  .
  • Dos familias de funciones parametrizadas: la familia de codificadores   parametrizado por   y la familia de decodificadores  , parametrizado por  .

Para cualquier  , normalmente escribimos  , y nos referiremos a él como el código variable latente, la representación latente, el vector latente, etc. A la inversa, para cualquier  , normalmente escribimos   y nos referirnos a él como el mensaje (descodificado).

Usualmente, tanto el codificador como el descodificador se definen como perceptrones de múltiples capas. Por ejemplo, un codificador MLP de una capa   es:

 

Donde   es una función de activación por elementos, como una función sigmoidea o una unidad lineal rectificada,   es una matriz denominada "peso", y   es un vector llamado "sesgo".

Entrenamiento de un autocodificador editar

Un autocodificador, por sí mismo, es simplemente una tupla de dos funciones. Para juzgar su calidad, necesitamos una tarea. Una tarea se define mediante una distribución de probabilidad de referencia   sobre   y una función de "calidad de la reconstrucción   de forma que   mide cuánto   difiere de  .

Con ellos, podemos definir la función de pérdida para el autocodificador como:

 

El autocodificador óptimo para una tarea determinada   es entonces  . La búsqueda del autocodificador óptimo puede llevarse a cabo mediante cualquier técnica matemática de optimización, pero normalmente mediante el descenso de gradiente. Este proceso de búsqueda se denomina "entrenamiento del autocodificador". En la mayoría de las situaciones, la distribución de referencia es simplemente la distribución empírica dada por un conjunto de datos  , de forma que:

 

Donde   es la medida de Dirac, y la función de calidad es sólo la pérdida L2:   y   es la norma euclidiana. Entonces, el problema de buscar el autocodificador óptimo no es más que una optimización por mínimos cuadrados:

 

Interpretación editar

 
Esquema de un autocodificador básico

Un autocodificador consta de dos partes principales, una parte que convierte el mensaje en un código y una parte que reconstruye el mensaje a partir del código. Un autocodificador óptimo realizaría una reconstrucción lo más perfecta posible, definida como "casi perfecta" por la función de calidad de la reconstrucción  .

La forma más sencilla de realizar perfectamente la tarea de copia sería duplicar la señal. Para suprimir este comportamiento, el espacio del código   suele tener menos dimensiones que el espacio de mensajes  .

Un autocodificador de este tipo se denomina subcompleto. Puede interpretarse como una compresión del mensaje o una reducción de su dimensionalidad.[1][10]

En el límite de un autocodificador incompleto ideal, cada código posible   en el espacio del código se utiliza para codificar un mensaje   que realmente aparece en la distribución   y el decodificador también es perfecto:  . Este autocodificador ideal puede utilizarse para generar mensajes indistinguibles de los reales, alimentando su decodificador con código arbitrario   y obtener  , que es un mensaje que realmente aparece en la distribución  .

Si el espacio de código   tiene una dimensión mayor (sobrecompleta) o igual al espacio de mensajes  , o las unidades ocultas tienen suficiente capacidad, un autocodificador puede aprender la función de identidad y volverse inútil. Sin embargo, los resultados experimentales han demostrado que los autocodificadores sobrecompletos pueden aprender características útiles.[11]

En un escenario ideal, la dimensión del código y la capacidad del modelo podrían establecerse en función de la complejidad de la distribución de datos que se desea modelar. Una forma estándar de hacerlo es añadir modificaciones al autocodificador básico, que se detallarán a continuación.[3]

Historia editar

El autocodificador fue propuesto por primera vez por Kramer como una generalización no lineal del análisis de componentes principales (ACP) .[1]​ El autocodificador también ha sido llamado autoasociador,[12]​ o red Diábolo.[11][13]​ Sus primeras aplicaciones datan de principios de los años 90.[3][14][15]​ Su aplicación más tradicional fue la reducción de dimensionalidad o el aprendizaje de características, pero el concepto se generalizó para el aprendizaje de modelos generativos de datos.[16][17]​ Algunas de las IA más potentes de la década de 2010 involucraban autoencoders apilados dentro de redes neuronales profundas.[18]

Variaciones editar

Autocodificadores regularizados editar

Existen varias técnicas para evitar que los autocodificadores aprendan la función de identidad y para mejorar su capacidad de captar información importante y aprender representaciones más ricas.

Autocodificador disperso (SAE) editar

Inspirados en la hipótesis de la codificación dispersa en neurociencia, los autocodificadores dispersos son variantes de los autocodificadores, tales que los códigos   o mensajes tienden a ser códigos dispersos, es decir,   es cercano a cero en la mayoría de las entradas. Los autocodificadores dispersos pueden incluir más (en lugar de menos) unidades ocultas que entradas, pero sólo se permite que un pequeño número de unidades ocultas estén activas al mismo tiempo.[18]​ Fomentar la dispersión mejora el rendimiento en tareas de clasificación.[19]

 
Esquema simple de un autocodificador disperso de una sola capa. Los nodos ocultos en amarillo brillante están activados, mientras que los de amarillo claro están inactivos. La activación depende de la entrada.

Hay dos formas principales de imponer la dispersión. Una consiste simplemente en fijar en cero todas las activaciones del código latente excepto las k más altas. Este es el autocodificador k-sparse.[20]

El autocodificador k-sparse inserta la siguiente "función k-sparse" en la capa latente de un autocodificador estándar:

 

Donde   si   se encuentra entre los k primeros, y 0 en caso contrario.

Retropropagación a través de   es simple: fijar el gradiente en 0 para   y mantener el gradiente para   entradas.

Se trata esencialmente de una función ReLU generalizada.

La otra forma es una versión relajada del autocodificador k-sparse. En lugar de forzar la dispersión, añadimos una pérdida de regularización por dispersión y optimizamos para:

 

Donde   mide cuánta dispersión queremos imponer.[21]

La arquitectura del autocodificador tiene   capas. Para definir una pérdida de regularización de la dispersión, necesitamos una dispersión "deseada"   para cada capa, un peso   para determinar en qué medida debe aplicarse cada dispersión, y una función   para medir cuánto difieren dos esparcimientos.

Para cada entrada  , dejar que la dispersión real de la activación en cada capa   sea

 

Donde   es la activación en la neurona   de la capa   a la entrada  . La pérdida de dispersión en la entrada   para una capa es  , y la pérdida de regularización de la dispersión para todo el autocodificador es la suma ponderada esperada de las pérdidas de dispersión:

 

Usualmente la función   es la divergencia de Kullback-Leibler (KL), como:[19][21][22][23]

 

O la pérdida L1, como  , o la pérdida L2, como  

Alternativamente, la pérdida por regularización de la dispersión puede definirse sin referencia a ninguna "dispersión deseada", sino simplemente forzando tanta dispersión como sea posible. En este caso, se puede definir la pérdida de regularización de la dispersión como:

 

Donde   es el vector de activación en la capa   del autocodificador. La norma   suele ser la norma L1 (para obtener el autocodificador disperso L1) o la norma L2 (para obtener el autocodificador disperso L2).

Autocodificador de eliminación de ruido (DAE) editar

Los autocodificadores de eliminación de ruido (DAE) intentan conseguir una buena representación cambiando el criterio de reconstrucción.[3][4]

Una DAE, originalmente denominada "red autoasociativa robusta",[2]​ se entrena corrompiendo intencionadamente las entradas de un autocodificador estándar durante el entrenamiento. Un proceso de ruido se define por una distribución de probabilidad   sobre las funciones  . Es decir, la función   toma un mensaje   y lo corrompe a una versión ruidosa  . La función   se selecciona aleatoriamente, con una distribución de probabilidad  .

Dada una tarea  , el problema de entrenamiento de un DAE es el problema de optimización:

 

Es decir, el DAE óptimo debe tomar cualquier mensaje ruidoso e intentar recuperar el mensaje original sin ruido, de ahí el nombre de "denoising".

Normalmente, el proceso de ruido   sólo se aplica durante el entrenamiento y las pruebas, no durante el uso posterior.

El uso del DAE depende de dos supuestos:

  • Existen representaciones de los mensajes que son relativamente estables y robustas frente al tipo de ruido que es probable que encontremos;
  • Dichas representaciones captan estructuras en la distribución de entrada que son útiles para nuestros fines.[4]

Algunos ejemplos de procesos ruidosos son:

  • ruido gaussiano isótropo aditivo,
  • ruido de enmascaramiento (una fracción de la entrada se elige aleatoriamente y se pone a 0)
  • ruido de sal y pimienta (una fracción de la entrada se elige al azar y se fija aleatoriamente en su valor mínimo o máximo).[4]

Autocodificador contractivo (CAE) editar

Un autocodificador contractivo añade la pérdida de regularización contractiva a la pérdida del autocodificador estándar:

 

Donde   mide el grado de contracción que queremos imponer. La pérdida de regularización contractiva se define como la norma de Frobenius esperada de la matriz jacobiana de las activaciones del codificador con respecto a la entrada:

 

Para entender lo que   mide, tenga en cuenta que:

 

Para cualquier mensaje  , y pequeña variación   en él. Por lo tanto, si   es pequeño, significa que una pequeña vecindad del mensaje se corresponde con una pequeña vecindad de su código. Se trata de una propiedad deseada, ya que significa que una pequeña variación en el mensaje conduce a una variación pequeña, incluso nula, en su código, al igual que dos imágenes pueden parecer iguales aunque no lo sean exactamente.

El DAE puede entenderse como un límite infinitesimal del CAE: en el límite de un ruido de entrada gaussiano pequeño, los DAE hacen que la función de reconstrucción resista perturbaciones de entrada pequeñas pero de tamaño finito, mientras que los CAE hacen que las características extraídas resistan perturbaciones de entrada infinitesimales.

Autocodificador de longitud de descripción mínima editar

[24]​ Autocodificador concreto editar

El autocodificador concreto está diseñado para la selección de características discretas.[25]​ Un autocodificador concreto fuerza al espacio latente a consistir sólo en un número de características especificado por el usuario. El autocodificador concreto utiliza una relajación continua de la distribución categórica para permitir que los gradientes pasen a través de la capa de selección de características, lo que hace posible utilizar la retropropagación estándar para aprender un subconjunto óptimo de características de entrada que minimicen la pérdida de reconstrucción.

Autocodificador variacional (VAE) editar

Los autocodificadores variacionales (VAE) pertenecen a la familia de los métodos bayesianos variacionales. A pesar de las similitudes arquitectónicas con los autocodificadores básicos, los VAE son arquitecturas con objetivos diferentes y con una formulación matemática completamente distinta. En este caso, el espacio latente está compuesto por una mezcla de distribuciones en lugar de un vector fijo.

Dado un conjunto de datos de entrada   caracterizada por una función de probabilidad desconocida   y un vector de codificación latente multivariante   el objetivo es modelar los datos como una distribución  , con   definido como el conjunto de los parámetros de la red de forma que  .

Ventajas de la profundidad editar

 
Estructura esquemática de un autoencoder con 3 capas ocultas totalmente conectadas. El código (z, o h para referencia en el texto) es la capa más interna.

Los autocodificadores suelen entrenarse con un codificador de una sola capa y un decodificador de una sola capa, pero el uso de codificadores y decodificadores de muchas capas (profundos) ofrece muchas ventajas.[3]

  • La profundidad puede reducir exponencialmente el coste computacional de representar algunas funciones.
  • La profundidad puede reducir exponencialmente la cantidad de datos de entrenamiento necesarios para aprender algunas funciones.
  • Experimentalmente, los autocodificadores profundos ofrecen una mejor compresión en comparación con los autocodificadores superficiales o lineales.[10]

Formación editar

Geoffrey Hinton desarrolló la técnica de red de creencia profunda para entrenar autocodificadores profundos de muchas capas. Su método consiste en tratar cada conjunto vecino de dos capas como una máquina de Boltzmann restringida para que el pre-entrenamiento se aproxime a una buena solución y, a continuación, utilizar la retropropagación para afinar los resultados.[10]

Los investigadores han debatido si el entrenamiento conjunto (es decir, el entrenamiento de toda la arquitectura junto con un único objetivo de reconstrucción global para optimizar) sería mejor para los autocodificadores profundos.[26]​ Un estudio de 2015 mostró que el entrenamiento conjunto aprende mejores modelos de datos junto con características más representativas para la clasificación en comparación con el método por capas.[26]​ Sin embargo, sus experimentos mostraron que el éxito del entrenamiento conjunto depende en gran medida de las estrategias de regularización adoptadas.[26][27]

Aplicaciones editar

Las dos aplicaciones principales de los autocodificadores son la reducción de la dimensionalidad y la recuperación de información,[3]​ pero se han aplicado variaciones modernas a otras tareas.

Reducción de la dimensionalidad editar

La reducción de dimensionalidad fue una de las primeras aplicaciones del aprendizaje profundo.[3]

 
Representación gráfica de los dos primeros componentes principales (izquierda) y una capa oculta bidimensional de un autocodificador lineal (derecha) aplicados al conjunto de datos Fashion MNIST.[28]​ Los dos modelos, al ser lineales, aprenden a abarcar el mismo subespacio. De hecho, la proyección de los puntos de datos es idéntica, salvo por la rotación del subespacio. Mientras que PCA selecciona una orientación específica hasta las reflexiones en el caso general, la función de coste de un autocodificador simple es invariable a las rotaciones del espacio latente.

En su estudio de 2006, Hinton[10]​ preentrenó un autocodificador multicapa con una pila de RBM y luego utilizó sus pesos para inicializar un autocodificador profundo con capas ocultas gradualmente más pequeñas hasta llegar a un cuello de botella de 30 neuronas. Las 30 dimensiones resultantes del código produjeron un menor error de reconstrucción en comparación con los primeros 30 componentes de un análisis de componentes principales (ACP), y aprendieron una representación que era cualitativamente más fácil de interpretar, separando claramente los grupos de datos.[3][10]

La representación de las dimensiones puede mejorar el rendimiento en tareas como la clasificación.[3]​ De hecho, el sello distintivo de la reducción de la dimensionalidad es colocar ejemplos semánticamente relacionados cerca unos de otros.[29]

Análisis de componentes principales editar

Si se utilizan activaciones lineales, o una sola capa oculta sigmoidea, entonces la solución óptima de un autocodificador está fuertemente relacionada con el análisis de componentes principales (PCA).[30][31]​ Los pesos de un autocodificador con una sola capa oculta de tamaño   (donde   es menor que el tamaño de la entrada) abarcan el mismo subespacio vectorial que el abarcado por la primera   componentes principales, y la salida del autocodificador es una proyección ortogonal sobre este subespacio. Los pesos del autocodificador no son iguales a los componentes principales y, por lo general, no son ortogonales, pero los componentes principales pueden recuperarse a partir de ellos mediante la descomposición en valores singulares.[32]

 
Reconstrucción de imágenes de 28x28píxeles mediante un Autoencoder con un tamaño de código de dos (capa oculta de dos unidades) y la reconstrucción a partir de los dos primeros Componentes Principales de PCA. Las imágenes proceden del conjunto de datos Fashion MNIST.[28]

Sin embargo, el potencial de los autocodificadores reside en su no linealidad, que permite al modelo aprender generalizaciones más potentes en comparación con PCA, y reconstruir la entrada con una pérdida de información significativamente menor.[10]

Recuperación de información y optimización de motores de búsqueda editar

La recuperación de información se beneficia especialmente de la reducción de la dimensionalidad, ya que la búsqueda puede ser más eficiente en determinados tipos de espacios de baja dimensión. Salakhutdinov y Hinton propusieron en 2007 la aplicación de los autocodificadores al hash semántico.[29]​ Entrenando el algoritmo para producir un código binario de baja dimensión, todas las entradas de la base de datos podrían almacenarse en una tabla hash que asignara vectores de código binario a las entradas. Esta tabla permitiría recuperar la información devolviendo todas las entradas con el mismo código binario que la consulta, o entradas ligeramente menos similares cambiando algunos bits de la codificación de la consulta.

La arquitectura codificador-decodificador, utilizada a menudo en el procesamiento del lenguaje natural y las redes neuronales, puede aplicarse científicamente en el campo de la SEO (Search Engine Optimization) de diversas maneras:

  1. Procesamiento de texto: Utilizando un autocodificador, es posible comprimir el texto de las páginas web en una representación vectorial más compacta. Esto puede ayudar a reducir el tiempo de carga de las páginas y mejorar su indexación por los motores de búsqueda.
  2. Reducción del ruido: Los autocodificadores pueden utilizarse para eliminar el ruido de los datos textuales de las páginas web. De este modo, los motores de búsqueda comprenden mejor el contenido y mejoran la clasificación en las páginas de resultados.
  3. Generación de metaetiquetas y fragmentos: Los autocodificadores pueden entrenarse para generar automáticamente metaetiquetas, fragmentos y descripciones para páginas web utilizando el contenido de la página. Esto puede optimizar la presentación en los resultados de búsqueda, aumentando el porcentaje de clics (CTR).
  4. Agrupación de contenidos: Mediante un autocodificador, las páginas web con contenidos similares pueden agruparse automáticamente. Esto puede ayudar a organizar el sitio web de forma lógica y mejorar la navegación, lo que puede afectar positivamente a la experiencia del usuario y a la clasificación en los motores de búsqueda.
  5. Generación de contenidos relacionados: Se puede emplear un autocodificador para generar contenidos relacionados con lo que ya está presente en el sitio. Esto puede aumentar el atractivo del sitio web para los motores de búsqueda y proporcionar a los usuarios información adicional relevante.
  6. Detección de palabras clave: Los codificadores automáticos pueden entrenarse para identificar palabras clave y conceptos importantes en el contenido de las páginas web. Esto puede ayudar a optimizar el uso de palabras clave para una mejor indexación.
  7. Búsqueda semántica: El uso de técnicas de autocodificación permite crear modelos de representación semántica de los contenidos. Estos modelos pueden utilizarse para mejorar la comprensión de los temas tratados en las páginas web por parte de los motores de búsqueda.

En esencia, la arquitectura codificador-decodificador o los autocodificadores pueden aprovecharse en SEO para optimizar el contenido de las páginas web, mejorar su indexación y aumentar su atractivo tanto para los motores de búsqueda como para los usuarios.

Detección de anomalías editar

Otra aplicación de los autocodificadores es la detección de anomalías.[2][33][34][35][36][37]​ Al aprender a reproducir las características más destacadas de los datos de entrenamiento con algunas de las restricciones descritas anteriormente, se fomenta que el modelo aprenda a reproducir con precisión las características observadas con más frecuencia. Cuando se enfrenta a anomalías, el modelo debe empeorar su rendimiento de reconstrucción. En la mayoría de los casos, sólo se utilizan datos con instancias normales para entrenar el autocodificador; en otros, la frecuencia de anomalías es pequeña en comparación con el conjunto de observaciones, de modo que podría ignorarse su contribución a la representación aprendida. Tras el entrenamiento, el autocodificador reconstruirá con precisión los datos "normales", mientras que no lo hará con los datos anómalos desconocidos.[35]​ El error de reconstrucción (el error entre los datos originales y su reconstrucción de baja dimensión) se utiliza como puntuación de anomalía para detectar anomalías.[35]

Sin embargo, la literatura reciente ha demostrado que ciertos modelos de autocodificación pueden, contra intuitivamente, ser muy buenos reconstruyendo ejemplos anómalos y, en consecuencia, no ser capaces de realizar de forma fiable la detección de anomalías.[38][39]

Procesamiento de imágenes editar

Las características de los autocodificadores son útiles en el tratamiento de imágenes.

Un ejemplo lo encontramos en la compresión de imágenes con pérdidas, donde los autocodificadores superaron a otros enfoques y resultaron competitivos frente a JPEG 2000.[40][41]

Otra aplicación útil de los autocodificadores en el preprocesamiento de imágenes es la eliminación de ruido.[42][43][44]

Los autocodificadores se han utilizado en contextos más exigentes, como la imagen médica, donde se han empleado para la eliminación de ruido de imágenes[45]​ y la superresolución.[46][47]​ En el diagnóstico asistido por imagen, se han realizado experimentos con autocodificadores para la detección del cáncer de mama[48]​ y para modelar la relación entre el deterioro cognitivo de la enfermedad de Alzheimer y las características latentes de un autocodificador entrenado con IRM.[49]

Descubrimiento de fármacos editar

En 2019 se validaron experimentalmente en ratones moléculas generadas con autocodificadores variacionales.[50][51]

Predicción de popularidad editar

Recientemente, un marco de autocodificación apilada produjo resultados prometedores en la predicción de la popularidad de las publicaciones en las redes sociales,[52]​ lo que resulta útil para las estrategias de publicidad en línea.

Traducción automática editar

Los autocodificadores se han aplicado a la traducción automática, que suele denominarse traducción automática neuronal (NMT).[53][54]​ A diferencia de los autocodificadores tradicionales, la salida no coincide con la entrada, sino que está en otro idioma. En la NMT, los textos se tratan como secuencias que se codifican en el procedimiento de aprendizaje, mientras que en el lado del decodificador se generan secuencias en la lengua o lenguas de destino. Los autocodificadores específicos para cada idioma incorporan más características lingüísticas al procedimiento de aprendizaje, como las características de descomposición del chino.[55]​ La traducción automática rara vez se sigue haciendo con autocodificadores, debido a la disponibilidad de redes de transformadores más eficaces.

Véase también editar

Referencias editar

  1. a b c Kramer, Mark A. (1991). «"Nonlinear principal component analysis using autoassociative neural networks». AIChE Journal. doi:10.1002/aic.690370209. 
  2. a b c Kramer, M.A. (1992-04). «Autoassociative neural networks». Computers & Chemical Engineering 16 (4): 313-328. ISSN 0098-1354. doi:10.1016/0098-1354(92)80051-a. Consultado el 6 de abril de 2024. 
  3. a b c d e f g h i «Deep Learning». www.deeplearningbook.org. Consultado el 6 de abril de 2024. 
  4. a b c d Vincent, Pascal; Larochelle, Hugo (2010). «"Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion"». Journal of Machine Learning Research. 
  5. Welling, Max; Kingma, Diederik P. (2019). «"An Introduction to Variational Autoencoders"». Foundations and Trends in Machine Learning. doi:10.1561/2200000056. 
  6. Hinton GE, Krizhevsky A, Wang SD (2011). «Transforming auto-encoders». In International Conference on Artificial Neural Networks 2011 Jun 14 (pp. 44-51). Springer, Berlin, Heidelberg. 
  7. a b Géron, Aurélien (2019). «Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow.». Canada: O’Reilly Media, Inc. 
  8. Liou, Cheng-Yuan; Huang, Jau-Chi; Yang, Wen-Chie (2008). «Modeling word perception using the Elman network». Neurocomputing (en inglés) (71): 3150-3157. doi:10.1016/j.neucom.2008.04.030. Consultado el 6 de abril de 2024. 
  9. Liou, Cheng-Yuan; Cheng, Wei-Chen; Liou, Jiun-Wei; Liou, Daw-Ran (2014). «"Autoencoder for words"». Neurocomputing. doi:10.1016/j.neucom.2013.09.055. 
  10. a b c d e f Hinton, G. E.; Salakhutdinov, R.R. (2006). «"Reducing the Dimensionality of Data with Neural Networks"». Science. PMID 16873662. doi:10.1126/science.1127647. 
  11. a b Bengio, Y. (2009). «"Learning Deep Architectures for AI"». Foundations and Trends in Machine Learning. PMID 23946944. doi:10.1561/2200000006. 
  12. Japkowicz, Nathalie; Hanson, Stephen José; Gluck, Mark A. (2000). «"Nonlinear Autoassociation Is Not Equivalent to PCA"». Neural Computation. PMID 10769321. doi:10.1162/089976600300015691. 
  13. Schwenk, Holger; Bengio, Yoshua (1997). «Training Methods for Adaptive Boosting of Neural Networks». Advances in Neural Information Processing Systems (MIT Press) 10. Consultado el 6 de abril de 2024. 
  14. Schmidhuber, Jürgen (2015). «"Deep learning in neural networks: An overview".». Neural Networks. PMID 25462637. doi:10.1016/j.neunet.2014.09.003. 
  15. Hinton, G. E., & Zemel, R. S. (1994). «Autoencoders, minimum description length and Helmholtz free energy». In Advances in neural information processing systems 6. 
  16. Diederik P Kingma; Welling, Max (2013). Auto-Encoding Variational Bayes. 
  17. Torch, Boesen A., Larsen L. and Sonderby S.K (2015). «Generating Faces». torch.ch/blog/2015/11/13/gan.html. 
  18. a b Domingos, Pedro (24 de noviembre de 2023). «The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World». Basic Books. "Deeper into the Brain" subsection (en inglés). ISBN 978-046506192-1. 
  19. a b Frey, Brendan; Makhzani, Alireza (2013). "k-Sparse Autoencoders". 
  20. Makhzani, Alireza; Frey, Brendan (2013). "K-Sparse Autoencoders". 
  21. a b Ng, A. (2011). «Sparse autoencoder». CS294A Lecture notes, 72. 
  22. Nair, Vinod; Hinton, Geoffrey E. (2009). «"3D Object Recognition with Deep Belief Nets"». Proceedings of the 22nd International Conference on Neural Information Processing Systems. NIPS'09. USA: Curran Associates Inc.:. ISBN 9781615679119. 
  23. Zeng, Nianyin; Zhang, Hong; Song, Baoye; Liu, Weibo; Li, Yurong; Dobaie, Abdullah M. (2018). «"Facial expression recognition via learning deep sparse autoencoders"». Neurocomputing. ISSN 0925-2312. doi:10.1016/j.neucom.2017.08.043. 
  24. Hinton, Geoffrey E; Zemel, Richard (1993). «Autoencoders, Minimum Description Length and Helmholtz Free Energy». Advances in Neural Information Processing Systems (Morgan-Kaufmann) 6. Consultado el 9 de abril de 2024. 
  25. Abid, Abubakar; Balin, Muhammad Fatih; Zou, James (2019). "Concrete Autoencoders for Differentiable Feature Selection and Reconstruction". 
  26. a b c Zhou, Yingbo; Arpit, Devansh; Nwogu, Ifeoma; Govindaraju, Venu (2014). "Is Joint Training Better for Deep Auto-Encoders?". 
  27. R. Salakhutdinov and G. E. Hinton (2009). «Deep Boltzmann machines». AISTATS. 
  28. a b zalandoresearch/fashion-mnist, Zalando Research, 8 de abril de 2024, consultado el 9 de abril de 2024 .
  29. a b Salakhutdinov, Ruslan; Hinton, Geoffrey (2009-07). «Semantic hashing». International Journal of Approximate Reasoning 50 (7): 969-978. ISSN 0888-613X. doi:10.1016/j.ijar.2008.11.006. Consultado el 9 de abril de 2024. 
  30. Bourlard, Hervé, ed. (2000). Auto-Association by Multilayer Perceptrons and Singular Value Decomposition. IDIAP. Consultado el 9 de abril de 2024. 
  31. Chicco, Davide; Sadowski, Peter; Baldi, Pierre (2014). «"Deep autoencoder neural networks for gene ontology annotation predictions".». Proceedings of the 5th ACM Conference on Bioinformatics, Computational Biology, and Health Informatics - BCB '14. ISBN 9781450328944. doi:10.1145/2649387.2649442. 
  32. Plaut, E (2018). From Principal Subspaces to Principal Components with Linear Autoencoders. 
  33. Morales-Forero, A.; Bassetto, S. (2019). «"Case Study: A Semi-Supervised Methodology for Anomaly Detection and Diagnosis». 2019 IEEE International Conference on Industrial Engineering and Engineering Management (IEEM). ISBN 978-1-7281-3804-6. doi:10.1109/IEEM44572.2019.8978509. 
  34. Sakurada, Mayu; Yairi, Takehisa (2 de diciembre de 2014). «Anomaly Detection Using Autoencoders with Nonlinear Dimensionality Reduction». Proceedings of the MLSDA 2014 2nd Workshop on Machine Learning for Sensory Data Analysis. MLSDA'14 (Association for Computing Machinery): 4-11. ISBN 978-1-4503-3159-3. doi:10.1145/2689746.2689747. Consultado el 9 de abril de 2024. 
  35. a b c An, J., & Cho, S. (2015). «Variational Autoencoder based Anomaly Detection using Reconstruction Probability». Special Lecture on IE. 
  36. Zhou, Chong; Paffenroth, Randy C. (4 de agosto de 2017). «Anomaly Detection with Robust Deep Autoencoders». Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. KDD '17 (Association for Computing Machinery): 665-674. ISBN 978-1-4503-4887-4. doi:10.1145/3097983.3098052. Consultado el 9 de abril de 2024. 
  37. Ribeiro, Manassés; Lazzaretti, André Eugênio; Lopes, Heitor Silvério (2018). «"A study of deep convolutional auto-encoders for anomaly detection in videos"». Pattern Recognition Letters. doi:10.1016/j.patrec.2017.07.016. 
  38. Nalisnick, Eric; Matsukawa, Akihiro; Teh, Yee Whye; Gorur, Dilan; Lakshminarayanan, Balaji (2019). "Do Deep Generative Models Know What They Don't Know?. 
  39. Xiao, Zhisheng; Yan, Qing; Amit, Yali (2020). «Likelihood Regret: An Out-of-Distribution Detection Score For Variational Auto-encoder». Advances in Neural Information Processing Systems (Curran Associates, Inc.) 33: 20685-20696. Consultado el 9 de abril de 2024. 
  40. Theis, Lucas; Shi, Wenzhe; Cunningham, Andrew; Huszár, Ferenc (2017). "Lossy Image Compression with Compressive Autoencoders". 
  41. Balle, J; Laparra, V; Simoncelli, EP (2017). «End-to-end optimized image compression». International Conference on Learning Representations. 
  42. Cho, K. (2013). «Simple sparsification improves sparse denoising autoencoders in denoising highly corrupted images». International Conference on Machine Learning. 
  43. Cho, Kyunghyun (2013). Boltzmann Machines and Denoising Autoencoders for Image Denoising. 
  44. Buades, Antoni; Coll, Bartomeu; Morel, Jean-Michel (2005). «A review of image denoising algorithms, with a new one». Multiscale Modeling and Simulation: A SIAM Interdisciplinary Journal 4 (2): 490-530. doi:10.1137/040616024. Consultado el 9 de abril de 2024. 
  45. Gondara, Lovedeep (2016). «Medical Image Denoising Using Convolutional Denoising Autoencoders». 2016 IEEE 16th International Conference on Data Mining Workshops (ICDMW). Barcelona, Spain: IEEE. ISBN 9781509059102. doi:10.1109/ICDMW.2016.0041. 
  46. Zeng, Kun; Yu, Jun; Wang, Ruxin; Li, Cuihua; Tao, Dacheng (2017). «"Coupled Deep Autoencoder for Single Image Super-Resolution"». IEEE Transactions on Cybernetics. PMID 26625442. doi:10.1109/TCYB.2015.2501373. 
  47. Tzu-Hsi, Song; Sanchez, Victor; Hesham, EIDaly; Nasir M., Rajpoot (2017). «Hybrid deep autoencoder with Curvature Gaussian for detection of various types of cells in bone marrow trephine biopsy images». 2017 IEEE 14th International Symposium on Biomedical Imaging (ISBI 2017). ISBN 978-1-5090-1172-8. doi:10.1109/ISBI.2017.7950694. 
  48. «"Stacked Sparse Autoencoder (SSAE) for Nuclei Detection on Breast Cancer Histopathology Images"». IEEE Transactions on Medical Imaging. 2016. PMID 26208307. doi:10.1109/TMI.2015.2458702. 
  49. Martinez-Murcia, Francisco J.; Ortiz, Andres; Gorriz, Juan-Manuel; Ramirez, Javier; Castillo-Barnes, Diego (2020-01). «Studying the Manifold Structure of Alzheimer's Disease: A Deep Learning Approach Using Convolutional Autoencoders». IEEE Journal of Biomedical and Health Informatics 24 (1): 17-26. ISSN 2168-2194. doi:10.1109/JBHI.2019.2914970. Consultado el 9 de abril de 2024. 
  50. Zhavoronkov, Alex (2019). «Deep learning enables rapid identification of potent DDR1 kinase inhibitors». Nature Biotechnology. PMID 31477924. doi:10.1038/s41587-019-0224-x. 
  51. Barber, Gregory. «A Molecule Designed by AI Exhibits 'Druglike' Qualities». Wired (en inglés estadounidense). ISSN 1059-1028. Consultado el 9 de abril de 2024. 
  52. De, Shaunak; Maity, Abhishek; Goel, Vritti; Shitole, Sanjay; Bhattacharya, Avik (2017). «"Predicting the popularity of instagram posts for a lifestyle magazine using deep learning"». 2017 2nd IEEE International Conference on Communication Systems, Computing and IT Applications (CSCITA). ISBN 978-1-5090-4381-1. doi:10.1109/CSCITA.2017.8066548. 
  53. Cho, Kyunghyun; Bart van Merrienboer; Bahdanau, Dzmitry; Bengio, Yoshua (2014). "On the Properties of Neural Machine Translation: Encoder-Decoder Approaches". 
  54. Sutskever, Ilya; Vinyals, Oriol; Le, Quoc V. (2014). "Sequence to Sequence Learning with Neural Networks". 
  55. Han, Lifeng; Kuang, Shaohui (2018). Incorporating Chinese Radicals into Neural Machine Translation: Deeper Than Character Level.