Perché contorto se Max Pooling sta per sottocampionare l'immagine comunque?


13

L'idea di applicare filtri per fare qualcosa come identificare i bordi, è un'idea piuttosto interessante.

Ad esempio, è possibile acquisire un'immagine di un 7. Con alcuni filtri, è possibile ottenere immagini trasformate che enfatizzano le diverse caratteristiche dell'immagine originale. L'originale 7:

inserisci qui la descrizione dell'immagine

può essere sperimentato dalla rete come:

inserisci qui la descrizione dell'immagine

Notare come ogni immagine ha estratto un diverso bordo dell'originale 7.

Tutto questo è fantastico, ma poi, diciamo che il livello successivo nella tua rete è un livello Max Pooling.

La mia domanda è, in generale, non sembra un po 'eccessivo? Siamo stati solo molto attenti e deliberati nell'identificare i bordi usando i filtri - ora non ci interessa più nulla di tutto ciò, dato che abbiamo fatto saltare i valori dei pixel! Per favore, correggimi se sbaglio, ma siamo passati da 25 X 25 a 2 X 2! Perché non andare direttamente a Max Pooling allora, non finiremo sostanzialmente con la stessa cosa?

Come estensione della mia domanda, non posso fare a meno di chiedermi cosa succederebbe se, per coincidenza, ognuno dei 4 quadrati avesse un pixel con lo stesso valore massimo. Sicuramente questo non è un caso raro, giusto? Improvvisamente tutte le immagini di allenamento sembrano esattamente uguali.

Risposte:


15

Il pooling massimo non esegue il down-campionamento dell'immagine. Sottocampiona le caratteristiche (come i bordi) che hai appena estratto. Ciò significa che ottieni più approssimativamente dove si trovano quei bordi o altre caratteristiche. Spesso questo è proprio ciò di cui la rete ha bisogno per la generalizzazione - per classificarla non è necessario sapere che esiste un bordo verticale che va da 10,5 a 10,20, ma che esiste un bordo approssimativamente verticale a circa 1/3 da bordo sinistro circa 2/3 dell'altezza dell'immagine.

Queste categorie più ruvide di funzioni coprono intrinsecamente più variazioni nell'immagine di input a costi molto bassi e la riduzione delle dimensioni della mappa delle caratteristiche è anche un piacevole effetto collaterale, che rende la rete più veloce.

Affinché funzioni correttamente, è ancora necessario estrarre le funzionalità con cui iniziare, il pooling massimo non funziona, quindi è necessario il livello convoluzionale. Dovresti scoprire che puoi sottocampionare l'immagine originale (a 14x14) invece di usare il primo livello di max pooling, e otterrai comunque una precisione abbastanza ragionevole. Quanto pool da fare e dove aggiungere quei layer è ancora un altro problema di iperparametro quando si costruisce una rete neurale profonda.


5

Non possiamo passare direttamente dal livello di input al pooling massimo a causa dell'intervallo convolution layerintermedio. Il motivo della convoluzione è l'estrazione di funzionalità. Il pooling massimo consente di sottocampionare le funzionalità che sono state estratte. Se pensi che ci siano funzionalità che mancano a causa del salto diretto da una matrice di grandi dimensioni a un livello di pooling massimo, puoi aggiungere più livelli di convoluzione tra di loro fino a quando non ti senti soddisfatto di una dimensione e quindi eseguire il pool massimo su di esso in modo che non è eccessivo.

Il pooling massimo, che è una forma di down-sampling, viene utilizzato per identificare le funzionalità più importanti. Ma si possono anche usare un pool medio e varie altre tecniche. Normalmente lavoro con il testo e non con le immagini. Per me, i valori non sono normalmente tutti uguali. Ma se lo sono anche, non farebbe molta differenza perché seleziona solo il valore più grande.

Un'ottima comprensione da wiki -The intuition is that once a feature has been found, its exact location isn't as important as its rough location relative to other features. The function of the pooling layer is to progressively reduce the spatial size of the representation to reduce the amount of parameters and computation in the network, and hence to also control overfitting. It is common to periodically insert a pooling layer in-between successive conv layers in a CNN architecture. The pooling operation provides a form of translation invariance.


Puoi spiegare l'ultima frase The pooling operation provides a form of translation invariance?
HelloWorld,

@StudentT Significa che l'output del pool massimo sarà più o meno lo stesso se la funzionalità viene rilevata in qualsiasi punto dell'immagine. Sposta la cosa nell'immagine che sta attivando la funzione e un input diverso nel pool massimo sarà massimo, ma l'output del pool massimo dovrebbe essere lo stesso.
mrmcgreg,

@mrmcgreg Credo che sia vero per il pooling globale, non per il pooling massimo. Il pooling massimo fornisce una sorta di invarianza alle traduzioni locali all'interno dell'area del pool (ad es. 2x2). Ciò consente un po 'di jitter nelle funzionalità.
geometrikal,

0

La convoluzione sta fondamentalmente filtrando l'immagine con un filtro pixel più piccolo per ridurre le dimensioni dell'immagine senza perdere la relazione tra i pixel (parametri della rete), il pooling riduce anche le dimensioni spaziali estraendo il massimo, la media o la somma dei pixel fino alla dimensione del filtro, tuttavia potrebbe non essere presente un parametro importante nel processo che la convoluzione riesce a raggiungere non riducendo significativamente le dimensioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.