2012-06-25 31 views
5

Ho svolto ricerche sulle reti neurali e il concetto e la teoria nel suo complesso hanno senso per me. Sebbene l'unica domanda che mi è stata data, a cui non sono ancora stato in grado di trovare una risposta, è il numero di neuroni che dovrebbero essere usati in una rete neurale. per ottenere risultati corretti/efficienti. Compresi i livelli nascosti, i neuroni per livello nascosto, ecc. Ne conseguono più risultati necessariamente accurati (pur essendo più onerosi sul sistema) o meno neuroni sono ancora sufficienti? C'è una sorta di regola governativa per aiutare a determinare quei numeri? Dipende dal tipo di algoritmo di allenamento/apprendimento che viene implementato nella rete neurale. Dipende dal tipo di dati/input che vengono presentati alla rete?Determinazione della quantità corretta di neuroni per una rete neurale

Se è più semplice rispondere alle domande, molto probabilmente userò feedforwarding e backpropogation come metodo principale di allenamento e previsione.

In una nota a margine, esiste un algoritmo di predizione/regola di attivazione o algoritmo di apprendimento che è generalmente riportato come "il migliore/il più pratico" o che dipende anche dal tipo di dati presentati alla rete?

Grazie a tutti gli utenti, è sempre apprezzato!

MODIFICA: per quanto riguarda il tag C#, questa è la lingua in cui metterò insieme la mia rete neurale. Se quell'informazione aiuta affatto.

+0

* Se riesci a immaginare un intero libro che risponda alla tua domanda, stai chiedendo troppo. * Http://stackoverflow.com/faq#dontask Inoltre, non vedo come questo abbia qualcosa da fare con C#. –

+2

Vedere http://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw –

+0

@ 0xA3, great collegamento. Questa domanda potrebbe non essere abbastanza specifica per SO, ma solo alcuni pensieri: la dimensione della rete neurale è dettata dalla complessità della funzione o del classificatore che rappresentano. Inoltre, sì, è possibile avere troppi neuroni: nella classificazione può portare al sovradattamento e alla perdita di un modello generalizzato. – nicholas

risposta

2

Mi sono specializzato in AI/NN in College e ho avuto un'esperienza di esperienza lavorando a loro per i giochi, ed ecco cosa ho trovato come guida per iniziare. Renditi conto, tuttavia, che ogni NN avrà dei ritocchi per funzionare al meglio nell'ambiente scelto. (Una possibile soluzione è di esporre il tuo programma a migliaia di NN diversi, impostare un criterio testabile per le prestazioni e quindi utilizzare un Algoritmo Genetico per propagare NN più utili e raccogliere NN meno utili - ma questo è un altro post molto grande ...)

ho trovato - in generale

  • livello di input - Una AN per ogni vettore di input + 1 Bias (sempre 1)
  • Strato interno - Doppio strato di input
  • strato
  • di uscita - Una AN per ogni azione o Risultato

Esempio: Character Recognition

  • Se si sta esaminando una griglia 10x10 per il riconoscimento dei caratteri;
  • inizio con 101 input AN (uno per ogni pixel, più un bias)
  • 202 e interni
  • e 26 di uscita AN (uno per ogni lettera dell'alfabeto)

Esempio: blackjack

  • Se stai costruendo un NN per "vincere al blackjack";
  • partenza con 16 input AN (13 per contare ogni occorrenza di una carta, 1 per il valore mano del giocatore, 1 per dealer "up-card", e 1 bias)
  • 32 e interni
  • e 6 uscite AN (uno per "Hit" "Stay" "Split" "Double" "Surrender" e "Assicurazione")
+0

Ho un'esposizione molto limitata a NN finora, quindi scusami se questa domanda è molto semplice; ma cosa intendi con un Bias Inner Layer? Un livello nascosto che contiene qualche pregiudizio? E a quale "valore" è impostato il livello Bias? Inoltre sono corretto assumendo il livello interno = livello nascosto? – RaiderNation

+1

Ci scusiamo per la confusione, per "Bias" intendo un singolo AN, nel livello di input che è sempre impostato su 1. Non c'è bisogno di Bias sui livelli Inner o Output. (SO ha formattato il mio post in modo diverso rispetto a quello che ho fatto, quindi le linee funzionavano insieme quando non dovevano avere = p) Quindi, il Bias Artificual Neuron alimenta sempre un "1" allo Inner Layer, come se fosse un normale AN che è "bloccato" sopra." – EtherDragon

+0

Quindi impostare il neurone di input bias come "1" sarà generalmente favorevole, indipendentemente dal tipo di input che viene inviato al layer di input? Ad esempio, non sono diversi i tipi di input per il riconoscimento dei caratteri e BlackJack? Grazie ancora! – RaiderNation

0

Alcune regole generali sono le seguenti basano su questo documento: 'Approximating numero di neuroni strato nascosto in Multiple Hidden Layer BPNN Architecture 'di Saurabh Karsoliya.

  • Il numero di neuroni strato nascosto sono 2/3 (o 70% al 90%) della dimensione del livello di input. Se questo è insufficiente, allora il numero di neuroni del livello di output può essere aggiunto in seguito a .
  • Il numero di neuroni a livello nascosto deve essere inferiore a rispetto 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.
Problemi correlati