Pooling

[pùling]

Operazione che riduce le dimensioni di una feature map prendendo max o media su finestre. Riduce calcolo e dà un po' di invarianza.

Il pooling è una operazione di downsampling usata nelle CNN (vedi convolution). Prende una feature map e la riduce di dimensione, sintetizzando regioni in singoli valori.

Tipi principali:

  • Max pooling: per ogni finestra (tipicamente 2x2), prende il valore massimo. Conserva i pattern più forti, scarta il resto. Standard nelle CNN classiche.
  • Average pooling: prende la media della finestra. Più morbido, smooth.
  • Global average pooling: media su tutta la feature map. Riduce a un vettore. Spesso ultimo passo prima del classifier finale.
  • Adaptive pooling: imposta dimensione output, calcola finestre di conseguenza. Utile per input di dimensione variabile.

Perché si usa:

  • Riduce dimensioni: meno calcolo nei layer successivi.
  • Translation invariance: piccoli spostamenti dell'oggetto non cambiano molto l'output.
  • Aumenta receptive field: dopo pooling, ogni neurone "vede" una porzione più ampia dell'immagine originale.
  • Riduce overfitting: meno parametri da imparare a valle.

Varianti moderne:

  • Strided convolution: convoluzione con stride > 1. Sostituisce il pooling, è più imparabile. Usata in molte architetture moderne.
  • Attention pooling: usa attention per pesare diversamente regioni dell'immagine. Standard nei Vision Transformer.

Critica nota: il pooling perde informazione spaziale precisa. Per task come segmentation (dove sta esattamente l'oggetto?), si usano architetture senza pooling aggressivo (U-Net, dilated convolutions).

Curiosità: Geoffrey Hinton, padrino del deep learning, ha ripetutamente criticato il max pooling come "errore". Ha proposto le Capsule Networks come alternativa. Hanno avuto poco successo. Il max pooling sopravvive.