18. Pooling y reducción de dimensionalidad

18.1 Introducción

En el tema anterior estudiamos las capas convolucionales y vimos cómo generan mapas de características a partir de filtros aprendidos. Sin embargo, si una red solo apilara convoluciones conservando siempre el mismo tamaño espacial, el costo computacional crecería rápidamente y la representación interna se volvería demasiado pesada.

Aquí entra en juego el pooling, una técnica que resume información local y reduce la dimensión espacial de los mapas de características. Esta reducción ayuda a controlar el tamaño de la red, mejorar eficiencia y hacer que ciertos patrones sean menos sensibles a pequeñas variaciones espaciales.

En este tema veremos qué es el pooling, cuáles son sus variantes más importantes y por qué se convirtió en un componente clásico de muchas arquitecturas convolucionales.

18.2 ¿Qué significa reducir dimensionalidad?

Reducir dimensionalidad, en este contexto, significa disminuir la cantidad de valores necesarios para representar la información de una capa. En las CNN esto suele hacerse reduciendo el tamaño espacial de los mapas de características.

Por ejemplo, un mapa de 64 x 64 puede transformarse en uno de 32 x 32. Eso implica:

  • Menos activaciones a procesar.
  • Menor costo computacional.
  • Menor uso de memoria.
  • Mayor capacidad de construir representaciones más compactas.
El pooling no intenta conservar todos los detalles. Su objetivo es resumir la información más relevante y hacer la representación más manejable para la red.

18.3 Intuición general del pooling

La idea del pooling es muy simple: en lugar de conservar todos los valores de una región pequeña, se reemplaza esa región por un resumen.

Por ejemplo, en una ventana 2x2 podríamos guardar:

  • El valor máximo.
  • El valor promedio.

De este modo, cuatro valores se convierten en uno. La representación se hace más compacta y retiene una versión resumida de la información local.

18.4 Max pooling

La variante más conocida es el max pooling. En este caso, se toma una región pequeña y se conserva solo el valor máximo.

Si una ventana 2x2 contiene:

[
  [1, 4],
  [2, 3]
]

el resultado del max pooling será 4.

La intuición es que si un patrón fue detectado fuertemente en alguna parte de esa región, queremos conservar esa presencia aunque no guardemos todos los detalles.

18.5 Average pooling

Otra variante importante es el average pooling, donde en lugar del máximo se calcula el promedio de la región.

Con la misma ventana anterior:

[
  [1, 4],
  [2, 3]
]

el promedio sería 2.5.

Mientras que max pooling conserva la activación más fuerte, average pooling resume el nivel medio de activación dentro de la región.

18.6 Diferencia conceptual entre max y average pooling

Ambos métodos reducen dimensionalidad, pero lo hacen con una filosofía distinta:

  • Max pooling: preserva la activación más fuerte, útil para capturar si un patrón apareció.
  • Average pooling: resume la activación media, útil cuando interesa una visión más distribuida.

En arquitecturas clásicas, max pooling fue durante mucho tiempo la opción dominante. Aun así, average pooling también es importante y aparece mucho en capas finales o diseños específicos.

18.7 Tamaño de ventana y stride

El pooling se define principalmente por dos parámetros:

  • El tamaño de la ventana.
  • El stride o desplazamiento.

Un caso muy común es usar una ventana 2x2 con stride 2. Esto hace que la salida tenga la mitad del ancho y la mitad del alto.

Por ejemplo, un mapa 32 x 32 se convierte en uno de 16 x 16.

18.8 Ejemplo intuitivo de reducción

Supongamos que un mapa de características tiene tamaño 8 x 8. Si aplicamos max pooling 2x2 con stride 2:

  • La ventana toma bloques 2x2.
  • De cada bloque sale un solo valor.
  • La salida será 4 x 4.

Esto reduce la cantidad de posiciones espaciales de 64 a 16, una compresión importante.

18.9 ¿Qué se gana con el pooling?

