¿Qué hace una capa convolucional 1 × 1?

Entre los usos de la convolución 1 × 1, quiero mencionar el enfoque de Red en Red (NiN) de Min Lin en 2014, donde MLPConv Layers, matemáticamente equivalente a las convoluciones NxN clásicas seguidas de convoluciones 1 × 1, reemplaza las capas convolucionales convencionales, por creciente no linealidad, por lo tanto, también la capacidad de la red.

La adición de la capa convolucional 1 × 1 aumenta la capacidad de la red, pero no afecta el tamaño del campo receptivo de la red. El tamaño del campo receptivo juega un papel importante al determinar los rangos de tamaño del objeto que su red puede clasificar, detectar o segmentar.

Si observa las capas de inicio en GoogleNet, que es adecuado para clasificar / detectar objetos a diferentes escalas, hay 3 rutas diferentes:

  • 5 × 5 granos conv;
  • 3 × 3 granos conv;
  • 1 × 1 granos de conv.

Todos ellos conducirán a diferentes tamaños de campo receptivo, por lo que se especializarán en detectar características a diferentes escalas. Las capas iniciales son una evolución de las capas MLPConv introducidas en NiN.

Otro uso de la convolución 1 × 1 puede ser la “reducción de dimensionalidad”.

Un ejemplo de esto está en GoogleNet, en su versión con módulos Inception con reducción de dimensionalidad, donde N mapas de características (digamos N = 20) que pertenecen a la “capa anterior” se comprimen en n mapas de características de salida (digamos n = 5) por medio de una capa de convoluciones 1 × 1 (llena de amarillo claro en las siguientes imágenes). Esta técnica se utiliza para mantener pequeño el ancho de la red al tiempo que aumenta su profundidad, incluso si aumenta la no linealidad de la red.

Otro uso es para la “transformación del espacio de color”. AlexNet usaba tradicionalmente PCA para incrustar el espacio de color del conjunto de datos de imágenes en un espacio más pequeño y menos redundante. Sin embargo, en lugar de hacer una PCA, ¿por qué no insertar simplemente una capa convolucional 1 × 1 justo después de la imagen que aprendería la transformación óptima?

Dicho esto, ¡1 × 1 Convolution son súper geniales! ¿Por qué no los pones en todas partes? Bueno, no siempre es una buena idea aumentar la capacidad de la red, el sobreajuste siempre está presente. Además, tienen un costo, generalmente es tiempo de inferencia.

Me preguntaba lo mismo cuando leía el artículo de GoogLeNet.

De hecho, para un solo plano de imagen como entrada, una convolución 1 × 1 no tiene sentido. Sin embargo, generalmente uno tiene varios planos paralelos para una capa en la red, especialmente en las capas ‘tempranas’.

La convolución 1 × 1 que opera en varios planos se reduce a tomar una suma ponderada en píxeles en el mismo píxel en múltiples planos de la capa anterior.

Si bien una convolución 1 × 1 puede sonar como un No-OP porque no se extiende espacialmente, recuerde que las arquitecturas CNN generalmente tienen una dimensión de canal y que las convoluciones 2D generalmente se consideran completamente conectadas en la dimensión del canal. Si el significado de esa oración no está claro para usted, consulte las respuestas a esta pregunta de quora, y también escribiré la expresión para convolución 1 × 1 simbólicamente.

Sea A (u, v, k) una salida matemática [matemática] N \ veces M \ veces k_a [/ matemática] de la capa L-1. Sea B (u, v, k) una salida matemática [matemática] N \ veces M \ veces k_b [/ matemática] que es una función de activación, z, aplicada a una convolución 1 × 1 que tiene una zancada unitaria y k_a canales de entrada y k_b canales de salida. Deje que [math] W_ {k_b, k_a}: k_b \ times k_a [/ math] sean los parámetros entrenables de la convolución 1 × 1.

[matemáticas] B (u, v, j) = z (\ sum_ {i = 1} ^ {k_a} W_ {j, i} A (u, v, i)) [/ matemáticas]

Extracción de características y, por lo tanto, un tipo de reducción de dimensionalidad.

