Las redes neuronales convolucionales (CNN, del inglés Convolutional Neural Networks) llevan más de una década siendo el estándar de facto para tareas de visión artificial. Desde el reconocimiento facial en tu smartphone hasta los sistemas de diagnóstico médico por imagen, la mayoría de las aplicaciones que procesan imágenes tienen una CNN en su núcleo.

Pero a pesar de su ubicuidad, la intuición detrás de cómo funcionan no siempre está clara, incluso para personas con experiencia en machine learning. Este artículo intenta llenar ese hueco: explicar la arquitectura y el funcionamiento de las CNN de forma rigurosa pero accesible.

La idea fundamental: compartir pesos

La diferencia clave entre una red neuronal densa (fully connected) y una CNN está en cómo se conectan las neuronas. En una red densa, cada neurona de una capa está conectada con todas las neuronas de la capa anterior. En una CNN, cada neurona solo está conectada con una región local de la capa anterior, y los pesos de esa conexión se comparten a lo largo de toda la imagen.

Esta idea, aparentemente simple, tiene consecuencias profundas. Primero, reduce drásticamente el número de parámetros: una imagen de 224×224 píxeles con tres canales de color tiene 150.528 valores. Una capa densa que los conecte con 1.000 neuronas necesitaría 150 millones de parámetros. Una capa convolucional con un filtro de 3×3 necesita solo 27 (más el bias). Segundo, hace que el modelo sea invariante a la traslación: si aprende a detectar un borde en la esquina superior izquierda de la imagen, ese mismo conocimiento se aplica en cualquier otra posición.

Los filtros y lo que aprenden

Un filtro convolucional es una pequeña matriz de pesos (típicamente 3×3 o 5×5) que se desliza por la imagen calculando el producto escalar entre sus pesos y la región de la imagen que cubre. El resultado es un mapa de activación (feature map) que indica dónde y con qué intensidad aparece el patrón que el filtro ha aprendido a detectar.

Lo fascinante es que estos filtros no se diseñan manualmente: emergen del proceso de entrenamiento. Las primeras capas aprenden detectores de bordes, gradientes y texturas simples. Las capas intermedias combinan esos patrones en formas más complejas. Las capas finales detectan conceptos de alto nivel como "oreja de gato" o "rueda de coche".

La visualización de los filtros de una CNN entrenada es una de las formas más directas de entender qué ha aprendido el modelo. Herramientas como tf-explain o captum hacen esto accesible.

Pooling: reducir para generalizar

Las capas de pooling reducen las dimensiones espaciales del mapa de activación tomando el máximo (max pooling) o la media (average pooling) de una región. Su función principal es reducir el número de parámetros y hacer el modelo más robusto a pequeñas variaciones en la posición de los objetos.

El max pooling, que toma el valor máximo de cada región, es el más común porque preserva las activaciones más fuertes (las que indican la presencia del patrón detectado) y descarta las más débiles.

Arquitecturas modernas y su evolución

Desde AlexNet en 2012, que popularizó las CNN modernas, la arquitectura ha evolucionado considerablemente. VGG demostró que la profundidad importa. ResNet introdujo las conexiones residuales que permiten entrenar redes de cientos de capas sin que el gradiente desaparezca. EfficientNet optimizó el equilibrio entre profundidad, anchura y resolución.

Hoy, los Vision Transformers (ViT) compiten con las CNN en muchas tareas, pero las CNN siguen siendo la opción preferida cuando los recursos computacionales son limitados o cuando se necesita inferencia rápida en dispositivos móviles.

Cuándo usar una CNN y cuándo no

Las CNN son la elección natural para datos con estructura espacial local: imágenes, señales de audio (tratadas como espectrogramas), secuencias de tiempo con patrones locales. No son la mejor opción para datos tabulares, grafos o secuencias largas con dependencias de largo alcance.

Para empezar, raramente tiene sentido entrenar una CNN desde cero. El transfer learning —partir de un modelo preentrenado en ImageNet y ajustarlo a tu tarea— es casi siempre más eficiente y produce mejores resultados con menos datos.