2011-01-12 16 views
73

È una domanda principale riguardante la teoria delle reti neurali:Perché dobbiamo normalizzare l'input per una rete neurale artificiale?

Perché dobbiamo normalizzare l'ingresso per una rete neurale?

Capisco che a volte, quando ad esempio i valori di input sono non numerici, è necessario eseguire una determinata trasformazione, ma quando abbiamo un input numerico? Perché i numeri devono essere in un certo intervallo?

Cosa succederà se i dati non vengono normalizzati?

risposta

64

Viene spiegato bene here.

Se le variabili di ingresso sono combinati linearmente, come in un MLP, allora è raramente strettamente necessario standardizzare ingressi, almeno in teoria. Il motivo è che qualsiasi ridimensionamento di un vettore di input può essere annullato in modo efficace da cambiando i pesi e i bias corrispondenti, lasciandovi esattamente gli stessi output come in precedenza. Tuttavia, ci sono una serie di motivi pratici per cui la standardizzazione degli input può rendere più veloce l'allenamento e ridurre le probabilità di rimanere bloccati nell'ottimizzazione locale . Inoltre, la riduzione del peso e la stima Bayesiana possono essere eseguite più convenientemente con ingressi standardizzati.

+0

Salve, in MLP, non è possibile standardizzare le funzionalità mentre si utilizza una velocità di apprendimento costante che causa una sovracompensazione delle correzioni di backpropagation per diverse dimensioni? Mi chiedo dal seguente post se questo è esclusivo per CNN, o se MLP potrebbero condividere questo problema: https://stats.stackexchange.com/questions/185853/why-do-we-need-to-normalize-the -images-before-we-put-them-in-cnn – Austin

7

Guardando la rete neurale dall'esterno, è solo una funzione che accetta alcuni argomenti e produce un risultato. Come con tutte le funzioni, ha un dominio (cioè un insieme di argomenti legali). È necessario normalizzare i valori che si desidera passare alla rete neurale per assicurarsi che si trovi nel dominio. Come con tutte le funzioni, se gli argomenti non sono nel dominio, non è garantito che il risultato sia appropriato.

L'esatto comportamento della rete neurale su argomenti esterni al dominio dipende dall'implementazione della rete neurale. Ma nel complesso, il risultato è inutile se gli argomenti non sono all'interno del dominio.

+1

La migliore spiegazione ... –

+0

Questa è una buona spiegazione – disklosr

15

Alcuni ingressi a NN potrebbero non avere un intervallo di valori "naturalmente definiti". Ad esempio, il valore medio potrebbe essere lento, ma in continuo aumento nel tempo (ad esempio un numero di record nel database).

In tal caso, l'inserimento di questo valore non elaborato nella rete non funzionerà molto bene. Insegnerai alla tua rete i valori della parte inferiore dell'intervallo, mentre gli ingressi effettivi saranno dalla parte più alta di questo intervallo (e probabilmente anche sopra l'intervallo, con cui la rete ha imparato a lavorare).

È necessario normalizzare questo valore. Ad esempio, è possibile dire alla rete di quanto il valore è cambiato dall'input precedente. Questo incremento di solito può essere definito con alta probabilità in un intervallo specifico, il che lo rende un buon input per la rete.

+0

Bel suggerimento sulla normalizzazione sul set precedente di input. Questo allevia l'utente dalla definizione di un fattore di normalizzazione arbitrario. Tuttavia, sospetto che la rete si allineerà in modo più accurato se il fattore di normalizzazione è una costante globale applicata a ciascun vettore di input. – davide

-5

I livelli nascosti vengono utilizzati in base alla complessità dei nostri dati. Se disponiamo di dati di input che sono linearmente separabili, non è necessario utilizzare il livello nascosto ad es. Porta OR ma se disponiamo di dati non linearmente separabili, è necessario utilizzare il livello nascosto, ad esempio il gate logico ExOR. Il numero di nodi rilevati su qualsiasi livello dipende dal grado di convalida incrociata del nostro output.

1

Il motivo per cui la normalizzazione è necessaria è perché se si guarda come procede un passaggio adattivo in un punto nel dominio della funzione, e semplicemente si trasporta il problema all'equivalente dello stesso passo tradotto da qualche grande valore in qualche direzione nel dominio, quindi ottieni risultati diversi. Si riduce alla questione di adattare un pezzo lineare a un punto dati. Quanto dovrebbe muoversi il pezzo senza girare e quanto dovrebbe girare in risposta a quel punto di allenamento? Non ha senso avere una procedura di adattamento modificata in diverse parti del dominio! Quindi è necessaria la normalizzazione per ridurre la differenza nel risultato dell'allenamento. Non ho scritto questo, ma puoi semplicemente osservare la matematica per una semplice funzione lineare e come è allenata da un punto di allenamento in due luoghi diversi. Questo problema potrebbe essere stato corretto in alcuni punti, ma non mi è familiare. In ALN, il problema è stato corretto e posso inviarti un documento se scrivi a wwarmstrong AT shaw.ca

33

Nelle reti neurali è una buona idea non solo normalizzare i dati, ma anche ridimensionarli. Questo è inteso per l'avvicinamento più rapido ai minimi globali sulla superficie dell'errore. Vedi le seguenti immagini: error surface before and after normalization

error surface before and after scaling

immagini sono prese dal coursera course su reti neurali. L'autore di course è Geoffrey Hinton.

+3

Sarebbe stato carino da parte tua attribuire il merito all'autore della grafica che hai pubblicato. Il grafico è stato chiaramente preso da [corso di coursera di Geoffrey Hinton] (https://www.coursera.org/learn/neural-networks/). –

+3

Buona Nota Ricardo !!! –

0

Credo che la risposta dipenda dallo scenario.

Considerare NN (rete neurale) come operatore F, in modo che F (input) = output. Nel caso in cui questa relazione sia lineare in modo che F (A * input) = A * output, è possibile scegliere di lasciare l'input/output non normalizzato nelle loro forme raw o normalizzare entrambi per eliminare A. Ovviamente questa linearità assunzione è violata in compiti di classificazione, o quasi qualsiasi compito che emette una probabilità, la cui produzione F (ingresso a *) = 1 *

in pratica, la normalizzazione consente alle reti non fissabile ad essere montabile, che è cruciale per sperimentatori/programmatori. Tuttavia, l'impatto preciso della normalizzazione dipenderà non solo dall'architettura/algoritmo della rete, ma anche dal precedente statistico per l'input e l'output.

Inoltre, NN è spesso implementato per risolvere problemi molto difficili in modalità black-box, il che significa che il problema sottostante potrebbe avere una formulazione statistica molto scarsa, rendendo difficile valutare l'impatto della normalizzazione, causando il vantaggio tecnico (diventando modificabile) per dominare il suo impatto sulle statistiche.

In senso statistico, normalizzazione rimuove variazione che si ritiene essere non causale nel predire l'uscita, in modo da impedire NN da apprendere questa variazione come predittore (NN non vede questa variante, quindi non può utilizzare).

Problemi correlati