Convolutional Neural Networks

max pooling

Max pooling summarizes each window by keeping only its largest value. Since a feature map's value measures 'how strongly did this feature appear here', taking the maximum answers 'did this feature appear anywhere in this window, and how strongly at its best?'. It is the strongest-evidence rule: one confident detection survives, weak background responses are discarded. This makes max pooling a natural fit for detecting the presence of distinctive features regardless of their exact spot.

Precisely, for a window covering positions in a set R, max pooling outputs max over (i,j) in R of x[i,j], applied per channel. During backpropagation the gradient flows only to the single position that held the maximum (the 'argmax'); every other position in the window receives zero gradient. This routing means max pooling is sparse in its gradient and can leave many units un-updated on a given example, but it tends to produce crisp, high-contrast feature responses.

Max pooling dominated the classic CNN era (LeNet, AlexNet, VGG all use 2x2 max pooling) precisely because edges and parts are 'present or not' features where the peak is what matters. Its weaknesses are that it is non-invertible and over-confident — it ignores the spread of activations in the window — so it is being displaced in modern designs by strided convolutions (learnable, no hard argmax) and by average or global pooling for the final aggregation.

Max pooling a 2x2 block [ [1, 7],[3, 2]] outputs 7; in backprop the upstream gradient is sent only to the position that held 7, and 1, 3, 2 receive zero.

Subtlety for backprop: because gradient routes only to the argmax, ties and shifting maxima across iterations can make max-pooled features less smooth than average-pooled ones. Also, max pooling is sensitive to outliers/noise spikes — a single bright noisy pixel wins its whole window.