neural network - tutorial - ¿Por qué motivo se usa la convolución 1x1 en redes neuronales profundas?
redes neuronales convolucionales python (2)
Una convolución 1x1 simplemente asigna en píxeles de entrada a un píxel de salida, sin mirar nada alrededor de sí mismo. A menudo se utiliza para reducir el número de canales de profundidad, ya que a menudo es muy lento para multiplicar volúmenes con profundidades extremadamente grandes.
input (256 depth) -> 1x1 convolution (64 depth) -> 4x4 convolution (256 depth)
input (256 depth) -> 4x4 convolution (256 depth)
El de abajo es aproximadamente ~ 3.7x más lento.
Teóricamente, la red neuronal puede "elegir" qué "colores" de entrada se verán con esto, en lugar de la fuerza bruta multiplicando todo.
Estoy viendo la arquitectura InceptionV3 (GoogLeNet) y no puedo entender por qué necesitamos capas conv1x1.
Sé cómo funciona la convolución, pero veo una ganancia con el tamaño del parche> 1.
Puede pensar en la convolución 1x1xD
como una técnica de reducción de dimensionalidad cuando se coloca en algún lugar dentro de una red.
Si tiene un volumen de entrada de 100x100x512
y lo convulsiona con un conjunto de filtros D
cada uno con tamaño 1x1x512
, reduce el número de funciones de 512 a D. El volumen de salida es, por lo tanto, 100x100xD
.
Como puede ver, esta convolución (1x1x512)xD
es matemáticamente equivalente a una capa totalmente conectada. La principal diferencia es que si bien la capa FC requiere que la entrada tenga un tamaño fijo, la capa convolucional puede aceptar en la entrada cada volumen con una extensión espacial mayor o igual a 100x100
.
Una convolución 1x1xD
puede sustituir cualquier capa totalmente conectada debido a esta equivalencia.
Además, 1x1xD
convoluciones 1x1xD
no solo reducen las funciones en la entrada a la siguiente capa, sino que también introducen nuevos parámetros y una nueva no linealidad en la red que ayudará a aumentar la precisión del modelo.
Cuando la convolución 1x1xD
se coloca al final de una red de clasificación, actúa exactamente como una capa FC, pero en lugar de pensar en ella como una técnica de reducción de la dimensionalidad, es más intuitivo pensarla como una capa que generará un tensor con forma WxHxnum_classes
.
La extensión espacial del tensor de salida (identificada por W
y H
) es dinámica y está determinada por las ubicaciones de la imagen de entrada que analizó la red.
Si la red se ha definido con una entrada de 200x200x3
y le damos a la entrada una imagen con este tamaño, la salida será un mapa con W = H = 1
y depth = num_classes
. Pero, si la imagen de entrada tiene una extensión espacial mayor que 200x200
que la red convolucional, analizará diferentes ubicaciones de la imagen de entrada (como lo hace una convolución estándar) y producirá un tensor con W > 1
y H > 1
. Esto no es posible con una capa FC que obliga a la red a aceptar entradas de tamaño fijo y producir salidas de tamaño fijo.