emos estado explorando diferentes arquitecturas de redes neuronales que nos permiten procesar información compleja. Después de ver cómo las RNNs y Transformers manejan secuencias enfocándose en el la temporalidad o las relaciones entre tokens, hoy vamos a hablar de las Redes Neuronales Convolucionales (CNNs).
Las CNNs se inspiraron originalmente en el córtex visual de los animales y se hicieron famosas por su éxito en tareas de visión por computadora, como el reconocimiento de objetos en imágenes. Son especialmente buenas manejando datos que tienen una estructura de cuadrícula o matriz, como es una imagen. Pero, sorprendentemente, su utilidad no se limita a las imágenes; también han demostrado ser muy efectivas procesando datos secuenciales 1D, como series temporales o texto.
Uso de Filtros para Detección de Patrones
El corazón de una CNN es la capa convolucional. Piensa en ella como un conjunto de «lupas» o «detectores de patrones» llamados filtros (o kernels). Cada filtro es una pequeña matriz de números (pesos). La capa convolucional «desliza» (este es el proceso de convolución) cada filtro sobre la entrada de datos (la imagen, la serie de tiempo, etc.).
En cada posición donde se detiene el filtro, se calcula una especie de «puntuación» (un producto punto) entre los números del filtro y los números de la porción de datos que cubre. Si la estructura de los datos bajo el filtro coincide con el patrón que el filtro está diseñado para detectar, la puntuación será alta.
El resultado de aplicar un filtro a toda la entrada es un mapa de características (feature map). Este mapa nos dice dónde se detectó el patrón específico de ese filtro en los datos de entrada.
Una característica de las CNNs es que se comparten los parámetros: el mismo filtro se usa para escanear toda la entrada. Esto significa que la red aprende a detectar un patrón una sola vez, y si ese patrón aparece en diferentes lugares de la imagen o la secuencia, la red lo reconocerá con el mismo filtro. Esto reduce drásticamente el número de parámetros a aprender y hace que la detección sea invariante a la traslación (no importa dónde esté el patrón, lo detectará).
Además de las capas convolucionales, las CNNs suelen incluir:
- Capas de Agrupación (Pooling): Estas capas reducen el tamaño del mapa de características (por ejemplo, tomando el valor máximo en una pequeña ventana, Max Pooling). Esto ayuda a que la red sea más robusta a pequeñas variaciones en la posición exacta del patrón y reduce la cantidad de cálculo en capas posteriores.
- Funciones de Activación: Como en otras redes, introducen no linealidades (siendo ReLU una de las más comunes) para permitir que la red aprenda relaciones complejas.
- Capas Totalmente Conectadas: A menudo se usan al final para tomar las características extraídas y usarlas para la tarea final, como clasificar una imagen.
CNNs para Datos Secuenciales (1D CNNs)
Cuando aplicamos CNNs a series temporales o texto, usamos convoluciones 1D. En lugar de deslizar un filtro 2D sobre una imagen, deslizamos un filtro 1D a lo largo de la secuencia.
Esto permite a la CNN detectar patrones locales en la secuencia, como picos repentinos, caídas o formas específicas dentro de un segmento corto de tiempo. A diferencia de las RNNs que construyen un estado a lo largo del tiempo, las 1D CNNs procesan segmentos locales en paralelo. Son muy eficientes computacionalmente para esta tarea local, aunque por sí solas les cuesta capturar dependencias que se extienden por largos tramos de la secuencia (ya que están limitadas por el tamaño del filtro).
El Rol de las CNNs en los Modelos Generativos
Si bien las CNNs son famosas por tareas discriminativas (como clasificar lo que ven), sus capas también son componentes fundamentales en muchos modelos generativos, como las Redes Generativas Adversarias (GANs) y los Autoencoders Variacionales (VAEs).
En estos modelos, especialmente en la parte del generador (la red que crea los datos sintéticos), se utiliza una operación inversa a la convolución llamada convolución transpuesta (a veces, incorrectamente, llamada «deconvolución»).
Mientras que la convolución toma una porción grande y la «resume» a un punto en el mapa de características, la convolución transpuesta toma un punto (o un mapa de características pequeño) y lo «expande» o «dibuja» para generar una porción más grande de la salida. Esto permite que el generador parta de una representación de baja dimensión (como un vector aleatorio en un VAE o GAN) y gradualmente la «escale» o «construya» hasta obtener los datos sintéticos de la dimensión deseada (una imagen, una secuencia, etc.).
Por ejemplo, en una DCGAN (Deep Convolutional GAN), el generador usa principalmente capas de convolución transpuesta para transformar un vector de ruido inicial en una imagen o secuencia sintética, aplicando una serie de trucos arquitectónicos (como usar «stride» en lugar de pooling, y normalización por lotes) para lograr un entrenamiento estable y generar resultados de alta calidad. De manera similar, las CNNs (tanto convolución estándar en el codificador como convolución transpuesta en el decodificador) son comunes en VAEs, incluyendo los Conditional VAEs.
Es importante notar que las capas CNN no suelen ser el modelo generativo completo por sí solas, sino que son componentes clave dentro de arquitecturas generativas más amplias como las mencionadas.
Conclusión
Las CNNs son un pilar del deep learning, inicialmente impulsando revoluciones en el dominio del computer vision y luego demostrando su valía en datos secuenciales 1D. Su capacidad para detectar patrones locales de manera eficiente y su rol crucial en las arquitecturas generativas modernas, a través de la convolución y la convolución transpuesta, las convierten en una herramienta indispensable en la caja de herramientas de la IA. Siguen evolucionando y encontrando nuevas aplicaciones, demostrando que su «vista» va mucho más allá de las imágenes.