¿Cómo se conectan los filtros y los mapas de activación en las redes neuronales convolucionales?

11

¿Cómo se conectan los mapas de activación en una capa dada a los filtros para esa capa? No estoy preguntando cómo hacer una operación convolucional entre el filtro y el mapa de activación, estoy preguntando sobre el tipo de conectividad que tienen estos dos.

Por ejemplo, supongamos que desea hacer una conectividad completa. Tiene f cantidad de filtros yn cantidad de mapas de activación en una capa determinada. Obtendrá un número f * n de mapas de activación en la siguiente capa, y el número de mapas de activación aumentaría con cada nueva capa. Esta es la forma en que supongo que se hace.

O podría decir que cada filtro está conectado a un solo mapa de activación. En este caso, el número de filtros sería igual al número de mapas de activación, y cada capa tendría el mismo número de filtros y mapas de activación. Esta es la arquitectura actual de mi red, y parece aprender bien.

La fuente principal de mi confusión es mirar diagramas de convnets que veo en línea. Algunos de ellos tienen la "conexión completa" entre los filtros y los mapas de activación, como este: ingrese la descripción de la imagen aquí en la primera capa tiene 4 mapas de activación y presumiblemente 2 filtros. Cada mapa está enredado con cada filtro, lo que resulta en 8 mapas en la siguiente capa. Se ve muy bien.

Pero aquí tenemos una arquitectura que no tiene sentido para mí: ingrese la descripción de la imagen aquí ¿cómo pasar de 6 mapas en la primera capa a 16 en la segunda? Se me ocurren formas de obtener 16 mapas de 6, pero no tienen ningún sentido hacerlo.

Frobot
fuente

Respuestas:

10

La segunda arquitectura de red neuronal convolucional (CNN) que publicó proviene de este documento . En el artículo, los autores dan una descripción de lo que sucede entre las capas S2 y C3. Sin embargo, su explicación no es muy clara. Diría que esta arquitectura CNN no es 'estándar', y puede ser bastante confusa como primer ejemplo para las CNN.

Arquitectura CNN

28×285×5M×MN×NMN(MN+1)×(MN+1)

Lo que sucede entre la capa S2 y la capa C3 es lo siguiente. Hay 16 mapas de características en la capa C3 producidos a partir de 6 mapas de características en la capa S2. El número de filtros en la capa C3 no es obvio. De hecho, solo desde el diagrama de arquitectura, uno no puede juzgar cuál es el número exacto de filtros que producen esos 16 mapas de características. Los autores del artículo proporcionan la siguiente tabla (página 8):

conexiones entre las capas S2 y C3

Con la tabla proporcionan la siguiente explicación (parte inferior de la página 7):

5×5

En la tabla, los autores muestran que cada mapa de características en la capa C3 se produce combinando 3 o más mapas de características (página 8):

Los primeros seis mapas de características C3 toman entradas de cada subconjunto contiguo de tres mapas de características en S2. Los siguientes seis reciben información de cada subconjunto contiguo de cuatro. Los siguientes tres reciben información de algunos subconjuntos discontinuos de cuatro. Finalmente, el último toma información de todos los mapas de características S2.

Ahora, ¿cuántos filtros hay en la capa C3? Lamentablemente, no explican esto. Las dos posibilidades más simples serían:

  1. Hay un filtro por mapa de características S2 por mapa de características C3, es decir, no hay intercambio de filtros entre mapas de características S2 asociados con el mismo mapa de características C3.
  2. Hay un filtro por mapa de características C3, que se comparte entre los (3 o más) mapas de características de la capa S2 que se combinan.

En ambos casos, "combinar" significaría que los resultados de la convolución por grupo de mapas de características S2, tendrían que combinarse para producir mapas de características C3. Los autores no especifican cómo se hace esto, pero la adición es una opción común (ver, por ejemplo, el gif animado cerca de la mitad de esta página) .

Sin embargo, los autores brindan información adicional que puede ayudarnos a descifrar la arquitectura. Dicen que 'la capa C3 tiene 1.516 parámetros entrenables' (página 8). Podemos usar esta información para decidir entre los casos (1) y (2) anteriores.

(6×3)+(9×4)+(1×6)=60(1410+1)×(1410+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

Por lo tanto, si miramos nuevamente la Tabla I anterior, hay 10 filtros C3 distintos asociados con cada mapa de características S2 (por lo tanto, 60 filtros distintos en total).

Los autores explican este tipo de elección:

Los diferentes mapas de características [en la capa C3] se ven obligados a extraer características diferentes (con suerte complementarias) porque obtienen diferentes conjuntos de entradas.

Espero que esto aclare la situación.

Orestis Tsinalis
fuente
3

De hecho, tiene razón en que el valor antes de @ indica la cantidad de filtros, y no la cantidad de mapas de entidades (aunque para las primeras capas convolucionales estos valores coinciden).

Con respecto a su última pregunta: sí, tiene sentido tener cada mapa de características en la capa l conectado a cada filtro en la capa l + 1. La única razón para esto es que esto aumenta enormemente el poder de expresión de la red, ya que tiene más formas (rutas) para combinar los mapas de características que le permiten distinguir mejor lo que está en la imagen de entrada.

Por último, no sé si está practicando sus habilidades de redes neuronales al implementarlas usted mismo, pero si solo desea aplicar redes convolucionales a una tarea específica, entonces ya hay varias excelentes bibliotecas de redes neuronales como Theano, Brainstorm, Caffe

Sjoerd
fuente
Creo que lo que haré es comparar ambas formas de compararlas. Con la versión no totalmente conectada, entrenará y calculará su clasificación más rápido. Pero la precisión es más importante. En la versión no totalmente conectada, cada filtro se localiza en una tarea mucho más específica en lugar de una tarea más general. En la versión totalmente conectada, se actualiza un filtro basado en lo que es mejor para todos los filtros anteriores en lugar de un solo tipo de función. He estado haciendo mi red desde cero al 100% usando C #. ciertamente no es la manera fácil de hacer las cosas ... pero me ha enseñado cosas en profundidad
Frobot
Eso suena como un plan de sonido. ¡Buena suerte!
Sjoerd