Acabo de leer el artículo de Geoff Hinton sobre la transformación de autoencoders
Hinton, Krizhevsky y Wang: Transformando codificadores automáticos . En Redes Neuronales Artificiales y Aprendizaje Automático, 2011.
y me gustaría jugar con algo como esto. Pero después de leerlo, no pude obtener suficientes detalles del documento sobre cómo podría implementarlo.
- ¿Alguien sabe cómo debería funcionar la asignación entre los píxeles de entrada a las cápsulas?
- ¿Qué debería estar sucediendo exactamente en las unidades de reconocimiento?
- ¿Cómo debe ser entrenado? ¿Es solo un respaldo estándar entre cada conexión?
Aún mejor sería un enlace a algún código fuente para esto o algo similar.
neural-network
deep-learning
autoencoder
Daniel Slater
fuente
fuente
Respuestas:
He reunido algunos ejemplos de código de tensorflow para ayudar a explicar (el código completo y funcional está en esta esencia ). Este código implementa la red de cápsulas de la primera parte de la sección 2 en el documento que ha vinculado:
Esto depende de la estructura de la red. Para el primer experimento en ese documento (y el código anterior), cada cápsula tiene un campo receptivo que incluye toda la imagen de entrada. Ese es el arreglo más simple. En ese caso, es una capa completamente conectada entre la imagen de entrada y la primera capa oculta en cada cápsula.
Alternativamente, los campos receptivos de la cápsula pueden organizarse más como núcleos CNN con zancadas, como en los experimentos posteriores en ese documento.
Las unidades de reconocimiento son una representación interna que tiene cada cápsula. Cada cápsula utiliza esta representación interna para calcular
p
, la probabilidad de que la característica de la cápsula esté presente yxy
los valores de traducción inferidos. La Figura 2 en ese documento es una verificación para asegurarse de que la red está aprendiendo a usarxy
correctamente (lo es).Específicamente, debe entrenarlo como un autoencoder, utilizando una pérdida que imponga similitud entre la salida generada y el original. El error cuadrático medio funciona bien aquí. Aparte de eso, sí, deberá propagar el descenso del gradiente con backprop.
fuente