El pooling es una operación de reducción de muestreo utilizada en redes neuronales, principalmente en redes neuronales convolucionales (CNN). Una capa de pooling agrega información dispersa en muchos vectores en menos vectores, reduciendo la redundancia y la cantidad de cálculo y memoria requeridos. También aumenta el campo receptivo de las neuronas en capas posteriores, haciendo que el modelo sea más robusto a pequeñas variaciones en la entrada. El pooling se aplica típicamente después de las capas convolucionales para reducir progresivamente las dimensiones espaciales de los mapas de características mientras se preserva la información más relevante.
En una CNN bidimensional, una capa de pooling toma un tensor de entrada \(x \in \mathbb{R}^{H \times W \times C}\), donde \(H\) es la altura, \(W\) es el ancho y \(C\) es el número de canales, y produce un tensor de salida \(y \in \mathbb{R}^{H' \times W' \times C'}\). La operación está controlada por dos parámetros: el tamaño del filtro (o tamaño del kernel) \(f\) y el paso (stride) \(s\). En algunos casos, se utilizan tamaños de filtro y pasos separados para las direcciones horizontal y vertical, denotados como \(f_H, f_W, s_H, s_W\). El campo receptivo de una entrada de salida \(y_{i,j,c}\) es el conjunto de entradas de entrada que pueden afectarla, típicamente una ventana de tamaño \(f \times f\) centrada en una posición determinada por el paso.
Max Pooling
El max pooling es la variante de pooling más común. Selecciona el valor máximo de cada ventana de la entrada. Formalmente, para un tamaño de filtro \(f\) y un paso \(s\), la salida en la posición \((i,j,c)\) se define como:
\[\mathrm{MaxPool}(x|f,s)_{i,j,c} = \max(x_{is:is+f-1, js:js+f-1, c})\]
donde la notación \(is:is+f-1\) indica el rango de índices desde \(is\) hasta \(is+f-1\). Si los pasos horizontal y vertical difieren, la fórmula se generaliza a \(x_{i s_H : i s_H + f_H - 1, j s_W : j s_W + f_W - 1, c}\). El max pooling es efectivo para preservar la activación más fuerte en cada región local, lo que ayuda a retener características como bordes o texturas mientras descarta detalles menos importantes.
Average Pooling
El average pooling calcula la media de todos los valores en cada ventana en lugar del máximo. A veces se usa en lugar del max pooling, particularmente en las capas finales de una red antes de una salida de clasificación. El average pooling suaviza el mapa de características, lo que puede reducir el sobreajuste pero puede perder características nítidas. El average pooling global, un caso especial donde el tamaño del filtro es igual a toda la dimensión espacial, produce un único valor por canal y se usa a menudo para reemplazar capas completamente conectadas en arquitecturas como diseños de redes de finales de la década de 2010.
Rol en Arquitecturas Convolucionales
Las capas de pooling son integrales en muchas arquitecturas CNN clásicas. Por ejemplo, el modelo AlexNet, introducido en 2012, usó max pooling después de su primera, segunda y quinta capas convolucionales. Las redes VGG, desarrolladas en 2014, emplearon max pooling con un tamaño de filtro de 2 y un paso de 2 después de cada bloque de capas convolucionales. Estos diseños ayudaron a reducir el tamaño espacial de los mapas de características desde dimensiones como 224x224 hasta 7x7 antes de la clasificación, permitiendo redes más profundas con menos parámetros.
Alternativas y Uso Moderno
En arquitecturas modernas, el pooling a veces se reemplaza por convoluciones con paso (strided convolutions), que reducen la muestra usando una convolución con un paso mayor que 1. Este enfoque, utilizado en modelos como modelos generativos y ciertos sistemas de visión basados en transformers, permite que la red aprenda la operación de reducción de muestreo en lugar de usar una regla fija. Sin embargo, el pooling sigue siendo común en muchas implementaciones prácticas debido a su simplicidad y efectividad. En arquitecturas de transformers, el pooling es menos central, pero el average pooling global todavía se usa en algunos vision transformers para cabezales de clasificación.
Propiedades Teóricas
El pooling proporciona invariancia a la traducción en un grado limitado: debido a que agrega sobre una ventana local, pequeños desplazamientos en la entrada pueden producir la misma salida si el valor máximo o promedio permanece dentro de la ventana. Esta propiedad es útil para tareas como el reconocimiento de objetos, donde la posición exacta de una característica es menos importante que su presencia. El aumento en el campo receptivo significa que las neuronas en capas más profundas pueden responder a regiones más grandes de la entrada, permitiendo que la red capture patrones jerárquicos. El pooling también reduce el costo computacional de capas posteriores al disminuir el número de parámetros y operaciones, lo cual es crítico para el entrenamiento en hardware como GPUs y aceleradores.