Le pooling est une opération de sous-échantillonnage utilisée dans les réseaux de neurones, notamment dans les réseaux de neurones convolutifs (CNN). Une couche de pooling agrège les informations dispersées à travers de nombreux vecteurs en moins de vecteurs, réduisant la redondance et la quantité de calcul et de mémoire requise. Elle augmente également le champ réceptif des neurones dans les couches ultérieures, rendant le modèle plus robuste aux petites variations dans l'entrée. Le pooling est typiquement appliqué après les couches convolutives pour réduire progressivement les dimensions spatiales des cartes de caractéristiques tout en préservant les informations les plus saillantes
Dans un CNN bidimensionnel, une couche de pooling prend un tenseur d'entrée \(x \in \mathbb{R}^{H \times W \times C}\), où \(H\) est la hauteur, \(W\) est la largeur, et \(C\) est le nombre de canaux, et produit un tenseur \(y \in \mathbb{R}^{H' \times W' \times C'}\). L'opération est contrôlée par deux paramètres : la taille du filtre (ou taille du noyau\) \(f\) et le pas \(s\). Dans certains cas, des tailles de filtre et des pas séparés sont utilisés pour les directions horizontale et verticale, notés \(f_H, f_W, s_H, s_W\). Le champ réceptif d'une entrée de sortie \(y_{i,j,c}\) est l'ensemble des entrées qui peuvent l'affecter, typiquement une fenêtre de taille \(f \times f\) centrée à une position déterminée par le pas
Max Pooling
Le max pooling est la variante de pooling la plus courante. Il sélectionne la valeur maximale de chaque fenêtre de l'entrée. Formellement, pour une taille de filtre \(f\) et un pas \(s\), la sortie à la position \((i,j,c)\) est définie comme :
\[\mathrm{MaxPool}(x|f,s)_{i,j,c} = \max(x_{is:is+f-1, js:js+f-1, c})\]
où la notation \(is:is+f-1\) indique la plage d'indices de \(is\) à \(is+f-1\). Si les pas horizontal et vertical diffèrent, la formule se généralise à \(x_{i s_H : i s_H + f_H - 1, j s_W : j s_W + f_W - 1,, c}\). Le max pooling est efficace pour préserver l'activation la plus forte dans chaque région locale, ce qui aide à retenir des caractéristiques comme les bords ou les textures tout en éliminant les détails moins importants.
Average Pooling
Le average pooling calcule la moyenne de toutes les valeurs dans chaque fenêtre au lieu du maximum. Il est parfois utilisé à la place du max pooling, particulièrement dans les couches finales d'un réseau avant une sortie de classification. Le average pooling lisse la carte de caractéristiques, ce qui peut réduire le sur-apprentissage mais peut perdre des caractéristiques nettes. Le global average pooling, un cas spécial où la taille du filtre égale la dimension spatiale entière, produit une seule valeur par canal et est souvent utilisé pour remplacer les couches entièrement connectées dans des architectures comme conceptions de réseaux de la fin des années 2010s
Rôle dans les Architectures Convolutives
Les couches de pooling sont intégrales à de nombreuses architectures CNN classiques. Par exemple, le modèle AlexNet, introduit en 2012, utilisait le max pooling après ses première, deuxième, et cinquième couches convolutives. Les réseaux VGG, développés en 2014, employaient le max pooling avec une taille de filtre de 2 et un pas de 2 après chaque bloc de couches convolutives. Ces conceptions ont aidé à réduire la taille spatiale des cartes de caractéristiques de dimensions comme 224x224 jusqu'à 7x7 avant la classification, permettant des réseaux plus profonds avec moins de paramètres
Alternatives et Usage Moderne
Dans les architectures modernes, le pooling est parfois remplacé par des convolutions à pas, qui sous-échantillonnent en utilisant une convolution avec un pas supérieur à 1. Cette approche, utilisée dans des modèles comme modèles génératifs et certains systèmes de vision basés sur les transformeurs, permet au réseau d'apprendre l'opération de sous-échantillonnage plutôt que d'utiliser une règle fixe. Cependant, le pooling reste courant dans de nombreuses implémentations pratiques en raison de sa simplicité et de son efficacité. Dans les architectures transformeurs, le pooling est moins central, mais le global average pooling est encore utilisé dans certains transformeurs de vision pour les têtes de classification
Propriétés Théoriques
Le pooling fournit une invariance à la translation à un degré limité :parce qu'il agrège sur une fenêtre locale, de petits déplacements dans l'entrée peuvent produire la même sortie si la valeur maximale ou moyenne reste dans la fenêtre. Cette propriété est utile pour des tâches comme la reconnaissance d'objets, où la position exacte d'une caractéristique est moins importante que sa présence. L'augmentation du champ réceptif signifie que les neurones dans les couches plus profondes peuvent répondre à des régions plus grandes de l'entrée, permettant au réseau de capturer des motifs hiérarchiques. Le pooling réduit également le coût computationnel des couches ultérieures en diminuant le nombre de paramètres et d'opérations, ce qui est critique pour l'entraînement sur du matériel comme GPU et accélérateurs.