En estas áreas de aplicación, la convolución a menudo se realiza como un filtro que transforma señales y píxeles en valores más deseables.
En computación de alto rendimiento, el patrón de convolución se conoce a menudo como cálculo de esténcil. La convolución suele implicar un número significativo de operaciones aritméticas en cada elemento de datos. Cada elemento de datos de salida se puede calcular de forma independiente de los demás, una característica deseable para la computación paralela. Por otro lado, existe un nivel sustancial de intercambio de datos de entrada entre los elementos de datos de salida con condiciones de borde algo desafiantes. Esto hace que la convolución sea un caso de uso importante de métodos de división en secciones sofisticados y métodos de puesta en escena de datos de entrada.
La convolución es una operación de matriz donde cada elemento de datos de salida es una suma ponderada de una colección de elementos de entrada vecinos. Los pesos utilizados en el cálculo de la suma ponderada están definidos por una matriz de máscara de entrada, comúnmente denominada núcleo de convolución. Nos referiremos a estas matrices de máscara como máscaras de convolución. La misma máscara de convolución se utiliza típicamente para todos los elementos de la matriz
A continuación se muestra un ejemplo de convolución para datos unidimensionales donde se aplica una matriz de máscara de convolución de 5 elementos M a una matriz de entrada de 7 elementos N.
Para el procesamiento de imágenes y la visión por computadora, los datos de entrada suelen ser matrices bidimensionales, con píxeles en un espacio x-y. Las convoluciones de imágenes son, por lo tanto, convoluciones 2D. La máscara no tiene que ser una matriz cuadrada.
1. De la convolución unidimensional a la convolución bidimensional
Conoces la convolución unidimensional:
- Entrada: matriz unidimensional (por ejemplo,
[x0, x1, x2, ...]) - Núcleo: pequeña matriz unidimensional (por ejemplo,
[w0, w1, w2]) - Operación: deslizar el núcleo y tomar sumas ponderadas.
Para las imágenes, la entrada es bidimensional (altura × anchura), por lo que:
- Entrada: matriz de píxeles, forma
H × W - Núcleo: matriz pequeña, por ejemplo,
3 × 3o5 × 5 - Operación: colocar el núcleo sobre cada parche
3 × 3de la imagen, multiplicar elemento a elemento, sumar → un píxel de salida.
Esto es solo la misma idea que ya conoces, pero:
- Matriz → matriz bidimensional (matriz).
- Elementos vecinos → píxeles vecinos en 2D.
2. Múltiples canales (por ejemplo, RGB)
Las imágenes reales no son solo bidimensionales, a menudo tienen canales:
- Forma:
H × W × C(por ejemplo,C = 3para R, G, B). - Luego, un núcleo también tiene profundidad
C:- Forma:
kH × kW × C.
- Forma:
Paso de convolución:
- Para una posición, se toma un cubo pequeño:
kH × kW × C. - Multiplicar elemento a elemento con el kernel
kH × kW × C. - Sumar todos los valores → 1 número (un valor de canal de salida en esa ubicación).
Así que conceptualmente: convolución 3D sobre espacio + canales, pero todavía solo “suma ponderada de vecinos”.
3. Filtros (núcleos) y mapas de características
En las CNN, no se utiliza solo un núcleo; se utilizan muchos:
- Supongamos que se utilizan
Fnúcleos diferentes. - Cada núcleo tiene forma
kH × kW × C_in. - Cada núcleo produce un canal de salida, llamado mapa de características.
Así que si la forma de entrada es:
H × W × C_in,
y usa F kernels, la forma de salida se convierte en:
H_out × W_out × F.
Cada uno de esos canales de salida F captura un tipo diferente de patrón:
- Un kernel puede aprender a detectar bordes, otro esquinas, otro texturas, etc.
Piensa:
“Una capa CNN = aplicar muchas convoluciones (filtros) diferentes sobre la entrada.”
4. Paso y relleno
Dos detalles más relacionados con matrices:
- Paso: cuánto se mueve el kernel en cada paso.
- Paso 1: mover 1 píxel a la vez → salida densa.
- Paso 2: saltar cada otro píxel → salida más pequeña.
- Relleno: agregar ceros alrededor del borde de la imagen.
- Sin relleno, la salida se vuelve más pequeña.
- Con relleno, se puede mantener la misma altura/ancho.
Matemáticamente, sigue siendo solo ventanas deslizantes y productos escalares, pero con control sobre:
- Cuánto se desliza (paso).
- Si se pierde información de borde (relleno).
5. No linealidad: agregar funciones de activación
Hasta ahora todo es lineal: sumas ponderadas. Una capa CNN agrega no linealidad:
- Después de la convolución, aplicar una función de activación elemento a elemento
(por ejemplo,ReLU(x) = max(0, x)).
Así que una sola capa de convolución es:
- Convolución (sumas ponderadas lineales).
- Activación (no lineal).
Esta combinación permite a las CNN aprender mapeos complejos y no lineales.
6. Apilamiento de capas → jerarquías de características profundas
Un completo CNN es solo muchas capas de:
- Convolución → activación (→ a veces agrupación).
Intuición:
- Capas iniciales: detectar cosas simples (bordes, manchas).
- Capas intermedias: combinarlas en texturas, formas.
- Capas posteriores: combinar formas en partes de objetos y objetos.
Todo esto sigue estando construido a partir del mismo primitivo que entiendes: “tomar barrios locales y calcular sumas ponderadas.”
7. Conexión a capas completamente conectadas (densas)
Una capa completamente conectada es solo sumas ponderadas:
- Entrada: vector unidimensional.
- Unidad de salida = suma de (peso × entrada) + sesgo.
Diferencia:
- Capa densa: cada unidad de salida utiliza todos los elementos de entrada.
- Capa convolucional: cada unidad de salida utiliza solo un barrio local (conectividad dispersa) y comparte pesos en todas las posiciones.
Así que puedes ver las CNN como:
- Una forma inteligente de utilizar tu operación de convolución para obtener:
- Localidad (los píxeles cercanos importan más).
- Compartir peso (mismo núcleo en todas las posiciones).
- Menos parámetros que una capa densa en imágenes completas.
Conclusión: De una operación simple a redes poderosas
"At each position, take neighbors and compute a weighted sum with a kernel,"entonces ya estás parado en la idea central detrás de las CNN.
Las CNN toman ese bloque de construcción simple y:
- Lo extienden de arrays 1D a tensores 2D/3D.
- Aplican muchos núcleos diferentes en paralelo para producir ricas cartas de características.
- Agregan no linealidades para escapar de la pura linealidad.
- Pilan muchas capas de este tipo para que cada etapa «vea» una estructura más abstracta.
La magia de las CNN no es un nuevo tipo de matemáticas, sino la composición de muchas operaciones de convolución pequeñas y locales en una arquitectura profunda que puede aprender representaciones visuales poderosas.