Tanto PCA como autoencoder pueden reducir la degradación, entonces, ¿cuál es la diferencia entre ellos? ¿En qué situación debo usar uno sobre otro?
machine-learning
pca
neural-networks
autoencoders
RockTheStar
fuente
fuente
Como señala bayerj, PCA es un método que asume sistemas lineales donde los Autoencoders (AE) no lo hacen. Si no se utiliza una función no lineal en el AE y el número de neuronas en la capa oculta es de menor dimensión que el de la entrada, entonces PCA y AE pueden producir el mismo resultado. De lo contrario, el AE puede encontrar un subespacio diferente.
Una cosa a tener en cuenta es que la capa oculta en un AE puede ser de mayor dimensionalidad que la de la entrada. En tales casos, los AE pueden no estar haciendo reducción de dimensionalidad. En este caso, los percibimos como una transformación de un espacio de características a otro en el que los datos en el nuevo espacio de características desenredan factores de variación.
Con respecto a su pregunta sobre si varias capas significan una respuesta no lineal muy compleja en bayerj. Dependiendo de lo que quiera decir con "no lineal muy complejo", esto podría ser cierto. Sin embargo, la profundidad realmente ofrece una mejor generalización. Muchos métodos requieren un número igual de muestras igual al número de regiones. Sin embargo, resulta que "un gran número de regiones, por ejemplo, , se puede definir con ejemplos de " según Bengio et al . Esto es el resultado de la complejidad en la representación que surge de componer entidades inferiores a partir de capas inferiores en la red.O(2N) O(N)
fuente
Esto es más adecuado como comentario, pero como me falta la reputación de eso, se dará como respuesta.
Me confundí un poco con la noción de casi en la respuesta de bayerj. Lectura de redes neuronales y análisis de componentes principales: Aprendiendo de ejemplos sin mínimos locales donde se proporciona la prueba.
¿Entonces este no es exactamente el espacio correspondiente como lo abarca PCA?
fuente
La respuesta actualmente aceptada por @bayerj afirma que los pesos de un autoencoder lineal abarcan el mismo subespacio que los componentes principales encontrados por PCA, pero no son los mismos vectores. En particular, no son una base ortogonal. Esto es cierto, sin embargo , podemos recuperar fácilmente los componentes principales que cargan los vectores de los pesos del autoencoder. Un poco de notación: dejemos que sea un conjunto de vectores dimensionales, para los cuales deseamos calcular PCA, y sea la matriz cuyas columnas son . Luego, definamos un codificador automático lineal como la red neuronal de capa oculta definida por las siguientes ecuaciones:{xi∈Rn}Ni=1 N n− X x1,…,xN
donde es la salida del codificador automático (lineal), denotado con un sombrero para enfatizar el hecho de que la salida de un codificador automático es una "reconstrucción" de la entrada. Tenga en cuenta que, como es más común con los codificadores automáticos, la capa oculta tiene menos unidades que la capa de entrada, es decir, y con .x^ W1∈Rn×m W2∈Rm×n m<n
Ahora, después de entrenar su autoencoder lineal, calcule los primeros vectores singulares de . Es posible demostrar que estos vectores singulares son en realidad los primeros componentes principales de , y la prueba está en Plaut, E., De subespacios principales a componentes principales con codificadores automáticos lineales , Arxiv.org:1804.10253.m W2 m X
Desde SVD es en realidad el algoritmo utilizado para calcular PCA, podría parecer de sentido para primer tren un autoencoder lineal y luego aplicar SVD a el fin de recuperar luego la primera vectores de carga, en lugar de aplicar directamente SVD a . El punto es que es una matriz , mientras que es . Ahora, la complejidad temporal de SVD para es , mientras que para es conW2 m X X n×N W2 m×n W2 O(m2n) X O(n2N) m<n , por lo tanto, podría lograrse algún ahorro (incluso si no es tan grande como lo afirma el autor del artículo que enlace). Por supuesto, hay otros enfoques más útiles para calcular la PCA de Big Data (viene a la mente PCA en línea aleatorizada), pero el punto principal de esta equivalencia entre los codificadores automáticos lineales y PCA no es encontrar una forma práctica de calcular PCA para grandes datos conjuntos: se trata más de darnos una intuición sobre las conexiones entre los codificadores automáticos y otros enfoques estadísticos para la reducción de dimensiones.
fuente