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.
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:
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:
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.
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.
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.
Ambos métodos reducen dimensionalidad, pero lo hacen con una filosofía distinta:
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.
El pooling se define principalmente por dos parámetros:
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.
Supongamos que un mapa de características tiene tamaño 8 x 8. Si aplicamos max pooling 2x2 con stride 2:
Esto reduce la cantidad de posiciones espaciales de 64 a 16, una compresión importante.
El pooling aporta varias ventajas prácticas:
Estas razones explican por qué fue tan usado durante años en arquitecturas convolucionales.
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.
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.
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.
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:
Esta diferencia es importante para entender por qué distintas tareas visuales requieren arquitecturas diferentes.
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.
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:
La ventaja es que permite pasar de mapas de características a una representación compacta sin depender tanto de capas densas grandes.
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:
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:
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.
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.
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.
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.
Durante mucho tiempo, una estructura muy común fue:
Esto produce representaciones cada vez más profundas y compactas hasta llegar a una etapa final de clasificación.
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:
Al empezar, algunas confusiones frecuentes son:
Entender bien estos matices ayuda a leer arquitecturas y a implementarlas con más claridad.
nn.MaxPool2d y nn.AvgPool2d.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.