Qualcuno può spiegare cos'è un max pooling globale e perché e quando lo utilizziamo per allenare una rete neurale. Hanno qualche vantaggio rispetto al normale livello massimo di pooling?
Qualcuno può spiegare cos'è un max pooling globale e perché e quando lo utilizziamo per allenare una rete neurale. Hanno qualche vantaggio rispetto al normale livello massimo di pooling?
Risposte:
Pool max globale = livello di pool max ordinario con dimensione pool uguale alla dimensione dell'input (meno la dimensione del filtro + 1, per essere precisi). Puoi vedere che MaxPooling1D
accetta un pool_length
argomento, mentre GlobalMaxPooling1D
non lo è.
Ad esempio, se l'ingresso dello strato di pooling massimo è , l'output di pooling globale massimo , mentre lo strato di pool max ordinario con dimensioni pool è pari a 3 output (assumendo falcata = 1).5 2 , 2 , 5 , 5 , 5
Questo può essere visto nel codice :
class GlobalMaxPooling1D(_GlobalPooling1D):
"""Global max pooling operation for temporal data.
# Input shape
3D tensor with shape: `(samples, steps, features)`.
# Output shape
2D tensor with shape: `(samples, features)`.
"""
def call(self, x, mask=None):
return K.max(x, axis=1)
In alcuni domini, come l'elaborazione del linguaggio naturale, è comune utilizzare il max pooling globale. In alcuni altri domini, come la visione artificiale, è comune utilizzare un pool massimo che non sia globale.
Come descritto in questo documento che ha proposto il raggruppamento medio globale (GAP):
Le reti neurali convoluzionali convenzionali eseguono la convoluzione negli strati inferiori della rete. Per la classificazione, le mappe delle caratteristiche dell'ultimo livello convoluzionale vengono vettorializzate e inserite in livelli completamente collegati seguiti da uno strato di regressione logistica softmax. Questa struttura collega la struttura convoluzionale con classificatori di reti neurali tradizionali. Tratta i livelli convoluzionali come estrattori di funzioni e la funzione risultante viene classificata in modo tradizionale.
Tuttavia, i layer completamente collegati sono inclini a un overfitting, ostacolando così la capacità di generalizzazione della rete complessiva. L'abbandono è proposto da Hinton et al. Come un regolarizzatore che imposta casualmente metà delle attivazioni sugli strati completamente collegati a zero durante l'allenamento. Ha migliorato la capacità di generalizzazione e in gran parte impedisce il sovradimensionamento.
In questo documento, proponiamo un'altra strategia chiamata pool medio globale per sostituire i tradizionali livelli completamente collegati nella CNN. L'idea è di generare una mappa delle caratteristiche per ciascuna categoria corrispondente dell'attività di classificazione nell'ultimo livello mlpconv. Invece di aggiungere livelli completamente connessi in cima alle mappe delle caratteristiche, prendiamo la media di ciascuna mappa delle caratteristiche e il vettore risultante viene immesso direttamente nel livello softmax. Un vantaggio del raggruppamento medio globale sugli strati completamente connessi è che è più nativo della struttura di convoluzione imponendo corrispondenze tra mappe caratteristiche e categorie. Pertanto, le mappe delle caratteristiche possono essere facilmente interpretate come mappe di confidenza delle categorie. Un altro vantaggio è che non esiste alcun parametro da ottimizzare nel pool medio globale, pertanto si evita un overfitting a questo livello. Futhermore, il raggruppamento medio globale somma le informazioni spaziali, quindi è più robusto per le traduzioni spaziali dell'input. Possiamo vedere il raggruppamento medio globale come un regolarizzatore strutturale che impone esplicitamente le mappe delle caratteristiche come mappe di confidenza dei concetti (categorie). Ciò è reso possibile dagli strati mlpconv, in quanto migliorano l'approssimazione delle mappe di confidenza rispetto ai GLM.
Modifica: come suggerito da @MaxLawnboy, ecco un altro documento sullo stesso argomento .