¿Qué es una explicación intuitiva de la convolución 1 × 1 en ConvNets?

Dado un mapa de características [math] f [/ math] de tamaño:

[matemáticas] w × h × c [/ matemáticas]

donde [matemática] w [/ matemática] = ancho, [matemática] h [/ matemática] = altura, [matemática] c [/ matemática] = canales

El mapa de características [math] f [/ math] es generado por los filtros [math] c [/ math], es posible generar un nuevo mapa de características [math] \ hat {f} [/ math] con tamaño:

[matemáticas] w × h × \ hat {c} [/ matemáticas]

Al pasar una operación de convolución [matemática] 1 × 1 [/ matemática], el filtro mismo en la convolución [matemática] 1 × 1 [/ matemática] muestrea un volumen 3D de tamaño [matemático] 1 × 1 × c [/ matemático] entonces, en este caso, solo los canales juegan un papel en los cálculos de [math] \ hat {f} [/ math] y no en la información espacial. Esta operación puede verse como una reducción de dimensionalidad si [math] \ hat {c} <c [/ math]. Por lo tanto, el filtro [math] 1 × 1 [/ math] sintetiza brevemente un nuevo conjunto de filtros [math] \ hat {c} [/ math] de un conjunto anterior [math] c [/ math].

Permítanme dar un ejemplo simplificado, dada una imagen en color de tamaño [matemática] w × h × 3 [/ matemática]. Está claro que cuando se trabaja con los canales de color sin procesar R, G y B, los valores entre ellos están correlacionados, es decir, los valores son casi siempre similares o cercanos entre sí, eso no es bueno. Hay una manera de mejorar el contraste entre los canales, podemos usar la competencia para eso. Afortunadamente, hay una teoría en neurociencia llamada proceso del oponente [1] para el procesamiento del color en la corteza visual.

En este proceso, los canales de color compiten entre sí para aumentar el contraste entre ellos. El proceso del oponente tiene 3 procesos competitivos (canales), el canal blanco vs negro, el canal rojo vs verde y el amarillo (rojo + verde) vs azul. Podemos utilizar el concepto de convoluciones [matemática] 1 × 1 [/ matemática] para implementar este proceso oponente en nuestros modelos. Podemos calcular una nueva imagen del mismo tamaño que la imagen original al muestrear un volumen [matemático] 1 × 1 × 3 [/ matemático] en cada ubicación de la imagen original y aplicar los 3 filtros. Esos 3 filtros tienen tamaño [matemático] 1 × 1 × 3 [/ matemático] con los siguientes pesos.

filtro blanco vs negro (w / bl) tiene pesos

[matemáticas] w_ {w / bl} = [1 / 3,1 / 3,1 / 3] [/ matemáticas]

que produce una escala de grises o un canal de luminancia.

el filtro rojo vs verde (r / g) tiene pesos

[matemáticas] w_ {r / g} = [1, -1,0] [/ matemáticas]

el filtro amarillo (r + g) vs azul (y / b) tiene pesos

[matemáticas] w_ {y / b} = [1 / 2,1 / 2, -1] [/ matemáticas]

Así que ahora tenemos los canales oponentes de color en lugar de los canales RGB originales usando la operación de convolución [matemática] 1 × 1 [/ matemática]. Esto puede extenderse no solo a los canales de color, sino a cualquier canal de características en cualquier capa.

Espero que esto ayude.

Notas al pie

[1] Proceso de oposición – Wikipedia

A continuación, las capas convolucionales incluyen la función de activación. Echa un primer vistazo a la imagen.

Puede ver un convLayer [math] K \ times K [/ math] con mapas de funciones de salida [math] N [/ math] como resultado de escanear el volumen de entrada con una capa de unidades [math] N [/ math] usando una ventana de tamaño [matemática] K \ veces K [/ matemática]. Por supuesto, esta capa produce un vector de activaciones en cada posición de la ventana, por lo que el resultado del proceso de escaneo completo es otro volumen (un mapa de características por unidad).

Cuando apilas un [math] 1 \ times 1 [/ math] convLayer encima del [math] K \ times K [/ math], simplemente agregas otra capa de unidades conectadas a la capa anterior de unidades! (Ver la figura). Entonces el bloque [[math] K \ times K [/ math] convLayer → [math] 1 \ times 1 [/ math] convLayer] es equivalente a una red de 2 capas que escanea el volumen de entrada usando una ventana de tamaño [math ] K \ veces K [/ matemáticas].

Del mismo modo, si apila [math] L [/ math] [math] 1 \ times 1 [/ math] convLayers encima de un [math] K \ times K [/ math] convLayer, esto es equivalente a un multicapa perceptrón con capas [matemática] L + 1 [/ matemática] escaneando el volumen de entrada (del primer convLayer) usando una ventana de tamaño [matemático] K \ veces K [/ matemático].

Esta idea se introdujo en un documento llamado “red en red” (NiN).

Luego, Google reutilizó las convoluciones [math] 1 \ times 1 [/ math] en las redes de inicio por Google como una forma de reducir el número de mapas de características de entrada para dar entrada a las convoluciones con un tamaño de ventana más grande (que son más caras calcular porque el número de operaciones crece cuadráticamente con el tamaño de la ventana). Ver la respuesta de Chomba Bupe.

Recuerda que hay una tercera dimensión. El parche 1 × 1 todavía se pasa a través de la profundidad de los filtros que hemos establecido como hiperparámetro.

El punto es que el modelo quizás pueda aprender a un nivel muy granular. Sin embargo, creo que este tipo de convolución funcionaría mejor en combinación con otras convoluciones (por ejemplo, en un modelo de inicio).

More Interesting

¿Cuáles son las configuraciones adecuadas para la agrupación de documentos con K-means?

¿Puedo usar el concepto de aprendizaje automático para predecir cuánta cantidad de comida cocinar por día en un restaurante?

¿Cuál es la mejor base de datos para almacenar vectores de características de gran tamaño para su posterior recuperación y calcular las mediciones de distancia para la coincidencia de similitudes?

¿Cómo es usar las API de servicios cognitivos de Microsoft?

¿La mayoría de los algoritmos de aprendizaje automático se ejecutan en lotes, o se ejecutan cada vez que obtienen un nuevo bit de datos?

¿Cómo se puede utilizar el aprendizaje automático en el análisis de tendencias?

¿Cuáles son los mejores materiales de física estadística para redes neuronales profundas?

¿Cuáles son los pros y los contras del aprendizaje en línea y fuera de línea? ¿En qué escenarios son útiles cada uno?

¿El aprendizaje automático no supervisado basado en la agrupación de datos también determina automáticamente la cantidad de agrupaciones?

Cómo comenzar con la visión por computadora

¿Por qué la necesidad de depuración aún no se ha resuelto después de tantos desarrollos en tecnología, informática, algoritmos y aprendizaje automático?

¿Soy un desarrollador de dinosaurios si no uso Github, no conozco CI / CD y docker y solo conozco el aprendizaje profundo de la palabra de moda?

¿Qué conceptos debería practicar en la programación antes de ir a Machine Learning?

¿Cuáles son los pros y los contras de aprender ExpressJS?

¿Cómo puede un programa determinar rápidamente si un tweet es negativo o positivo?