Puede ver estas convoluciones como “1 x 1 xn”, donde n es el número de canales antes de esta capa. Entonces, la capa convolucional 1 × 1 genera convoluciones por cada píxel para todos los canales, lo que resulta en un espacio de características transformado y dimensionalmente reducido.

Lo primero que debe observarse acerca de una capa de convolución 1 × 1 es que no están mirando un parche de la imagen como la capa de convolución tradicional, sino que están mirando solo un píxel. La convolución es un clasificador lineal sobre un parche. Pero, si agregamos una capa de convolución 1 × 1 en el medio (entre la capa de convolución y su capa anterior), toda la linealidad desaparece. En cambio, ahora tendremos una mini red neuronal corriendo sobre el parche. Colocar capas de convolución 1 × 1 es una forma muy económica (ya que la convolución 1 × 1 no es más que un simple multiplicador de matriz) para hacer que nuestros modelos se vean más profundos y tengan más parámetros sin cambiar realmente la estructura del modelo.

Para una capa de convolución, el filtro 1 × 1 se usa como filtro de cambio de dimensión. Recuerde que la salida de una capa conv es Ancho x Altura x Profundidad. Entonces, si la profundidad es mayor que la profundidad de entrada, tendrá una salida dimensional más alta. Si la profundidad es menor que la profundidad de entrada, logrará la reducción de dimensionalidad.

No mucho realmente. Es lo mismo que realizar una multiplicación por elementos por un escalar.

Un núcleo 1 × 1 con su único valor X devolverá la matriz NxM cuando se aplica a la matriz original de tamaño NxM donde cada valor es [matemático] B_ {ij} = A_ {ij} \ cdot X [/ matemático] y [matemático ] 0

Principalmente se usa para cambiar la cantidad de mapas. Específicamente, en el caso de la nueva ResNet, se usa para comprimir 256 mapas a 64 mapas.

También podría usarse como una escala aprendida en otros mapas para un bloque ResNet

Por ejemplo, un bloque con la convolución 1 × 1 en el frente podría aprender que este bloque solo debería preocuparse por algunos de los mapas de características que podrían aparecer e ignorar el resto.

Acabo de aprender la convolución 1 × 1 en el curso de aprendizaje profundo de A. Ng, así que permítanme compartir algo al respecto.

Como se presentó anteriormente, la capa conv de 1 × 1 × 32 transfiere la capa de entrada con 192 canales a una capa de salida con 32 canales, lo que reduce los canales de la imagen de entrada y realmente puede acelerar el cálculo del próximo transporte constitucional. En mi opinión, es una gran idea remodelar las características de la imagen de entrada y no solo mantener la información de las características, sino también simplificar el costo computacional.

More Interesting

¿Cuáles son las deficiencias del aprendizaje profundo? ¿Cuál es el mayor defecto o limitación del aprendizaje profundo?

¿Cómo se puede usar una distribución como una característica para la clasificación en el aprendizaje automático?

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

¿Cómo escapa / resiste una red neuronal profunda a la maldición de la dimensionalidad?

¿Cuáles son algunos desafíos calificados de aprendizaje automático que se inician cada año?

¿Cuál es la mejor opción, Machine Learning o codificación?

¿Cuál es la mejor manera de encontrar el conjunto de patrones similares en datos de series de tiempo?

¿Es posible darle a una computadora millones de imágenes de varios objetos, y se da cuenta de que hay cosas como animales, platos de cocina, montañas, etc. sin que nosotros lo digamos, y cómo se hace esto exactamente?

¿Cuál es el mejor algoritmo para la extracción de características en imágenes?

En LSTM, ¿cómo calculas qué tamaño deben tener los pesos?

¿Por qué hay una compensación entre exploración y explotación en el aprendizaje por refuerzo?

Cómo detectar logotipos si están distorsionados

¿Por qué necesitamos RandomForestClassifier cuando DecisionTreeClassifier selecciona la mejor característica en cada división?

¿Por qué alguien debería aplicar métodos de aprendizaje automático en su investigación?

¿Qué tiene de bueno la PNL?