Findes der en standardiseret og accepteret metode til at vælge antallet af lag og antallet af knuder i hvert lag i et feed-forward neuralt netværk? Jeg er interesseret i automatiserede metoder til opbygning af neurale netværk.
Jeg er klar over, at dette spørgsmål er blevet besvaret, men jeg synes ikke, at det eksisterende svar virkelig tager fat på spørgsmålet ud over at pege på et link, der generelt har relation til spørgsmålets emne. Linket beskriver især en teknik til programmatisk netværkskonfiguration, men det er ikke en "[en] standardiseret og accepteret metode" til netværkskonfiguration. Ved at følge et lille sæt klare regler kan man programmatisk indstille en kompetent netværksarkitektur (dvs. antallet og typen af neuronale lag og antallet af neuroner i hvert lag). Hvis man følger dette skema, får man en kompetent arkitektur, men sandsynligvis ikke en optimal arkitektur. Men når først dette netværk er initialiseret, kan du iterativt afstemme konfigurationen under træningen ved hjælp af en række hjælpealgoritmer; en familie af disse fungerer ved at pruning noder baseret på (små) værdier af vægtvektoren efter et vist antal træningsepocher - med andre ord ved at eliminere unødvendige/overflødige noder (mere om dette nedenfor). Hver NN har således tre typer lag: input, hidden og output.
Jeg arbejder på en empirisk undersøgelse af dette i øjeblikket (jeg nærmer mig et processorhundrede simuleringer på vores HPC-anlæg!). Mit råd ville være at bruge et "stort" netværk og regularisering, hvis du bruger regularisering, så bliver netværksarkitekturen mindre vigtig (forudsat at den er stor nok til at repræsentere den underliggende funktion, vi ønsker at fange), men du er nødt til at afstemme regulariseringsparameteren korrekt.
Et af problemerne med valg af arkitektur er, at det er en diskret, snarere end kontinuerlig, kontrol af modellens kompleksitet og derfor kan være lidt af et stumpt instrument, især når den ideelle kompleksitet er lav.
Dette er dog alt sammen underlagt "no free lunch" teoremerne, mens regularisering er effektiv i de fleste tilfælde, vil der altid være tilfælde, hvor arkitekturvalg fungerer bedre, og den eneste måde at finde ud af, om det er tilfældet for det pågældende problem, er at prøve begge tilgange og krydsvalidere.
Hvis jeg skulle bygge en automatiseret neural netværksbygger, ville jeg bruge Radford Neals Hybrid Monte Carlo (HMC) sampling-baserede Bayesianske tilgang og bruge et stort netværk og integrere over vægtene i stedet for at optimere vægtene i et enkelt netværk. Det er imidlertid beregningsteknisk dyrt og lidt af en "sort kunst", men de resultater, som professor Neal opnår, tyder på, at det er det værd!
Så vidt jeg ved, er der ingen mulighed for automatisk at vælge antallet af lag og neuroner i hvert lag. Men der findes netværk, som automatisk kan opbygge deres topologi, f.eks. EANN (Evolutionary Artificial Neural Networks, som anvender genetiske algoritmer til at udvikle topologien).
Der findes flere metoder, og en mere eller mindre moderne metode, der tilsyneladende har givet gode resultater, er NEAT (Neuro Evolution of Augmented Topologies).