30

Che cosa fa il numero di livelli nascosti in una rete neurale percettronica multistrato al modo in cui si comporta la rete neuronale? Stessa domanda per il numero di nodi nei livelli nascosti?Come scegliere il numero di livelli nascosti e nodi nella rete neurale?

Diciamo che voglio usare una rete neurale per il riconoscimento dei caratteri scritto a mano. In questo caso inserisco i valori di intensità del colore dei pixel come nodi di input e classi di caratteri come nodi di output.

Come scegliere il numero di livelli e nodi nascosti per risolvere questo problema?

+0

Giusto per essere sicuri di dove cominciare, sai a cosa serve un livello nascosto? A proposito, non penso che tu possa ottenere una risposta perfetta per questa domanda – Tim

+0

Da quello che capisco, i livelli nascosti generalmente consentono relazioni più complesse. Sono consapevole che potrebbe non esserci una risposta perfetta, ma cosa dovrei cercare quando decidere il numero di livelli/nodi? – gintas

+0

Dovresti iniziare a capire perché hai bisogno di livelli nascosti (XOR). – Tim

risposta

7

La risposta generale è quella per il prelievo di iperparametri è la convalida incrociata. Mantieni alcuni dati, forma le reti con diverse configurazioni e usa quella che offre le prestazioni migliori nel set già tenuto.

+4

Ok, questo è un approccio solido. Ma c'è un modo per indovinarlo? Qualcosa del genere, questi dati potrebbero essere spiegati abbastanza bene con 10 componenti principali, quindi dovremmo avere circa 10 nodi nascosti disposti in 2 livelli? – gintas

16

Nota: questa risposta era corretta al momento della sua creazione, ma da allora è diventata obsoleta.


È raro avere più di due livelli nascosti in una rete neurale. Il numero di livelli di solito non sarà un parametro della rete di cui ti preoccuperai molto.

Anche se le reti neurali multistrato con molti strati possono rappresentare circuiti profondi, la formazione di reti profonde è sempre stato visto come un po ' di una sfida. Fino a poco tempo fa, gli studi empirici hanno spesso rilevato che in genere le reti profonde non eseguivano prestazioni migliori, e spesso peggiori, delle reti neurali con uno o due livelli nascosti, .

Bengio, Y. & LeCun, Y., 2007. Scaling learning algorithms towards AI. Large-Scale Kernel Machines, (1), pp.1-41.

Il documento citato è un buon riferimento per conoscere l'effetto di profondità della rete, i recenti progressi nella didattica reti profonde, e l'apprendimento profondo in generale.

+0

Questo è corretto. Tecnicamente, a causa di problemi di "attenzione", modelli come il percettore multistrato addestrato alla propagazione posteriore hanno problemi con troppi strati. Se si hanno molti livelli nascosti, si vorrà esaminare l'apprendimento approfondito che può risolvere questo problema. – bean5

+1

Questa vista è un po 'vecchia però. Se si utilizza il pre-allenamento, è stato dimostrato che aumentando il numero di livelli si riduce il limite superiore dell'errore. Anche Hinton ha alcuni esperimenti che dimostrano che unità più nascoste significano una migliore rappresentazione dell'input e quindi risultati migliori. Questo è particolarmente presente quando si usano unità lineari rettificate. – elaRosca

+0

Forse questo era vero nel 2012, ma non sono sicuro che lo sia ora. Immagino che sia raro non avere più di due strati. –

4

La maggior parte dei problemi che ho visto sono stati risolti con 1-2 livelli nascosti. È dimostrato che gli MLP con un solo livello nascosto sono approssimatori di funzioni universali (Hornik et. al.). Più livelli nascosti possono rendere il problema più facile o più difficile. Di solito devi provare diverse topologie. Ho sentito che non puoi aggiungere un numero arbitrario di livelli nascosti se vuoi allenare il tuo MLP con backprop perché il gradiente diventerà troppo piccolo nei primi strati (non ho riferimenti per questo). Ma ci sono alcune applicazioni in cui le persone utilizzavano fino a nine layers. Forse sei interessato a un standard benchmark problem che è risolto da diversi classificatori e topologie MLP.

3

Oltre al fatto che la convalida incrociata su diverse configurazioni di modello (numero di livelli nascosti o neuroni per livello) porterà a scegliere una configurazione migliore.

Un approccio è la formazione di un modello, così grande e profondo come possibile e utilizzare dropout regolarizzazione a spegnere alcuni neuroni e ridurre overfitting.

il riferimento a questo approccio può essere visto in questo documento. https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf

0

Tutte le risposte di cui sopra sono ovviamente corretto, ma solo aggiungere qualche idea in più: Alcune regole generali sono le seguenti basano su questo documento: 'Approximating numero di neuroni strato nascosto in più strato nascosto BPNN Architettura' da Saurabh Karsoliya.

In generale:

  • Il numero di neuroni strato nascosto sono 2/3 (o 70% al 90%) della dimensione del livello di input. Se questo è insufficiente, il numero di neuroni del livello di output può essere aggiunto in seguito.
  • Il numero di neuroni a livello nascosto deve essere inferiore al doppio del numero di neuroni nel livello di input.
  • La dimensione dei neuroni del livello nascosto è compresa tra la dimensione del livello di input e la dimensione del livello di output.

sempre tenere a mente che è necessario per esplorare e provare un sacco di combinazioni diverse. Inoltre, utilizzando GridSearch è possibile trovare il "miglior modello e parametri". Per esempio. possiamo fare un GridSearch per determinare la dimensione "migliore" del livello nascosto.

Problemi correlati