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 la computación de alto rendimiento, el patrón de convolución a menudo se denomina cálculo de estarcido. La convolución típicamente implica un número significativo de operaciones aritméticas sobre cada elemento de datos. Cada elemento de datos puede calcularse independientemente de los demás, una característica deseable para la computación paralela. Por otro lado, existe un nivel sustancial de compartición de datos de entrada entre elementos de datos de salida con condiciones de frontera algo desafiantes. Esto hace que la convolución sea un caso de uso importante de los métodos sofisticados de fragmentación y de preparación de datos de entrada.
La convolución es una operación de matriz en la que cada elemento de datos de salida es una suma ponderada de un conjunto de elementos de entrada vecinos. Los pesos utilizados en el cálculo de la suma ponderada están definidos por un array de máscara de entrada, comúnmente conocido como núcleo de convolución. Nos referiremos a estos arrays de máscara como máscaras de convolución. La misma máscara de convolución se utiliza normalmente para todos los elementos del arreglo
A continuación se muestra un ejemplo de convolución para datos 1D, donde una máscara de convolución M de 5 elementos se aplica a un array de entrada N de 7 elementos.
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 imagen son, por tanto, convoluciones 2D. La máscara no tiene que ser un arreglo cuadrado.
1. De convolución 1D a convolución 2D
Conoces la convolución 1D:
- Arreglo 1D (por ejemplo,
[x0, x1, x2, ...]) - Kernel: pequeño arreglo 1D (por ejemplo,
[w0, w1, w2]) - Operación: desplazar el núcleo y calcular sumas ponderadas.
Para imágenes, la entrada es 2D (altura × anchura), por lo que:
- matriz de píxeles, forma
H × W - Kernel: pequeña matriz, por ejemplo
3 × 3o5 × 5 - Operación: colocar el núcleo sobre cada parche de
3 × 3de la imagen, multiplicar elemento por elemento, sumar → un píxel de salida.
Esta es solo la misma idea que ya conoces, pero:
- Arreglo → Arreglo 2D (matriz).
- Elementos vecinos → píxeles vecinos en 2D.
2. Múltiples canales (por ejemplo, RGB)
Las imágenes reales no son solo 2D, 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, tomas un pequeño cubo:
kH × kW × C. - Multiplicar elemento por elemento con el núcleo
kH × kW × C. - Suma todos los valores → 1 número (un valor de canal de salida en esa ubicación).
Así que conceptualmente: convolución 3D sobre el espacio y los canales, pero sigue siendo solo una “suma ponderada de vecinos”.
3. Filtros (kernels) y mapas de características
En las CNNs, no se usa solo un kernel; se usan muchos:
- Supongamos que utiliza
Fnúcleos diferentes. - Cada núcleo tiene forma
kH × kW × C_in. - Cada kernel produce un canal de salida, llamado mapa de características.
Entonces, si la forma de entrada es:
H × W × C_in,
y utilizas núcleos de tamaño F, la forma de salida se convierte en:
H_out × W_out × F.
Cada uno de esos F canales de salida captura un tipo diferente de patrón:
- Un núcleo puede aprender a detectar bordes, otro esquinas, otra texturas, etc.
Pensar: Una capa CNN = aplicar muchas convoluciones (filtros) diferentes sobre la entrada.
4. Tamaño de paso y relleno
Dos detalles más sobre las matrices:
- Stride: la distancia que se desplaza el núcleo en cada paso.
- Paso 1: mover 1 píxel a la vez → salida densa.
- Paso 2: omitir cada otro píxel → salida más pequeña.
- Relleno: agregar ceros alrededor del borde de la imagen.
- Sin relleno, la salida se reduce.
- Con el relleno, puedes mantener la misma altura/ancho.
Matemáticamente, sigue siendo solo ventanas deslizantes y productos escalares, pero con control sobre:
- Cuánto deslizas (pisada).
- Si pierde la información del borde (relleno).
5. No linealidad: adición de funciones de activación
Hasta ahora, todo es lineal: sumas ponderadas. Una capa CNN añade no linealidad:
- Después de la convolución, aplica una función de activación elemento por elemento (e.g.,
ReLU(x) = max(0, x)).
Entonces, una única capa convolucional es:
- Convolución (sumas ponderadas lineales).
- Activación (no lineal).
Esta combinación permite a las CNNs aprender mapeos complejos y no lineales.
6. Apilar capas → jerarquías de características profundas
Un CNN completo es simplemente muchas capas de:
- Convolución → activación (→ a veces, agrupamiento).
Intuición:
- Las primeras capas: detectan cosas simples (bordes, manchas).
- Capas intermedias: combínelos en texturas, formas.
- Capas posteriores: combinan formas en partes de objetos y objetos.
Todo esto sigue construido a partir del mismo principio que comprendes: “tomar los barrios locales y calcular sumas ponderadas.”
7. Conexión a capas completamente conectadas (densas)
Una capa completamente conectada también es solo sumas ponderadas:
- Vector 1D.
- La unidad de salida es la 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 vecindario local (conectividad dispersa) y comparte pesos en todas las posiciones.
Entonces puedes ver las CNNs como:
- Una forma inteligente de usar tu operación de convolución para obtener:
- Localidad (los píxeles cercanos tienen más importancia).
- Compartición de pesos (el mismo kernel en todas las posiciones).
- Menos parámetros que una capa densa en imágenes completas.
Conclusión: De la operación simple a las redes potentes
"At each position, take neighbors and compute a weighted sum with a kernel,"
Entonces ya estás parado sobre la idea central detrás de las CNNs.
Las redes neuronales convolucionales toman ese bloque simple y:
- Extiéndalo de matrices 1D a tensores 2D/3D.
- Aplicar muchos núcleos diferentes en paralelo para producir mapas de características ricos.
- Añade no linealidades para escapar de la pura linealidad.
- Apila muchas de estas capas para que cada etapa "vea" una estructura más abstracta.
La magia de las redes neuronales convolucionales (CNNs) no es un nuevo tipo de matemáticas, sino la composición de muchas operaciones convolucionales pequeñas y locales en una arquitectura profunda capaz de aprender representaciones visuales poderosas.