El pooling aporta varias ventajas prácticas:

  • Reduce costo computacional.
  • Disminuye memoria requerida.
  • Hace más compactas las representaciones.
  • Introduce cierta robustez frente a pequeñas traslaciones.
  • Permite apilar más capas de manera eficiente.

Estas razones explican por qué fue tan usado durante años en arquitecturas convolucionales.

18.10 Invariancia aproximada

Uno de los efectos más valorados del pooling es que ayuda a lograr cierta invariancia aproximada a pequeños desplazamientos. Si un patrón se mueve ligeramente dentro de una región local, el máximo puede seguir siendo parecido.

Eso significa que la red puede conservar la presencia del patrón aunque su posición exacta varíe un poco. Esta propiedad es muy útil en visión, donde los objetos rara vez aparecen exactamente alineados siempre igual.

18.11 El pooling no tiene pesos aprendibles

A diferencia de una convolución, una operación de pooling no suele tener parámetros aprendibles. Es una transformación fija definida por una regla simple, como máximo o promedio.

Esto significa que no agrega capacidad de aprendizaje por sí misma, pero sí modifica la representación de una forma muy estratégica para el resto de la red.

18.12 Pooling y pérdida de detalle

Reducir dimensionalidad implica también perder información. Ese es el costo inevitable del pooling. Al resumir una región en un solo valor, se descartan detalles finos y precisión espacial.

Esto no siempre es un problema. En clasificación global suele ser aceptable. Pero en tareas donde importa mucho la localización exacta, como segmentación o detección muy precisa, hay que manejar esta reducción con más cuidado.

El pooling mejora eficiencia y robustez, pero sacrifica resolución espacial. Su utilidad depende de cuánto detalle fino necesita conservar la tarea.

18.13 Pooling en clasificación versus segmentación

En clasificación de imágenes, perder cierta precisión espacial no suele ser grave, porque al final queremos decidir una etiqueta global. En cambio, en segmentación pixel a pixel sí importa mucho mantener detalle local.

Por eso:

  • En clasificación, el pooling encaja muy bien.
  • En segmentación, se usan estrategias adicionales para recuperar resolución, como upsampling o conexiones especiales.

Esta diferencia es importante para entender por qué distintas tareas visuales requieren arquitecturas diferentes.

18.14 Pooling y downsampling

El pooling es una forma de downsampling, es decir, reducción de resolución espacial. Pero no es la única. También se puede reducir resolución usando convoluciones con stride mayor que 1.

En arquitecturas modernas, a veces se reemplaza parte del pooling por convoluciones con stride. Ambas estrategias reducen tamaño, aunque con propiedades algo distintas.

18.15 Pooling global

Existe una variante llamada global pooling, donde la reducción se hace sobre todo el mapa espacial. Por ejemplo, un mapa H x W puede resumirse en un único valor por canal.

Esto es muy usado en capas finales de clasificación, especialmente con:

  • Global average pooling.
  • Global max pooling.

La ventaja es que permite pasar de mapas de características a una representación compacta sin depender tanto de capas densas grandes.

18.16 Global average pooling

El global average pooling toma cada mapa de características y calcula su promedio completo. Si tenemos, por ejemplo, 512 mapas, el resultado será un vector de 512 valores: uno por mapa.

Esta técnica se volvió muy importante porque:

  • Reduce drásticamente parámetros.
  • Evita capas totalmente conectadas demasiado pesadas.
  • Funciona bien en muchas arquitecturas modernas.

18.17 ¿Por qué algunas arquitecturas modernas usan menos pooling?

Aunque el pooling fue central en muchas CNN clásicas, algunas arquitecturas más recientes prefieren usar convoluciones con stride o combinaciones distintas. Las razones incluyen:

  • Mayor control sobre la reducción espacial.
  • Integración más directa con el aprendizaje.
  • Mejor preservación de ciertas propiedades según la tarea.

