Cómo hacer que una red neuronal funcione como PCA

Puede usar un autoencoder para aprender una representación variable latente de los datos similar a PCA. El contenido en el documento que mencionó ha vinculado conceptos desde el nacimiento de PCA y puede ser difícil de leer para muchas personas (aunque no es difícil). El siguiente contenido puede ayudarlo a comprender el vínculo entre codificadores y PCA.

PCA es una transformación lineal de los datos que encuentra la dirección a lo largo de la cual la varianza es máxima. Como su nombre lo indica, encuentra componentes principales. Estos componentes son la estructura en los datos a lo largo de la cual los datos están más dispersos. Matemáticamente, PCA está haciendo la siguiente operación:

[matemáticas] h = Wx [/ matemáticas]

Donde [math] x [/ math] son ​​los datos con una dimensión más alta y [math] h [/ math] es la proyección de los datos usando [math] W [/ math] en un espacio dimensional inferior. Esta transformación asigna los datos a un espacio con características no correlacionadas (tome los primeros k componentes que muestran alta varianza). Las matemáticas detalladas están aquí. Véalo y pruébelo visualmente aquí.

La misma funcionalidad también se puede lograr utilizando una red neuronal. Por ejemplo, los codificadores automáticos se utilizan esencialmente solo para este propósito. Las redes neuronales realmente encuentran una transformación afín de los datos (si no se utiliza no linealidad para la activación). Si agregamos una función de activación lineal o de identidad, solo obtendremos una transformación lineal. Después de la transformación lineal, las redes neuronales minimizan el error de reconstrucción y, por lo tanto, este tipo de red será equivalente a PCA. Veamos con pocas ecuaciones:

La figura de arriba es un autoencoder. Aprende a reconstruir los datos de entrada (x). La red anterior aprende un mapeo de identidad de [math] x [/ math] a [math] r [/ math] y funciona de la siguiente manera:

[matemáticas] h = f (x) [/ matemáticas]; es la representación variable latente de la entrada

[matemáticas] r = g (h) = g (f (x)); [/ math] Es la reconstrucción de la entrada de la representación latente.

De la ecuación anterior, [math] h [/ math] es una representación variable latente de [math] x [/ math] en un espacio de baja dimensión. Tanto el codificador como el decodificador son operaciones lineales y siempre que utilicemos una función de activación lineal, la salida será una transformación afín de la entrada ([matemática] h = [/ matemática] [matemática] W ^ Tx + b [/mates]). Eso significa que tanto el codificador como el PCA son operaciones lineales.

Pero, ¿cómo podemos afirmar que tanto PCA como autoencoders son el mismo tipo de proyecciones? Si podemos demostrar que el autoencoder está minimizando la variación entre la distribución de datos latente y exacta, entonces hemos terminado. Vamos a verlo matemáticamente:

Sea la función de pérdida del autoencoder: [matemática] L (x, g (f (x))). [/mates]

donde la función de pérdida penaliza la red cuando la distribución [matemática] g (f (x)) [/ matemática] es diferente a la distribución de [matemática] x [/ matemática]. En el caso determinista, puede ser una pérdida al cuadrado; de lo contrario, puede ser una divergencia KL. Simplemente significa que la red es un estimador imparcial que está minimizando la varianza entre las dos distribuciones. Por lo tanto, PCA y autoencoder están haciendo el mismo trabajo.


Si consideramos la función de activación no lineal en las capas ocultas, el codificador automático asignará los datos a una curva no lineal y, en ese caso, podemos mostrar que esta transformación es similar a ICA (Análisis de componentes independientes) o aprendizaje múltiple.

No dude en comentar o sugerir modificaciones.

Fuente de la imagen: libro de aprendizaje profundo de Goodfellow et. Alabama.

Entrene a un autoencoder [1], que es básicamente una red neuronal que intenta reconstruir su entrada. Si está interesado en las transformaciones lineales (como PCA), use una sola capa con una función de activación lineal tanto para el codificador como para el decodificador.

Notas al pie

[1] Tutorial de aprendizaje de características y aprendizaje profundo sin supervisión

Intenté algo similar, la capa de entrada se conecta a una incrustación, el número de factores establecidos en la dimensión deseada que desea, la forma de capa de salida establecida en la dimensión de su vector original.

Función de pérdida establecida en error cuadrático medio.

Exportar los pesos (factores latentes) de la capa de inclusión después del entrenamiento, ese es el nuevo vector.

Corrí algunas épocas, la capa menos oculta mejor.

Funciona.

No solo puede descomponer un vector, puede enriquecer dimensiones

Puedes comenzar con el modelo Rubner-Tavan. Aquí, conecta completamente la capa de salida lateralmente. Usarías el aprendizaje antihebbiano para entrenar al modelo.

Si utilizara el aprendizaje antihebbiano normalizado , obtendría algo llamado APEX, que es más rápido de converger que el modelo RT.

More Interesting

Cómo encontrar el siguiente número de la lista de números anteriores usando el aprendizaje profundo

¿Has utilizado Google Translate recientemente? ¿Cómo es la calidad de la traducción con su nueva traducción automática neuronal? ¿Cómo es para cualquier par de idiomas?

Mi campo de interés para el doctorado es la visión por computadora, el aprendizaje automático y el procesamiento de imágenes. ¿Qué recursos hay para principiantes con respecto a estos temas? Yo sé Java; ¿Debo aprender otros idiomas primero o puedo comenzar los cursos de inmediato?

¿Es incorrecto si realizo un análisis de opinión en revisiones individuales en lugar de en todas las revisiones a la vez?

¿Qué papel juega la intuición en las matemáticas y puede la IA reemplazar completamente a un matemático?

¿Qué máquina es mejor para clasificar imágenes, SVM u otra? ¿Por qué?

¿Cómo y cuándo comenzaste con Kaggle?

¿Por qué se utiliza un descenso gradiente iterativo para redes neuronales y no inmediato?

¿Podemos obtener un intervalo de confianza para la salida de un clasificador en el aprendizaje supervisado?

¿Cuál es la diferencia entre una cadena de Markov recurrente y una cadena de Markov absorbente?

Si ya hemos conocido una función, ¿podemos generar una red neuronal para la inferencia, sin pasar por el proceso de capacitación que consume tiempo y energía?

¿TF-IDF está categorizado como una selección de características o una extracción de características?

¿Cuáles son los sitios web que debe visitar un amante del diseño de máquinas?

¿Cuál debería ser el plan adecuado para aprender el aprendizaje automático desde cero para un estudiante del tercer semestre?

¿Qué opina del Proyecto Microsoft Kensci que utiliza el aprendizaje automático en la gestión predictiva de riesgos de salud?