Domanda

In generale, cosa ottieni dall'estensione di una rete neurale artificiale aggiungendo più nodi a uno strato nascosto o più strati nascosti?

Permette una maggiore precisione nella mappatura o consente più sottigliezza nelle relazioni che può identificare o qualcos'altro?

È stato utile?

Soluzione

C'è un risultato molto noto nell'apprendimento automatico che afferma che un singolo livello nascosto è sufficiente per approssimare qualsiasi funzione liscia e limitata (il documento è stato chiamato " Le reti feedforward multistrato sono approssimatori universali " e ora ha quasi 20 anni). Ci sono molte cose da notare, tuttavia.

  • Potrebbe essere necessario che il singolo livello nascosto sia arbitrariamente largo.
  • Questo non dice nulla sulla facilità con cui si può trovare un'approssimazione; in generale, le reti di grandi dimensioni sono difficili da addestrare correttamente e cadono vittime di sovralimentazione abbastanza frequentemente (le eccezioni sono le cosiddette "reti neurali convoluzionali" che in realtà sono destinate solo a problemi di vista).
  • Anche questo non dice nulla sull'efficienza della rappresentazione. Alcune funzioni richiedono numeri esponenziali di unità nascoste se eseguite con un livello ma ridimensionano molto più bene con più livelli (per ulteriori discussioni su questa lettura Ridimensionamento degli algoritmi di apprendimento verso l'IA )

Il problema con le reti neurali profonde è che sono ancora più difficili da addestrare. Si finisce con gradienti molto piccoli che vengono backpropagati ai precedenti livelli nascosti e l'apprendimento non va davvero da nessuna parte, specialmente se i pesi sono inizializzati per essere piccoli (se li inizializzano per essere di grandezza maggiore, spesso si rimane bloccati in minimi locali cattivi) . Esistono alcune tecniche per "pre-allenamento" come quelli discussi in questo Google tech talk di Geoff Hinton che tentano di aggirare il problema.

Altri suggerimenti

Questa è una domanda molto interessante ma non è così facile rispondere. Dipende dal problema che si tenta di risolvere e dalla rete neurale che si tenta di utilizzare. Esistono diversi tipi di reti neurali.

In generale non è così chiaro che più nodi equivalgono a maggiore precisione. La ricerca mostra che è necessario principalmente solo un livello nascosto. Il numero di nodi dovrebbe essere il numero minimo di nodi necessari per risolvere un problema. Se non ne hai abbastanza, non raggiungerai la soluzione.

D'altra parte - se hai raggiunto il numero di nodi che è buono per risolvere la soluzione - puoi aggiungerne sempre di più e non vedrai ulteriori progressi nella stima dei risultati.

Ecco perché ci sono così tanti tipi di reti neurali. Tentano di risolvere diversi tipi di problemi. Quindi hai NN per risolvere i problemi statici, per risolvere i problemi relativi al tempo e così via. Il numero di nodi non è così importante come il loro design.

Quando hai un livello nascosto è che stai creando una funzione combinata dell'input. Quindi, il problema è affrontato meglio da più funzioni dell'input esistente o attraverso funzionalità di ordine superiore che derivano dalla combinazione di funzionalità esistenti? Questo è il compromesso per una rete feed-forward standard.

Hai una rassicurazione teorica che qualsiasi funzione può essere rappresentata da una rete neurale con due strati nascosti e attivazione non lineare.

Inoltre, considera l'utilizzo di risorse aggiuntive per il potenziamento, invece di aggiungere più nodi, se non sei certo della topologia appropriata.

Regole empiriche molto approssimative

generalmente più elementi per livello per vettori di input più grandi.

più livelli possono consentire di modellare più sistemi non lineari.

Se il tipo di rete in uso presenta ritardi nella propagazione, un numero maggiore di livelli può consentire la modellazione di serie temporali. Fai attenzione a non perdere tempo nei ritardi o non funzionerà molto bene. Se questo è solo un inganno per te, ignoralo.

Più livelli ti consente di inserire funzionalità ricorrenti. Questo può essere molto utile per le attività di discriminazione. L'implementazione ANN non può permetterlo.

HTH

Il numero di unità per strato nascosto rappresenta il potenziale della RNA di descrivere una funzione arbitrariamente complessa. Alcune funzioni (complicate) potrebbero richiedere molti nodi nascosti o forse più di un livello nascosto.

Quando una funzione può essere approssimata approssimativamente da un certo numero di unità nascoste, eventuali nodi aggiuntivi forniranno maggiore precisione ... ma questo è vero solo se i campioni di addestramento utilizzati sono sufficienti per giustificare questa aggiunta - altrimenti ciò che accadrà è " overconvergence " ;. Overconvergence significa che il tuo ANN ha perso le sue capacità di generalizzazione perché ha enfatizzato eccessivamente i campioni particolari.

In generale è meglio usare le unità meno nascoste possibili, se la rete risultante può dare buoni risultati. Gli schemi di addestramento aggiuntivi richiesti per giustificare più nodi nascosti non possono essere trovati facilmente nella maggior parte dei casi e l'accuratezza non è il punto di forza delle NN.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top