¿Cuál es la explicación detallada de Autoencoder apilado (Denoising)?

Autoencoder (de una sola capa)

Toma la entrada sin procesar, la pasa a través de una capa oculta e intenta reconstruir la misma entrada en la salida. Entonces, básicamente funciona como una red neuronal de una sola capa donde, en lugar de predecir etiquetas, predice la entrada solo en la salida. Por lo tanto, la pérdida que calcula está entre la entrada sin formato que proporcionó y la entrada predicha en la capa de salida. Al minimizar esta pérdida, se pronosticará más o menos la misma entrada en la salida que la que está proporcionando. La intuición principal detrás del uso del autoencoder es aprender características latentes de las características sin procesar mientras se conserva la capacidad de producir la entrada sin procesar de las características latentes (se obtiene en la capa oculta). La eliminación de ruido se refiere a la adición intencional de ruido a la entrada sin procesar antes de proporcionarlo a la red. Algunos ruidos son gaussianos y de enmascaramiento. Pero cuando calculará la pérdida, será entre la entrada predicha y la entrada original solamente (no la entrada ruidosa). Mantén esto en mente.

Autoencoder apilado (Denoising)

Es un autoencoder que tiene múltiples capas, excepto que su entrenamiento no es lo mismo que un NN multicapa. El proceso, en resumen, se lleva a cabo de la siguiente manera:

Proporcionas ruido a la entrada. Pasa a través de la capa oculta. Se genera la salida y se calcula la pérdida entre la salida (que es la entrada predicha) y la entrada original. Continúa hasta la convergencia cuando la pérdida se minimiza. Luego, finalmente, pasa los datos completos a través de esta red y recopila los datos presentes en la capa oculta. Esta es tu nueva entrada.

Toma esta entrada (recopilada) y le pasa ruido y sigue el mismo procedimiento a partir de entonces. Finalmente, una vez que haya terminado con la última capa, los datos recopilados en esta última capa oculta son ahora sus nuevos datos.

De hecho, tengo una biblioteca simple escrita para autoencoder que hará todo el trabajo por usted. Puedes usarlo.

rajarsheem / libsdae

Le sugiero que consulte este documento: Página en jmlr.org

Y también este enlace para la implementación: Autoencoders de Denoising apilados (SdA)

Los codificadores automáticos básicamente intentan proyectar la entrada como la salida. Es parte de un régimen de pre-entrenamiento que ayuda a aprender los pesos y sesgos mejor que inicializarlos al azar.

Entonces, tomando el ejemplo popular de la base de datos de clasificación de dígitos MNIST, estoy asumiendo una arquitectura de red neuronal de 784-50-10. Desea aprender los pesos entre la capa de entrada y la primera capa oculta, y la capa oculta y la capa de salida.
Tendría dos pilas de codificadores automáticos, la primera con la arquitectura 784-50-784, y la segunda que tomará la entrada como la salida de la capa oculta del codificador automático anterior, tendrá la arquitectura 50-10-50.
Los pesos y los sesgos aprendidos de estos autoencoders se utilizan para inicializar los pesos y los sesgos de la red neuronal.

Como la entrada sería bastante fácil de aprender y no habría mucho aprendizaje involucrado en el autoencoder, agrega “ruido” de diferentes tipos. (Por ejemplo, establecer aleatoriamente algunos valores a 0). Esto ayuda a los autoencoders a aprender mejor ya que intentará “eliminar el ruido” de la entrada.

Le recomiendo encarecidamente que consulte el documento sobre Denoising Autoencoders que está muy bien escrito y le dará una mejor idea.

Encontré que este enlace proporciona información detallada sobre el codificador automático apilado: codificadores automáticos apilados. He copiado algunos puntos destacados aquí, y espero que te sirva de ayuda.

Un autoencoder apilado es una red neuronal que consta de múltiples capas de autoencoders dispersos en los que las salidas de cada capa están conectadas a las entradas de la capa sucesiva. Formalmente, considere un autoencoder apilado con n capas. Usando la notación de la sección del autoencoder, deje que W ( k , 1), W ( k , 2), b ( k , 1), b ( k , 2) denoten los parámetros W (1), W (2), b ( 1), b (2) para kth autoencoder. Luego, el paso de codificación para el codificador automático apilado se ejecuta ejecutando el paso de codificación de cada capa en orden de avance:

El paso de decodificación se realiza ejecutando la pila de decodificación de cada autoencoder en orden inverso:

La información de interés está contenida dentro de un ( n ), que es la activación de la capa más profunda de unidades ocultas. Este vector nos da una representación de la entrada en términos de características de orden superior.

Las características del autoencoder apilado se pueden usar para problemas de clasificación alimentando un ( n ) a un clasificador softmax.

En cuanto a la capacitación, señala:

Una buena manera de obtener buenos parámetros para un autoencoder apilado es usar un entrenamiento codicioso en capas. Para hacer esto, primero entrene la primera capa en la entrada sin procesar para obtener los parámetros W (1,1), W (1,2), b (1,1), b (1,2). Use la primera capa para transformar la entrada sin procesar en un vector que consiste en la activación de las unidades ocultas, A. Entrene la segunda capa en este vector para obtener los parámetros W (2,1), W (2,2), b (2, 1), b (2,2). Repita para las capas posteriores, utilizando la salida de cada capa como entrada para la capa posterior.

Este método entrena los parámetros de cada capa individualmente mientras congela los parámetros para el resto del modelo. Para producir mejores resultados, una vez que se completa esta fase de entrenamiento, se puede usar el ajuste fino usando la propagación hacia atrás para mejorar los resultados al ajustar los parámetros de todas las capas al mismo tiempo.