Esto no significa que el pooling haya dejado de ser importante, sino que su rol se volvió más flexible dentro del diseño arquitectónico.

18.18 Pooling y campo receptivo

El pooling también contribuye a ampliar el campo receptivo efectivo de las capas siguientes. Al reducir resolución, cada posición de niveles profundos puede abarcar una región mayor de la entrada original.

Esto ayuda a construir representaciones más globales y menos dependientes del detalle milimétrico.

18.19 Ejemplo conceptual

Supongamos que una capa convolucional detecta la presencia de un borde en varias posiciones cercanas. Si aplicamos max pooling 2x2, no importa exactamente cuál de esas posiciones fue la más fuerte: la región se resume conservando la activación dominante.

Esto expresa bien la lógica de pooling: no nos interesa ya la ubicación exacta al píxel, sino la presencia del patrón dentro de una zona.

18.20 Ejemplo en PyTorch

En PyTorch, una capa de max pooling puede definirse así:

import torch.nn as nn

pool = nn.MaxPool2d(kernel_size=2, stride=2)

Y una de average pooling:

avg_pool = nn.AvgPool2d(kernel_size=2, stride=2)

Estas capas se insertan típicamente después de una convolución y activación.

18.21 Secuencia típica en una CNN clásica

Durante mucho tiempo, una estructura muy común fue:

  1. Convolución.
  2. ReLU.
  3. Pooling.
  4. Repetir varias veces.

Esto produce representaciones cada vez más profundas y compactas hasta llegar a una etapa final de clasificación.

18.22 ¿Siempre conviene usar pooling?

No necesariamente. Depende del problema y de la arquitectura. Algunas tareas necesitan conservar mucha resolución espacial. Otras priorizan compacidad y robustez.

En general, conviene pensar el pooling no como una regla obligatoria, sino como una herramienta cuyo valor depende del objetivo:

  • Muy útil en clasificación.
  • Más delicado en localización fina.
  • Frecuentemente reemplazable o complementable con stride.

18.23 Errores comunes al entender pooling

Al empezar, algunas confusiones frecuentes son:

  • Pensar que pooling aprende filtros, cuando no tiene pesos entrenables.
  • Suponer que reduce canales, cuando normalmente reduce solo dimensiones espaciales.
  • Olvidar que al reducir también se pierde precisión espacial.
  • Confundir pooling con convolución de stride mayor que 1.
  • Asumir que max pooling siempre es mejor que average pooling.

Entender bien estos matices ayuda a leer arquitecturas y a implementarlas con más claridad.

18.24 Qué debes recordar de este tema

  • El pooling resume información local y reduce la dimensión espacial de los mapas de características.
  • Max pooling conserva la activación más fuerte; average pooling conserva el promedio.
  • Reducir tamaño ayuda a mejorar eficiencia y robustez, pero implica perder detalle espacial.
  • El pooling no tiene parámetros aprendibles.
  • Es muy útil en clasificación, aunque debe usarse con más cuidado en tareas que requieren localización precisa.
  • El global pooling se usa mucho en capas finales de arquitecturas modernas.
  • En PyTorch se implementa típicamente con nn.MaxPool2d y nn.AvgPool2d.

18.25 Conclusión

El pooling fue durante mucho tiempo uno de los mecanismos más característicos de las CNN porque ofrecía una forma simple y efectiva de reducir resolución, resumir activaciones locales y hacer las representaciones más robustas frente a pequeñas variaciones espaciales.

Aunque el diseño de arquitecturas modernas evolucionó y hoy existen alternativas o combinaciones más sofisticadas, la lógica detrás del pooling sigue siendo fundamental para entender cómo una red controla la complejidad de sus representaciones internas.

En el próximo tema veremos las arquitecturas clásicas de CNN, donde conectaremos estas piezas para entender cómo se organizaron en modelos históricos como LeNet, AlexNet, VGG y otros diseños influyentes.