¿Por qué se usan capas completamente conectadas en el “extremo” [lado de salida] de las NN convolucionales? ¿Por qué no antes?

Considere el concurso ImageNet LSVRC-2010 [1] para clasificar los 1.2 millones de imágenes de alta resolución en las 1000 clases diferentes. Cinco capas de convolución agrupadas máx., Tres capas completamente conectadas y una capa softmax diseñada con 60 millones de parámetros y 650,000 neuronas. La entrada de la red es 150,528 dimensional, y el número de neuronas en las capas restantes de la red viene dado por 253,440 –186,624 –64,896 –64,896 –43,264 –4096 –4096–1000. Entonces, el parámetro total en capas completamente conectadas es 4096 * 4096 = 16,777,216 = 16 millones. Aunque, la mayoría de las neuronas están en capas de convolución, la mayoría de los parámetros están en capas completamente conectadas.

¿Por qué no antes?

Considerando la primera capa oculta totalmente conectada con 100,000 neuronas, el número total de conexiones será 224 * 224 * 3 * 100,000 = 15,052,800,000 = 15 mil millones de parámetros. ¡Imposible!

Antes de la era de la convolución, el espacio de entrada de alta dimensión (maldición de la dimensionalidad) generalmente se superaba mediante la extracción manual de características, lo que reduce la dimensión del espacio de entrada pero conserva la característica sobresaliente útil para clasificar.

Una de las ventajas más importantes en la capa de convolución es cómo obtener características automáticamente a través de múltiples niveles de abstracción mediante una técnica de aprendizaje de descenso de gradiente de extremo a extremo.

¿Por qué la capa completamente conectada se usa cerca del final? O en absoluto?

Tres capas completamente conectadas han tomado la mayoría de los parámetros, mientras que cinco capas de convolución han tomado restantes. Por lo tanto, será útil si las capas completamente conectadas se pueden reemplazar por algún otro tipo de capas, que consume menos número de parámetros. Las principales alternativas de las capas completamente conectadas son las capas de convolución, que tiene dos propiedades principales

  1. Conexión local
  2. Compartir pesas

Pero, es muy difícil unir una capa softmax por encima de una capa de convolución directamente para clasificar de manera eficiente.

Si tal disposición es posible, el número de parámetros utilizados en la red de convolución se puede reducir drásticamente para la tarea de clasificación de imágenes.

[1] https://papers.nips.cc/paper/482…

El punto de las redes neuronales convolucionales es explotar la correlación ya existente entre píxeles locales (o nodos de entrada) para reducir el número de parámetros / conexiones en el modelo. Si colocamos la capa completamente conectada al principio, o en otro lugar dentro del modelo, estamos “mezclando cosas” y “perdiendo” esa información que nos permite reducir la complejidad de nuestro modelo. Puse “perder” entre comillas porque, en teoría, aún podríamos recuperar las relaciones locales durante el entrenamiento; sin embargo, sufriremos mucho en eficiencia computacional.

Decidí ejecutar un experimento usando la clasificación TensorFlow y MNIST, con capas completamente conectadas al principio versus al final. La precisión de la prueba versus las épocas de entrenamiento se puede ver a continuación.

Como puede observar, con las capas completamente conectadas al principio, la precisión es bastante mala en comparación con el caso de las capas completamente conectadas al final (97% vs 99%). Presumiblemente, si entrenó a la CNN con capas completamente conectadas al principio durante el tiempo suficiente, alcanzaría niveles de precisión más altos, pero ¿por qué molestarse?

Piense en las capas convolucionales como realizando detección de objetos sobre la entrada. Una vez que hayamos hecho eso, podemos “atornillar” un clasificador MLP estándar al final para decidir qué “significa” esa disposición de objetos con respecto a las etiquetas de clase.

Espero que ayude.

El tensor de entrada que representa la imagen, por ejemplo, una matriz que representa el brillo de los píxeles, tiene sentido, ya que se obtuvo directamente de la imagen. Almacena toda la información en sí misma. Ahora vamos más allá.

Las capas convolucionales se describen mejor como filtros. Cuando su representación de la imagen lo atraviesa, el filtro produce resultados significativos en aquellos lugares donde se encuentra el patrón correspondiente. Entonces, después de cada capa convolucional, la representación del tensor nuevamente tiene sentido total: muestra dónde están los patrones detectados de píxeles que forman caras / gatos / automóviles. Y nos da ceros (o valores cercanos a cero) en aquellos lugares donde no se han detectado.

Entonces, después de que la matriz pasó por capas de conv, tenemos la respuesta para la pregunta “¿dónde está la cosa que se parece a una cara en una imagen?”. Solo después de eso tenemos la necesidad de verificar que la señal de salida de los filtros sea lo suficientemente fuerte como para tenerla en cuenta. Ahí es donde entran en juego capas totalmente conectadas, no antes porque simplemente no hay uso para ellas.

Una vez que utiliza una capa totalmente conectada, la salida se “codifica”, es decir, no tiene estructura espacial. En general, aplicamos una capa convolucional solo cuando hay alguna estructura espacial o cuasiespacial en la entrada (la intuición de un filtro convolucional es que está “buscando estructura local” en cada parte de la entrada). Por lo tanto, no tiene sentido aplicar capas convolucionales aguas abajo de las capas completamente conectadas.

More Interesting

¿Por qué los jóvenes estudiantes dedican más tiempo a la programación competitiva en lugar de otras áreas como aprendizaje automático, seguridad, big data y sistemas operativos?

¿Cómo se compara la industria del aprendizaje automático con las opciones de carrera dentro del desarrollo web?

¿Qué distingue una capa de una red neuronal de otras capas?

En la regresión cuadrática, ¿por qué tengo que mantener una variable y su aumento exponencial en el mismo modelo?

Cuál debería ser mi próximo paso, después de cubrir las estadísticas básicas de las estadísticas principales, un curso básico de análisis de datos (preparación de datos, exploración, clasificación, minería de reglas de asociación, agrupación, regresión) y un proyecto en un conjunto de datos SSLC (puede encontrarlo en mi único blog en Quora) usando R?

¿Cómo ha sido su experiencia en Quora con Computer Vision y la comunidad relacionada?

¿Qué es el filtrado colaborativo en términos simples?

¿Qué tan poderoso es la PNL?

¿Qué son los vectores de características basados ​​en cuadros (como se usan en el reconocimiento de voz)?

¿Hay otros ejemplos de algoritmos de PNL que escriben libros publicados?

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

Cómo comenzar con el modelado predictivo

¿Qué es un modelo de mezcla de Bernoulli?

¿Cuál es el libro recomendado sobre 'plasticidad neuronal' para informáticos, programadores o profesionales de aprendizaje profundo?

¿Puedo tomar el curso de aprendizaje automático de Andrew Ng siendo un estudiante de secundaria con algo de experiencia en programación y sin conocimientos avanzados de matemáticas?